コード例 #1
0
ファイル: ViewHost.cs プロジェクト: Kuzq/gitter
        /// <summary>Creates <see cref="ViewHostHeader"/> control.</summary>
        /// <param name="size">Control size.</param>
        private void SpawnHeader(Size size)
        {
            Verify.State.IsTrue(_header == null, "Header is already spawned.");

            var headerHeight = Renderer.HeaderHeight;
            if(headerHeight > 0)
            {
                _header = new ViewHostHeader(this)
                {
                    Bounds = new Rectangle(0, 0, size.Width, headerHeight),
                    Anchor = ViewConstants.AnchorDockTop,
                    Parent = this,
                };
                ResetHeaderButtons();
                _header.MouseDown += OnHeaderMouseDown;
                _header.MouseMove += OnHeaderMouseMove;
                _header.MouseUp += OnHeaderMouseUp;
                _header.MouseDoubleClick += OnHeaderMouseDoubleClick;
                _header.HeaderButtonClick += OnHeaderButtonClick;
            }
        }
コード例 #2
0
ファイル: ViewRenderer.cs プロジェクト: oqewok/gitter
 public abstract void RenderViewHostHeader(ViewHostHeader header, PaintEventArgs e);
コード例 #3
0
ファイル: ViewHost.cs プロジェクト: Kuzq/gitter
 /// <summary>Destroy header control.</summary>
 private void RemoveHeader()
 {
     if(_header != null)
     {
         _header.Parent = null;
         _header.MouseDown -= OnHeaderMouseDown;
         _header.MouseMove -= OnHeaderMouseMove;
         _header.MouseUp -= OnHeaderMouseUp;
         _header.MouseDoubleClick -= OnHeaderMouseDoubleClick;
         _header.HeaderButtonClick -= OnHeaderButtonClick;
         _header.Dispose();
         _header = null;
     }
 }
コード例 #4
0
        public override void RenderViewHostHeader(ViewHostHeader header, PaintEventArgs e)
        {
            const int BetweenTextAndButtons = 2;
            const int BeforeContent = 2;

            var graphics = e.Graphics;
            var client = header.ClientRectangle;

            var rect = (RectangleF)client;
            rect.X -= .5f;
            rect.Width += 1;
            rect.Y -= .5f;
            rect.Height += 1;

            graphics.TextRenderingHint = GraphicsUtility.TextRenderingHint;
            graphics.TextContrast       = GraphicsUtility.TextContrast;

            Color textColor, backgroundStart, backgroundEnd;
            if(header.ViewHost.IsActive)
            {
                textColor		= ColorTable.ViewHostHeaderTextFocused;
                backgroundStart	= ColorTable.ViewHostHeaderBackgroundFocusedStart;
                backgroundEnd	= ColorTable.ViewHostHeaderBackgroundFocusedEnd;
            }
            else
            {
                textColor		= ColorTable.ViewHostHeaderTextNormal;
                backgroundStart	= ColorTable.ViewHostHeaderBackgroundNormalStart;
                backgroundEnd	= ColorTable.ViewHostHeaderBackgroundNormalEnd;
            }

            if(header.ViewHost.Status == ViewHostStatus.Floating &&
                ((Form)header.ViewHost.TopLevelControl).WindowState == FormWindowState.Maximized)
            {
                graphics.SmoothingMode = SmoothingMode.HighQuality;
                using(var brush = new LinearGradientBrush(Point.Empty, new Point(0, Constants.HeaderHeight), backgroundStart, backgroundEnd))
                {
                    graphics.FillRectangle(brush, rect);
                }
            }
            else
            {
                using(var brush = new SolidBrush(ColorTable.ViewHostHeaderBackground))
                {
                    graphics.FillRectangle(brush, e.ClipRectangle);
                }
                graphics.SmoothingMode = SmoothingMode.HighQuality;
                using(var brush = new LinearGradientBrush(Point.Empty, new Point(0, Constants.HeaderHeight), backgroundStart, backgroundEnd))
                {
                    graphics.FillRoundedRectangle(brush, rect, 2, 2, 0, 0);
                }
            }
            rect.X += BeforeContent;
            rect.Width -= BeforeContent;
            if(header.Buttons.Count != 0)
            {
                rect.Width -= header.Buttons.Width + BetweenTextAndButtons;
            }
            using(var brush = new SolidBrush(textColor))
            {
                GitterApplication.TextRenderer.DrawText(
                    graphics,
                    header.Text,
                    GitterApplication.FontManager.UIFont,
                    brush,
                    Rectangle.Truncate(rect),
                    ViewHostHeaderTextFormat);
            }
        }
