protected override void OnPaint(FlowPanelPaintEventArgs paintEventArgs) { Assert.IsNotNull(paintEventArgs); var bounds = paintEventArgs.Bounds; var graphics = paintEventArgs.Graphics; graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.Default; if (IsSelectable) { if (IsSelected) { graphics.FillRectangle( SystemBrushes.Highlight, new Rectangle(bounds.X, bounds.Y, SelectionMargin, bounds.Height)); } bounds.Width -= SelectionMargin; bounds.X += SelectionMargin; } _content.Style = Style; var clip = Rectangle.Intersect(paintEventArgs.ClipRectangle, bounds); if (clip.Width > 0 && clip.Height > 0) { graphics.SetClip(clip); _content.OnPaint(graphics, bounds); } }
protected override void OnPaint(FlowPanelPaintEventArgs paintEventArgs) { var graphics = paintEventArgs.Graphics; var rect = paintEventArgs.Bounds; var clip = paintEventArgs.ClipRectangle; var contentWidth = Math.Max(_size.Width, FlowControl.ContentArea.Width); var rcHeader = new Rectangle(rect.X + Margin, rect.Y, contentWidth - 2 * Margin, HeaderHeight); var rcHeaderClip = Rectangle.Intersect(clip, rcHeader); if (rcHeaderClip.Width > 0 && rcHeaderClip.Height > 0) { graphics.SetClip(rcHeaderClip); PaintHeader(graphics, rcHeader, GetHeaderIcon(), GetHeaderIconOverlay(), GetHeaderText()); } var x = rect.X + Margin; var y = rcHeader.Bottom; int maxLineNum = _diffFile.MaxLineNum; int digits = GetDecimalDigits(maxLineNum); var font = GitterApplication.FontManager.ViewerFont.Font; bool reachedEnd = false; int lineIndex = 0; graphics.SetClip(clip); graphics.SmoothingMode = SmoothingMode.Default; foreach (var hunk in _diffFile) { foreach (var line in hunk) { if (y >= clip.Bottom) { reachedEnd = true; break; } if (y + CellSize.Height >= clip.Y) { PaintLine( lineIndex, line, digits, graphics, font, lineIndex == _lineHover.Index, lineIndex >= _selStart && lineIndex <= _selEnd, rect.X + Margin, y, contentWidth); } y += CellSize.Height; ++lineIndex; } if (reachedEnd) { break; } } if (!reachedEnd && _diffFile.LineCount != 0) { graphics.DrawLine(Pens.Gray, rect.X + Margin, y, rect.X + contentWidth - Margin - 1, y); } graphics.ResetClip(); }
protected override void OnPaint(FlowPanelPaintEventArgs paintEventArgs) { if (_items == null || _items.Length == 0) { return; } var graphics = paintEventArgs.Graphics; var rect = paintEventArgs.Bounds; var clip = paintEventArgs.ClipRectangle; int y = rect.Y; if (FontHeight == -1) { FontHeight = (int)(GitterApplication.TextRenderer.GetFontHeight(graphics, Font) + 0.5); } var rc = new Rectangle(rect.X + 5, rect.Y, FlowControl.ContentArea.Width - 10, LineHeight); var rcClip = Rectangle.Intersect(rc, clip); using (var textBrush = new SolidBrush(FlowControl.Style.Colors.WindowText)) using (var alternateBackgroundBrush = new SolidBrush(FlowControl.Style.Colors.Alternate)) { if (rcClip.Width > 0 && rcClip.Height > 0) { GitterApplication.TextRenderer.DrawText( graphics, Resources.StrUntrackedFiles.AddColon(), Font, textBrush, rc, ContentFormat); } for (int i = 0; i < _items.Length; ++i) { rc.Y += LineHeight; rcClip = Rectangle.Intersect(rc, clip); if (rcClip.Width > 0 && rcClip.Height > 0) { if (i % 2 == 1) { graphics.FillRectangle(alternateBackgroundBrush, rcClip); } if (i == _fileHover.Index) { FlowControl.Style.ItemBackgroundStyles.Hovered.Draw(graphics, rc); } _items[i].Draw(graphics, Font, textBrush, rc, i); } } } }
protected override void OnPaint(FlowPanelPaintEventArgs paintEventArgs) { var graphics = paintEventArgs.Graphics; var rect = paintEventArgs.Bounds; var clip = paintEventArgs.ClipRectangle; var contentWidth = Math.Max(FlowControl.ContentSize.Width, FlowControl.ContentArea.Width); var x = rect.X + Margin; var y = 0; if (ShowHeader) { var rcHeader = new Rectangle(rect.X + Margin, rect.Y, contentWidth - 2 * Margin, HeaderHeight); var rcHeaderClip = Rectangle.Intersect(clip, rcHeader); if (rcHeaderClip.Width != 0 && rcHeaderClip.Height != 0) { PaintHeader(graphics, rcHeader, GraphicsUtility.QueryIcon(BlameFile.Name), null, BlameFile.Name); } y += rcHeader.Bottom; } else { if (BlameFile.LineCount != 0) { graphics.DrawLine(Pens.Gray, x, rect.Y, rect.X + contentWidth - Margin, rect.Y); } y += rect.Y + 1; } int maxLineNum = BlameFile.LineCount; int digits = GetDecimalDigits(maxLineNum); var font = GitterApplication.FontManager.ViewerFont.Font; bool reachedEnd = false; int lineIndex = 0; bool alternate = false; bool first; foreach (var hunk in BlameFile) { first = true; foreach (var line in hunk) { if (y >= clip.Bottom) { reachedEnd = true; break; } if (y + CellSize.Height >= clip.Y) { PaintLine( lineIndex, hunk, line, first, digits, graphics, font, lineIndex == _lineHover.Index, lineIndex >= _selStart && lineIndex <= _selEnd, alternate, x, y, contentWidth); } y += CellSize.Height; ++lineIndex; first = false; } alternate = !alternate; if (reachedEnd) { break; } } if (!reachedEnd && BlameFile.LineCount != 0) { graphics.DrawLine(Pens.Gray, x, y, rect.X + contentWidth - Margin - 1, y); } }
protected override void OnPaint(FlowPanelPaintEventArgs paintEventArgs) { }
protected abstract void OnPaint(FlowPanelPaintEventArgs paintEventArgs);
protected override void OnPaint(FlowPanelPaintEventArgs paintEventArgs) { if (_diff == null) { return; } var graphics = paintEventArgs.Graphics; var rect = paintEventArgs.Bounds; var clip = paintEventArgs.ClipRectangle; graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.None; if (FontHeight == -1) { FontHeight = (int)(GitterApplication.TextRenderer.GetFontHeight(graphics, Font) + 0.5); } var rcHeader = new Rectangle(rect.X + 5, rect.Y, FlowControl.ContentArea.Width - 10, HeaderHeight); var rcClip = Rectangle.Intersect(rcHeader, clip); if (_diff.FilesCount == 0) { if (rcClip.Width <= 0 || rcClip.Height <= 0) { return; } using (var brush = new SolidBrush(Style.Colors.GrayText)) { GitterApplication.TextRenderer.DrawText( graphics, Resources.StrNoChangedFiles, Font, brush, rcHeader, ContentFormat); } } else { using (var textBrush = new SolidBrush(Style.Colors.WindowText)) { if (rcClip.Width > 0 || rcClip.Height > 0) { var headerBounds = rcHeader; headerBounds.X += 5; headerBounds.Width -= 5; for (int i = 0; i < _changesByType.Length; ++i) { if (headerBounds.Width <= 0) { break; } if (_changesByType[i].Count != 0) { // prepare var headerText = _changesByType[i].DisplayText; var headerTextSize = GitterApplication.TextRenderer.MeasureText( graphics, headerText, Font, short.MaxValue, ContentFormat); var headerWidth = headerTextSize.Width; var image = _changesByType[i].Image; var displayBounds = new Rectangle( headerBounds.X - HeaderContentPadding, headerBounds.Y, headerWidth + (image != null ? image.Width + 3 : 0) + HeaderContentPadding * 2, headerBounds.Height); _changesByType[i].DisplayBounds = new Rectangle( displayBounds.X - rect.X, displayBounds.Y - rect.Y, displayBounds.Width, displayBounds.Height); // background if (StatusFilter == _changesByType[i].Status) { Style.ItemBackgroundStyles.Selected.Draw(graphics, displayBounds); } else if (_filterHover.Index == i) { Style.ItemBackgroundStyles.Hovered.Draw(graphics, displayBounds); } // header icon if (image != null) { graphics.DrawImage(image, headerBounds.X, headerBounds.Y + (headerBounds.Height - image.Height) / 2); headerBounds.X += image.Width + 3; headerBounds.Width -= image.Width + 3; } if (headerBounds.Width <= 0) { break; } // header text GitterApplication.TextRenderer.DrawText( graphics, headerText, Font, textBrush, headerBounds, HeaderFormat); headerBounds.X += headerWidth + HeaderSpacing; headerBounds.Width -= headerWidth + HeaderSpacing; if (i == 0) { headerBounds.X += HeaderSpacing; headerBounds.Width -= HeaderSpacing; } } else { _changesByType[i].DisplayBounds = Rectangle.Empty; } } } var rcLine = rcHeader; rcLine.Y += HeaderBottomMargin + HeaderHeight; rcLine.Height = LineHeight; using (var alternateBackgroundBrush = new SolidBrush(Style.Colors.Alternate)) { bool alternate = false; for (int i = 0; i < _items.Length; ++i) { if ((_items[i].File.Status & StatusFilter) != FileStatus.Unknown) { rcClip = Rectangle.Intersect(rcLine, clip); if (rcClip.Height > 0 && rcClip.Width > 0) { if (alternate) { graphics.FillRectangle(alternateBackgroundBrush, rcClip); } if (i == _fileHover.Index) { Style.ItemBackgroundStyles.Hovered.Draw(graphics, rcLine); } _items[i].Draw(graphics, Font, textBrush, rcLine); } alternate = !alternate; rcLine.Y += LineHeight; } } } } } }