protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) { var l1 = Skin.Layers["Control"]; var l2 = Skin.Layers["Selection"]; rs = new Rectangle[Items.Count]; // Draw the menu background. renderer.DrawLayer(this, l1, rect, ControlState.Enabled); var prev = l1.ContentMargins.Left; // Draw all menu entries. for (var i = 0; i < Items.Count; i++) { var mi = Items[i]; var tw = (int)l1.Text.Font.Resource.MeasureString(mi.Text).X + l1.ContentMargins.Horizontal; rs[i] = new Rectangle(rect.Left + prev, rect.Top + l1.ContentMargins.Top, tw, Height - l1.ContentMargins.Vertical); prev += tw; // Is not the selected entry? if (ItemIndex != i) { // Draw in the enabled state? if (mi.Enabled && Enabled) { renderer.DrawString(this, l1, mi.Text, rs[i], ControlState.Enabled, false); } // Draw in the disabled state? else { renderer.DrawString(this, l1, mi.Text, rs[i], ControlState.Disabled, false); } } // Draw in the disabled state? else { // Draw enabled state with selection? if (Items[i].Enabled && Enabled) { renderer.DrawLayer(this, l2, rs[i], ControlState.Enabled); renderer.DrawString(this, l2, mi.Text, rs[i], ControlState.Enabled, false); } // Draw in the disabled state? else { renderer.DrawLayer(this, l2, rs[i], ControlState.Disabled); renderer.DrawString(this, l2, mi.Text, rs[i], ControlState.Disabled, false); } } } }
protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) { // Toggle button in pressed state? if (mode == ButtonMode.PushButton && pushed) { var l = Skin.Layers[lrButton]; renderer.DrawLayer(l, rect, l.States.Pressed.Color, l.States.Pressed.Index); // Does the layer's pressed state have an overlay? if (l.States.Pressed.Overlay) { // Draw the overlay on top of the button. renderer.DrawLayer(l, rect, l.Overlays.Pressed.Color, l.Overlays.Pressed.Index); } } else { // Standard button. ButtonBase can handle drawing. base.DrawControl(renderer, rect, gameTime); } var layer = Skin.Layers[lrButton]; var font = (layer.Text != null && layer.Text.Font != null) ? layer.Text.Font.Resource : null; var col = Color.White; var ox = 0; var oy = 0; // Standard button pressed? if (ControlState == ControlState.Pressed) { if (layer.Text != null) { col = layer.Text.Colors.Pressed; } ox = 1; oy = 1; } // Button has an image to apply? if (glyph != null) { // Draw the button image. var cont = layer.ContentMargins; var r = new Rectangle(rect.Left + cont.Left, rect.Top + cont.Top, rect.Width - cont.Horizontal, rect.Height - cont.Vertical); renderer.DrawGlyph(glyph, r); } else { renderer.DrawString(this, layer, Text, rect, true, ox, oy); } }
public override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) { RecalcParams(); var p = Skin.Layers["Control"]; var l = Skin.Layers["Scale"]; // Scales down the height of the track bar to allow room for the scale to be drawn. var ratio = 0.66f; var h = (int)(ratio * rect.Height); var t = rect.Top + (Height - h) / 2; var px = (value / (float)range); var w = (int)Math.Ceiling(px * (rect.Width - p.ContentMargins.Horizontal - btnSlider.Width)) + 2; if (w < l.SizingMargins.Vertical) { w = l.SizingMargins.Vertical; } if (w > rect.Width - p.ContentMargins.Horizontal) { w = rect.Width - p.ContentMargins.Horizontal; } // Create the region for the track bar scale. var r1 = new Rectangle(rect.Left + p.ContentMargins.Left, t + p.ContentMargins.Top, w, h - p.ContentMargins.Vertical); base.DrawControl(renderer, new Rectangle(rect.Left, t, rect.Width, h), gameTime); if (scale) { renderer.DrawLayer(this, l, r1); } }
protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) { RecalcParams(); var bg = Skin.Layers[strRail]; renderer.DrawLayer(bg, rect, Color.White, bg.States.Enabled.Index); }
public override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) { var layer = type == GroupBoxType.Normal ? Skin.Layers["Control"] : Skin.Layers["Flat"]; var font = (layer.Text != null && layer.Text.Font != null) ? layer.Text.Font.Resource : null; var col = (layer.Text != null) ? layer.Text.Colors.Enabled : Color.White; var offset = new Point(layer.Text.OffsetX, layer.Text.OffsetY); var size = font.MeasureRichString(Text, Manager); size.Y = font.LineSpacing; var r = new Rectangle(rect.Left, rect.Top + (int)(size.Y / 2), rect.Width, rect.Height - (int)(size.Y / 2)); renderer.DrawLayer(this, layer, r); // Group box has header text to draw? if (font != null && Text != null && Text != "") { var bg = new Rectangle(r.Left + offset.X, (r.Top - (int)(size.Y / 2)) + offset.Y, (int)size.X + layer.ContentMargins.Horizontal, (int)size.Y); renderer.DrawLayer(Manager.Skin.Controls["Control"].Layers[0], bg, new Color(64, 64, 64), 0); renderer.DrawString(this, layer, Text, new Rectangle(r.Left, r.Top - (int)(size.Y / 2), (int)(size.X), (int)size.Y), true, 0, 0, false, DrawFormattedText); } }
public override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) { var layer = Skin.Layers["Control"]; var font = (layer.Text != null && layer.Text.Font != null) ? layer.Text.Font.Resource : null; var col = (layer.Text != null) ? layer.Text.Colors.Enabled : Color.White; var offset = new Point(layer.Text.OffsetX, layer.Text.OffsetY); renderer.DrawLayer(this, layer, rect); // Group panel has text to draw? if (font != null && Text != null && Text != "") { renderer.DrawString(this, layer, Text, new Rectangle(rect.Left, rect.Top + layer.ContentMargins.Top, rect.Width, Skin.ClientMargins.Top - layer.ContentMargins.Horizontal), false, offset.X, offset.Y, false, DrawFormattedText); } }
//////////////////////////////////////////////////////////////////////////// protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) { CheckLayer(Skin, "Control"); CheckLayer(Skin, "Scale"); //////////////////////////////////////////////////////////////////////////// base.DrawControl(renderer, rect, gameTime); //////////////////////////////////////////////////////////////////////////// if (Value > 0 || mode == ProgressBarMode.Infinite) { var p = Skin.Layers["Control"]; var l = Skin.Layers["Scale"]; var r = new Rectangle(rect.Left + p.ContentMargins.Left, rect.Top + p.ContentMargins.Top, rect.Width - p.ContentMargins.Vertical, rect.Height - p.ContentMargins.Horizontal); //////////////////////////////////////////////////////////////////////////// var perc = ((float)value / range) * 100; var w = (int)((perc / 100) * r.Width); Rectangle rx; if (mode == ProgressBarMode.Default) { if (w < l.SizingMargins.Vertical) { w = l.SizingMargins.Vertical; } rx = new Rectangle(r.Left, r.Top, w, r.Height); } else { var s = r.Left + w; if (s > r.Left + p.ContentMargins.Left + r.Width - (r.Width / 4)) { s = r.Left + p.ContentMargins.Left + r.Width - (r.Width / 4); } rx = new Rectangle(s, r.Top, (r.Width / 4), r.Height); } //////////////////////////////////////////////////////////////////////////// renderer.DrawLayer(this, l, rx); } }
/// <param name="gameTime">Snapshot of the application's timing values.</param> /// <param name="renderer">Render management object.</param> /// <summary> /// Draws the window. /// </summary> internal override void Render(Renderer renderer, GameTime gameTime) { // Draw the shadow first if the window is displayed and the shadow is being used. if (Visible && Shadow) { var c = Manager.Skin.Controls[skShadow]; var l = c.Layers[lrShadow]; var cl = Color.FromNonPremultiplied(l.States.Enabled.Color.R, l.States.Enabled.Color.G, l.States.Enabled.Color.B, Alpha > 255 ? 255 : (byte)Alpha); renderer.Begin(BlendingMode.Default); renderer.DrawLayer(l, new Rectangle(Left - c.OriginMargins.Left, Top - c.OriginMargins.Top, Width + c.OriginMargins.Horizontal, Height + c.OriginMargins.Vertical), cl, 0); renderer.End(); } // Draw the window. base.Render(renderer, gameTime); }
protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) { // Grab the checked skin layer and skin font. var layer = Skin.Layers[lrChecked]; var font = Skin.Layers[lrChecked].Text; // Umm. See if we actually need the unchecked layer and font... if (!state) { layer = Skin.Layers[lrCheckBox]; font = Skin.Layers[lrCheckBox].Text; } rect.Width = layer.Width; rect.Height = layer.Height; var rc = new Rectangle(rect.Left + rect.Width + 4, rect.Y, Width - (layer.Width + 4), rect.Height); renderer.DrawLayer(this, layer, rect); renderer.DrawString(this, layer, Text, rc, false, 0, 0); }
/// <summary> /// Draws the track bar control. /// </summary> /// <param name="renderer">Render management object.</param> /// <param name="rect">Destination region where the control will be drawn.</param> /// <param name="gameTime">Snapshot of the application's timing values.</param> public override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) { RecalcParams(); SkinLayer p = Skin.Layers["Control"]; SkinLayer l = Skin.Layers["Scale"]; // Scales down the height of the track bar to allow room for the scale to be drawn. float ratio = 0.66f; int h = (int)(ratio * rect.Height); int t = rect.Top + (Height - h) / 2; float px = ((float)range /*value*/ / (float)range); int w = (int)Math.Ceiling(px * (rect.Width - p.ContentMargins.Horizontal)) + 2; // NOTE: Should this be using horizontal sizing margins? if (w < l.SizingMargins.Vertical) { w = l.SizingMargins.Vertical; } if (w > rect.Width - p.ContentMargins.Horizontal) { w = rect.Width - p.ContentMargins.Horizontal; } // Create the region for the track bar scale. Rectangle r1 = new Rectangle(rect.Left + p.ContentMargins.Left, t + p.ContentMargins.Top, w, h - p.ContentMargins.Vertical); base.DrawControl(renderer, new Rectangle(rect.Left, t, rect.Width, h), gameTime); if (scale) { renderer.DrawLayer(this, l, r1); } }
public override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) { var l1 = captionVisible ? Skin.Layers[lrCaption] : Skin.Layers[lrFrameTop]; var l2 = Skin.Layers[lrFrameLeft]; var l3 = Skin.Layers[lrFrameRight]; var l4 = Skin.Layers[lrFrameBottom]; var l5 = Skin.Layers[lrIcon]; LayerStates s1, s2, s3, s4; var f1 = l1.Text.Font.Resource; var c1 = l1.Text.Colors.Enabled; // Window has focus? if ((Focused || (Manager.FocusedControl != null && Manager.FocusedControl.Root == Root)) && ControlState != ControlState.Disabled) { s1 = l1.States.Focused; s2 = l2.States.Focused; s3 = l3.States.Focused; s4 = l4.States.Focused; c1 = l1.Text.Colors.Focused; } // Window is disabled? else if (ControlState == ControlState.Disabled) { s1 = l1.States.Disabled; s2 = l2.States.Disabled; s3 = l3.States.Disabled; s4 = l4.States.Disabled; c1 = l1.Text.Colors.Disabled; } // Window not active or child control has focus? else { s1 = l1.States.Enabled; s2 = l2.States.Enabled; s3 = l3.States.Enabled; s4 = l4.States.Enabled; c1 = l1.Text.Colors.Enabled; } if (!clearBackground) { renderer.DrawLayer(Skin.Layers[lrWindow], rect, Skin.Layers[lrWindow].States.Enabled.Color, Skin.Layers[lrWindow].States.Enabled.Index); } // Need to draw the window border? if (BorderVisible) { // Draw caption layer or top frame layer, then draw the left, right, and bottom frame layers. renderer.DrawLayer(l1, new Rectangle(rect.Left, rect.Top, rect.Width, l1.Height), s1.Color, s1.Index); renderer.DrawLayer(l2, new Rectangle(rect.Left, rect.Top + l1.Height, l2.Width, rect.Height - l1.Height - l4.Height), s2.Color, s2.Index); renderer.DrawLayer(l3, new Rectangle(rect.Right - l3.Width, rect.Top + l1.Height, l3.Width, rect.Height - l1.Height - l4.Height), s3.Color, s3.Index); renderer.DrawLayer(l4, new Rectangle(rect.Left, rect.Bottom - l4.Height, rect.Width, l4.Height), s4.Color, s4.Index); // Draw the window icon if there is one and the window caption is displayed. if (iconVisible && (icon != null || l5 != null) && CaptionVisible) { var i = (icon != null) ? icon : l5.Image.Resource; renderer.Draw(i, GetIconRect(), Color.White); } var icosize = 0; if (l5 != null && iconVisible && CaptionVisible) { icosize = l1.Height - l1.ContentMargins.Vertical + 4 + l5.OffsetX; } // Draw the close button if visible. var closesize = 0; if (btnClose.Visible) { closesize = btnClose.Width - (btnClose.Skin.Layers[lrButton].OffsetX); } // Create the rectangle defining the remaining caption area to draw text in. var r = new Rectangle(rect.Left + l1.ContentMargins.Left + icosize, rect.Top + l1.ContentMargins.Top, rect.Width - l1.ContentMargins.Horizontal - closesize - icosize, l1.Height - l1.ContentMargins.Top - l1.ContentMargins.Bottom); var ox = l1.Text.OffsetX; var oy = l1.Text.OffsetY; renderer.DrawString(f1, Text, r, c1, l1.Text.Alignment, ox, oy, true); } }
/// <summary> /// Draws the context menu control. /// </summary> /// <param name="renderer">Render management object.</param> /// <param name="rect">Destination rectangle.</param> /// <param name="gameTime">Snapshot of the application's timing values.</param> public override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) { base.DrawControl(renderer, rect, gameTime); var l1 = Skin.Layers["Control"]; var l2 = Skin.Layers["Selection"]; var vsize = LineHeight(); var col = Color.White; // Draw each context menu entry. for (var i = 0; i < Items.Count; i++) { var mod = i > 0 ? 2 : 0; var left = rect.Left + l1.ContentMargins.Left + vsize; var h = vsize - mod - (i < (Items.Count - 1) ? 1 : 0); var top = rect.Top + l1.ContentMargins.Top + (i * vsize) + mod; if (Items[i].Separated && i > 0) { Rectangle r = new Rectangle(left, rect.Top + l1.ContentMargins.Top + (i * vsize), LineWidth() - vsize + 4, 1); renderer.Draw(Manager.Skin.Controls["Control"].Layers[0].Image.Resource, r, l1.Text.Colors.Enabled); } if (ItemIndex != i) { if (Items[i].Enabled) { Rectangle r = new Rectangle(left, top, LineWidth() - vsize, h); renderer.DrawString(this, l1, Items[i].Text, r, false, base.DrawFormattedText); col = l1.Text.Colors.Enabled; } else { Rectangle r = new Rectangle(left + l1.Text.OffsetX, top + l1.Text.OffsetY, LineWidth() - vsize, h); renderer.DrawString(l1.Text.Font.Resource, Items[i].Text, r, l1.Text.Colors.Disabled, l1.Text.Alignment, base.DrawFormattedText); col = l1.Text.Colors.Disabled; } } else { if (Items[i].Enabled) { Rectangle rs = new Rectangle(rect.Left + l1.ContentMargins.Left, top, Width - (l1.ContentMargins.Horizontal - Skin.OriginMargins.Horizontal), h); renderer.DrawLayer(this, l2, rs); Rectangle r = new Rectangle(left, top, LineWidth() - vsize, h); renderer.DrawString(this, l2, Items[i].Text, r, false, base.DrawFormattedText); col = l2.Text.Colors.Enabled; } else { Rectangle rs = new Rectangle(rect.Left + l1.ContentMargins.Left, top, Width - (l1.ContentMargins.Horizontal - Skin.OriginMargins.Horizontal), vsize); renderer.DrawLayer(l2, rs, l2.States.Disabled.Color, l2.States.Disabled.Index); Rectangle r = new Rectangle(left + l1.Text.OffsetX, top + l1.Text.OffsetY, LineWidth() - vsize, h); renderer.DrawString(l2.Text.Font.Resource, Items[i].Text, r, l2.Text.Colors.Disabled, l2.Text.Alignment, base.DrawFormattedText); col = l2.Text.Colors.Disabled; } } // Menu item has an image icon? if (Items[i].Image != null) { var r = new Rectangle(rect.Left + l1.ContentMargins.Left + 3, rect.Top + top + 3, LineHeight() - 6, LineHeight() - 6); renderer.Draw(Items[i].Image, r, Color.White); } if (Items[i].Items != null && Items[i].Items.Count > 0) { renderer.Draw(Manager.Skin.Images["Shared.ArrowRight"].Resource, rect.Left + LineWidth() - 4, rect.Top + l1.ContentMargins.Top + (i * vsize) + 8, col); } } }
protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) { var l1 = Skin.Layers["Control"]; var l2 = Skin.Layers["Header"]; var col = Color != UndefinedColor ? Color : Color.White; var r1 = new Rectangle(rect.Left, rect.Top + l1.OffsetY, rect.Width, rect.Height - l1.OffsetY); if (tabPages.Count <= 0) { r1 = rect; } base.DrawControl(renderer, r1, gameTime); // Has tab pages to draw? if (tabPages.Count > 0) { var prev = new Rectangle(rect.Left, rect.Top + l2.OffsetY, 0, l2.Height); // See if any of the tab page headers were clicked. for (var i = 0; i < tabPages.Count; i++) { var font = l2.Text.Font.Resource; var margins = l2.ContentMargins; var offset = new Point(l2.OffsetX, l2.OffsetY); if (i > 0) { prev = tabPages[i - 1].HeaderRect; } tabPages[i].CalcRect(prev, font, margins, offset, i == 0); } for (var i = tabPages.Count - 1; i >= 0; i--) { // Get the layer color and index for the current tab page. var li = tabPages[i].Enabled ? l2.States.Enabled.Index : l2.States.Disabled.Index; var lc = tabPages[i].Enabled ? l2.Text.Colors.Enabled : l2.Text.Colors.Disabled; // Is the current tab page header hovered? if (i == hoveredIndex) { // Update index and color values. li = l2.States.Hovered.Index; lc = l2.Text.Colors.Hovered; } // Calculate the region where text is displayed in the header, respecting content margin values. var m = l2.ContentMargins; var rx = tabPages[i].HeaderRect; var sx = new Rectangle(rx.Left + m.Left, rx.Top + m.Top, rx.Width - m.Horizontal, rx.Height - m.Vertical); // Draw the header for the unselected tab pages. if (i != selectedIndex) { renderer.DrawLayer(l2, rx, col, li); renderer.DrawString(l2.Text.Font.Resource, tabPages[i].Text, sx, lc, l2.Text.Alignment); } } // Calculate the region where text is displayed in the header, respecting content margin values. var mi = l2.ContentMargins; var ri = tabPages[selectedIndex].HeaderRect; var si = new Rectangle(ri.Left + mi.Left, ri.Top + mi.Top, ri.Width - mi.Horizontal, ri.Height - mi.Vertical); // Draw the header for the selected tab page. renderer.DrawLayer(l2, ri, col, l2.States.Focused.Index); renderer.DrawString(l2.Text.Font.Resource, tabPages[selectedIndex].Text, si, l2.Text.Colors.Focused, l2.Text.Alignment, l2.Text.OffsetX, l2.Text.OffsetY, false); } }
public override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) { renderer.DrawLayer(this, Skin.Layers[0], rect); renderer.DrawString(this, Skin.Layers[0], Text, rect, true); }