]>
git.saurik.com Git - wxWidgets.git/blob - src/html/m_fonts.cpp
1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: wxHtml module for fonts & colors of fonts
4 // Author: Vaclav Slavik
6 // Copyright: (c) 1999 Vaclav Slavik
7 // Licence: wxWindows Licence
8 /////////////////////////////////////////////////////////////////////////////
11 #pragma implementation
14 #include "wx/wxprec.h"
27 #include "wx/html/forcelnk.h"
28 #include "wx/html/m_templ.h"
30 FORCE_LINK_ME(m_fonts
)
33 TAG_HANDLER_BEGIN(FONT
, "FONT")
37 wxColour oldclr
= m_WParser
-> GetActualColor();
38 int oldsize
= m_WParser
-> GetFontSize();
40 if (tag
.HasParam(wxT("COLOR"))) {
41 unsigned long tmp
= 0;
43 if (tag
.ScanParam(wxT("COLOR"), wxT("#%lX"), &tmp
) == 1) {
44 clr
= wxColour((tmp
& 0xFF0000) >> 16 , (tmp
& 0x00FF00) >> 8, (tmp
& 0x0000FF));
45 m_WParser
-> SetActualColor(clr
);
46 m_WParser
-> GetContainer() -> InsertCell(new wxHtmlColourCell(clr
));
50 if (tag
.HasParam(wxT("SIZE"))) {
52 if (tag
.ScanParam(wxT("SIZE"), wxT("%li"), &tmp
) == 1) {
53 m_WParser
-> SetFontSize(oldsize
+tmp
);
54 m_WParser
-> GetContainer() -> InsertCell(new wxHtmlFontCell(m_WParser
-> CreateCurrentFont()));
60 if (oldclr
!= m_WParser
-> GetActualColor()) {
61 m_WParser
-> SetActualColor(oldclr
);
62 m_WParser
-> GetContainer() -> InsertCell(new wxHtmlColourCell(oldclr
));
64 if (oldsize
!= m_WParser
-> GetFontSize()) {
65 m_WParser
-> SetFontSize(oldsize
);
66 m_WParser
-> GetContainer() -> InsertCell(new wxHtmlFontCell(m_WParser
-> CreateCurrentFont()));
74 TAG_HANDLER_BEGIN(FACES_U
, "U")
78 int underlined
= m_WParser
-> GetFontUnderlined();
80 m_WParser
-> SetFontUnderlined(TRUE
);
81 m_WParser
-> GetContainer() -> InsertCell(new wxHtmlFontCell(m_WParser
-> CreateCurrentFont()));
85 m_WParser
-> SetFontUnderlined(underlined
);
86 m_WParser
-> GetContainer() -> InsertCell(new wxHtmlFontCell(m_WParser
-> CreateCurrentFont()));
90 TAG_HANDLER_END(FACES_U
)
95 TAG_HANDLER_BEGIN(FACES_B
, "B,STRONG")
99 int bold
= m_WParser
-> GetFontBold();
101 m_WParser
-> SetFontBold(TRUE
);
102 m_WParser
-> GetContainer() -> InsertCell(new wxHtmlFontCell(m_WParser
-> CreateCurrentFont()));
106 m_WParser
-> SetFontBold(bold
);
107 m_WParser
-> GetContainer() -> InsertCell(new wxHtmlFontCell(m_WParser
-> CreateCurrentFont()));
111 TAG_HANDLER_END(FACES_B
)
116 TAG_HANDLER_BEGIN(FACES_I
, "I,EM,CITE")
118 TAG_HANDLER_PROC(tag
)
120 int italic
= m_WParser
-> GetFontItalic();
122 m_WParser
-> SetFontItalic(TRUE
);
123 m_WParser
-> GetContainer() -> InsertCell(new wxHtmlFontCell(m_WParser
-> CreateCurrentFont()));
127 m_WParser
-> SetFontItalic(italic
);
128 m_WParser
-> GetContainer() -> InsertCell(new wxHtmlFontCell(m_WParser
-> CreateCurrentFont()));
132 TAG_HANDLER_END(FACES_I
)
137 TAG_HANDLER_BEGIN(FACES_TT
, "TT")
139 TAG_HANDLER_PROC(tag
)
141 int fixed
= m_WParser
-> GetFontFixed();
143 m_WParser
-> SetFontFixed(TRUE
);
144 m_WParser
-> GetContainer() -> InsertCell(new wxHtmlFontCell(m_WParser
-> CreateCurrentFont()));
148 m_WParser
-> SetFontFixed(fixed
);
149 m_WParser
-> GetContainer() -> InsertCell(new wxHtmlFontCell(m_WParser
-> CreateCurrentFont()));
153 TAG_HANDLER_END(FACES_TT
)
159 TAG_HANDLER_BEGIN(Hx
, "H1,H2,H3,H4,H5,H6")
161 TAG_HANDLER_PROC(tag
)
163 int old_size
, old_b
, old_i
, old_u
, old_f
, old_al
;
164 wxHtmlContainerCell
*c
;
166 old_size
= m_WParser
-> GetFontSize();
167 old_b
= m_WParser
-> GetFontBold();
168 old_i
= m_WParser
-> GetFontItalic();
169 old_u
= m_WParser
-> GetFontUnderlined();
170 old_f
= m_WParser
-> GetFontFixed();
171 old_al
= m_WParser
-> GetAlign();
173 m_WParser
-> SetFontBold(TRUE
);
174 m_WParser
-> SetFontItalic(FALSE
);
175 m_WParser
-> SetFontUnderlined(FALSE
);
176 m_WParser
-> SetFontFixed(FALSE
);
178 if (tag
.GetName() == "H1")
179 m_WParser
-> SetFontSize(+4);
180 else if (tag
.GetName() == "H2")
181 m_WParser
-> SetFontSize(+3);
182 else if (tag
.GetName() == "H3")
183 m_WParser
-> SetFontSize(+2);
184 else if (tag
.GetName() == "H4") {
185 m_WParser
-> SetFontSize(+2);
186 m_WParser
-> SetFontItalic(TRUE
);
187 m_WParser
-> SetFontBold(FALSE
);
189 else if (tag
.GetName() == "H5")
190 m_WParser
-> SetFontSize(+1);
191 else if (tag
.GetName() == "H6") {
192 m_WParser
-> SetFontSize(+1);
193 m_WParser
-> SetFontItalic(TRUE
);
194 m_WParser
-> SetFontBold(FALSE
);
197 c
= m_WParser
-> GetContainer();
198 if (c
-> GetFirstCell()) {
199 m_WParser
-> CloseContainer();
200 m_WParser
-> OpenContainer();
201 c
= m_WParser
-> GetContainer();
203 c
= m_WParser
-> GetContainer();
206 c
-> InsertCell(new wxHtmlFontCell(m_WParser
-> CreateCurrentFont()));
207 c
-> SetIndent(m_WParser
-> GetCharHeight(), wxHTML_INDENT_TOP
);
208 m_WParser
-> SetAlign(c
-> GetAlignHor());
212 m_WParser
-> SetFontSize(old_size
);
213 m_WParser
-> SetFontBold(old_b
);
214 m_WParser
-> SetFontItalic(old_i
);
215 m_WParser
-> SetFontUnderlined(old_u
);
216 m_WParser
-> SetFontFixed(old_f
);
217 m_WParser
-> SetAlign(old_al
);
219 m_WParser
-> GetContainer() -> InsertCell(new wxHtmlFontCell(m_WParser
-> CreateCurrentFont()));
220 m_WParser
-> CloseContainer();
221 m_WParser
-> OpenContainer();
222 c
= m_WParser
-> GetContainer();
223 c
-> SetIndent(m_WParser
-> GetCharHeight(), wxHTML_INDENT_TOP
);
233 TAGS_MODULE_BEGIN(Fonts
)
235 TAGS_MODULE_ADD(FONT
)
236 TAGS_MODULE_ADD(FACES_U
)
237 TAGS_MODULE_ADD(FACES_I
)
238 TAGS_MODULE_ADD(FACES_B
)
239 TAGS_MODULE_ADD(FACES_TT
)
242 TAGS_MODULE_END(Fonts
)