Mon, 13 Jul 2009 05:01:42 +0000
On MSN, pop up an "invite message" request similar to oscar, and send that
in the add request. We really should try and move this into the add buddy
dialog instead of an extra prompt.
Fixes #8503.
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
1 | /* MySpaceIM Protocol Plugin - markup |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
2 | * |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
3 | * Copyright (C) 2007, Jeff Connelly <jeff2@soc.pidgin.im> |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
4 | * |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
5 | * This program is free software; you can redistribute it and/or modify |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
6 | * it under the terms of the GNU General Public License as published by |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
7 | * the Free Software Foundation; either version 2 of the License, or |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
8 | * (at your option) any later version. |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
9 | * |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
10 | * This program is distributed in the hope that it will be useful, |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
13 | * GNU General Public License for more details. |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
14 | * |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
15 | * You should have received a copy of the GNU General Public License |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
16 | * along with this program; if not, write to the Free Software |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
17 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
18 | */ |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
19 | |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
20 | #include "myspace.h" |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
21 | |
|
22536
b3ba26074066
In msimprpl, allow some levels of nested bold/italic/underline formatting.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
21453
diff
changeset
|
22 | typedef int (*MSIM_XMLNODE_CONVERT)(MsimSession *, xmlnode *, gchar **, gchar **); |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
23 | |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
24 | /* Globals */ |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
25 | |
|
25145
5fdbb80f2e93
Remove stray whitespace
Mark Doliner <markdoliner@pidgin.im>
parents:
25144
diff
changeset
|
26 | /* The names in in emoticon_names (for <i n=whatever>) map to corresponding |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
27 | * entries in emoticon_symbols (for the ASCII representation of the emoticon). |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
28 | * |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
29 | * Multiple emoticon symbols in Pidgin can map to one name. List the |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
30 | * canonical form, as inserted by the "Smile!" dialog, first. For example, |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
31 | * :) comes before :-), because although both are recognized as 'happy', |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
32 | * the first is inserted by the smiley button (first symbol in theme). |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
33 | * |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
34 | * Note that symbols are case-sensitive in Pidgin -- :-X is not :-x. */ |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
35 | static struct MSIM_EMOTICON |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
36 | { |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
37 | gchar *name; |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
38 | gchar *symbol; |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
39 | } msim_emoticons[] = { |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
40 | /* Unfortunately, this list duplicates much of the file |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
41 | * pidgin/pidgin/pixmaps/emotes/default/22/default.theme.in, because |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
42 | * that file is part of Pidgin, but we're part of libpurple. |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
43 | */ |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
44 | { "bigsmile", ":D" }, |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
45 | { "bigsmile", ":-D" }, |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
46 | { "devil", "}:)" }, |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
47 | { "frazzled", ":Z" }, |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
48 | { "geek", "B)" }, |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
49 | { "googles", "%)" }, |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
50 | { "growl", ":E" }, |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
51 | { "laugh", ":))" }, /* Must be before ':)' */ |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
52 | { "happy", ":)" }, |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
53 | { "happy", ":-)" }, |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
54 | { "happi", ":)" }, |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
55 | { "heart", ":X" }, |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
56 | { "mohawk", "-:" }, |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
57 | { "mad", "X(" }, |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
58 | { "messed", "X)" }, |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
59 | { "nerd", "Q)" }, |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
60 | { "oops", ":G" }, |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
61 | { "pirate", "P)" }, |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
62 | { "scared", ":O" }, |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
63 | { "sidefrown", ":{" }, |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
64 | { "sinister", ":B" }, |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
65 | { "smirk", ":," }, |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
66 | { "straight", ":|" }, |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
67 | { "tongue", ":P" }, |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
68 | { "tongue", ":p" }, |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
69 | { "tongy", ":P" }, |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
70 | { "upset", "B|" }, |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
71 | { "wink", ";-)" }, |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
72 | { "wink", ";)" }, |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
73 | { "winc", ";)" }, |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
74 | { "worried", ":[" }, |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
75 | { "kiss", ":x" }, |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
76 | { NULL, NULL } |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
77 | }; |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
78 | |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
79 | /* Indexes of this array + 1 map HTML font size to scale of normal font size. * |
|
25145
5fdbb80f2e93
Remove stray whitespace
Mark Doliner <markdoliner@pidgin.im>
parents:
25144
diff
changeset
|
80 | * Based on _point_sizes from libpurple/gtkimhtml.c |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
81 | * 1 2 3 4 5 6 7 */ |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
82 | static gdouble _font_scale[] = { .85, .95, 1, 1.2, 1.44, 1.728, 2.0736 }; |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
83 | |
|
25158
7ef960d79a2e
Simplify a little bit
Mark Doliner <markdoliner@pidgin.im>
parents:
25147
diff
changeset
|
84 | /* Purple maximum font size. Equivalent to sizeof(_font_scale) / sizeof(_font_scale[0]) */ |
|
7ef960d79a2e
Simplify a little bit
Mark Doliner <markdoliner@pidgin.im>
parents:
25147
diff
changeset
|
85 | #define MAX_FONT_SIZE 7 |
|
7ef960d79a2e
Simplify a little bit
Mark Doliner <markdoliner@pidgin.im>
parents:
25147
diff
changeset
|
86 | |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
87 | #define POINTS_PER_INCH 72 /* How many pt's in an inch */ |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
88 | |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
89 | /* Text formatting bits for <f s=#> */ |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
90 | #define MSIM_TEXT_BOLD 1 |
|
25145
5fdbb80f2e93
Remove stray whitespace
Mark Doliner <markdoliner@pidgin.im>
parents:
25144
diff
changeset
|
91 | #define MSIM_TEXT_ITALIC 2 |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
92 | #define MSIM_TEXT_UNDERLINE 4 |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
93 | |
|
25145
5fdbb80f2e93
Remove stray whitespace
Mark Doliner <markdoliner@pidgin.im>
parents:
25144
diff
changeset
|
94 | /* Default baseline size of purple's fonts, in points. What is size 3 in points. |
|
5fdbb80f2e93
Remove stray whitespace
Mark Doliner <markdoliner@pidgin.im>
parents:
25144
diff
changeset
|
95 | * _font_scale specifies scaling factor relative to this point size. Note this |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
96 | * is only the default; it is configurable in account options. */ |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
97 | #define MSIM_BASE_FONT_POINT_SIZE 8 |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
98 | |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
99 | /* Default display's DPI. 96 is common but it can differ. Also configurable |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
100 | * in account options. */ |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
101 | #define MSIM_DEFAULT_DPI 96 |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
102 | |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
103 | /* round is part of C99, but sometimes is unavailable before then. |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
104 | * Based on http://forums.belution.com/en/cpp/000/050/13.shtml |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
105 | */ |
|
25144
af2f709d543d
Remove unneeded forward declarations. I guess my philosophy is to only
Mark Doliner <markdoliner@pidgin.im>
parents:
22657
diff
changeset
|
106 | static double msim_round(double value) |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
107 | { |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
108 | if (value < 0) { |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
109 | return -(floor(-value + 0.5)); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
110 | } else { |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
111 | return floor( value + 0.5); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
112 | } |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
113 | } |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
114 | |
|
27366
59dd76729bc2
Consistent comment formatting
Mark Doliner <markdoliner@pidgin.im>
parents:
25226
diff
changeset
|
115 | /** |
|
59dd76729bc2
Consistent comment formatting
Mark Doliner <markdoliner@pidgin.im>
parents:
25226
diff
changeset
|
116 | * Convert typographical font point size to HTML font size. |
|
59dd76729bc2
Consistent comment formatting
Mark Doliner <markdoliner@pidgin.im>
parents:
25226
diff
changeset
|
117 | * Based on libpurple/gtkimhtml.c |
|
59dd76729bc2
Consistent comment formatting
Mark Doliner <markdoliner@pidgin.im>
parents:
25226
diff
changeset
|
118 | */ |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
119 | static guint |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
120 | msim_point_to_purple_size(MsimSession *session, guint point) |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
121 | { |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
122 | guint size, this_point, base; |
|
25145
5fdbb80f2e93
Remove stray whitespace
Mark Doliner <markdoliner@pidgin.im>
parents:
25144
diff
changeset
|
123 | |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
124 | base = purple_account_get_int(session->account, "base_font_size", MSIM_BASE_FONT_POINT_SIZE); |
|
25145
5fdbb80f2e93
Remove stray whitespace
Mark Doliner <markdoliner@pidgin.im>
parents:
25144
diff
changeset
|
125 | |
|
25158
7ef960d79a2e
Simplify a little bit
Mark Doliner <markdoliner@pidgin.im>
parents:
25147
diff
changeset
|
126 | for (size = 0; size < MAX_FONT_SIZE; ++size) { |
|
7ef960d79a2e
Simplify a little bit
Mark Doliner <markdoliner@pidgin.im>
parents:
25147
diff
changeset
|
127 | this_point = (guint)msim_round(base * _font_scale[size]); |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
128 | |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
129 | if (this_point >= point) { |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
130 | purple_debug_info("msim", "msim_point_to_purple_size: %d pt -> size=%d\n", |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
131 | point, size); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
132 | return size; |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
133 | } |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
134 | } |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
135 | |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
136 | /* No HTML font size was this big; return largest possible. */ |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
137 | return this_point; |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
138 | } |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
139 | |
|
27366
59dd76729bc2
Consistent comment formatting
Mark Doliner <markdoliner@pidgin.im>
parents:
25226
diff
changeset
|
140 | /** |
|
59dd76729bc2
Consistent comment formatting
Mark Doliner <markdoliner@pidgin.im>
parents:
25226
diff
changeset
|
141 | * Convert HTML font size to point size. |
|
59dd76729bc2
Consistent comment formatting
Mark Doliner <markdoliner@pidgin.im>
parents:
25226
diff
changeset
|
142 | */ |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
143 | static guint |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
144 | msim_purple_size_to_point(MsimSession *session, guint size) |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
145 | { |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
146 | gdouble scale; |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
147 | guint point; |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
148 | guint base; |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
149 | |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
150 | scale = _font_scale[CLAMP(size, 1, MAX_FONT_SIZE) - 1]; |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
151 | |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
152 | base = purple_account_get_int(session->account, "base_font_size", MSIM_BASE_FONT_POINT_SIZE); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
153 | |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
154 | point = (guint)msim_round(scale * base); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
155 | |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
156 | purple_debug_info("msim", "msim_purple_size_to_point: size=%d -> %d pt\n", |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
157 | size, point); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
158 | |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
159 | return point; |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
160 | } |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
161 | |
|
27366
59dd76729bc2
Consistent comment formatting
Mark Doliner <markdoliner@pidgin.im>
parents:
25226
diff
changeset
|
162 | /** |
|
59dd76729bc2
Consistent comment formatting
Mark Doliner <markdoliner@pidgin.im>
parents:
25226
diff
changeset
|
163 | * Convert a msim markup font pixel height to the more usual point size, for incoming messages. |
|
59dd76729bc2
Consistent comment formatting
Mark Doliner <markdoliner@pidgin.im>
parents:
25226
diff
changeset
|
164 | */ |
|
25145
5fdbb80f2e93
Remove stray whitespace
Mark Doliner <markdoliner@pidgin.im>
parents:
25144
diff
changeset
|
165 | static guint |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
166 | msim_height_to_point(MsimSession *session, guint height) |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
167 | { |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
168 | guint dpi; |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
169 | |
|
22657
ed65295cd014
In msimprpl, when converting point size and MySpaceIM-markup font size,
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
22536
diff
changeset
|
170 | dpi = purple_account_get_int(session->account, "dpi", MSIM_DEFAULT_DPI); |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
171 | |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
172 | return (guint)msim_round((POINTS_PER_INCH * 1. / dpi) * height); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
173 | |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
174 | /* See also: libpurple/protocols/bonjour/jabber.c |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
175 | * _font_size_ichat_to_purple */ |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
176 | } |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
177 | |
|
27366
59dd76729bc2
Consistent comment formatting
Mark Doliner <markdoliner@pidgin.im>
parents:
25226
diff
changeset
|
178 | /** |
|
59dd76729bc2
Consistent comment formatting
Mark Doliner <markdoliner@pidgin.im>
parents:
25226
diff
changeset
|
179 | * Convert point size to msim pixel height font size specification, for outgoing messages. |
|
59dd76729bc2
Consistent comment formatting
Mark Doliner <markdoliner@pidgin.im>
parents:
25226
diff
changeset
|
180 | */ |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
181 | static guint |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
182 | msim_point_to_height(MsimSession *session, guint point) |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
183 | { |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
184 | guint dpi; |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
185 | |
|
22657
ed65295cd014
In msimprpl, when converting point size and MySpaceIM-markup font size,
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
22536
diff
changeset
|
186 | dpi = purple_account_get_int(session->account, "dpi", MSIM_DEFAULT_DPI); |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
187 | |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
188 | return (guint)msim_round((dpi * 1. / POINTS_PER_INCH) * point); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
189 | } |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
190 | |
|
27366
59dd76729bc2
Consistent comment formatting
Mark Doliner <markdoliner@pidgin.im>
parents:
25226
diff
changeset
|
191 | /** |
|
59dd76729bc2
Consistent comment formatting
Mark Doliner <markdoliner@pidgin.im>
parents:
25226
diff
changeset
|
192 | * Convert the msim markup <f> (font) tag into HTML. |
|
59dd76729bc2
Consistent comment formatting
Mark Doliner <markdoliner@pidgin.im>
parents:
25226
diff
changeset
|
193 | */ |
|
25145
5fdbb80f2e93
Remove stray whitespace
Mark Doliner <markdoliner@pidgin.im>
parents:
25144
diff
changeset
|
194 | static void |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
195 | msim_markup_f_to_html(MsimSession *session, xmlnode *root, gchar **begin, gchar **end) |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
196 | { |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
197 | const gchar *face, *height_str, *decor_str; |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
198 | GString *gs_end, *gs_begin; |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
199 | guint decor, height; |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
200 | |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
201 | face = xmlnode_get_attrib(root, "f"); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
202 | height_str = xmlnode_get_attrib(root, "h"); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
203 | decor_str = xmlnode_get_attrib(root, "s"); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
204 | |
|
25169
a0b71a1e08e5
Change MySpace to wrap incoming messages in <span style="font-size: Npt;">
Mark Doliner <markdoliner@pidgin.im>
parents:
25158
diff
changeset
|
205 | /* Validate the font face, to avoid constructing invalid HTML later */ |
|
25199
934b89b30715
Only validate the font face if it's non-null
Mark Doliner <markdoliner@pidgin.im>
parents:
25169
diff
changeset
|
206 | if (face != NULL && strchr(face, '\'') != NULL) |
|
25169
a0b71a1e08e5
Change MySpace to wrap incoming messages in <span style="font-size: Npt;">
Mark Doliner <markdoliner@pidgin.im>
parents:
25158
diff
changeset
|
207 | face = NULL; |
|
a0b71a1e08e5
Change MySpace to wrap incoming messages in <span style="font-size: Npt;">
Mark Doliner <markdoliner@pidgin.im>
parents:
25158
diff
changeset
|
208 | |
|
a0b71a1e08e5
Change MySpace to wrap incoming messages in <span style="font-size: Npt;">
Mark Doliner <markdoliner@pidgin.im>
parents:
25158
diff
changeset
|
209 | height = height_str != NULL ? atol(height_str) : 12; |
|
a0b71a1e08e5
Change MySpace to wrap incoming messages in <span style="font-size: Npt;">
Mark Doliner <markdoliner@pidgin.im>
parents:
25158
diff
changeset
|
210 | decor = decor_str != NULL ? atol(decor_str) : 0; |
|
a0b71a1e08e5
Change MySpace to wrap incoming messages in <span style="font-size: Npt;">
Mark Doliner <markdoliner@pidgin.im>
parents:
25158
diff
changeset
|
211 | |
|
a0b71a1e08e5
Change MySpace to wrap incoming messages in <span style="font-size: Npt;">
Mark Doliner <markdoliner@pidgin.im>
parents:
25158
diff
changeset
|
212 | /* |
|
a0b71a1e08e5
Change MySpace to wrap incoming messages in <span style="font-size: Npt;">
Mark Doliner <markdoliner@pidgin.im>
parents:
25158
diff
changeset
|
213 | * The HTML we're constructing here is a bit redudant. Ideally we |
|
a0b71a1e08e5
Change MySpace to wrap incoming messages in <span style="font-size: Npt;">
Mark Doliner <markdoliner@pidgin.im>
parents:
25158
diff
changeset
|
214 | * would use only the font-family and font-size CSS span, but Pidgin |
|
a0b71a1e08e5
Change MySpace to wrap incoming messages in <span style="font-size: Npt;">
Mark Doliner <markdoliner@pidgin.im>
parents:
25158
diff
changeset
|
215 | * doesn't support it (it's included for other UIs). For Pidgin we |
|
a0b71a1e08e5
Change MySpace to wrap incoming messages in <span style="font-size: Npt;">
Mark Doliner <markdoliner@pidgin.im>
parents:
25158
diff
changeset
|
216 | * wrap the whole thing in an ugly font tag, and Pidgin will happily |
|
a0b71a1e08e5
Change MySpace to wrap incoming messages in <span style="font-size: Npt;">
Mark Doliner <markdoliner@pidgin.im>
parents:
25158
diff
changeset
|
217 | * ignore the <span>. |
|
a0b71a1e08e5
Change MySpace to wrap incoming messages in <span style="font-size: Npt;">
Mark Doliner <markdoliner@pidgin.im>
parents:
25158
diff
changeset
|
218 | */ |
|
a0b71a1e08e5
Change MySpace to wrap incoming messages in <span style="font-size: Npt;">
Mark Doliner <markdoliner@pidgin.im>
parents:
25158
diff
changeset
|
219 | gs_begin = g_string_new(""); |
|
a0b71a1e08e5
Change MySpace to wrap incoming messages in <span style="font-size: Npt;">
Mark Doliner <markdoliner@pidgin.im>
parents:
25158
diff
changeset
|
220 | if (height && !face) { |
|
a0b71a1e08e5
Change MySpace to wrap incoming messages in <span style="font-size: Npt;">
Mark Doliner <markdoliner@pidgin.im>
parents:
25158
diff
changeset
|
221 | guint point_size = msim_height_to_point(session, height); |
|
a0b71a1e08e5
Change MySpace to wrap incoming messages in <span style="font-size: Npt;">
Mark Doliner <markdoliner@pidgin.im>
parents:
25158
diff
changeset
|
222 | g_string_printf(gs_begin, |
|
a0b71a1e08e5
Change MySpace to wrap incoming messages in <span style="font-size: Npt;">
Mark Doliner <markdoliner@pidgin.im>
parents:
25158
diff
changeset
|
223 | "<font size='%d'><span style='font-size: %dpt'>", |
|
a0b71a1e08e5
Change MySpace to wrap incoming messages in <span style="font-size: Npt;">
Mark Doliner <markdoliner@pidgin.im>
parents:
25158
diff
changeset
|
224 | msim_point_to_purple_size(session, point_size), |
|
a0b71a1e08e5
Change MySpace to wrap incoming messages in <span style="font-size: Npt;">
Mark Doliner <markdoliner@pidgin.im>
parents:
25158
diff
changeset
|
225 | point_size); |
|
a0b71a1e08e5
Change MySpace to wrap incoming messages in <span style="font-size: Npt;">
Mark Doliner <markdoliner@pidgin.im>
parents:
25158
diff
changeset
|
226 | } else if (height && face) { |
|
a0b71a1e08e5
Change MySpace to wrap incoming messages in <span style="font-size: Npt;">
Mark Doliner <markdoliner@pidgin.im>
parents:
25158
diff
changeset
|
227 | guint point_size = msim_height_to_point(session, height); |
|
a0b71a1e08e5
Change MySpace to wrap incoming messages in <span style="font-size: Npt;">
Mark Doliner <markdoliner@pidgin.im>
parents:
25158
diff
changeset
|
228 | g_string_printf(gs_begin, |
|
a0b71a1e08e5
Change MySpace to wrap incoming messages in <span style="font-size: Npt;">
Mark Doliner <markdoliner@pidgin.im>
parents:
25158
diff
changeset
|
229 | "<font face='%s' size='%d'><span style='font-family: %s; font-size: %dpt'>", |
|
a0b71a1e08e5
Change MySpace to wrap incoming messages in <span style="font-size: Npt;">
Mark Doliner <markdoliner@pidgin.im>
parents:
25158
diff
changeset
|
230 | face, msim_point_to_purple_size(session, point_size), |
|
a0b71a1e08e5
Change MySpace to wrap incoming messages in <span style="font-size: Npt;">
Mark Doliner <markdoliner@pidgin.im>
parents:
25158
diff
changeset
|
231 | face, point_size); |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
232 | } else { |
|
25169
a0b71a1e08e5
Change MySpace to wrap incoming messages in <span style="font-size: Npt;">
Mark Doliner <markdoliner@pidgin.im>
parents:
25158
diff
changeset
|
233 | g_string_printf(gs_begin, "<font><span>"); |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
234 | } |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
235 | |
|
25169
a0b71a1e08e5
Change MySpace to wrap incoming messages in <span style="font-size: Npt;">
Mark Doliner <markdoliner@pidgin.im>
parents:
25158
diff
changeset
|
236 | gs_end = g_string_new("</span></font>"); |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
237 | |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
238 | if (decor & MSIM_TEXT_BOLD) { |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
239 | g_string_append(gs_begin, "<b>"); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
240 | g_string_prepend(gs_end, "</b>"); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
241 | } |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
242 | |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
243 | if (decor & MSIM_TEXT_ITALIC) { |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
244 | g_string_append(gs_begin, "<i>"); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
245 | g_string_append(gs_end, "</i>"); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
246 | } |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
247 | |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
248 | if (decor & MSIM_TEXT_UNDERLINE) { |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
249 | g_string_append(gs_begin, "<u>"); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
250 | g_string_append(gs_end, "</u>"); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
251 | } |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
252 | |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
253 | *begin = g_string_free(gs_begin, FALSE); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
254 | *end = g_string_free(gs_end, FALSE); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
255 | } |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
256 | |
|
27366
59dd76729bc2
Consistent comment formatting
Mark Doliner <markdoliner@pidgin.im>
parents:
25226
diff
changeset
|
257 | /** |
|
59dd76729bc2
Consistent comment formatting
Mark Doliner <markdoliner@pidgin.im>
parents:
25226
diff
changeset
|
258 | * Convert a msim markup color to a color suitable for libpurple. |
|
25145
5fdbb80f2e93
Remove stray whitespace
Mark Doliner <markdoliner@pidgin.im>
parents:
25144
diff
changeset
|
259 | * |
|
5fdbb80f2e93
Remove stray whitespace
Mark Doliner <markdoliner@pidgin.im>
parents:
25144
diff
changeset
|
260 | * @param msim Either a color name, or an rgb(x,y,z) code. |
|
5fdbb80f2e93
Remove stray whitespace
Mark Doliner <markdoliner@pidgin.im>
parents:
25144
diff
changeset
|
261 | * |
|
5fdbb80f2e93
Remove stray whitespace
Mark Doliner <markdoliner@pidgin.im>
parents:
25144
diff
changeset
|
262 | * @return A new string, either a color name or #rrggbb code. Must g_free(). |
|
5fdbb80f2e93
Remove stray whitespace
Mark Doliner <markdoliner@pidgin.im>
parents:
25144
diff
changeset
|
263 | */ |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
264 | static char * |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
265 | msim_color_to_purple(const char *msim) |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
266 | { |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
267 | guint red, green, blue; |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
268 | |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
269 | if (!msim) { |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
270 | return g_strdup("black"); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
271 | } |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
272 | |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
273 | if (sscanf(msim, "rgb(%d,%d,%d)", &red, &green, &blue) != 3) { |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
274 | /* Color name. */ |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
275 | return g_strdup(msim); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
276 | } |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
277 | /* TODO: rgba (alpha). */ |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
278 | |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
279 | return g_strdup_printf("#%.2x%.2x%.2x", red, green, blue); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
280 | } |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
281 | |
|
27366
59dd76729bc2
Consistent comment formatting
Mark Doliner <markdoliner@pidgin.im>
parents:
25226
diff
changeset
|
282 | /** |
|
59dd76729bc2
Consistent comment formatting
Mark Doliner <markdoliner@pidgin.im>
parents:
25226
diff
changeset
|
283 | * Convert the msim markup <a> (anchor) tag into HTML. |
|
59dd76729bc2
Consistent comment formatting
Mark Doliner <markdoliner@pidgin.im>
parents:
25226
diff
changeset
|
284 | */ |
|
25145
5fdbb80f2e93
Remove stray whitespace
Mark Doliner <markdoliner@pidgin.im>
parents:
25144
diff
changeset
|
285 | static void |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
286 | msim_markup_a_to_html(MsimSession *session, xmlnode *root, gchar **begin, gchar **end) |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
287 | { |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
288 | const gchar *href; |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
289 | |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
290 | href = xmlnode_get_attrib(root, "h"); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
291 | if (!href) { |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
292 | href = ""; |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
293 | } |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
294 | |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
295 | *begin = g_strdup_printf("<a href=\"%s\">%s", href, href); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
296 | *end = g_strdup("</a>"); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
297 | } |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
298 | |
|
27366
59dd76729bc2
Consistent comment formatting
Mark Doliner <markdoliner@pidgin.im>
parents:
25226
diff
changeset
|
299 | /** |
|
59dd76729bc2
Consistent comment formatting
Mark Doliner <markdoliner@pidgin.im>
parents:
25226
diff
changeset
|
300 | * Convert the msim markup <p> (paragraph) tag into HTML. |
|
59dd76729bc2
Consistent comment formatting
Mark Doliner <markdoliner@pidgin.im>
parents:
25226
diff
changeset
|
301 | */ |
|
25145
5fdbb80f2e93
Remove stray whitespace
Mark Doliner <markdoliner@pidgin.im>
parents:
25144
diff
changeset
|
302 | static void |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
303 | msim_markup_p_to_html(MsimSession *session, xmlnode *root, gchar **begin, gchar **end) |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
304 | { |
|
25145
5fdbb80f2e93
Remove stray whitespace
Mark Doliner <markdoliner@pidgin.im>
parents:
25144
diff
changeset
|
305 | /* Just pass through unchanged. |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
306 | * |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
307 | * Note: attributes currently aren't passed, if there are any. */ |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
308 | *begin = g_strdup("<p>"); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
309 | *end = g_strdup("</p>"); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
310 | } |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
311 | |
|
25226
6b89c23ed37b
Support for background font colors in incoming MySpace IMs
Mark Doliner <markdoliner@pidgin.im>
parents:
25225
diff
changeset
|
312 | /** |
|
6b89c23ed37b
Support for background font colors in incoming MySpace IMs
Mark Doliner <markdoliner@pidgin.im>
parents:
25225
diff
changeset
|
313 | * Convert the msim markup <c> tag (text color) into HTML. |
|
6b89c23ed37b
Support for background font colors in incoming MySpace IMs
Mark Doliner <markdoliner@pidgin.im>
parents:
25225
diff
changeset
|
314 | */ |
|
25145
5fdbb80f2e93
Remove stray whitespace
Mark Doliner <markdoliner@pidgin.im>
parents:
25144
diff
changeset
|
315 | static void |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
316 | msim_markup_c_to_html(MsimSession *session, xmlnode *root, gchar **begin, gchar **end) |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
317 | { |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
318 | const gchar *color; |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
319 | gchar *purple_color; |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
320 | |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
321 | color = xmlnode_get_attrib(root, "v"); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
322 | if (!color) { |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
323 | purple_debug_info("msim", "msim_markup_c_to_html: <c> tag w/o v attr\n"); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
324 | *begin = g_strdup(""); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
325 | *end = g_strdup(""); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
326 | /* TODO: log as unrecognized */ |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
327 | return; |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
328 | } |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
329 | |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
330 | purple_color = msim_color_to_purple(color); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
331 | |
|
25226
6b89c23ed37b
Support for background font colors in incoming MySpace IMs
Mark Doliner <markdoliner@pidgin.im>
parents:
25225
diff
changeset
|
332 | #ifdef USE_CSS_FORMATTING |
|
6b89c23ed37b
Support for background font colors in incoming MySpace IMs
Mark Doliner <markdoliner@pidgin.im>
parents:
25225
diff
changeset
|
333 | *begin = g_strdup_printf("<span style='color: %s'>", purple_color); |
|
6b89c23ed37b
Support for background font colors in incoming MySpace IMs
Mark Doliner <markdoliner@pidgin.im>
parents:
25225
diff
changeset
|
334 | *end = g_strdup("</span>"); |
|
6b89c23ed37b
Support for background font colors in incoming MySpace IMs
Mark Doliner <markdoliner@pidgin.im>
parents:
25225
diff
changeset
|
335 | #else |
|
25145
5fdbb80f2e93
Remove stray whitespace
Mark Doliner <markdoliner@pidgin.im>
parents:
25144
diff
changeset
|
336 | *begin = g_strdup_printf("<font color='%s'>", purple_color); |
|
25226
6b89c23ed37b
Support for background font colors in incoming MySpace IMs
Mark Doliner <markdoliner@pidgin.im>
parents:
25225
diff
changeset
|
337 | *end = g_strdup("</font>"); |
|
6b89c23ed37b
Support for background font colors in incoming MySpace IMs
Mark Doliner <markdoliner@pidgin.im>
parents:
25225
diff
changeset
|
338 | #endif |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
339 | |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
340 | g_free(purple_color); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
341 | } |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
342 | |
|
25226
6b89c23ed37b
Support for background font colors in incoming MySpace IMs
Mark Doliner <markdoliner@pidgin.im>
parents:
25225
diff
changeset
|
343 | /** |
|
6b89c23ed37b
Support for background font colors in incoming MySpace IMs
Mark Doliner <markdoliner@pidgin.im>
parents:
25225
diff
changeset
|
344 | * Convert the msim markup <b> tag (background color) into HTML. |
|
6b89c23ed37b
Support for background font colors in incoming MySpace IMs
Mark Doliner <markdoliner@pidgin.im>
parents:
25225
diff
changeset
|
345 | */ |
|
25145
5fdbb80f2e93
Remove stray whitespace
Mark Doliner <markdoliner@pidgin.im>
parents:
25144
diff
changeset
|
346 | static void |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
347 | msim_markup_b_to_html(MsimSession *session, xmlnode *root, gchar **begin, gchar **end) |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
348 | { |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
349 | const gchar *color; |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
350 | gchar *purple_color; |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
351 | |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
352 | color = xmlnode_get_attrib(root, "v"); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
353 | if (!color) { |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
354 | *begin = g_strdup(""); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
355 | *end = g_strdup(""); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
356 | purple_debug_info("msim", "msim_markup_b_to_html: <b> w/o v attr\n"); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
357 | /* TODO: log as unrecognized. */ |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
358 | return; |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
359 | } |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
360 | |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
361 | purple_color = msim_color_to_purple(color); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
362 | |
|
25226
6b89c23ed37b
Support for background font colors in incoming MySpace IMs
Mark Doliner <markdoliner@pidgin.im>
parents:
25225
diff
changeset
|
363 | #ifdef USE_CSS_FORMATTING |
|
6b89c23ed37b
Support for background font colors in incoming MySpace IMs
Mark Doliner <markdoliner@pidgin.im>
parents:
25225
diff
changeset
|
364 | *begin = g_strdup_printf("<span style='background-color: %s'>", purple_color); |
|
6b89c23ed37b
Support for background font colors in incoming MySpace IMs
Mark Doliner <markdoliner@pidgin.im>
parents:
25225
diff
changeset
|
365 | *end = g_strdup("</span>"); |
|
6b89c23ed37b
Support for background font colors in incoming MySpace IMs
Mark Doliner <markdoliner@pidgin.im>
parents:
25225
diff
changeset
|
366 | #else |
|
6b89c23ed37b
Support for background font colors in incoming MySpace IMs
Mark Doliner <markdoliner@pidgin.im>
parents:
25225
diff
changeset
|
367 | *begin = g_strdup_printf("<body bgcolor='%s'>", purple_color); |
|
6b89c23ed37b
Support for background font colors in incoming MySpace IMs
Mark Doliner <markdoliner@pidgin.im>
parents:
25225
diff
changeset
|
368 | *end = g_strdup("</body>"); |
|
6b89c23ed37b
Support for background font colors in incoming MySpace IMs
Mark Doliner <markdoliner@pidgin.im>
parents:
25225
diff
changeset
|
369 | #endif |
|
6b89c23ed37b
Support for background font colors in incoming MySpace IMs
Mark Doliner <markdoliner@pidgin.im>
parents:
25225
diff
changeset
|
370 | |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
371 | g_free(purple_color); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
372 | } |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
373 | |
|
27366
59dd76729bc2
Consistent comment formatting
Mark Doliner <markdoliner@pidgin.im>
parents:
25226
diff
changeset
|
374 | /** |
|
59dd76729bc2
Consistent comment formatting
Mark Doliner <markdoliner@pidgin.im>
parents:
25226
diff
changeset
|
375 | * Convert the msim markup <i> tag (emoticon image) into HTML. |
|
59dd76729bc2
Consistent comment formatting
Mark Doliner <markdoliner@pidgin.im>
parents:
25226
diff
changeset
|
376 | */ |
|
25145
5fdbb80f2e93
Remove stray whitespace
Mark Doliner <markdoliner@pidgin.im>
parents:
25144
diff
changeset
|
377 | static void |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
378 | msim_markup_i_to_html(MsimSession *session, xmlnode *root, gchar **begin, gchar **end) |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
379 | { |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
380 | const gchar *name; |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
381 | guint i; |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
382 | struct MSIM_EMOTICON *emote; |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
383 | |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
384 | name = xmlnode_get_attrib(root, "n"); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
385 | if (!name) { |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
386 | purple_debug_info("msim", "msim_markup_i_to_html: <i> w/o n\n"); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
387 | *begin = g_strdup(""); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
388 | *end = g_strdup(""); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
389 | /* TODO: log as unrecognized */ |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
390 | return; |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
391 | } |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
392 | |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
393 | /* Find and use canonical form of smiley symbol. */ |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
394 | for (i = 0; (emote = &msim_emoticons[i]) && emote->name != NULL; ++i) { |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
395 | if (g_str_equal(name, emote->name)) { |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
396 | *begin = g_strdup(emote->symbol); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
397 | *end = g_strdup(""); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
398 | return; |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
399 | } |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
400 | } |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
401 | |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
402 | /* Couldn't find it, sorry. Try to degrade gracefully. */ |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
403 | *begin = g_strdup_printf("**%s**", name); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
404 | *end = g_strdup(""); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
405 | } |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
406 | |
|
27366
59dd76729bc2
Consistent comment formatting
Mark Doliner <markdoliner@pidgin.im>
parents:
25226
diff
changeset
|
407 | /** |
|
59dd76729bc2
Consistent comment formatting
Mark Doliner <markdoliner@pidgin.im>
parents:
25226
diff
changeset
|
408 | * Convert an individual msim markup tag to HTML. |
|
59dd76729bc2
Consistent comment formatting
Mark Doliner <markdoliner@pidgin.im>
parents:
25226
diff
changeset
|
409 | */ |
|
25145
5fdbb80f2e93
Remove stray whitespace
Mark Doliner <markdoliner@pidgin.im>
parents:
25144
diff
changeset
|
410 | static int |
|
5fdbb80f2e93
Remove stray whitespace
Mark Doliner <markdoliner@pidgin.im>
parents:
25144
diff
changeset
|
411 | msim_markup_tag_to_html(MsimSession *session, xmlnode *root, gchar **begin, |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
412 | gchar **end) |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
413 | { |
|
22536
b3ba26074066
In msimprpl, allow some levels of nested bold/italic/underline formatting.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
21453
diff
changeset
|
414 | g_return_val_if_fail(root != NULL, 0); |
|
20941
ea812bcc3bd3
Move NULL check earlier to prevent confusion when it is checked after being derefed. Fixes CID 350
Daniel Atallah <datallah@pidgin.im>
parents:
20815
diff
changeset
|
415 | |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
416 | if (g_str_equal(root->name, "f")) { |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
417 | msim_markup_f_to_html(session, root, begin, end); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
418 | } else if (g_str_equal(root->name, "a")) { |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
419 | msim_markup_a_to_html(session, root, begin, end); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
420 | } else if (g_str_equal(root->name, "p")) { |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
421 | msim_markup_p_to_html(session, root, begin, end); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
422 | } else if (g_str_equal(root->name, "c")) { |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
423 | msim_markup_c_to_html(session, root, begin, end); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
424 | } else if (g_str_equal(root->name, "b")) { |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
425 | msim_markup_b_to_html(session, root, begin, end); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
426 | } else if (g_str_equal(root->name, "i")) { |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
427 | msim_markup_i_to_html(session, root, begin, end); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
428 | } else { |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
429 | purple_debug_info("msim", "msim_markup_tag_to_html: " |
|
25223
650339b62327
Add a newline to the end of a debug messages
Mark Doliner <markdoliner@pidgin.im>
parents:
25222
diff
changeset
|
430 | "unknown tag name=%s, ignoring\n", |
|
20941
ea812bcc3bd3
Move NULL check earlier to prevent confusion when it is checked after being derefed. Fixes CID 350
Daniel Atallah <datallah@pidgin.im>
parents:
20815
diff
changeset
|
431 | root->name ? root->name : "(NULL)"); |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
432 | *begin = g_strdup(""); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
433 | *end = g_strdup(""); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
434 | } |
|
22536
b3ba26074066
In msimprpl, allow some levels of nested bold/italic/underline formatting.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
21453
diff
changeset
|
435 | return 0; |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
436 | } |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
437 | |
|
27366
59dd76729bc2
Consistent comment formatting
Mark Doliner <markdoliner@pidgin.im>
parents:
25226
diff
changeset
|
438 | /** |
|
59dd76729bc2
Consistent comment formatting
Mark Doliner <markdoliner@pidgin.im>
parents:
25226
diff
changeset
|
439 | * Convert an individual HTML tag to msim markup. |
|
59dd76729bc2
Consistent comment formatting
Mark Doliner <markdoliner@pidgin.im>
parents:
25226
diff
changeset
|
440 | */ |
|
25145
5fdbb80f2e93
Remove stray whitespace
Mark Doliner <markdoliner@pidgin.im>
parents:
25144
diff
changeset
|
441 | static int |
|
5fdbb80f2e93
Remove stray whitespace
Mark Doliner <markdoliner@pidgin.im>
parents:
25144
diff
changeset
|
442 | html_tag_to_msim_markup(MsimSession *session, xmlnode *root, gchar **begin, |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
443 | gchar **end) |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
444 | { |
|
22536
b3ba26074066
In msimprpl, allow some levels of nested bold/italic/underline formatting.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
21453
diff
changeset
|
445 | int ret = 0; |
|
b3ba26074066
In msimprpl, allow some levels of nested bold/italic/underline formatting.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
21453
diff
changeset
|
446 | |
|
20166
49c243c1fe12
Plucked mysapce tag parsing fixes
Evan Schoenberg <evands@pidgin.im>
parents:
20139
diff
changeset
|
447 | if (!purple_utf8_strcasecmp(root->name, "root") || |
|
49c243c1fe12
Plucked mysapce tag parsing fixes
Evan Schoenberg <evands@pidgin.im>
parents:
20139
diff
changeset
|
448 | !purple_utf8_strcasecmp(root->name, "html")) { |
|
49c243c1fe12
Plucked mysapce tag parsing fixes
Evan Schoenberg <evands@pidgin.im>
parents:
20139
diff
changeset
|
449 | *begin = g_strdup(""); |
|
49c243c1fe12
Plucked mysapce tag parsing fixes
Evan Schoenberg <evands@pidgin.im>
parents:
20139
diff
changeset
|
450 | *end = g_strdup(""); |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
451 | /* TODO: Coalesce nested tags into one <f> tag! |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
452 | * Currently, the 's' value will be overwritten when b/i/u is nested |
|
25145
5fdbb80f2e93
Remove stray whitespace
Mark Doliner <markdoliner@pidgin.im>
parents:
25144
diff
changeset
|
453 | * within another one, and only the inner-most formatting will be |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
454 | * applied to the text. */ |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
455 | } else if (!purple_utf8_strcasecmp(root->name, "b")) { |
|
22536
b3ba26074066
In msimprpl, allow some levels of nested bold/italic/underline formatting.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
21453
diff
changeset
|
456 | if (root->child->type == XMLNODE_TYPE_DATA) { |
|
b3ba26074066
In msimprpl, allow some levels of nested bold/italic/underline formatting.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
21453
diff
changeset
|
457 | *begin = g_strdup_printf("<f s='%d'>", MSIM_TEXT_BOLD); |
|
b3ba26074066
In msimprpl, allow some levels of nested bold/italic/underline formatting.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
21453
diff
changeset
|
458 | *end = g_strdup("</f>"); |
|
b3ba26074066
In msimprpl, allow some levels of nested bold/italic/underline formatting.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
21453
diff
changeset
|
459 | } else { |
|
b3ba26074066
In msimprpl, allow some levels of nested bold/italic/underline formatting.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
21453
diff
changeset
|
460 | if (!purple_utf8_strcasecmp(root->child->name,"i")) { |
|
b3ba26074066
In msimprpl, allow some levels of nested bold/italic/underline formatting.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
21453
diff
changeset
|
461 | ret++; |
|
b3ba26074066
In msimprpl, allow some levels of nested bold/italic/underline formatting.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
21453
diff
changeset
|
462 | if (root->child->child->type == XMLNODE_TYPE_DATA) { |
|
b3ba26074066
In msimprpl, allow some levels of nested bold/italic/underline formatting.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
21453
diff
changeset
|
463 | *begin = g_strdup_printf("<f s='%d'>", (MSIM_TEXT_BOLD + MSIM_TEXT_ITALIC)); |
|
b3ba26074066
In msimprpl, allow some levels of nested bold/italic/underline formatting.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
21453
diff
changeset
|
464 | *end = g_strdup("</f>"); |
|
b3ba26074066
In msimprpl, allow some levels of nested bold/italic/underline formatting.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
21453
diff
changeset
|
465 | } else { |
|
b3ba26074066
In msimprpl, allow some levels of nested bold/italic/underline formatting.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
21453
diff
changeset
|
466 | if (!purple_utf8_strcasecmp(root->child->child->name,"u")) { |
|
b3ba26074066
In msimprpl, allow some levels of nested bold/italic/underline formatting.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
21453
diff
changeset
|
467 | ret++; |
|
b3ba26074066
In msimprpl, allow some levels of nested bold/italic/underline formatting.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
21453
diff
changeset
|
468 | *begin = g_strdup_printf("<f s='%d'>", (MSIM_TEXT_BOLD + MSIM_TEXT_ITALIC + MSIM_TEXT_UNDERLINE)); |
|
b3ba26074066
In msimprpl, allow some levels of nested bold/italic/underline formatting.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
21453
diff
changeset
|
469 | *end = g_strdup("</f>"); |
|
b3ba26074066
In msimprpl, allow some levels of nested bold/italic/underline formatting.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
21453
diff
changeset
|
470 | } |
|
b3ba26074066
In msimprpl, allow some levels of nested bold/italic/underline formatting.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
21453
diff
changeset
|
471 | } |
|
b3ba26074066
In msimprpl, allow some levels of nested bold/italic/underline formatting.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
21453
diff
changeset
|
472 | } else if (!purple_utf8_strcasecmp(root->child->name,"u")) { |
|
b3ba26074066
In msimprpl, allow some levels of nested bold/italic/underline formatting.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
21453
diff
changeset
|
473 | ret++; |
|
b3ba26074066
In msimprpl, allow some levels of nested bold/italic/underline formatting.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
21453
diff
changeset
|
474 | *begin = g_strdup_printf("<f s='%d'>", (MSIM_TEXT_BOLD + MSIM_TEXT_UNDERLINE)); |
|
b3ba26074066
In msimprpl, allow some levels of nested bold/italic/underline formatting.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
21453
diff
changeset
|
475 | *end = g_strdup("</f>"); |
|
b3ba26074066
In msimprpl, allow some levels of nested bold/italic/underline formatting.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
21453
diff
changeset
|
476 | } |
|
b3ba26074066
In msimprpl, allow some levels of nested bold/italic/underline formatting.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
21453
diff
changeset
|
477 | } |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
478 | } else if (!purple_utf8_strcasecmp(root->name, "i")) { |
|
22536
b3ba26074066
In msimprpl, allow some levels of nested bold/italic/underline formatting.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
21453
diff
changeset
|
479 | if (root->child->type == XMLNODE_TYPE_DATA) { |
|
b3ba26074066
In msimprpl, allow some levels of nested bold/italic/underline formatting.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
21453
diff
changeset
|
480 | *begin = g_strdup_printf("<f s='%d'>", MSIM_TEXT_ITALIC); |
|
b3ba26074066
In msimprpl, allow some levels of nested bold/italic/underline formatting.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
21453
diff
changeset
|
481 | *end = g_strdup("</f>"); |
|
b3ba26074066
In msimprpl, allow some levels of nested bold/italic/underline formatting.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
21453
diff
changeset
|
482 | } else { |
|
b3ba26074066
In msimprpl, allow some levels of nested bold/italic/underline formatting.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
21453
diff
changeset
|
483 | if (!purple_utf8_strcasecmp(root->child->name,"u")) { |
|
b3ba26074066
In msimprpl, allow some levels of nested bold/italic/underline formatting.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
21453
diff
changeset
|
484 | ret++; |
|
b3ba26074066
In msimprpl, allow some levels of nested bold/italic/underline formatting.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
21453
diff
changeset
|
485 | *begin = g_strdup_printf("<f s='%d'>", (MSIM_TEXT_ITALIC + MSIM_TEXT_UNDERLINE)); |
|
b3ba26074066
In msimprpl, allow some levels of nested bold/italic/underline formatting.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
21453
diff
changeset
|
486 | *end = g_strdup("</f>"); |
|
b3ba26074066
In msimprpl, allow some levels of nested bold/italic/underline formatting.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
21453
diff
changeset
|
487 | } |
|
b3ba26074066
In msimprpl, allow some levels of nested bold/italic/underline formatting.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
21453
diff
changeset
|
488 | } |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
489 | } else if (!purple_utf8_strcasecmp(root->name, "u")) { |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
490 | *begin = g_strdup_printf("<f s='%d'>", MSIM_TEXT_UNDERLINE); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
491 | *end = g_strdup("</f>"); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
492 | } else if (!purple_utf8_strcasecmp(root->name, "a")) { |
|
20814
7792b1d90c31
A small memory leak fix.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20791
diff
changeset
|
493 | const gchar *href; |
|
7792b1d90c31
A small memory leak fix.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20791
diff
changeset
|
494 | gchar *link_text; |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
495 | |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
496 | href = xmlnode_get_attrib(root, "href"); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
497 | |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
498 | if (!href) { |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
499 | href = xmlnode_get_attrib(root, "HREF"); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
500 | } |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
501 | |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
502 | link_text = xmlnode_get_data(root); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
503 | |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
504 | if (href) { |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
505 | if (g_str_equal(link_text, href)) { |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
506 | /* Purple gives us: <a href="URL">URL</a> |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
507 | * Translate to <a h='URL' /> |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
508 | * Displayed as text of URL with link to URL |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
509 | */ |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
510 | *begin = g_strdup_printf("<a h='%s' />", href); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
511 | } else { |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
512 | /* But if we get: <a href="URL">text</a> |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
513 | * Translate to: text: <a h='URL' /> |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
514 | * |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
515 | * Because official client only supports self-closed <a> |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
516 | * tags; you can't change the link text. |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
517 | */ |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
518 | *begin = g_strdup_printf("%s: <a h='%s' />", link_text, href); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
519 | } |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
520 | } else { |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
521 | *begin = g_strdup("<a />"); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
522 | } |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
523 | |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
524 | /* Sorry, kid. MySpace doesn't support you within <a> tags. */ |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
525 | xmlnode_free(root->child); |
|
20814
7792b1d90c31
A small memory leak fix.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20791
diff
changeset
|
526 | g_free(link_text); |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
527 | root->child = NULL; |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
528 | |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
529 | *end = g_strdup(""); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
530 | } else if (!purple_utf8_strcasecmp(root->name, "font")) { |
|
25224
48a0b341f70a
Add support for foreground and background font colors in MySpace IMs
Mark Doliner <markdoliner@pidgin.im>
parents:
25223
diff
changeset
|
531 | GString *tmpbegin, *tmpend; |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
532 | const gchar *size; |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
533 | const gchar *face; |
|
25224
48a0b341f70a
Add support for foreground and background font colors in MySpace IMs
Mark Doliner <markdoliner@pidgin.im>
parents:
25223
diff
changeset
|
534 | const gchar *color; |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
535 | |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
536 | size = xmlnode_get_attrib(root, "size"); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
537 | face = xmlnode_get_attrib(root, "face"); |
|
25224
48a0b341f70a
Add support for foreground and background font colors in MySpace IMs
Mark Doliner <markdoliner@pidgin.im>
parents:
25223
diff
changeset
|
538 | color = xmlnode_get_attrib(root, "color"); |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
539 | |
|
25224
48a0b341f70a
Add support for foreground and background font colors in MySpace IMs
Mark Doliner <markdoliner@pidgin.im>
parents:
25223
diff
changeset
|
540 | tmpbegin = g_string_new("<f"); |
|
48a0b341f70a
Add support for foreground and background font colors in MySpace IMs
Mark Doliner <markdoliner@pidgin.im>
parents:
25223
diff
changeset
|
541 | tmpend = g_string_new("</f>"); |
|
48a0b341f70a
Add support for foreground and background font colors in MySpace IMs
Mark Doliner <markdoliner@pidgin.im>
parents:
25223
diff
changeset
|
542 | |
|
48a0b341f70a
Add support for foreground and background font colors in MySpace IMs
Mark Doliner <markdoliner@pidgin.im>
parents:
25223
diff
changeset
|
543 | if (face != NULL) |
|
27473
b8614d3960c0
Fix font size and font face in outgoing myspace messages. I think I
Mark Doliner <markdoliner@pidgin.im>
parents:
27366
diff
changeset
|
544 | g_string_append_printf(tmpbegin, " f='%s'", face); |
|
25224
48a0b341f70a
Add support for foreground and background font colors in MySpace IMs
Mark Doliner <markdoliner@pidgin.im>
parents:
25223
diff
changeset
|
545 | |
|
48a0b341f70a
Add support for foreground and background font colors in MySpace IMs
Mark Doliner <markdoliner@pidgin.im>
parents:
25223
diff
changeset
|
546 | if (size != NULL) |
|
27473
b8614d3960c0
Fix font size and font face in outgoing myspace messages. I think I
Mark Doliner <markdoliner@pidgin.im>
parents:
27366
diff
changeset
|
547 | g_string_append_printf(tmpbegin, " h='%d'", |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
548 | msim_point_to_height(session, |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
549 | msim_purple_size_to_point(session, atoi(size)))); |
|
25224
48a0b341f70a
Add support for foreground and background font colors in MySpace IMs
Mark Doliner <markdoliner@pidgin.im>
parents:
25223
diff
changeset
|
550 | |
|
48a0b341f70a
Add support for foreground and background font colors in MySpace IMs
Mark Doliner <markdoliner@pidgin.im>
parents:
25223
diff
changeset
|
551 | /* Close the <f> tag */ |
|
48a0b341f70a
Add support for foreground and background font colors in MySpace IMs
Mark Doliner <markdoliner@pidgin.im>
parents:
25223
diff
changeset
|
552 | g_string_append(tmpbegin, ">"); |
|
48a0b341f70a
Add support for foreground and background font colors in MySpace IMs
Mark Doliner <markdoliner@pidgin.im>
parents:
25223
diff
changeset
|
553 | |
|
48a0b341f70a
Add support for foreground and background font colors in MySpace IMs
Mark Doliner <markdoliner@pidgin.im>
parents:
25223
diff
changeset
|
554 | if (color != NULL) { |
|
48a0b341f70a
Add support for foreground and background font colors in MySpace IMs
Mark Doliner <markdoliner@pidgin.im>
parents:
25223
diff
changeset
|
555 | g_string_append_printf(tmpbegin, "<c v='%s'>", color); |
|
48a0b341f70a
Add support for foreground and background font colors in MySpace IMs
Mark Doliner <markdoliner@pidgin.im>
parents:
25223
diff
changeset
|
556 | g_string_prepend(tmpend, "</c>"); |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
557 | } |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
558 | |
|
25224
48a0b341f70a
Add support for foreground and background font colors in MySpace IMs
Mark Doliner <markdoliner@pidgin.im>
parents:
25223
diff
changeset
|
559 | *begin = g_string_free(tmpbegin, FALSE); |
|
48a0b341f70a
Add support for foreground and background font colors in MySpace IMs
Mark Doliner <markdoliner@pidgin.im>
parents:
25223
diff
changeset
|
560 | *end = g_string_free(tmpend, FALSE); |
|
48a0b341f70a
Add support for foreground and background font colors in MySpace IMs
Mark Doliner <markdoliner@pidgin.im>
parents:
25223
diff
changeset
|
561 | |
|
48a0b341f70a
Add support for foreground and background font colors in MySpace IMs
Mark Doliner <markdoliner@pidgin.im>
parents:
25223
diff
changeset
|
562 | } else if (!purple_utf8_strcasecmp(root->name, "body")) { |
|
48a0b341f70a
Add support for foreground and background font colors in MySpace IMs
Mark Doliner <markdoliner@pidgin.im>
parents:
25223
diff
changeset
|
563 | const gchar *bgcolor; |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
564 | |
|
25224
48a0b341f70a
Add support for foreground and background font colors in MySpace IMs
Mark Doliner <markdoliner@pidgin.im>
parents:
25223
diff
changeset
|
565 | bgcolor = xmlnode_get_attrib(root, "bgcolor"); |
|
48a0b341f70a
Add support for foreground and background font colors in MySpace IMs
Mark Doliner <markdoliner@pidgin.im>
parents:
25223
diff
changeset
|
566 | |
|
48a0b341f70a
Add support for foreground and background font colors in MySpace IMs
Mark Doliner <markdoliner@pidgin.im>
parents:
25223
diff
changeset
|
567 | if (bgcolor != NULL) { |
|
48a0b341f70a
Add support for foreground and background font colors in MySpace IMs
Mark Doliner <markdoliner@pidgin.im>
parents:
25223
diff
changeset
|
568 | *begin = g_strdup_printf("<b v='%s'>", bgcolor); |
|
48a0b341f70a
Add support for foreground and background font colors in MySpace IMs
Mark Doliner <markdoliner@pidgin.im>
parents:
25223
diff
changeset
|
569 | *end = g_strdup("</b>"); |
|
48a0b341f70a
Add support for foreground and background font colors in MySpace IMs
Mark Doliner <markdoliner@pidgin.im>
parents:
25223
diff
changeset
|
570 | } |
|
48a0b341f70a
Add support for foreground and background font colors in MySpace IMs
Mark Doliner <markdoliner@pidgin.im>
parents:
25223
diff
changeset
|
571 | |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
572 | } else { |
|
20166
49c243c1fe12
Plucked mysapce tag parsing fixes
Evan Schoenberg <evands@pidgin.im>
parents:
20139
diff
changeset
|
573 | gchar *err; |
|
49c243c1fe12
Plucked mysapce tag parsing fixes
Evan Schoenberg <evands@pidgin.im>
parents:
20139
diff
changeset
|
574 | |
|
49c243c1fe12
Plucked mysapce tag parsing fixes
Evan Schoenberg <evands@pidgin.im>
parents:
20139
diff
changeset
|
575 | #ifdef MSIM_MARKUP_SHOW_UNKNOWN_TAGS |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
576 | *begin = g_strdup_printf("[%s]", root->name); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
577 | *end = g_strdup_printf("[/%s]", root->name); |
|
20166
49c243c1fe12
Plucked mysapce tag parsing fixes
Evan Schoenberg <evands@pidgin.im>
parents:
20139
diff
changeset
|
578 | #else |
|
49c243c1fe12
Plucked mysapce tag parsing fixes
Evan Schoenberg <evands@pidgin.im>
parents:
20139
diff
changeset
|
579 | *begin = g_strdup(""); |
|
49c243c1fe12
Plucked mysapce tag parsing fixes
Evan Schoenberg <evands@pidgin.im>
parents:
20139
diff
changeset
|
580 | *end = g_strdup(""); |
|
49c243c1fe12
Plucked mysapce tag parsing fixes
Evan Schoenberg <evands@pidgin.im>
parents:
20139
diff
changeset
|
581 | #endif |
|
49c243c1fe12
Plucked mysapce tag parsing fixes
Evan Schoenberg <evands@pidgin.im>
parents:
20139
diff
changeset
|
582 | |
|
49c243c1fe12
Plucked mysapce tag parsing fixes
Evan Schoenberg <evands@pidgin.im>
parents:
20139
diff
changeset
|
583 | err = g_strdup_printf("html_tag_to_msim_markup: unrecognized " |
|
25145
5fdbb80f2e93
Remove stray whitespace
Mark Doliner <markdoliner@pidgin.im>
parents:
25144
diff
changeset
|
584 | "HTML tag %s was sent by the IM client; ignoring", |
|
20402
a3a7cbfe1c1c
Fix a few memory leaks in #3281 (details in ticket).
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
20377
diff
changeset
|
585 | root->name ? root->name : "(NULL)"); |
|
20166
49c243c1fe12
Plucked mysapce tag parsing fixes
Evan Schoenberg <evands@pidgin.im>
parents:
20139
diff
changeset
|
586 | msim_unrecognized(NULL, NULL, err); |
|
49c243c1fe12
Plucked mysapce tag parsing fixes
Evan Schoenberg <evands@pidgin.im>
parents:
20139
diff
changeset
|
587 | g_free(err); |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
588 | } |
|
22536
b3ba26074066
In msimprpl, allow some levels of nested bold/italic/underline formatting.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
21453
diff
changeset
|
589 | return ret; |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
590 | } |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
591 | |
|
27366
59dd76729bc2
Consistent comment formatting
Mark Doliner <markdoliner@pidgin.im>
parents:
25226
diff
changeset
|
592 | /** |
|
59dd76729bc2
Consistent comment formatting
Mark Doliner <markdoliner@pidgin.im>
parents:
25226
diff
changeset
|
593 | * Convert an xmlnode of msim markup or HTML to an HTML string or msim markup. |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
594 | * |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
595 | * @param f Function to convert tags. |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
596 | * |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
597 | * @return An HTML string. Caller frees. |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
598 | */ |
|
25147
a0b5713cb3ce
Use one GString and pass it around instead of allocating and freeing a
Mark Doliner <markdoliner@pidgin.im>
parents:
25146
diff
changeset
|
599 | static void |
|
a0b5713cb3ce
Use one GString and pass it around instead of allocating and freeing a
Mark Doliner <markdoliner@pidgin.im>
parents:
25146
diff
changeset
|
600 | msim_convert_xmlnode(MsimSession *session, GString *out, xmlnode *root, MSIM_XMLNODE_CONVERT f, int nodes_processed) |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
601 | { |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
602 | xmlnode *node; |
|
25222
f920ea226761
Fix bugs sending and receiving myspace IMs related to not escaping
Mark Doliner <markdoliner@pidgin.im>
parents:
25199
diff
changeset
|
603 | gchar *begin, *inner, *end, *tmp; |
|
22536
b3ba26074066
In msimprpl, allow some levels of nested bold/italic/underline formatting.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
21453
diff
changeset
|
604 | int descended = nodes_processed; |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
605 | |
|
25147
a0b5713cb3ce
Use one GString and pass it around instead of allocating and freeing a
Mark Doliner <markdoliner@pidgin.im>
parents:
25146
diff
changeset
|
606 | if (!root || !root->name) |
|
a0b5713cb3ce
Use one GString and pass it around instead of allocating and freeing a
Mark Doliner <markdoliner@pidgin.im>
parents:
25146
diff
changeset
|
607 | return; |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
608 | |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
609 | purple_debug_info("msim", "msim_convert_xmlnode: got root=%s\n", |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
610 | root->name); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
611 | |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
612 | begin = inner = end = NULL; |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
613 | |
|
22536
b3ba26074066
In msimprpl, allow some levels of nested bold/italic/underline formatting.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
21453
diff
changeset
|
614 | if (descended == 0) /* We've not formatted this yet.. :) */ |
|
b3ba26074066
In msimprpl, allow some levels of nested bold/italic/underline formatting.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
21453
diff
changeset
|
615 | descended = f(session, root, &begin, &end); /* Get the value that our format function has already descended for us */ |
|
25145
5fdbb80f2e93
Remove stray whitespace
Mark Doliner <markdoliner@pidgin.im>
parents:
25144
diff
changeset
|
616 | |
|
25147
a0b5713cb3ce
Use one GString and pass it around instead of allocating and freeing a
Mark Doliner <markdoliner@pidgin.im>
parents:
25146
diff
changeset
|
617 | g_string_append(out, begin); |
|
a0b5713cb3ce
Use one GString and pass it around instead of allocating and freeing a
Mark Doliner <markdoliner@pidgin.im>
parents:
25146
diff
changeset
|
618 | g_free(begin); |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
619 | |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
620 | /* Loop over all child nodes. */ |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
621 | for (node = root->child; node != NULL; node = node->next) { |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
622 | switch (node->type) { |
|
22536
b3ba26074066
In msimprpl, allow some levels of nested bold/italic/underline formatting.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
21453
diff
changeset
|
623 | case XMLNODE_TYPE_ATTRIB: |
|
b3ba26074066
In msimprpl, allow some levels of nested bold/italic/underline formatting.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
21453
diff
changeset
|
624 | /* Attributes handled above. */ |
|
b3ba26074066
In msimprpl, allow some levels of nested bold/italic/underline formatting.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
21453
diff
changeset
|
625 | break; |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
626 | |
|
22536
b3ba26074066
In msimprpl, allow some levels of nested bold/italic/underline formatting.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
21453
diff
changeset
|
627 | case XMLNODE_TYPE_TAG: |
|
b3ba26074066
In msimprpl, allow some levels of nested bold/italic/underline formatting.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
21453
diff
changeset
|
628 | /* A tag or tag with attributes. Recursively descend. */ |
|
25147
a0b5713cb3ce
Use one GString and pass it around instead of allocating and freeing a
Mark Doliner <markdoliner@pidgin.im>
parents:
25146
diff
changeset
|
629 | msim_convert_xmlnode(session, out, node, f, descended); |
|
25145
5fdbb80f2e93
Remove stray whitespace
Mark Doliner <markdoliner@pidgin.im>
parents:
25144
diff
changeset
|
630 | |
|
5fdbb80f2e93
Remove stray whitespace
Mark Doliner <markdoliner@pidgin.im>
parents:
25144
diff
changeset
|
631 | purple_debug_info("msim", " ** node name=%s\n", |
|
25147
a0b5713cb3ce
Use one GString and pass it around instead of allocating and freeing a
Mark Doliner <markdoliner@pidgin.im>
parents:
25146
diff
changeset
|
632 | node->name ? node->name : "(NULL)"); |
|
22536
b3ba26074066
In msimprpl, allow some levels of nested bold/italic/underline formatting.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
21453
diff
changeset
|
633 | break; |
|
25145
5fdbb80f2e93
Remove stray whitespace
Mark Doliner <markdoliner@pidgin.im>
parents:
25144
diff
changeset
|
634 | |
|
22536
b3ba26074066
In msimprpl, allow some levels of nested bold/italic/underline formatting.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
21453
diff
changeset
|
635 | case XMLNODE_TYPE_DATA: |
|
b3ba26074066
In msimprpl, allow some levels of nested bold/italic/underline formatting.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
21453
diff
changeset
|
636 | /* Literal text. */ |
|
25222
f920ea226761
Fix bugs sending and receiving myspace IMs related to not escaping
Mark Doliner <markdoliner@pidgin.im>
parents:
25199
diff
changeset
|
637 | /* |
|
f920ea226761
Fix bugs sending and receiving myspace IMs related to not escaping
Mark Doliner <markdoliner@pidgin.im>
parents:
25199
diff
changeset
|
638 | * TODO: Why is it necessary to escape here? I thought |
|
f920ea226761
Fix bugs sending and receiving myspace IMs related to not escaping
Mark Doliner <markdoliner@pidgin.im>
parents:
25199
diff
changeset
|
639 | * node->data was already escaped? |
|
f920ea226761
Fix bugs sending and receiving myspace IMs related to not escaping
Mark Doliner <markdoliner@pidgin.im>
parents:
25199
diff
changeset
|
640 | */ |
|
f920ea226761
Fix bugs sending and receiving myspace IMs related to not escaping
Mark Doliner <markdoliner@pidgin.im>
parents:
25199
diff
changeset
|
641 | tmp = g_markup_escape_text(node->data, node->data_sz); |
|
f920ea226761
Fix bugs sending and receiving myspace IMs related to not escaping
Mark Doliner <markdoliner@pidgin.im>
parents:
25199
diff
changeset
|
642 | g_string_append(out, tmp); |
|
f920ea226761
Fix bugs sending and receiving myspace IMs related to not escaping
Mark Doliner <markdoliner@pidgin.im>
parents:
25199
diff
changeset
|
643 | g_free(tmp); |
|
22536
b3ba26074066
In msimprpl, allow some levels of nested bold/italic/underline formatting.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
21453
diff
changeset
|
644 | break; |
|
25145
5fdbb80f2e93
Remove stray whitespace
Mark Doliner <markdoliner@pidgin.im>
parents:
25144
diff
changeset
|
645 | |
|
22536
b3ba26074066
In msimprpl, allow some levels of nested bold/italic/underline formatting.
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
21453
diff
changeset
|
646 | default: |
|
25147
a0b5713cb3ce
Use one GString and pass it around instead of allocating and freeing a
Mark Doliner <markdoliner@pidgin.im>
parents:
25146
diff
changeset
|
647 | purple_debug_warning("msim", |
|
a0b5713cb3ce
Use one GString and pass it around instead of allocating and freeing a
Mark Doliner <markdoliner@pidgin.im>
parents:
25146
diff
changeset
|
648 | "msim_convert_xmlnode: unknown node type\n"); |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
649 | } |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
650 | } |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
651 | |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
652 | /* TODO: Note that msim counts each piece of text enclosed by <f> as |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
653 | * a paragraph and will display each on its own line. You actually have |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
654 | * to _nest_ <f> tags to intersperse different text in one paragraph! |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
655 | * Comment out this line below to see. */ |
|
25147
a0b5713cb3ce
Use one GString and pass it around instead of allocating and freeing a
Mark Doliner <markdoliner@pidgin.im>
parents:
25146
diff
changeset
|
656 | g_string_append(out, end); |
|
20815
a6c11702ad56
Fix a few more memory leaks. Someone who has a myspace account should stare
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20814
diff
changeset
|
657 | g_free(end); |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
658 | } |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
659 | |
|
27366
59dd76729bc2
Consistent comment formatting
Mark Doliner <markdoliner@pidgin.im>
parents:
25226
diff
changeset
|
660 | /** |
|
59dd76729bc2
Consistent comment formatting
Mark Doliner <markdoliner@pidgin.im>
parents:
25226
diff
changeset
|
661 | * Convert XML to something based on MSIM_XMLNODE_CONVERT. |
|
59dd76729bc2
Consistent comment formatting
Mark Doliner <markdoliner@pidgin.im>
parents:
25226
diff
changeset
|
662 | */ |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
663 | static gchar * |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
664 | msim_convert_xml(MsimSession *session, const gchar *raw, MSIM_XMLNODE_CONVERT f) |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
665 | { |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
666 | xmlnode *root; |
|
25147
a0b5713cb3ce
Use one GString and pass it around instead of allocating and freeing a
Mark Doliner <markdoliner@pidgin.im>
parents:
25146
diff
changeset
|
667 | GString *str; |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
668 | gchar *enclosed_raw; |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
669 | |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
670 | g_return_val_if_fail(raw != NULL, NULL); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
671 | |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
672 | /* Enclose text in one root tag, to try to make it valid XML for parsing. */ |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
673 | enclosed_raw = g_strconcat("<root>", raw, "</root>", NULL); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
674 | |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
675 | root = xmlnode_from_str(enclosed_raw, -1); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
676 | |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
677 | if (!root) { |
|
25147
a0b5713cb3ce
Use one GString and pass it around instead of allocating and freeing a
Mark Doliner <markdoliner@pidgin.im>
parents:
25146
diff
changeset
|
678 | purple_debug_warning("msim", "msim_markup_to_html: couldn't parse " |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
679 | "%s as XML, returning raw: %s\n", enclosed_raw, raw); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
680 | /* TODO: msim_unrecognized */ |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
681 | g_free(enclosed_raw); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
682 | return g_strdup(raw); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
683 | } |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
684 | |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
685 | g_free(enclosed_raw); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
686 | |
|
25147
a0b5713cb3ce
Use one GString and pass it around instead of allocating and freeing a
Mark Doliner <markdoliner@pidgin.im>
parents:
25146
diff
changeset
|
687 | str = g_string_new(NULL); |
|
a0b5713cb3ce
Use one GString and pass it around instead of allocating and freeing a
Mark Doliner <markdoliner@pidgin.im>
parents:
25146
diff
changeset
|
688 | msim_convert_xmlnode(session, str, root, f, 0); |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
689 | xmlnode_free(root); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
690 | |
|
25147
a0b5713cb3ce
Use one GString and pass it around instead of allocating and freeing a
Mark Doliner <markdoliner@pidgin.im>
parents:
25146
diff
changeset
|
691 | purple_debug_info("msim", "msim_markup_to_html: returning %s\n", str->str); |
|
a0b5713cb3ce
Use one GString and pass it around instead of allocating and freeing a
Mark Doliner <markdoliner@pidgin.im>
parents:
25146
diff
changeset
|
692 | |
|
a0b5713cb3ce
Use one GString and pass it around instead of allocating and freeing a
Mark Doliner <markdoliner@pidgin.im>
parents:
25146
diff
changeset
|
693 | return g_string_free(str, FALSE); |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
694 | } |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
695 | |
|
27366
59dd76729bc2
Consistent comment formatting
Mark Doliner <markdoliner@pidgin.im>
parents:
25226
diff
changeset
|
696 | /** |
|
59dd76729bc2
Consistent comment formatting
Mark Doliner <markdoliner@pidgin.im>
parents:
25226
diff
changeset
|
697 | * Convert plaintext smileys to <i> markup tags. |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
698 | * |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
699 | * @param before Original text with ASCII smileys. Will be freed. |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
700 | * @return A new string with <i> tags, if applicable. Must be g_free()'d. |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
701 | */ |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
702 | static gchar * |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
703 | msim_convert_smileys_to_markup(gchar *before) |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
704 | { |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
705 | gchar *old, *new, *replacement; |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
706 | guint i; |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
707 | struct MSIM_EMOTICON *emote; |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
708 | |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
709 | old = before; |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
710 | new = NULL; |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
711 | |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
712 | for (i = 0; (emote = &msim_emoticons[i]) && emote->name != NULL; ++i) { |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
713 | gchar *name, *symbol; |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
714 | |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
715 | name = emote->name; |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
716 | symbol = emote->symbol; |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
717 | |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
718 | replacement = g_strdup_printf("<i n=\"%s\"/>", name); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
719 | |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
720 | purple_debug_info("msim", "msim_convert_smileys_to_markup: %s->%s\n", |
|
25145
5fdbb80f2e93
Remove stray whitespace
Mark Doliner <markdoliner@pidgin.im>
parents:
25144
diff
changeset
|
721 | symbol ? symbol : "(NULL)", |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
722 | replacement ? replacement : "(NULL)"); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
723 | new = purple_strreplace(old, symbol, replacement); |
|
25145
5fdbb80f2e93
Remove stray whitespace
Mark Doliner <markdoliner@pidgin.im>
parents:
25144
diff
changeset
|
724 | |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
725 | g_free(replacement); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
726 | g_free(old); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
727 | |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
728 | old = new; |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
729 | } |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
730 | |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
731 | return new; |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
732 | } |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
733 | |
|
25226
6b89c23ed37b
Support for background font colors in incoming MySpace IMs
Mark Doliner <markdoliner@pidgin.im>
parents:
25225
diff
changeset
|
734 | /** |
|
6b89c23ed37b
Support for background font colors in incoming MySpace IMs
Mark Doliner <markdoliner@pidgin.im>
parents:
25225
diff
changeset
|
735 | * High-level function to convert MySpaceIM markup to Purple (HTML) markup. |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
736 | * |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
737 | * @return Purple markup string, must be g_free()'d. */ |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
738 | gchar * |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
739 | msim_markup_to_html(MsimSession *session, const gchar *raw) |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
740 | { |
|
25146
20209c3c8b2e
Remove unnecessary casting
Mark Doliner <markdoliner@pidgin.im>
parents:
25145
diff
changeset
|
741 | return msim_convert_xml(session, raw, msim_markup_tag_to_html); |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
742 | } |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
743 | |
|
25226
6b89c23ed37b
Support for background font colors in incoming MySpace IMs
Mark Doliner <markdoliner@pidgin.im>
parents:
25225
diff
changeset
|
744 | /** |
|
6b89c23ed37b
Support for background font colors in incoming MySpace IMs
Mark Doliner <markdoliner@pidgin.im>
parents:
25225
diff
changeset
|
745 | * High-level function to convert Purple (HTML) to MySpaceIM markup. |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
746 | * |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
747 | * TODO: consider using purple_markup_html_to_xhtml() to make valid XML. |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
748 | * |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
749 | * @return HTML markup string, must be g_free()'d. */ |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
750 | gchar * |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
751 | html_to_msim_markup(MsimSession *session, const gchar *raw) |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
752 | { |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
753 | gchar *markup; |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
754 | |
|
25146
20209c3c8b2e
Remove unnecessary casting
Mark Doliner <markdoliner@pidgin.im>
parents:
25145
diff
changeset
|
755 | markup = msim_convert_xml(session, raw, html_tag_to_msim_markup); |
|
25145
5fdbb80f2e93
Remove stray whitespace
Mark Doliner <markdoliner@pidgin.im>
parents:
25144
diff
changeset
|
756 | |
|
20139
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
757 | if (purple_account_get_bool(session->account, "emoticons", TRUE)) { |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
758 | /* Frees markup and allocates a new one. */ |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
759 | markup = msim_convert_smileys_to_markup(markup); |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
760 | } |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
761 | |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
762 | return markup; |
|
f0cc6a81a9b3
applied changes from efedefa70ee1d6f7f4dd39afe5db10c7e5bfe64c
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
763 | } |