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-2010 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;
35 using System.Web.Util;
37 namespace System.Web.UI
40 [AspNetHostingPermission (SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)]
41 [AspNetHostingPermission (SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal)]
42 public class Html32TextWriter : HtmlTextWriter
44 bool div_table_substitution;
48 public Html32TextWriter (TextWriter writer) : base (writer)
52 public Html32TextWriter (TextWriter writer, string tabString) : base (writer, tabString)
56 [MonoTODO ("no effect on html generation")]
57 public bool ShouldPerformDivTableSubstitution {
58 get { return div_table_substitution; }
59 set { div_table_substitution = value; }
62 [MonoTODO ("no effect on html generation")]
63 public bool SupportsBold {
68 [MonoTODO ("no effect on html generation")]
69 public bool SupportsItalic {
70 get { return italic; }
71 set { italic = value; }
74 public override void RenderBeginTag (HtmlTextWriterTag tagKey)
76 base.RenderBeginTag (tagKey);
79 public override void RenderEndTag ()
84 protected override string GetTagName (HtmlTextWriterTag tagKey)
86 if (tagKey == HtmlTextWriterTag.Unknown ||
87 !Enum.IsDefined (typeof (HtmlTextWriterTag), tagKey))
90 return tagKey.ToString ().ToLower (Helpers.InvariantCulture);
91 /* The code below is here just in case we need to split things up
93 case HtmlTextWriterTag.Unknown:
95 case HtmlTextWriterTag.A:
97 case HtmlTextWriterTag.Acronym:
99 case HtmlTextWriterTag.Address:
101 case HtmlTextWriterTag.Area:
103 case HtmlTextWriterTag.B:
105 case HtmlTextWriterTag.Base:
107 case HtmlTextWriterTag.Basefont:
109 case HtmlTextWriterTag.Bdo:
111 case HtmlTextWriterTag.Bgsound:
113 case HtmlTextWriterTag.Big:
115 case HtmlTextWriterTag.Blockquote:
117 case HtmlTextWriterTag.Body:
119 case HtmlTextWriterTag.Br:
121 case HtmlTextWriterTag.Button:
123 case HtmlTextWriterTag.Caption:
125 case HtmlTextWriterTag.Center:
127 case HtmlTextWriterTag.Cite:
129 case HtmlTextWriterTag.Code:
131 case HtmlTextWriterTag.Col:
133 case HtmlTextWriterTag.Colgroup:
135 case HtmlTextWriterTag.Dd:
137 case HtmlTextWriterTag.Del:
139 case HtmlTextWriterTag.Dfn:
141 case HtmlTextWriterTag.Dir:
143 case HtmlTextWriterTag.Div:
145 case HtmlTextWriterTag.Dl:
147 case HtmlTextWriterTag.Dt:
149 case HtmlTextWriterTag.Em:
151 case HtmlTextWriterTag.Embed:
153 case HtmlTextWriterTag.Fieldset:
155 case HtmlTextWriterTag.Font:
157 case HtmlTextWriterTag.Form:
159 case HtmlTextWriterTag.Frame:
161 case HtmlTextWriterTag.Frameset:
163 case HtmlTextWriterTag.H1:
165 case HtmlTextWriterTag.H2:
167 case HtmlTextWriterTag.H3:
169 case HtmlTextWriterTag.H4:
171 case HtmlTextWriterTag.H5:
173 case HtmlTextWriterTag.H6:
175 case HtmlTextWriterTag.Head:
177 case HtmlTextWriterTag.Hr:
179 case HtmlTextWriterTag.Html:
181 case HtmlTextWriterTag.I:
183 case HtmlTextWriterTag.Iframe:
185 case HtmlTextWriterTag.Img:
187 case HtmlTextWriterTag.Input:
189 case HtmlTextWriterTag.Ins:
191 case HtmlTextWriterTag.Isindex:
193 case HtmlTextWriterTag.Kbd:
195 case HtmlTextWriterTag.Label:
197 case HtmlTextWriterTag.Legend:
199 case HtmlTextWriterTag.Li:
201 case HtmlTextWriterTag.Link:
203 case HtmlTextWriterTag.Map:
205 case HtmlTextWriterTag.Marquee:
207 case HtmlTextWriterTag.Menu:
209 case HtmlTextWriterTag.Meta:
211 case HtmlTextWriterTag.Nobr:
213 case HtmlTextWriterTag.Noframes:
215 case HtmlTextWriterTag.Noscript:
217 case HtmlTextWriterTag.Object:
219 case HtmlTextWriterTag.Ol:
221 case HtmlTextWriterTag.Option:
223 case HtmlTextWriterTag.P:
225 case HtmlTextWriterTag.Param:
227 case HtmlTextWriterTag.Pre:
229 case HtmlTextWriterTag.Q:
231 case HtmlTextWriterTag.Rt:
233 case HtmlTextWriterTag.Ruby:
235 case HtmlTextWriterTag.S:
237 case HtmlTextWriterTag.Samp:
239 case HtmlTextWriterTag.Script:
241 case HtmlTextWriterTag.Select:
243 case HtmlTextWriterTag.Small:
245 case HtmlTextWriterTag.Span:
247 case HtmlTextWriterTag.Strike:
249 case HtmlTextWriterTag.Strong:
251 case HtmlTextWriterTag.Style:
253 case HtmlTextWriterTag.Sub:
255 case HtmlTextWriterTag.Sup:
257 case HtmlTextWriterTag.Table:
259 case HtmlTextWriterTag.Tbody:
261 case HtmlTextWriterTag.Td:
263 case HtmlTextWriterTag.Textarea:
265 case HtmlTextWriterTag.Tfoot:
267 case HtmlTextWriterTag.Th:
269 case HtmlTextWriterTag.Thead:
271 case HtmlTextWriterTag.Title:
273 case HtmlTextWriterTag.Tr:
275 case HtmlTextWriterTag.Tt:
277 case HtmlTextWriterTag.U:
279 case HtmlTextWriterTag.Ul:
281 case HtmlTextWriterTag.Var:
283 case HtmlTextWriterTag.Wbr:
285 case HtmlTextWriterTag.Xml:
293 protected override bool OnStyleAttributeRender (string name, string value, HtmlTextWriterStyle key)
295 return base.OnStyleAttributeRender (name, value, key);
298 protected override bool OnTagRender (string name, HtmlTextWriterTag key)
300 return base.OnTagRender (name, key);
303 protected override string RenderAfterContent ()
305 return base.RenderAfterContent ();
308 protected override string RenderAfterTag ()
310 return base.RenderAfterTag ();
313 protected override string RenderBeforeContent ()
315 return base.RenderBeforeContent ();
318 protected override string RenderBeforeTag ()
320 return base.RenderBeforeTag ();
323 [MonoTODO("Not implemented, always returns null")]
324 protected Stack FontStack {