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
38 [MonoTODO ("Needs work and verification.")]
40 [AspNetHostingPermission (SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)]
41 [AspNetHostingPermission (SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal)]
42 public class Html32TextWriter : HtmlTextWriter {
44 private bool div_table_substitution;
49 public Html32TextWriter (TextWriter writer) : base (writer)
53 public Html32TextWriter (TextWriter writer, string tabString) : base (writer, tabString)
58 [MonoTODO ("no effect on html generation")]
59 public bool ShouldPerformDivTableSubstitution {
60 get { return div_table_substitution; }
61 set { div_table_substitution = value; }
64 [MonoTODO ("no effect on html generation")]
65 public bool SupportsBold {
70 [MonoTODO ("no effect on html generation")]
71 public bool SupportsItalic {
72 get { return italic; }
73 set { italic = value; }
77 public override void RenderBeginTag (HtmlTextWriterTag tagKey)
79 base.RenderBeginTag (tagKey);
82 public override void RenderEndTag ()
87 protected override string GetTagName (HtmlTextWriterTag tagKey)
89 if (tagKey == HtmlTextWriterTag.Unknown ||
90 !Enum.IsDefined (typeof (HtmlTextWriterTag), tagKey))
93 return tagKey.ToString ().ToLower (CultureInfo.InvariantCulture);
94 /* The code below is here just in case we need to split things up
96 case HtmlTextWriterTag.Unknown:
98 case HtmlTextWriterTag.A:
100 case HtmlTextWriterTag.Acronym:
102 case HtmlTextWriterTag.Address:
104 case HtmlTextWriterTag.Area:
106 case HtmlTextWriterTag.B:
108 case HtmlTextWriterTag.Base:
110 case HtmlTextWriterTag.Basefont:
112 case HtmlTextWriterTag.Bdo:
114 case HtmlTextWriterTag.Bgsound:
116 case HtmlTextWriterTag.Big:
118 case HtmlTextWriterTag.Blockquote:
120 case HtmlTextWriterTag.Body:
122 case HtmlTextWriterTag.Br:
124 case HtmlTextWriterTag.Button:
126 case HtmlTextWriterTag.Caption:
128 case HtmlTextWriterTag.Center:
130 case HtmlTextWriterTag.Cite:
132 case HtmlTextWriterTag.Code:
134 case HtmlTextWriterTag.Col:
136 case HtmlTextWriterTag.Colgroup:
138 case HtmlTextWriterTag.Dd:
140 case HtmlTextWriterTag.Del:
142 case HtmlTextWriterTag.Dfn:
144 case HtmlTextWriterTag.Dir:
146 case HtmlTextWriterTag.Div:
148 case HtmlTextWriterTag.Dl:
150 case HtmlTextWriterTag.Dt:
152 case HtmlTextWriterTag.Em:
154 case HtmlTextWriterTag.Embed:
156 case HtmlTextWriterTag.Fieldset:
158 case HtmlTextWriterTag.Font:
160 case HtmlTextWriterTag.Form:
162 case HtmlTextWriterTag.Frame:
164 case HtmlTextWriterTag.Frameset:
166 case HtmlTextWriterTag.H1:
168 case HtmlTextWriterTag.H2:
170 case HtmlTextWriterTag.H3:
172 case HtmlTextWriterTag.H4:
174 case HtmlTextWriterTag.H5:
176 case HtmlTextWriterTag.H6:
178 case HtmlTextWriterTag.Head:
180 case HtmlTextWriterTag.Hr:
182 case HtmlTextWriterTag.Html:
184 case HtmlTextWriterTag.I:
186 case HtmlTextWriterTag.Iframe:
188 case HtmlTextWriterTag.Img:
190 case HtmlTextWriterTag.Input:
192 case HtmlTextWriterTag.Ins:
194 case HtmlTextWriterTag.Isindex:
196 case HtmlTextWriterTag.Kbd:
198 case HtmlTextWriterTag.Label:
200 case HtmlTextWriterTag.Legend:
202 case HtmlTextWriterTag.Li:
204 case HtmlTextWriterTag.Link:
206 case HtmlTextWriterTag.Map:
208 case HtmlTextWriterTag.Marquee:
210 case HtmlTextWriterTag.Menu:
212 case HtmlTextWriterTag.Meta:
214 case HtmlTextWriterTag.Nobr:
216 case HtmlTextWriterTag.Noframes:
218 case HtmlTextWriterTag.Noscript:
220 case HtmlTextWriterTag.Object:
222 case HtmlTextWriterTag.Ol:
224 case HtmlTextWriterTag.Option:
226 case HtmlTextWriterTag.P:
228 case HtmlTextWriterTag.Param:
230 case HtmlTextWriterTag.Pre:
232 case HtmlTextWriterTag.Q:
234 case HtmlTextWriterTag.Rt:
236 case HtmlTextWriterTag.Ruby:
238 case HtmlTextWriterTag.S:
240 case HtmlTextWriterTag.Samp:
242 case HtmlTextWriterTag.Script:
244 case HtmlTextWriterTag.Select:
246 case HtmlTextWriterTag.Small:
248 case HtmlTextWriterTag.Span:
250 case HtmlTextWriterTag.Strike:
252 case HtmlTextWriterTag.Strong:
254 case HtmlTextWriterTag.Style:
256 case HtmlTextWriterTag.Sub:
258 case HtmlTextWriterTag.Sup:
260 case HtmlTextWriterTag.Table:
262 case HtmlTextWriterTag.Tbody:
264 case HtmlTextWriterTag.Td:
266 case HtmlTextWriterTag.Textarea:
268 case HtmlTextWriterTag.Tfoot:
270 case HtmlTextWriterTag.Th:
272 case HtmlTextWriterTag.Thead:
274 case HtmlTextWriterTag.Title:
276 case HtmlTextWriterTag.Tr:
278 case HtmlTextWriterTag.Tt:
280 case HtmlTextWriterTag.U:
282 case HtmlTextWriterTag.Ul:
284 case HtmlTextWriterTag.Var:
286 case HtmlTextWriterTag.Wbr:
288 case HtmlTextWriterTag.Xml:
296 protected override bool OnStyleAttributeRender (string name, string value, HtmlTextWriterStyle key)
298 return base.OnStyleAttributeRender (name, value, key);
301 protected override bool OnTagRender (string name, HtmlTextWriterTag key)
303 return base.OnTagRender (name, key);
306 protected override string RenderAfterContent ()
308 return base.RenderAfterContent ();
311 protected override string RenderAfterTag ()
313 return base.RenderAfterTag ();
316 protected override string RenderBeforeContent ()
318 return base.RenderBeforeContent ();
321 protected override string RenderBeforeTag ()
323 return base.RenderBeforeTag ();
327 protected Stack FontStack {