1 // Permission is hereby granted, free of charge, to any person obtaining
2 // a copy of this software and associated documentation files (the
3 // "Software"), to deal in the Software without restriction, including
4 // without limitation the rights to use, copy, modify, merge, publish,
5 // distribute, sublicense, and/or sell copies of the Software, and to
6 // permit persons to whom the Software is furnished to do so, subject to
7 // the following conditions:
9 // The above copyright notice and this permission notice shall be
10 // included in all copies or substantial portions of the Software.
12 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
13 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
14 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
15 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
16 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
17 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
18 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20 // Copyright (c) 2004-2005 Novell, Inc.
23 // Jordi Mas i Hernandez, jordi@ximian.com
24 // Peter Dennis Bartok, pbartok@novell.com
27 using System.Collections;
29 using System.Drawing.Drawing2D;
30 using System.Drawing.Imaging;
31 using System.Reflection;
33 namespace System.Windows.Forms
35 internal enum UIIcon {
36 PlacesRecentDocuments,
49 internal struct CPColor {
51 internal Color DarkDark;
53 internal Color LightLight;
55 internal static CPColor Empty;
58 // Implements a pool of system resources
59 internal class SystemResPool
61 private Hashtable pens = new Hashtable ();
62 private Hashtable dashpens = new Hashtable ();
63 private Hashtable sizedpens = new Hashtable ();
64 private Hashtable solidbrushes = new Hashtable ();
65 private Hashtable hatchbrushes = new Hashtable ();
66 private Hashtable uiImages = new Hashtable();
67 private Hashtable cpcolors = new Hashtable ();
69 public SystemResPool () {}
71 public Pen GetPen (Color color)
73 int hash = color.ToArgb ();
76 Pen res = pens [hash] as Pen;
80 Pen pen = new Pen (color);
86 public Pen GetDashPen (Color color, DashStyle dashStyle)
88 string hash = color.ToString() + dashStyle;
91 Pen res = dashpens [hash] as Pen;
95 Pen pen = new Pen (color);
96 pen.DashStyle = dashStyle;
97 dashpens [hash] = pen;
102 public Pen GetSizedPen (Color color, int size)
104 string hash = color.ToString () + size;
107 Pen res = sizedpens [hash] as Pen;
111 Pen pen = new Pen (color, size);
112 sizedpens [hash] = pen;
117 public SolidBrush GetSolidBrush (Color color)
119 int hash = color.ToArgb ();
121 lock (solidbrushes) {
122 SolidBrush res = solidbrushes [hash] as SolidBrush;
126 SolidBrush brush = new SolidBrush (color);
127 solidbrushes.Add (hash, brush);
132 public HatchBrush GetHatchBrush (HatchStyle hatchStyle, Color foreColor, Color backColor)
134 string hash = ((int)hatchStyle).ToString () + foreColor.ToString () + backColor.ToString ();
136 lock (hatchbrushes) {
137 HatchBrush brush = (HatchBrush) hatchbrushes[hash];
139 brush = new HatchBrush (hatchStyle, foreColor, backColor);
140 hatchbrushes.Add (hash, brush);
146 public void AddUIImage (Image image, string name, int size)
148 string hash = name + size.ToString();
151 if (uiImages.Contains (hash))
153 uiImages.Add (hash, image);
157 public Image GetUIImage(string name, int size)
159 string hash = name + size.ToString();
161 Image image = uiImages [hash] as Image;
166 public CPColor GetCPColor (Color color)
169 object tmp = cpcolors [color];
172 CPColor cpcolor = new CPColor ();
173 cpcolor.Dark = ControlPaint.Dark (color);
174 cpcolor.DarkDark = ControlPaint.DarkDark (color);
175 cpcolor.Light = ControlPaint.Light (color);
176 cpcolor.LightLight = ControlPaint.LightLight (color);
178 cpcolors.Add (color, cpcolor);
188 internal abstract class Theme
190 protected Array syscolors;
191 private readonly Font default_font;
192 protected Font window_border_font;
193 protected Color defaultWindowBackColor;
194 protected Color defaultWindowForeColor;
195 internal SystemResPool ResPool = new SystemResPool ();
196 private MethodInfo update;
201 default_font = SystemFonts.DefaultFont;
203 default_font = new Font (FontFamily.GenericSansSerif, 8.25f);
208 private void SetSystemColors (KnownColor kc, Color value)
210 if (update == null) {
211 Type known_colors = Type.GetType ("System.Drawing.KnownColors, " + Consts.AssemblySystem_Drawing);
212 if (known_colors != null)
213 update = known_colors.GetMethod ("Update", BindingFlags.Static | BindingFlags.Public);
216 update.Invoke (null, new object [2] { (int)kc, value.ToArgb () });
219 /* OS Feature support */
220 public abstract Version Version {
224 /* Default properties */
225 public virtual Color ColorScrollBar {
226 get { return SystemColors.ScrollBar; }
227 set { SetSystemColors (KnownColor.ScrollBar, value); }
230 public virtual Color ColorDesktop {
231 get { return SystemColors.Desktop;}
232 set { SetSystemColors (KnownColor.Desktop, value); }
235 public virtual Color ColorActiveCaption {
236 get { return SystemColors.ActiveCaption;}
237 set { SetSystemColors (KnownColor.ActiveCaption, value); }
240 public virtual Color ColorInactiveCaption {
241 get { return SystemColors.InactiveCaption;}
242 set { SetSystemColors (KnownColor.InactiveCaption, value); }
245 public virtual Color ColorMenu {
246 get { return SystemColors.Menu;}
247 set { SetSystemColors (KnownColor.Menu, value); }
250 public virtual Color ColorWindow {
251 get { return SystemColors.Window;}
252 set { SetSystemColors (KnownColor.Window, value); }
255 public virtual Color ColorWindowFrame {
256 get { return SystemColors.WindowFrame;}
257 set { SetSystemColors (KnownColor.WindowFrame, value); }
260 public virtual Color ColorMenuText {
261 get { return SystemColors.MenuText;}
262 set { SetSystemColors (KnownColor.MenuText, value); }
265 public virtual Color ColorWindowText {
266 get { return SystemColors.WindowText;}
267 set { SetSystemColors (KnownColor.WindowText, value); }
270 public virtual Color ColorActiveCaptionText {
271 get { return SystemColors.ActiveCaptionText;}
272 set { SetSystemColors (KnownColor.ActiveCaptionText, value); }
275 public virtual Color ColorActiveBorder {
276 get { return SystemColors.ActiveBorder;}
277 set { SetSystemColors (KnownColor.ActiveBorder, value); }
280 public virtual Color ColorInactiveBorder{
281 get { return SystemColors.InactiveBorder;}
282 set { SetSystemColors (KnownColor.InactiveBorder, value); }
285 public virtual Color ColorAppWorkspace {
286 get { return SystemColors.AppWorkspace;}
287 set { SetSystemColors (KnownColor.AppWorkspace, value); }
290 public virtual Color ColorHighlight {
291 get { return SystemColors.Highlight;}
292 set { SetSystemColors (KnownColor.Highlight, value); }
295 public virtual Color ColorHighlightText {
296 get { return SystemColors.HighlightText;}
297 set { SetSystemColors (KnownColor.HighlightText, value); }
300 public virtual Color ColorControl {
301 get { return SystemColors.Control;}
302 set { SetSystemColors (KnownColor.Control, value); }
305 public virtual Color ColorControlDark {
306 get { return SystemColors.ControlDark;}
307 set { SetSystemColors (KnownColor.ControlDark, value); }
310 public virtual Color ColorGrayText {
311 get { return SystemColors.GrayText;}
312 set { SetSystemColors (KnownColor.GrayText, value); }
315 public virtual Color ColorControlText {
316 get { return SystemColors.ControlText;}
317 set { SetSystemColors (KnownColor.ControlText, value); }
320 public virtual Color ColorInactiveCaptionText {
321 get { return SystemColors.InactiveCaptionText;}
322 set { SetSystemColors (KnownColor.InactiveCaptionText, value); }
325 public virtual Color ColorControlLight {
326 get { return SystemColors.ControlLight;}
327 set { SetSystemColors (KnownColor.ControlLight, value); }
330 public virtual Color ColorControlDarkDark {
331 get { return SystemColors.ControlDarkDark;}
332 set { SetSystemColors (KnownColor.ControlDarkDark, value); }
335 public virtual Color ColorControlLightLight {
336 get { return SystemColors.ControlLightLight;}
337 set { SetSystemColors (KnownColor.ControlLightLight, value); }
340 public virtual Color ColorInfoText {
341 get { return SystemColors.InfoText;}
342 set { SetSystemColors (KnownColor.InfoText, value); }
345 public virtual Color ColorInfo {
346 get { return SystemColors.Info;}
347 set { SetSystemColors (KnownColor.Info, value); }
350 public virtual Color ColorHotTrack {
351 get { return SystemColors.HotTrack;}
352 set { SetSystemColors (KnownColor.HotTrack, value);}
355 public virtual Color DefaultControlBackColor {
356 get { return ColorControl; }
357 set { ColorControl = value; }
360 public virtual Color DefaultControlForeColor {
361 get { return ColorControlText; }
362 set { ColorControlText = value; }
365 public virtual Font DefaultFont {
366 get { return default_font; }
369 public virtual Color DefaultWindowBackColor {
370 get { return defaultWindowBackColor; }
373 public virtual Color DefaultWindowForeColor {
374 get { return defaultWindowForeColor; }
377 public virtual Color GetColor (XplatUIWin32.GetSysColorIndex idx)
379 return (Color) syscolors.GetValue ((int)idx);
382 public virtual void SetColor (XplatUIWin32.GetSysColorIndex idx, Color color)
384 syscolors.SetValue (color, (int) idx);
387 // Theme/UI specific defaults
388 public virtual ArrangeDirection ArrangeDirection {
390 return ArrangeDirection.Down;
394 public virtual ArrangeStartingPosition ArrangeStartingPosition {
396 return ArrangeStartingPosition.BottomLeft;
400 public virtual int BorderMultiplierFactor { get { return 1; } }
402 public virtual Size BorderSizableSize {
404 return new Size (3, 3);
408 public virtual Size Border3DSize {
410 return XplatUI.Border3DSize;
414 public virtual Size BorderStaticSize {
416 return new Size(1, 1);
420 public virtual Size BorderSize {
422 return XplatUI.BorderSize;
426 public virtual Size CaptionButtonSize {
428 return XplatUI.CaptionButtonSize;
432 public virtual int CaptionHeight {
434 return XplatUI.CaptionHeight;
438 public virtual Size DoubleClickSize {
440 return new Size(4, 4);
444 public virtual int DoubleClickTime {
446 return XplatUI.DoubleClickTime;
450 public virtual Size FixedFrameBorderSize {
452 return XplatUI.FixedFrameBorderSize;
456 public virtual Size FrameBorderSize {
458 return XplatUI.FrameBorderSize;
462 public virtual int HorizontalFocusThickness { get { return 1; } }
464 public virtual int HorizontalScrollBarArrowWidth {
470 public virtual int HorizontalScrollBarHeight {
476 public virtual int HorizontalScrollBarThumbWidth {
482 public virtual Size IconSpacingSize {
484 return new Size(75, 75);
488 public virtual bool MenuAccessKeysUnderlined {
490 return XplatUI.MenuAccessKeysUnderlined;
494 public virtual Size MenuBarButtonSize {
495 get { return XplatUI.MenuBarButtonSize; }
498 public virtual Size MenuButtonSize {
500 return XplatUI.MenuButtonSize;
504 public virtual Size MenuCheckSize {
506 return new Size(13, 13);
510 public virtual Font MenuFont {
516 public virtual int MenuHeight {
518 return XplatUI.MenuHeight;
522 public virtual int MouseWheelScrollLines {
528 public virtual bool RightAlignedMenus {
534 public virtual Size ToolWindowCaptionButtonSize {
536 return XplatUI.ToolWindowCaptionButtonSize;
540 public virtual int ToolWindowCaptionHeight {
542 return XplatUI.ToolWindowCaptionHeight;
546 public virtual int VerticalFocusThickness { get { return 1; } }
548 public virtual int VerticalScrollBarArrowHeight {
554 public virtual int VerticalScrollBarThumbHeight {
560 public virtual int VerticalScrollBarWidth {
566 public virtual Font WindowBorderFont {
568 return window_border_font;
572 public int Clamp (int value, int lower, int upper)
574 if (value < lower) return lower;
575 else if (value > upper) return upper;
579 [MonoInternalNote ("Figure out where to point for My Network Places")]
580 public virtual string Places(UIIcon index) {
582 case UIIcon.PlacesRecentDocuments: {
583 // Default = "Recent Documents"
584 return Environment.GetFolderPath(Environment.SpecialFolder.Recent);
587 case UIIcon.PlacesDesktop: {
588 // Default = "Desktop"
589 return Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);
592 case UIIcon.PlacesPersonal: {
593 // Default = "My Documents"
594 return Environment.GetFolderPath(Environment.SpecialFolder.Personal);
597 case UIIcon.PlacesMyComputer: {
598 // Default = "My Computer"
599 return Environment.GetFolderPath(Environment.SpecialFolder.MyComputer);
602 case UIIcon.PlacesMyNetwork: {
603 // Default = "My Network Places"
608 throw new ArgumentOutOfRangeException("index", index, "Unsupported place");
614 // This routine fetches images embedded as assembly resources (not
615 // resgen resources). It optionally scales the image to fit the
616 // specified size x dimension (it adjusts y automatically to fit that).
618 private Image GetSizedResourceImage(string name, int width)
620 Image image = ResPool.GetUIImage (name, width);
628 fullname = String.Format("{1}_{0}", name, width);
629 image = ResourceImageLoader.Get (fullname);
631 ResPool.AddUIImage (image, name, width);
637 image = ResourceImageLoader.Get (name);
641 ResPool.AddUIImage (image, name, 0);
642 if (image.Width != width && width != 0){
643 Console.Error.WriteLine ("warning: requesting icon that not been tuned {0}_{1} {2}", width, name, image.Width);
644 int height = (image.Height * width)/image.Width;
645 Bitmap b = new Bitmap (width, height);
646 Graphics g = Graphics.FromImage (b);
647 g.DrawImage (image, 0, 0, width, height);
648 ResPool.AddUIImage (b, name, width);
655 public virtual Image Images(UIIcon index) {
656 return Images(index, 0);
659 public virtual Image Images(UIIcon index, int size) {
661 case UIIcon.PlacesRecentDocuments:
662 return GetSizedResourceImage ("document-open.png", size);
663 case UIIcon.PlacesDesktop:
664 return GetSizedResourceImage ("user-desktop.png", size);
665 case UIIcon.PlacesPersonal:
666 return GetSizedResourceImage ("user-home.png", size);
667 case UIIcon.PlacesMyComputer:
668 return GetSizedResourceImage ("computer.png", size);
669 case UIIcon.PlacesMyNetwork:
670 return GetSizedResourceImage ("folder-remote.png", size);
672 // Icons for message boxes
673 case UIIcon.MessageBoxError:
674 return GetSizedResourceImage ("dialog-error.png", size);
675 case UIIcon.MessageBoxInfo:
676 return GetSizedResourceImage ("dialog-information.png", size);
677 case UIIcon.MessageBoxQuestion:
678 return GetSizedResourceImage ("dialog-question.png", size);
679 case UIIcon.MessageBoxWarning:
680 return GetSizedResourceImage ("dialog-warning.png", size);
683 case UIIcon.NormalFolder:
684 return GetSizedResourceImage ("folder.png", size);
687 throw new ArgumentException("Invalid Icon type requested", "index");
692 public virtual Image Images(string mimetype, string extension, int size) {
696 #region Principal Theme Methods
697 // To let the theme now that a change of defaults (colors, etc) was detected and force a re-read (and possible recreation of cached resources)
698 public abstract void ResetDefaults();
700 // If the theme writes directly to a window instead of a device context
701 public abstract bool DoubleBufferingSupported {get;}
702 #endregion // Principal Theme Methods
704 #region OwnerDraw Support
705 public abstract void DrawOwnerDrawBackground (DrawItemEventArgs e);
706 public abstract void DrawOwnerDrawFocusRectangle (DrawItemEventArgs e);
707 #endregion // OwnerDraw Support
711 public abstract Size CalculateButtonAutoSize (Button button);
713 public abstract void CalculateButtonTextAndImageLayout (ButtonBase b, out Rectangle textRectangle, out Rectangle imageRectangle);
714 public abstract void DrawButton (Graphics g, Button b, Rectangle textBounds, Rectangle imageBounds, Rectangle clipRectangle);
715 public abstract void DrawFlatButton (Graphics g, ButtonBase b, Rectangle textBounds, Rectangle imageBounds, Rectangle clipRectangle);
716 public abstract void DrawPopupButton (Graphics g, Button b, Rectangle textBounds, Rectangle imageBounds, Rectangle clipRectangle);
721 public abstract void DrawButtonBase(Graphics dc, Rectangle clip_area, ButtonBase button);
724 public abstract Size ButtonBaseDefaultSize{get;}
725 #endregion // ButtonBase
729 public abstract Size CalculateCheckBoxAutoSize (CheckBox checkBox);
730 public abstract void CalculateCheckBoxTextAndImageLayout (ButtonBase b, Point offset, out Rectangle glyphArea, out Rectangle textRectangle, out Rectangle imageRectangle);
731 public abstract void DrawCheckBox (Graphics g, CheckBox cb, Rectangle glyphArea, Rectangle textBounds, Rectangle imageBounds, Rectangle clipRectangle);
733 public abstract void DrawCheckBox (Graphics dc, Rectangle clip_area, CheckBox checkbox);
735 #endregion // CheckBox
737 #region CheckedListBox
739 public abstract void DrawCheckedListBoxItem (CheckedListBox ctrl, DrawItemEventArgs e);
740 #endregion // CheckedListBox
744 public abstract void DrawComboBoxItem (ComboBox ctrl, DrawItemEventArgs e);
745 public abstract void DrawFlatStyleComboButton (Graphics graphics, Rectangle rectangle, ButtonState state);
746 public abstract void ComboBoxDrawNormalDropDownButton (ComboBox comboBox, Graphics g, Rectangle clippingArea, Rectangle area, ButtonState state);
747 public abstract bool ComboBoxNormalDropDownButtonHasTransparentBackground (ComboBox comboBox, ButtonState state);
748 public abstract bool ComboBoxDropDownButtonHasHotElementStyle (ComboBox comboBox);
749 public abstract void ComboBoxDrawBackground (ComboBox comboBox, Graphics g, Rectangle clippingArea, FlatStyle style);
750 public abstract bool CombBoxBackgroundHasHotElementStyle (ComboBox comboBox);
751 #endregion // ComboBox
754 public abstract Font GetLinkFont (Control control);
755 #endregion // Control
758 public abstract int DataGridPreferredColumnWidth { get; }
759 public abstract int DataGridMinimumColumnCheckBoxHeight { get; }
760 public abstract int DataGridMinimumColumnCheckBoxWidth { get; }
763 public abstract Color DataGridAlternatingBackColor { get; }
764 public abstract Color DataGridBackColor { get; }
765 public abstract Color DataGridBackgroundColor { get; }
766 public abstract Color DataGridCaptionBackColor { get; }
767 public abstract Color DataGridCaptionForeColor { get; }
768 public abstract Color DataGridGridLineColor { get; }
769 public abstract Color DataGridHeaderBackColor { get; }
770 public abstract Color DataGridHeaderForeColor { get; }
771 public abstract Color DataGridLinkColor { get; }
772 public abstract Color DataGridLinkHoverColor { get; }
773 public abstract Color DataGridParentRowsBackColor { get; }
774 public abstract Color DataGridParentRowsForeColor { get; }
775 public abstract Color DataGridSelectionBackColor { get; }
776 public abstract Color DataGridSelectionForeColor { get; }
778 public abstract void DataGridPaint (PaintEventArgs pe, DataGrid grid);
779 public abstract void DataGridPaintCaption (Graphics g, Rectangle clip, DataGrid grid);
780 public abstract void DataGridPaintColumnHeaders (Graphics g, Rectangle clip, DataGrid grid);
781 public abstract void DataGridPaintColumnHeader (Graphics g, Rectangle bounds, DataGrid grid, int col);
782 public abstract void DataGridPaintRowContents (Graphics g, int row, Rectangle row_rect, bool is_newrow, Rectangle clip, DataGrid grid);
783 public abstract void DataGridPaintRowHeader (Graphics g, Rectangle bounds, int row, DataGrid grid);
784 public abstract void DataGridPaintRowHeaderArrow (Graphics g, Rectangle bounds, DataGrid grid);
785 public abstract void DataGridPaintRowHeaderStar (Graphics g, Rectangle bounds, DataGrid grid);
786 public abstract void DataGridPaintParentRows (Graphics g, Rectangle bounds, DataGrid grid);
787 public abstract void DataGridPaintParentRow (Graphics g, Rectangle bounds, DataGridDataSource row, DataGrid grid);
788 public abstract void DataGridPaintRows (Graphics g, Rectangle cells, Rectangle clip, DataGrid grid);
789 public abstract void DataGridPaintRow (Graphics g, int row, Rectangle row_rect, bool is_newrow, Rectangle clip, DataGrid grid);
790 public abstract void DataGridPaintRelationRow (Graphics g, int row, Rectangle row_rect, bool is_newrow, Rectangle clip, DataGrid grid);
792 #endregion // Datagrid
796 #region DataGridViewHeaderCell
797 #region DataGridViewRowHeaderCell
798 public abstract bool DataGridViewRowHeaderCellDrawBackground (DataGridViewRowHeaderCell cell, Graphics g, Rectangle bounds);
799 public abstract bool DataGridViewRowHeaderCellDrawSelectionBackground (DataGridViewRowHeaderCell cell);
800 public abstract bool DataGridViewRowHeaderCellDrawBorder (DataGridViewRowHeaderCell cell, Graphics g, Rectangle bounds);
802 #region DataGridViewColumnHeaderCell
803 public abstract bool DataGridViewColumnHeaderCellDrawBackground (DataGridViewColumnHeaderCell cell, Graphics g, Rectangle bounds);
804 public abstract bool DataGridViewColumnHeaderCellDrawBorder (DataGridViewColumnHeaderCell cell, Graphics g, Rectangle bounds);
806 public abstract bool DataGridViewHeaderCellHasPressedStyle (DataGridView dataGridView);
807 public abstract bool DataGridViewHeaderCellHasHotStyle (DataGridView dataGridView);
812 #region DateTimePicker
813 public abstract void DrawDateTimePicker(Graphics dc, Rectangle clip_rectangle, DateTimePicker dtp);
814 public abstract bool DateTimePickerBorderHasHotElementStyle { get; }
815 public abstract Rectangle DateTimePickerGetDropDownButtonArea (DateTimePicker dateTimePicker);
816 public abstract Rectangle DateTimePickerGetDateArea (DateTimePicker dateTimePicker);
817 public abstract bool DateTimePickerDropDownButtonHasHotElementStyle { get; }
818 #endregion // DateTimePicker
822 public abstract void DrawGroupBox (Graphics dc, Rectangle clip_area, GroupBox box);
825 public abstract Size GroupBoxDefaultSize{get;}
826 #endregion // GroupBox
829 public abstract Size HScrollBarDefaultSize{get;} // Default size of the scrollbar
830 #endregion // HScrollBar
834 public abstract void DrawListBoxItem (ListBox ctrl, DrawItemEventArgs e);
835 #endregion // ListBox
839 public abstract void DrawListViewItems (Graphics dc, Rectangle clip_rectangle, ListView control);
840 public abstract void DrawListViewHeader (Graphics dc, Rectangle clip_rectangle, ListView control);
841 public abstract void DrawListViewHeaderDragDetails (Graphics dc, ListView control, ColumnHeader drag_column, int target_x);
842 public abstract bool ListViewHasHotHeaderStyle { get; }
845 public abstract int ListViewGetHeaderHeight (ListView listView, Font font);
846 public abstract Size ListViewCheckBoxSize { get; }
847 public abstract int ListViewColumnHeaderHeight { get; }
848 public abstract int ListViewDefaultColumnWidth { get; }
849 public abstract int ListViewVerticalSpacing { get; }
850 public abstract int ListViewEmptyColumnWidth { get; }
851 public abstract int ListViewHorizontalSpacing { get; }
852 public abstract Size ListViewDefaultSize { get; }
853 public abstract int ListViewGroupHeight { get; }
854 public abstract int ListViewItemPaddingWidth { get; }
855 public abstract int ListViewTileWidthFactor { get; }
856 public abstract int ListViewTileHeightFactor { get; }
857 #endregion // ListView
860 public abstract void CalcItemSize (Graphics dc, MenuItem item, int y, int x, bool menuBar);
861 public abstract void CalcPopupMenuSize (Graphics dc, Menu menu);
862 public abstract int CalcMenuBarSize (Graphics dc, Menu menu, int width);
863 public abstract void DrawMenuBar (Graphics dc, Menu menu, Rectangle rect);
864 public abstract void DrawMenuItem (MenuItem item, DrawItemEventArgs e);
865 public abstract void DrawPopupMenu (Graphics dc, Menu menu, Rectangle cliparea, Rectangle rect);
868 #region MonthCalendar
869 public abstract void DrawMonthCalendar(Graphics dc, Rectangle clip_rectangle, MonthCalendar month_calendar);
870 #endregion // MonthCalendar
874 public abstract Size PanelDefaultSize{get;}
879 public abstract void DrawPictureBox (Graphics dc, Rectangle clip, PictureBox pb);
882 public abstract Size PictureBoxDefaultSize{get;}
883 #endregion // PictureBox
885 #region PrintPreviewControl
886 public abstract int PrintPreviewControlPadding{get;}
887 public abstract Size PrintPreviewControlGetPageSize (PrintPreviewControl preview);
888 public abstract void PrintPreviewControlPaint (PaintEventArgs pe, PrintPreviewControl preview, Size page_image_size);
889 #endregion // PrintPreviewControl
893 public abstract void DrawProgressBar (Graphics dc, Rectangle clip_rectangle, ProgressBar progress_bar);
896 public abstract Size ProgressBarDefaultSize{get;}
897 #endregion // ProgressBar
902 public abstract Size CalculateRadioButtonAutoSize (RadioButton rb);
903 public abstract void CalculateRadioButtonTextAndImageLayout (ButtonBase b, Point offset, out Rectangle glyphArea, out Rectangle textRectangle, out Rectangle imageRectangle);
904 public abstract void DrawRadioButton (Graphics g, RadioButton rb, Rectangle glyphArea, Rectangle textBounds, Rectangle imageBounds, Rectangle clipRectangle);
906 public abstract void DrawRadioButton (Graphics dc, Rectangle clip_rectangle, RadioButton radio_button);
909 public abstract Size RadioButtonDefaultSize{get;}
910 #endregion // RadioButton
914 //public abstract void DrawScrollBar (Graphics dc, Rectangle area, ScrollBar bar, ref Rectangle thumb_pos, ref Rectangle first_arrow_area, ref Rectangle second_arrow_area, ButtonState first_arrow, ButtonState second_arrow, ref int scrollbutton_width, ref int scrollbutton_height, bool vert);
915 public abstract void DrawScrollBar (Graphics dc, Rectangle clip_rectangle, ScrollBar bar);
918 public abstract int ScrollBarButtonSize {get;} // Size of the scroll button
920 public abstract bool ScrollBarHasHotElementStyles { get; }
922 public abstract bool ScrollBarHasPressedThumbStyle { get; }
924 public abstract bool ScrollBarHasHoverArrowButtonStyle { get; }
925 #endregion // ScrollBar
929 public abstract void DrawStatusBar (Graphics dc, Rectangle clip_rectangle, StatusBar sb);
932 public abstract int StatusBarSizeGripWidth {get;} // Size of Resize area
933 public abstract int StatusBarHorzGapWidth {get;} // Gap between panels
934 public abstract Size StatusBarDefaultSize{get;}
935 #endregion // StatusBar
938 public abstract Size TabControlDefaultItemSize {get; }
939 public abstract Point TabControlDefaultPadding {get; }
940 public abstract int TabControlMinimumTabWidth {get; }
941 public abstract Rectangle TabControlSelectedDelta { get; }
942 public abstract int TabControlSelectedSpacing { get; }
943 public abstract int TabPanelOffsetX { get; }
944 public abstract int TabPanelOffsetY { get; }
945 public abstract int TabControlColSpacing { get; }
946 public abstract Point TabControlImagePadding { get; }
947 public abstract int TabControlScrollerWidth { get; }
949 public abstract Rectangle TabControlGetDisplayRectangle (TabControl tab);
950 public abstract Rectangle TabControlGetPanelRect (TabControl tab);
951 public abstract Size TabControlGetSpacing (TabControl tab);
952 public abstract void DrawTabControl (Graphics dc, Rectangle area, TabControl tab);
956 public abstract void TextBoxBaseFillBackground (TextBoxBase textBoxBase, Graphics g, Rectangle clippingArea);
957 public abstract bool TextBoxBaseHandleWmNcPaint (TextBoxBase textBoxBase, ref Message m);
958 public abstract bool TextBoxBaseShouldPaintBackground (TextBoxBase textBoxBase);
963 public abstract void DrawToolBar (Graphics dc, Rectangle clip_rectangle, ToolBar control);
966 public abstract int ToolBarGripWidth {get;} // Grip width for the ToolBar
967 public abstract int ToolBarImageGripWidth {get;} // Grip width for the Image on the ToolBarButton
968 public abstract int ToolBarSeparatorWidth {get;} // width of the separator
969 public abstract int ToolBarDropDownWidth { get; } // width of the dropdown arrow rect
970 public abstract int ToolBarDropDownArrowWidth { get; } // width for the dropdown arrow on the ToolBarButton
971 public abstract int ToolBarDropDownArrowHeight { get; } // height for the dropdown arrow on the ToolBarButton
972 public abstract Size ToolBarDefaultSize{get;}
974 public abstract bool ToolBarHasHotElementStyles (ToolBar toolBar);
975 public abstract bool ToolBarHasHotCheckedElementStyles { get; }
976 #endregion // ToolBar
979 public abstract void DrawToolTip(Graphics dc, Rectangle clip_rectangle, ToolTip.ToolTipWindow control);
980 public abstract Size ToolTipSize(ToolTip.ToolTipWindow tt, string text);
981 public abstract bool ToolTipTransparentBackground { get; }
982 #endregion // ToolTip
984 #region BalloonWindow
986 public abstract void ShowBalloonWindow (IntPtr handle, int timeout, string title, string text, ToolTipIcon icon);
987 public abstract void DrawBalloonWindow (Graphics dc, Rectangle clip, NotifyIcon.BalloonWindow control);
988 public abstract Rectangle BalloonWindowRect (NotifyIcon.BalloonWindow control);
990 #endregion // BalloonWindow
994 public abstract void DrawTrackBar (Graphics dc, Rectangle clip_rectangle, TrackBar tb);
997 public abstract Size TrackBarDefaultSize{get; } // Default size for the TrackBar control
999 public abstract int TrackBarValueFromMousePosition (int x, int y, TrackBar tb);
1001 public abstract bool TrackBarHasHotThumbStyle { get; }
1002 #endregion // TrackBar
1005 public abstract void UpDownBaseDrawButton (Graphics g, Rectangle bounds, bool top, VisualStyles.PushButtonState state);
1006 public abstract bool UpDownBaseHasHotButtonStyle { get; }
1010 public abstract Size VScrollBarDefaultSize{get;} // Default size of the scrollbar
1011 #endregion // VScrollBar
1014 public abstract Size TreeViewDefaultSize { get; }
1015 public abstract void TreeViewDrawNodePlusMinus (TreeView treeView, TreeNode node, Graphics dc, int x, int middle);
1018 #region Managed window
1019 public abstract void DrawManagedWindowDecorations (Graphics dc, Rectangle clip, InternalWindowManager wm);
1020 public abstract int ManagedWindowTitleBarHeight (InternalWindowManager wm);
1021 public abstract int ManagedWindowBorderWidth (InternalWindowManager wm);
1022 public abstract int ManagedWindowIconWidth (InternalWindowManager wm);
1023 public abstract Size ManagedWindowButtonSize (InternalWindowManager wm);
1024 public abstract void ManagedWindowSetButtonLocations (InternalWindowManager wm);
1025 public abstract Rectangle ManagedWindowGetTitleBarIconArea (InternalWindowManager wm);
1026 public abstract Size ManagedWindowGetMenuButtonSize (InternalWindowManager wm);
1027 public abstract bool ManagedWindowTitleButtonHasHotElementStyle (TitleButton button, Form form);
1028 public abstract void ManagedWindowDrawMenuButton (Graphics dc, TitleButton button, Rectangle clip, InternalWindowManager wm);
1029 public abstract void ManagedWindowOnSizeInitializedOrChanged (Form form);
1030 public const int ManagedWindowSpacingAfterLastTitleButton = 2;
1033 #region ControlPaint Methods
1034 public abstract void CPDrawBorder (Graphics graphics, Rectangle bounds, Color leftColor, int leftWidth,
1035 ButtonBorderStyle leftStyle, Color topColor, int topWidth, ButtonBorderStyle topStyle,
1036 Color rightColor, int rightWidth, ButtonBorderStyle rightStyle, Color bottomColor,
1037 int bottomWidth, ButtonBorderStyle bottomStyle);
1039 public abstract void CPDrawBorder (Graphics graphics, RectangleF bounds, Color leftColor, int leftWidth,
1040 ButtonBorderStyle leftStyle, Color topColor, int topWidth, ButtonBorderStyle topStyle,
1041 Color rightColor, int rightWidth, ButtonBorderStyle rightStyle, Color bottomColor,
1042 int bottomWidth, ButtonBorderStyle bottomStyle);
1044 public abstract void CPDrawBorder3D (Graphics graphics, Rectangle rectangle, Border3DStyle style, Border3DSide sides);
1045 public abstract void CPDrawBorder3D (Graphics graphics, Rectangle rectangle, Border3DStyle style, Border3DSide sides, Color control_color);
1046 public abstract void CPDrawButton (Graphics graphics, Rectangle rectangle, ButtonState state);
1047 public abstract void CPDrawCaptionButton (Graphics graphics, Rectangle rectangle, CaptionButton button, ButtonState state);
1048 public abstract void CPDrawCheckBox (Graphics graphics, Rectangle rectangle, ButtonState state);
1049 public abstract void CPDrawComboButton (Graphics graphics, Rectangle rectangle, ButtonState state);
1050 public abstract void CPDrawContainerGrabHandle (Graphics graphics, Rectangle bounds);
1051 public abstract void CPDrawFocusRectangle (Graphics graphics, Rectangle rectangle, Color foreColor, Color backColor);
1052 public abstract void CPDrawGrabHandle (Graphics graphics, Rectangle rectangle, bool primary, bool enabled);
1053 public abstract void CPDrawGrid (Graphics graphics, Rectangle area, Size pixelsBetweenDots, Color backColor);
1054 public abstract void CPDrawImageDisabled (Graphics graphics, Image image, int x, int y, Color background);
1055 public abstract void CPDrawLockedFrame (Graphics graphics, Rectangle rectangle, bool primary);
1056 public abstract void CPDrawMenuGlyph (Graphics graphics, Rectangle rectangle, MenuGlyph glyph, Color color, Color backColor);
1057 public abstract void CPDrawMixedCheckBox (Graphics graphics, Rectangle rectangle, ButtonState state);
1058 public abstract void CPDrawRadioButton (Graphics graphics, Rectangle rectangle, ButtonState state);
1059 public abstract void CPDrawReversibleFrame (Rectangle rectangle, Color backColor, FrameStyle style);
1060 public abstract void CPDrawReversibleLine (Point start, Point end, Color backColor);
1061 public abstract void CPDrawScrollButton (Graphics graphics, Rectangle rectangle, ScrollButton button, ButtonState state);
1062 public abstract void CPDrawSelectionFrame (Graphics graphics, bool active, Rectangle outsideRect, Rectangle insideRect,
1064 public abstract void CPDrawSizeGrip (Graphics graphics, Color backColor, Rectangle bounds);
1065 public abstract void CPDrawStringDisabled (Graphics graphics, string s, Font font, Color color, RectangleF layoutRectangle,
1066 StringFormat format);
1068 public abstract void CPDrawStringDisabled (IDeviceContext dc, string s, Font font, Color color, Rectangle layoutRectangle, TextFormatFlags format);
1069 public abstract void CPDrawVisualStyleBorder (Graphics graphics, Rectangle bounds);
1071 public abstract void CPDrawBorderStyle (Graphics dc, Rectangle area, BorderStyle border_style);
1072 #endregion // ControlPaint Methods