/// <include file='doc\HtmlImageAdapter.uex' path='docs/doc[@for="HtmlImageAdapter.Render"]/*' /> public override void Render(HtmlMobileTextWriter writer) { String target = Control.NavigateUrl; writer.EnterLayout(Style); if (!String.IsNullOrEmpty(target)) { RenderBeginLink(writer, target); } if (String.IsNullOrEmpty(Control.ImageUrl)) { // Just write the alternate as text writer.EnsureStyle(); writer.MarkStyleContext(); writer.EnterFormat(Style); writer.WriteText(Control.AlternateText, true); writer.ExitFormat(Style); writer.UnMarkStyleContext(); } else { RenderImage(writer); } if (!String.IsNullOrEmpty(target)) { RenderEndLink(writer); } writer.ExitLayout(Style, Control.BreakAfter); }
/// <include file='doc\HtmlCalendarAdapter.uex' path='docs/doc[@for="HtmlCalendarAdapter.Render"]/*' /> public override void Render(HtmlMobileTextWriter writer) { System.Web.UI.WebControls.WebControl webCalendar = Control.WebCalendar; Style.ApplyTo(webCalendar); // Delegate the rendering effort to the child Web Calendar // control for HTML browser webCalendar.Visible = true; // There is no explicit property for alignment on WebForms // Calendar, so we need some special code to set it. writer.EnterLayout(Style); writer.EnsureStyle(); Alignment align = (Alignment) Style[Style.AlignmentKey, true]; if (!Device.SupportsDivAlign) { webCalendar.Attributes["align"] = align.ToString(); } if (Device.SupportsCss) { // Target device supports CSS - simply delegate the rendering // to the underlying Web Calendar control webCalendar.RenderControl(writer); } else { // Insert bgcolor attributes in cells that correspond to selected dates StringWriter sw = new StringWriter(CultureInfo.InvariantCulture); HtmlTextWriter tmpWriter = new HtmlTextWriter(sw); webCalendar.RenderControl(tmpWriter); String webCalendarHtml = sw.ToString(); int index = 0, indexLastTable = 0; // Search for offset of last <table> tag in the Web Calendar HTML. // That table contains the various days. do { index = webCalendarHtml.IndexOf(_selectedDateSearchTableTag, index, StringComparison.Ordinal); if (index >= 0) { indexLastTable = index; index += 5; } } while (index >= 0); index = LocateNextSelectedDate(webCalendarHtml, indexLastTable); if (index >= 0) { // Determine the background color of the containing Form control HtmlControlAdapter formAdapter = (HtmlControlAdapter) Control.Form.Adapter; Color backColor = (Color)formAdapter.Style[Style.BackColorKey, true]; int deltaR = System.Math.Abs(backColor.R - 0xC0); int deltaG = System.Math.Abs(backColor.G - 0xC0); int deltaB = System.Math.Abs(backColor.B - 0xC0); // Determine the distance between Silver and the Form's background color int bgColorDistance = deltaR * deltaR + deltaG * deltaG + deltaB * deltaB; // Choose Silver or White depending on that distance String selectedDateBGColor = String.Format(CultureInfo.CurrentCulture, "bgcolor=\"{0}\" ", bgColorDistance < _bgColorDistanceTreshold ? "White" : "Silver"); while (index >= 0) { // Insert the bgcolor attribute for each selected date cell webCalendarHtml = webCalendarHtml.Insert(index + _bgColorInsertionPointInPattern, selectedDateBGColor); index = LocateNextSelectedDate(webCalendarHtml, index + _bgColorInsertionPointInPattern); } } // Use the HTML after insertions writer.Write(webCalendarHtml); } if(Control.BreakAfter) { writer.WriteBreak(); } writer.ExitLayout(Style); }
public override void Render(HtmlMobileTextWriter writer) { System.Web.UI.WebControls.WebControl webCalendar = Control.WebCalendar; Style.ApplyTo(webCalendar); // Delegate the rendering effort to the child Web Calendar // control for HTML browser webCalendar.Visible = true; // There is no explicit property for alignment on WebForms // Calendar, so we need some special code to set it. writer.EnterLayout(Style); writer.EnsureStyle(); Alignment align = (Alignment)Style[Style.AlignmentKey, true]; if (!Device.SupportsDivAlign) { webCalendar.Attributes["align"] = align.ToString(); } if (Device.SupportsCss) { // Target device supports CSS - simply delegate the rendering // to the underlying Web Calendar control webCalendar.RenderControl(writer); } else { // Insert bgcolor attributes in cells that correspond to selected dates StringWriter sw = new StringWriter(); HtmlTextWriter tmpWriter = new HtmlTextWriter(sw); webCalendar.RenderControl(tmpWriter); String webCalendarHtml = sw.ToString(); int index = 0, indexLastTable = 0; // Search for offset of last <table> tag in the Web Calendar HTML. // That table contains the various days. do { index = webCalendarHtml.IndexOf(_selectedDateSearchTableTag, index); if (index >= 0) { indexLastTable = index; index += 5; } }while (index >= 0); index = LocateNextSelectedDate(webCalendarHtml, indexLastTable); if (index >= 0) { // Determine the background color of the containing Form control HtmlControlAdapter formAdapter = (HtmlControlAdapter)Control.Form.Adapter; Color backColor = (Color)formAdapter.Style[Style.BackColorKey, true]; int deltaR = System.Math.Abs(backColor.R - 0xC0); int deltaG = System.Math.Abs(backColor.G - 0xC0); int deltaB = System.Math.Abs(backColor.B - 0xC0); // Determine the distance between Silver and the Form's background color int bgColorDistance = deltaR * deltaR + deltaG * deltaG + deltaB * deltaB; // Choose Silver or White depending on that distance String selectedDateBGColor = String.Format("bgcolor=\"{0}\" ", bgColorDistance < _bgColorDistanceTreshold ? "White" : "Silver"); while (index >= 0) { // Insert the bgcolor attribute for each selected date cell webCalendarHtml = webCalendarHtml.Insert(index + _bgColorInsertionPointInPattern, selectedDateBGColor); index = LocateNextSelectedDate(webCalendarHtml, index + _bgColorInsertionPointInPattern); } } // Use the HTML after insertions writer.Write(webCalendarHtml); } if (Control.BreakAfter) { writer.WriteBreak(); } writer.ExitLayout(Style); }