]> git.saurik.com Git - wxWidgets.git/blob - src/html/mod_layout.cpp
*** empty log message ***
[wxWidgets.git] / src / html / mod_layout.cpp
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: mod_layout.cpp
3 // Purpose: wxHtml module for basic paragraphs/layout handling
4 // Author: Vaclav Slavik
5 // Copyright: (c) 1999 Vaclav Slavik
6 // Licence: wxWindows Licence
7 /////////////////////////////////////////////////////////////////////////////
8
9 #include "wx/defs.h"
10 #if wxUSE_HTML
11
12 #include <wx/html/forcelink.h>
13 #include <wx/html/mod_templ.h>
14
15 #include <wx/html/htmlwin.h>
16
17 FORCE_LINK_ME(mod_layout)
18
19
20 TAG_HANDLER_BEGIN(P, "P")
21
22 TAG_HANDLER_PROC(tag)
23 {
24 if (m_WParser -> GetContainer() -> GetFirstCell() != NULL) {
25 m_WParser -> CloseContainer();
26 m_WParser -> OpenContainer();
27 }
28 m_WParser -> GetContainer() -> SetIndent(m_WParser -> GetCharHeight(), HTML_INDENT_TOP);
29 m_WParser -> GetContainer() -> SetAlign(tag);
30 return FALSE;
31 }
32
33 TAG_HANDLER_END(P)
34
35
36
37 TAG_HANDLER_BEGIN(BR, "BR")
38
39 TAG_HANDLER_PROC(tag)
40 {
41 int al = m_WParser -> GetContainer() -> GetAlignHor();
42 wxHtmlContainerCell *c;
43
44 m_WParser -> CloseContainer();
45 c = m_WParser -> OpenContainer();
46 c -> SetAlignHor(al);
47 c -> SetAlign(tag);
48 return FALSE;
49 }
50
51 TAG_HANDLER_END(BR)
52
53
54
55 TAG_HANDLER_BEGIN(CENTER, "CENTER")
56
57 TAG_HANDLER_PROC(tag)
58 {
59 int old = m_WParser -> GetAlign();
60 wxHtmlContainerCell *c = m_WParser -> GetContainer();
61
62 m_WParser -> SetAlign(HTML_ALIGN_CENTER);
63 if (c -> GetFirstCell() != NULL) {
64 m_WParser -> CloseContainer();
65 m_WParser -> OpenContainer();
66 }
67 else
68 c -> SetAlignHor(HTML_ALIGN_CENTER);
69
70 if (tag.HasEnding()) {
71 ParseInner(tag);
72
73 m_WParser -> SetAlign(old);
74 if (c -> GetFirstCell() != NULL) {
75 m_WParser -> CloseContainer();
76 m_WParser -> OpenContainer();
77 }
78 else
79 c -> SetAlignHor(old);
80
81 return TRUE;
82 }
83 else return FALSE;
84 }
85
86 TAG_HANDLER_END(CENTER)
87
88
89
90 TAG_HANDLER_BEGIN(DIV, "DIV")
91
92 TAG_HANDLER_PROC(tag)
93 {
94 int old = m_WParser -> GetAlign();
95 wxHtmlContainerCell *c = m_WParser -> GetContainer();
96 if (c -> GetFirstCell() != NULL) {
97 m_WParser -> CloseContainer();
98 m_WParser -> OpenContainer();
99 c = m_WParser -> GetContainer();
100 c -> SetAlign(tag);
101 m_WParser -> SetAlign(c -> GetAlignHor());
102 }
103 else {
104 c -> SetAlign(tag);
105 m_WParser -> SetAlign(c -> GetAlignHor());
106 }
107
108 ParseInner(tag);
109
110 m_WParser -> SetAlign(old);
111 if (c -> GetFirstCell() != NULL) {
112 m_WParser -> CloseContainer();
113 m_WParser -> OpenContainer();
114 }
115 else
116 c -> SetAlignHor(old);
117
118 return TRUE;
119 }
120
121 TAG_HANDLER_END(DIV)
122
123
124
125
126 TAG_HANDLER_BEGIN(TITLE, "TITLE")
127
128 TAG_HANDLER_PROC(tag)
129 {
130 if (m_WParser -> GetWindow()) {
131 wxHtmlWindow *wfr = (wxHtmlWindow*)(m_WParser -> GetWindow());
132 if (wfr) {
133 wxString title = "";
134 wxString *src = m_WParser -> GetSource();
135
136 for (int i = tag.GetBeginPos(); i < tag.GetEndPos1(); i++) title += (*src)[i];
137 wfr -> SetTitle(title);
138 }
139 }
140 return TRUE;
141 }
142
143 TAG_HANDLER_END(TITLE)
144
145
146
147
148 TAG_HANDLER_BEGIN(BODY, "BODY")
149
150 TAG_HANDLER_PROC(tag)
151 {
152 unsigned long tmp;
153 wxColour clr;
154
155 if (tag.HasParam("TEXT")) {
156 tag.ScanParam("TEXT", "#%lX", &tmp);
157 clr = wxColour((tmp & 0xFF0000) >> 16 , (tmp & 0x00FF00) >> 8, (tmp & 0x0000FF));
158 m_WParser -> SetActualColor(clr);
159 m_WParser -> GetContainer() -> InsertCell(new wxHtmlColourCell(clr));
160 }
161
162 if (tag.HasParam("LINK")) {
163 tag.ScanParam("LINK", "#%lX", &tmp);
164 clr = wxColour((tmp & 0xFF0000) >> 16 , (tmp & 0x00FF00) >> 8, (tmp & 0x0000FF));
165 m_WParser -> SetLinkColor(clr);
166 }
167
168 if (tag.HasParam("BGCOLOR")) {
169 tag.ScanParam("BGCOLOR", "#%lX", &tmp);
170 clr = wxColour((tmp & 0xFF0000) >> 16 , (tmp & 0x00FF00) >> 8, (tmp & 0x0000FF));
171 m_WParser -> GetContainer() -> InsertCell(new wxHtmlColourCell(clr, HTML_CLR_BACKGROUND));
172 if (m_WParser -> GetWindow() != NULL)
173 m_WParser -> GetWindow() -> SetBackgroundColour(clr);
174 }
175 return FALSE;
176 }
177
178 TAG_HANDLER_END(BODY)
179
180
181
182 TAG_HANDLER_BEGIN(BLOCKQUOTE, "BLOCKQUOTE")
183
184 TAG_HANDLER_PROC(tag)
185 {
186 wxHtmlContainerCell *c;
187
188 m_WParser -> CloseContainer();
189 c = m_WParser -> OpenContainer();
190 if (c -> GetAlignHor() == HTML_ALIGN_RIGHT)
191 c -> SetIndent(5 * m_WParser -> GetCharWidth(), HTML_INDENT_RIGHT);
192 else
193 c -> SetIndent(5 * m_WParser -> GetCharWidth(), HTML_INDENT_LEFT);
194 c -> SetIndent(m_WParser -> GetCharHeight(), HTML_INDENT_TOP);
195 m_WParser -> OpenContainer();
196 ParseInner(tag);
197 c = m_WParser -> CloseContainer();
198 c -> SetIndent(m_WParser -> GetCharHeight(), HTML_INDENT_BOTTOM);
199 m_WParser -> CloseContainer();
200 m_WParser -> OpenContainer();
201 return TRUE;
202 }
203
204 TAG_HANDLER_END(BLOCKQUOTE)
205
206
207
208
209
210
211 TAGS_MODULE_BEGIN(Layout)
212
213 TAGS_MODULE_ADD(P)
214 TAGS_MODULE_ADD(BR)
215 TAGS_MODULE_ADD(CENTER)
216 TAGS_MODULE_ADD(DIV)
217 TAGS_MODULE_ADD(TITLE)
218 TAGS_MODULE_ADD(BODY)
219 TAGS_MODULE_ADD(BLOCKQUOTE)
220
221 TAGS_MODULE_END(Layout)
222
223 #endif