Esempio n. 1
0
 protected override Rectangle DrawText(Renderer renderer, Rectangle rect, SkinLayer layer, int ox, int oy)
 {
     // Draw the button text.
     layer.Text.Font = Manager.Skin.Fonts["Default9"];
     renderer.DrawString(this, layer, Title, rect, true, ox, 0, base.DrawFormattedText);
     layer.Text.Font = Manager.Skin.Fonts["Default8"];
     renderer.DrawString(this, layer, Text, rect, true, ox, 14, base.DrawFormattedText);
     return(rect);
 }
Esempio n. 2
0
        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);
                    }
                }
            }
        }
Esempio n. 3
0
        protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime)
        {
//base.DrawControl(renderer, rect, gameTime);
            var s = new SkinLayer(Skin.Layers[0]);

            s.Text.Alignment = alignment;
            renderer.DrawString(this, s, Text, rect, true, 0, 0, ellipsis);
        }
Esempio n. 4
0
        public override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime)
        {
            //base.DrawControl(renderer, rect, gameTime);
            var s = new SkinLayer(Skin.Layers[0]);

            s.Text.Alignment = alignment;

            if (Shadow)
            {
                textColor = Color.Black;
                rect.X   += 1;
                rect.Y   += 1;
                renderer.DrawString(this, s, Renderer.StripFormattedText(Text), rect, true, 0, 0, ellipsis, false);

                rect.X   -= 1;
                rect.Y   -= 1;
                textColor = Color.White;
            }
            renderer.DrawString(this, s, Text, rect, true, 0, 0, ellipsis, DrawFormattedText);
        }
Esempio n. 5
0
        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);
            }
        }
Esempio n. 6
0
        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);
            }
        }
Esempio n. 7
0
        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);
        }
Esempio n. 8
0
        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);
            }
        }
Esempio n. 9
0
        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);
            }
        }
Esempio n. 10
0
        /// <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);
                }
            }
        }
Esempio n. 11
0
        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);
            }
        }
Esempio n. 12
0
 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);
 }
Esempio n. 13
0
 protected virtual Rectangle DrawText(Renderer renderer, Rectangle rect, SkinLayer layer, int ox, int oy)
 {
     // Draw the button text.
     renderer.DrawString(this, layer, Text, rect, true, ox, oy, DrawFormattedText);
     return(rect);
 }