コード例 #5
0
        public override void RenderViewHostHeader(ViewHostHeader header, PaintEventArgs e)
        {
            const int BetweenTextAndButtons = 2;
            const int BeforeContent = 2;

            var graphics = e.Graphics;

            Color textColor, backgroundColor, accentColor;
            if(header.ViewHost.IsActive)
            {
                textColor		= ColorTable.ViewHostHeaderTextFocused;
                backgroundColor	= ColorTable.ViewHostHeaderBackgroundFocused;
                accentColor		= ColorTable.ViewHostHeaderAccentFocused;
            }
            else
            {
                textColor		= ColorTable.ViewHostHeaderTextNormal;
                backgroundColor	= ColorTable.ViewHostHeaderBackgroundNormal;
                accentColor		= ColorTable.ViewHostHeaderAccentNormal;
            }

            using(var brush = new SolidBrush(backgroundColor))
            {
                graphics.FillRectangle(brush, e.ClipRectangle);
            }

            var client = header.ClientRectangle;
            client.X += BeforeContent;
            client.Width -= BeforeContent;
            if(header.Buttons.Count != 0)
            {
                client.Width -= header.Buttons.Width + BetweenTextAndButtons;
            }
            if(client.Width > 1)
            {
                int textWidth;
                using(var brush = new SolidBrush(textColor))
                {
                    graphics.TextRenderingHint = GraphicsUtility.TextRenderingHint;
                    graphics.TextContrast      = GraphicsUtility.TextContrast;
                    textWidth = GitterApplication.TextRenderer.MeasureText(
                        graphics,
                        header.Text,
                        GitterApplication.FontManager.UIFont,
                        client.Width).Width;
                    GitterApplication.TextRenderer.DrawText(
                        graphics,
                        header.Text,
                        GitterApplication.FontManager.UIFont,
                        brush,
                        client,
                        ViewHostHeaderTextFormat);
                }
                client.X += textWidth + 6;
                client.Width -= textWidth + 6;
                if(client.Width > 1)
                {
                    const int AccentHeight = 5;
                    client.Y = (client.Height - AccentHeight) / 2;
                    client.Height = AccentHeight;

                    using(var brush = new HatchBrush(HatchStyle.Percent20, accentColor, backgroundColor))
                    {
                        var ro = default(Point);
                        try
                        {
                            ro = graphics.RenderingOrigin;
                            graphics.RenderingOrigin = new Point(client.X % 4, client.Y % 4);
                        }
                        catch(NotImplementedException)
                        {
                        }
                        graphics.FillRectangle(brush, client);
                        try
                        {
                            graphics.RenderingOrigin = ro;
                        }
                        catch(NotImplementedException)
                        {
                        }
                    }
                }
            }
        }
コード例 #6
0
ファイル: ViewRenderer.cs プロジェクト: Kuzq/gitter
 public abstract void RenderViewHostHeader(ViewHostHeader header, PaintEventArgs e);
コード例 #7
0
        public override void RenderViewHostHeader(ViewHostHeader header, PaintEventArgs e)
        {
            const int BetweenTextAndButtons = 2;
            const int BeforeContent         = 2;

            var graphics = e.Graphics;
            var client   = header.ClientRectangle;

            var rect = (RectangleF)client;

            rect.X      -= .5f;
            rect.Width  += 1;
            rect.Y      -= .5f;
            rect.Height += 1;

            graphics.TextRenderingHint = GraphicsUtility.TextRenderingHint;
            graphics.TextContrast      = GraphicsUtility.TextContrast;

            Color textColor, backgroundStart, backgroundEnd;

            if (header.ViewHost.IsActive)
            {
                textColor       = ColorTable.ViewHostHeaderTextFocused;
                backgroundStart = ColorTable.ViewHostHeaderBackgroundFocusedStart;
                backgroundEnd   = ColorTable.ViewHostHeaderBackgroundFocusedEnd;
            }
            else
            {
                textColor       = ColorTable.ViewHostHeaderTextNormal;
                backgroundStart = ColorTable.ViewHostHeaderBackgroundNormalStart;
                backgroundEnd   = ColorTable.ViewHostHeaderBackgroundNormalEnd;
            }

            if (header.ViewHost.Status == ViewHostStatus.Floating &&
                ((Form)header.ViewHost.TopLevelControl).WindowState == FormWindowState.Maximized)
            {
                graphics.SmoothingMode = SmoothingMode.HighQuality;
                using (var brush = new LinearGradientBrush(Point.Empty, new Point(0, Constants.HeaderHeight), backgroundStart, backgroundEnd))
                {
                    graphics.FillRectangle(brush, rect);
                }
            }
            else
            {
                using (var brush = new SolidBrush(ColorTable.ViewHostHeaderBackground))
                {
                    graphics.FillRectangle(brush, e.ClipRectangle);
                }
                graphics.SmoothingMode = SmoothingMode.HighQuality;
                using (var brush = new LinearGradientBrush(Point.Empty, new Point(0, Constants.HeaderHeight), backgroundStart, backgroundEnd))
                {
                    graphics.FillRoundedRectangle(brush, rect, 2, 2, 0, 0);
                }
            }
            rect.X     += BeforeContent;
            rect.Width -= BeforeContent;
            if (header.Buttons.Count != 0)
            {
                rect.Width -= header.Buttons.Width + BetweenTextAndButtons;
            }
            using (var brush = new SolidBrush(textColor))
            {
                GitterApplication.TextRenderer.DrawText(
                    graphics,
                    header.Text,
                    GitterApplication.FontManager.UIFont,
                    brush,
                    Rectangle.Truncate(rect),
                    ViewHostHeaderTextFormat);
            }
        }