/// <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; } }
public abstract void RenderViewHostHeader(ViewHostHeader header, PaintEventArgs e);
/// <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; } }
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); } }
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) { } } } } }
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); } }