2 // System.Web.UI.Html32TextWriter.cs: Provides a HtmlTextWriter which writes HTML 3.2
5 // Matthijs ter Woord [meddochat] (meddochat@zonnet.nl)
6 // Gonzalo Paniagua Javier (gonzalo@ximian.com)
8 // Copyright (C) Matthijs ter Woord, 2004
9 // Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
11 // Permission is hereby granted, free of charge, to any person obtaining
12 // a copy of this software and associated documentation files (the
13 // "Software"), to deal in the Software without restriction, including
14 // without limitation the rights to use, copy, modify, merge, publish,
15 // distribute, sublicense, and/or sell copies of the Software, and to
16 // permit persons to whom the Software is furnished to do so, subject to
17 // the following conditions:
19 // The above copyright notice and this permission notice shall be
20 // included in all copies or substantial portions of the Software.
22 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
23 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
24 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
25 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
26 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
27 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
28 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
31 using System.Collections;
32 using System.Globalization;
34 using System.Security.Permissions;
36 namespace System.Web.UI
39 [AspNetHostingPermission (SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)]
40 [AspNetHostingPermission (SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal)]
41 public class Html32TextWriter : HtmlTextWriter {
43 private bool div_table_substitution;
48 public Html32TextWriter (TextWriter writer) : base (writer)
52 public Html32TextWriter (TextWriter writer, string tabString) : base (writer, tabString)
57 [MonoTODO ("no effect on html generation")]
58 public bool ShouldPerformDivTableSubstitution {
59 get { return div_table_substitution; }
60 set { div_table_substitution = value; }
63 [MonoTODO ("no effect on html generation")]
64 public bool SupportsBold {
69 [MonoTODO ("no effect on html generation")]
70 public bool SupportsItalic {
71 get { return italic; }
72 set { italic = value; }
76 public override void RenderBeginTag (HtmlTextWriterTag tagKey)
78 base.RenderBeginTag (tagKey);
81 public override void RenderEndTag ()
86 protected override string GetTagName (HtmlTextWriterTag tagKey)
88 if (tagKey == HtmlTextWriterTag.Unknown ||
89 !Enum.IsDefined (typeof (HtmlTextWriterTag), tagKey))
92 return tagKey.ToString ().ToLower (CultureInfo.InvariantCulture);
93 /* The code below is here just in case we need to split things up
95 case HtmlTextWriterTag.Unknown:
97 case HtmlTextWriterTag.A:
99 case HtmlTextWriterTag.Acronym:
101 case HtmlTextWriterTag.Address:
103 case HtmlTextWriterTag.Area:
105 case HtmlTextWriterTag.B:
107 case HtmlTextWriterTag.Base:
109 case HtmlTextWriterTag.Basefont:
111 case HtmlTextWriterTag.Bdo:
113 case HtmlTextWriterTag.Bgsound:
115 case HtmlTextWriterTag.Big:
117 case HtmlTextWriterTag.Blockquote:
119 case HtmlTextWriterTag.Body:
121 case HtmlTextWriterTag.Br:
123 case HtmlTextWriterTag.Button:
125 case HtmlTextWriterTag.Caption:
127 case HtmlTextWriterTag.Center:
129 case HtmlTextWriterTag.Cite:
131 case HtmlTextWriterTag.Code:
133 case HtmlTextWriterTag.Col:
135 case HtmlTextWriterTag.Colgroup:
137 case HtmlTextWriterTag.Dd:
139 case HtmlTextWriterTag.Del:
141 case HtmlTextWriterTag.Dfn:
143 case HtmlTextWriterTag.Dir:
145 case HtmlTextWriterTag.Div:
147 case HtmlTextWriterTag.Dl:
149 case HtmlTextWriterTag.Dt:
151 case HtmlTextWriterTag.Em:
153 case HtmlTextWriterTag.Embed:
155 case HtmlTextWriterTag.Fieldset:
157 case HtmlTextWriterTag.Font:
159 case HtmlTextWriterTag.Form:
161 case HtmlTextWriterTag.Frame:
163 case HtmlTextWriterTag.Frameset:
165 case HtmlTextWriterTag.H1:
167 case HtmlTextWriterTag.H2:
169 case HtmlTextWriterTag.H3:
171 case HtmlTextWriterTag.H4:
173 case HtmlTextWriterTag.H5:
175 case HtmlTextWriterTag.H6:
177 case HtmlTextWriterTag.Head:
179 case HtmlTextWriterTag.Hr:
181 case HtmlTextWriterTag.Html:
183 case HtmlTextWriterTag.I:
185 case HtmlTextWriterTag.Iframe:
187 case HtmlTextWriterTag.Img:
189 case HtmlTextWriterTag.Input:
191 case HtmlTextWriterTag.Ins:
193 case HtmlTextWriterTag.Isindex:
195 case HtmlTextWriterTag.Kbd:
197 case HtmlTextWriterTag.Label:
199 case HtmlTextWriterTag.Legend:
201 case HtmlTextWriterTag.Li:
203 case HtmlTextWriterTag.Link:
205 case HtmlTextWriterTag.Map:
207 case HtmlTextWriterTag.Marquee:
209 case HtmlTextWriterTag.Menu:
211 case HtmlTextWriterTag.Meta:
213 case HtmlTextWriterTag.Nobr:
215 case HtmlTextWriterTag.Noframes:
217 case HtmlTextWriterTag.Noscript:
219 case HtmlTextWriterTag.Object:
221 case HtmlTextWriterTag.Ol:
223 case HtmlTextWriterTag.Option:
225 case HtmlTextWriterTag.P:
227 case HtmlTextWriterTag.Param:
229 case HtmlTextWriterTag.Pre:
231 case HtmlTextWriterTag.Q:
233 case HtmlTextWriterTag.Rt:
235 case HtmlTextWriterTag.Ruby:
237 case HtmlTextWriterTag.S:
239 case HtmlTextWriterTag.Samp:
241 case HtmlTextWriterTag.Script:
243 case HtmlTextWriterTag.Select:
245 case HtmlTextWriterTag.Small:
247 case HtmlTextWriterTag.Span:
249 case HtmlTextWriterTag.Strike:
251 case HtmlTextWriterTag.Strong:
253 case HtmlTextWriterTag.Style:
255 case HtmlTextWriterTag.Sub:
257 case HtmlTextWriterTag.Sup:
259 case HtmlTextWriterTag.Table:
261 case HtmlTextWriterTag.Tbody:
263 case HtmlTextWriterTag.Td:
265 case HtmlTextWriterTag.Textarea:
267 case HtmlTextWriterTag.Tfoot:
269 case HtmlTextWriterTag.Th:
271 case HtmlTextWriterTag.Thead:
273 case HtmlTextWriterTag.Title:
275 case HtmlTextWriterTag.Tr:
277 case HtmlTextWriterTag.Tt:
279 case HtmlTextWriterTag.U:
281 case HtmlTextWriterTag.Ul:
283 case HtmlTextWriterTag.Var:
285 case HtmlTextWriterTag.Wbr:
287 case HtmlTextWriterTag.Xml:
295 protected override bool OnStyleAttributeRender (string name, string value, HtmlTextWriterStyle key)
297 return base.OnStyleAttributeRender (name, value, key);
300 protected override bool OnTagRender (string name, HtmlTextWriterTag key)
302 return base.OnTagRender (name, key);
305 protected override string RenderAfterContent ()
307 return base.RenderAfterContent ();
310 protected override string RenderAfterTag ()
312 return base.RenderAfterTag ();
315 protected override string RenderBeforeContent ()
317 return base.RenderBeforeContent ();
320 protected override string RenderBeforeTag ()
322 return base.RenderBeforeTag ();
325 [MonoTODO("Not implemented, always returns null")]
326 protected Stack FontStack {