Selaa lähdekoodia

move themes from an interface to a class

svn path=/trunk/mcs/; revision=32545
Jordi Mas i Hernandez 21 vuotta sitten
vanhempi
sitoutus
f971866de1

+ 0 - 205
mcs/class/Managed.Windows.Forms/System.Windows.Forms/ITheme.cs

@@ -1,205 +0,0 @@
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-// Copyright (c) 2004 Novell, Inc.
-//
-// Authors:
-//	Jordi Mas i Hernandez, [email protected]
-//
-//
-//
-// $Revision: 1.11 $
-// $Modtime: $
-// $Log: ITheme.cs,v $
-// Revision 1.11  2004/08/18 19:16:53  jordi
-// Move colors to a table
-//
-// Revision 1.10  2004/08/15 23:20:54  ravindra
-// Changes to Theme for ToolBar control and also dos2unix format.
-//
-// Revision 1.9  2004/08/12 20:29:01  jordi
-// Trackbar enhancement, fix mouse problems, highli thumb, etc
-//
-// Revision 1.8  2004/08/10 19:21:27  jordi
-// scrollbar enhancements and standarize on win colors defaults
-//
-// Revision 1.7  2004/08/10 18:52:30  jackson
-// Implement DrawItem functionality
-//
-// Revision 1.6  2004/08/09 21:36:34  jackson
-// Add support for drawing status bar and getting status bar item sizes
-//
-// Revision 1.5  2004/08/09 17:01:02  jackson
-// The theme engine now controls default window properties
-//
-// Revision 1.3  2004/08/08 22:54:21  jordi
-// Label BorderStyles
-//
-// Revision 1.2  2004/08/07 19:05:44  jordi
-// Theme colour support and GetSysColor defines
-//
-// Revision 1.1  2004/07/26 17:42:03  jordi
-// Theme support
-//
-//
-
-using System.Drawing;
-using System.Drawing.Drawing2D;
-using System.Drawing.Imaging;
-
-namespace System.Windows.Forms
-{
-
-	internal interface ITheme
-	{
-	
-		/* Default properties */
-		Color DefaultControlBackColor {get;}
-		Color DefaultControlForeColor {get;}
-		Font DefaultFont {get;}
-		Color DefaultWindowForeColor {get;}
-		Color DefaultWindowBackColor {get;}
-
-		Color GetColor (XplatUIWin32.GetSysColorIndex idx);
-		void SetColor (XplatUIWin32.GetSysColorIndex idx, Color color);
-
-		/* Windows System Colors. Based on Wine */
-		Color ColorScrollbar {get;} 		//COLOR_SCROLLBAR
-		Color ColorBackground {get;} 		//COLOR_BACKGROUND
-		Color ColorActiveTitle {get;} 		//COLOR_ACTIVECAPTION
-		Color ColorInactiveTitle {get;}		//COLOR_INACTIVECAPTION
-		Color ColorMenu {get;} 			//COLOR_MENU
-		Color ColorWindow {get;} 		//COLOR_WINDOW
-		Color ColorWindowFrame {get;} 		//COLOR_WINDOWFRAME
-		Color ColorMenuText {get;} 		//COLOR_MENUTEXT 
-		Color ColorWindowText {get;} 		//COLOR_WINDOWTEXT
-		Color ColorTitleText {get;} 		//COLOR_CAPTIONTEXT 
-		Color ColorActiveBorder {get;} 		//COLOR_ACTIVEBORDER
-		Color ColorInactiveBorder {get;} 	//COLOR_INACTIVEBORDER 
-		Color ColorAppWorkSpace {get;} 		//COLOR_APPWORKSPACE
-		Color ColorHilight {get;} 		//COLOR_HIGHLIGHT
-		Color ColorHilightText {get;} 		//COLOR_HIGHLIGHTTEXT			
-		Color ColorButtonFace {get;} 		//COLOR_BTNFACE
-		Color ColorButtonShadow {get;} 		//COLOR_BTNSHADOW
-		Color ColorGrayText {get;} 		//COLOR_GRAYTEXT
-		Color ColorButtonText {get;} 		//COLOR_BTNTEXT
-		Color ColorInactiveTitleText {get;} 	//COLOR_INACTIVECAPTIONTEXT
-		Color ColorButtonHilight {get;} 	//COLOR_BTNHIGHLIGHT
-		Color ColorButtonDkShadow {get;} 	//COLOR_3DDKSHADOW
-		Color ColorButtonLight {get;} 		//COLOR_3DLIGHT
-		Color ColorInfoText {get;} 		//COLOR_INFOTEXT
-		Color ColorInfoWindow {get;} 		//COLOR_INFOBK
-
-		/*
-		  Control sizing properties
-		*/
-
-		int SizeGripWidth {get;}
-		int StatusBarHorzGapWidth {get;}
-		int ScrollBarButtonSize {get;}
-
-		/*
-		  ToolBar Control properties
-		 */
-		int ToolBarImageGripWidth {get;}         // Grip width for the Image on the ToolBarButton
-		int ToolBarSeparatorWidth {get;}         // width of the separator
-		int ToolBarDropDownWidth { get; }        // width of the dropdown arrow rect
-		int ToolBarDropDownArrowWidth { get; }   // width for the dropdown arrow on the ToolBarButton
-		int ToolBarDropDownArrowHeight { get; }  // height for the dropdown arrow on the ToolBarButton
-
-		/*
-			Methods that mimic ControlPaint signature and draw basic objects
-		*/
-
-		void DrawBorder (Graphics graphics, Rectangle bounds, Color leftColor, int leftWidth,
-			ButtonBorderStyle leftStyle, Color topColor, int topWidth, ButtonBorderStyle topStyle,
-			Color rightColor, int rightWidth, ButtonBorderStyle rightStyle, Color bottomColor,
-			int bottomWidth, ButtonBorderStyle bottomStyle);
-
-		void DrawBorder3D (Graphics graphics, Rectangle rectangle, Border3DStyle style, Border3DSide sides);
-
-		void DrawButton (Graphics graphics, Rectangle rectangle, ButtonState state);
-
-		void DrawCaptionButton (Graphics graphics, Rectangle rectangle, CaptionButton button, ButtonState state);
-
-		void DrawCheckBox (Graphics graphics, Rectangle rectangle, ButtonState state);
-
-		void DrawComboButton (Graphics graphics, Rectangle rectangle, ButtonState state);
-
-		void DrawContainerGrabHandle (Graphics graphics, Rectangle bounds);
-
-		void DrawFocusRectangle (Graphics graphics, Rectangle rectangle, Color foreColor, Color backColor);
-
-		void DrawGrabHandle (Graphics graphics, Rectangle rectangle, bool primary, bool enabled);
-
-		void DrawGrid (Graphics graphics, Rectangle area, Size pixelsBetweenDots, Color backColor);
-
-		void DrawImageDisabled (Graphics graphics, Image image, int x, int y, Color background);
-
-		void DrawLockedFrame (Graphics graphics, Rectangle rectangle, bool primary);
-
-		void DrawMenuGlyph (Graphics graphics, Rectangle rectangle, MenuGlyph glyph);
-
-		void DrawRadioButton (Graphics graphics, Rectangle rectangle, ButtonState state);
-
-		void DrawReversibleFrame (Rectangle rectangle, Color backColor, FrameStyle style);
-
-		void DrawReversibleLine (Point start, Point end, Color backColor);
-
-		void DrawScrollButton (Graphics graphics, Rectangle rectangle, ScrollButton button, ButtonState state);
-
-		void DrawSelectionFrame (Graphics graphics, bool active, Rectangle outsideRect, Rectangle insideRect,
-			Color backColor);
-
-		void DrawSizeGrip (Graphics graphics, Color backColor, Rectangle bounds);
-
-		void DrawStringDisabled (Graphics graphics, string s, Font font, Color color, RectangleF layoutRectangle,
-			StringFormat format);
-
-		/*
-			Methods that draw complete controls			
-		*/
-
-		void DrawLabel (Graphics dc, Rectangle area, BorderStyle border_style, string text, 
-			Color fore_color, Color back_color, Font font, StringFormat string_format, bool Enabled);
-
-		void DrawScrollBar (Graphics dc, Rectangle area, 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 enabled, bool vertical);
-
-
-		void DrawTrackBar (Graphics dc, Rectangle area, TrackBar tb,
-				ref Rectangle thumb_pos, ref Rectangle thumb_area, bool highli_thumb,
-				float ticks, int value_pos, bool mouse_value);
-
-		void DrawProgressBar (Graphics dc, Rectangle area,  Rectangle client_area,
-			int barpos_pixels, int block_width);
-
-		void DrawToolBar (Graphics dc, ToolBar control, StringFormat format);
-
-		void DrawStatusBar (Graphics dc, Rectangle area, StatusBar sb);
-
-		void DrawOwnerDrawBackground (DrawItemEventArgs e);
-
-		void DrawOwnerDrawFocusRectangle (DrawItemEventArgs e);
-
-	}
-}

+ 275 - 0
mcs/class/Managed.Windows.Forms/System.Windows.Forms/Theme.cs

@@ -0,0 +1,275 @@
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2004 Novell, Inc.
+//
+// Authors:
+//	Jordi Mas i Hernandez, [email protected]
+//
+//
+// $Revision: 1.1 $
+// $Modtime: $
+// $Log: Theme.cs,v $
+// Revision 1.1  2004/08/19 22:26:30  jordi
+// move themes from an interface to a class
+//
+//
+
+using System.Drawing;
+using System.Drawing.Drawing2D;
+using System.Drawing.Imaging;
+
+namespace System.Windows.Forms
+{
+	internal abstract class Theme
+	{
+		protected Array syscolors;
+		protected Font default_font;
+		protected Color defaultWindowBackColor;
+		protected Color defaultWindowForeColor;	
+	
+		/* Default properties */		
+		public virtual Color ColorScrollbar {
+			get {return GetColor (XplatUIWin32.GetSysColorIndex.COLOR_SCROLLBAR);}
+		}
+
+		public virtual Color ColorBackground {
+			get {return GetColor (XplatUIWin32.GetSysColorIndex.COLOR_BACKGROUND);}
+		}
+
+		public virtual Color ColorActiveTitle {
+			get {return GetColor (XplatUIWin32.GetSysColorIndex.COLOR_ACTIVECAPTION);}
+		}
+
+		public virtual Color ColorInactiveTitle {
+			get {return GetColor (XplatUIWin32.GetSysColorIndex.COLOR_INACTIVECAPTION);}
+		}
+
+		public virtual Color ColorMenu {
+			get {return GetColor (XplatUIWin32.GetSysColorIndex.COLOR_MENU);}
+		}
+
+		public virtual Color ColorWindow {
+			get {return GetColor (XplatUIWin32.GetSysColorIndex.COLOR_WINDOW);}
+		}
+
+		public virtual Color ColorWindowFrame {
+			get {return GetColor (XplatUIWin32.GetSysColorIndex.COLOR_WINDOWFRAME);}
+		}
+
+		public virtual Color ColorMenuText {
+			get {return GetColor (XplatUIWin32.GetSysColorIndex.COLOR_MENUTEXT);}
+		}
+
+		public virtual Color ColorWindowText {
+			get {return GetColor (XplatUIWin32.GetSysColorIndex.COLOR_WINDOWTEXT);}
+		}
+
+		public virtual Color ColorTitleText {
+			get {return GetColor (XplatUIWin32.GetSysColorIndex.COLOR_CAPTIONTEXT);}
+		}
+
+		public virtual Color ColorActiveBorder {
+			get {return GetColor (XplatUIWin32.GetSysColorIndex.COLOR_ACTIVEBORDER);}
+		}
+
+		public virtual Color ColorInactiveBorder{
+			get {return GetColor (XplatUIWin32.GetSysColorIndex.COLOR_INACTIVEBORDER);}
+		}
+
+		public virtual Color ColorAppWorkSpace {
+			get {return GetColor (XplatUIWin32.GetSysColorIndex.COLOR_APPWORKSPACE);}
+		}
+
+		public virtual Color ColorHilight {
+			get {return GetColor (XplatUIWin32.GetSysColorIndex.COLOR_HIGHLIGHT);}
+		}
+
+		public virtual Color ColorHilightText {
+			get {return GetColor (XplatUIWin32.GetSysColorIndex.COLOR_HIGHLIGHTTEXT);}
+		}
+
+		public virtual Color ColorButtonFace {
+			get {return GetColor (XplatUIWin32.GetSysColorIndex.COLOR_BTNFACE);}
+		}
+
+		public virtual Color ColorButtonShadow {
+			get {return GetColor (XplatUIWin32.GetSysColorIndex.COLOR_BTNSHADOW);}
+		}
+
+		public virtual Color ColorGrayText {
+			get {return GetColor (XplatUIWin32.GetSysColorIndex.COLOR_GRAYTEXT);}
+		}
+
+		public virtual Color ColorButtonText {
+			get {return GetColor (XplatUIWin32.GetSysColorIndex.COLOR_BTNTEXT);}
+		}
+
+		public virtual Color ColorInactiveTitleText {
+			get {return GetColor (XplatUIWin32.GetSysColorIndex.COLOR_INACTIVECAPTIONTEXT);}
+		}
+
+		public virtual Color ColorButtonHilight {
+			get {return GetColor (XplatUIWin32.GetSysColorIndex.COLOR_BTNHIGHLIGHT);}
+		}
+
+		public virtual Color ColorButtonDkShadow {
+			get {return GetColor (XplatUIWin32.GetSysColorIndex.COLOR_3DDKSHADOW);}
+		}
+
+		public virtual Color ColorButtonLight {
+			get {return GetColor (XplatUIWin32.GetSysColorIndex.COLOR_3DLIGHT);}
+		}
+
+		public virtual Color ColorInfoText {
+			get {return GetColor (XplatUIWin32.GetSysColorIndex.COLOR_INFOTEXT);}
+		}
+
+		public virtual Color ColorInfoWindow {
+			get {return GetColor (XplatUIWin32.GetSysColorIndex.COLOR_INFOBK);}
+		}
+
+		public virtual Color DefaultControlBackColor {
+			get { return ColorButtonFace; }
+		}
+
+		public virtual Color DefaultControlForeColor {
+			get { return ColorButtonText; }
+		}
+
+		public virtual Font DefaultFont {
+			get { return default_font; }
+		}
+
+		public virtual Color DefaultWindowBackColor {
+			get { return defaultWindowBackColor; }
+		}
+
+		public virtual Color DefaultWindowForeColor {
+			get { return defaultWindowForeColor; }
+		}
+
+		public virtual Color GetColor (XplatUIWin32.GetSysColorIndex idx)
+		{
+			return (Color) syscolors.GetValue ((int)idx);
+		}
+
+		public virtual void SetColor (XplatUIWin32.GetSysColorIndex idx, Color color)
+		{
+			syscolors.SetValue (color, (int) idx);
+		}
+
+		// If the theme writes directly to a window instead of a device context
+		public abstract bool WriteToWindow {get;}
+
+		/*
+		  	Control sizing properties
+		*/
+
+		public abstract int SizeGripWidth {get;}
+		public abstract int StatusBarHorzGapWidth {get;}
+		public abstract int ScrollBarButtonSize {get;}
+
+		/*
+		  	ToolBar Control properties
+		 */
+		public abstract int ToolBarImageGripWidth {get;}         // Grip width for the Image on the ToolBarButton
+		public abstract int ToolBarSeparatorWidth {get;}         // width of the separator
+		public abstract int ToolBarDropDownWidth { get; }        // width of the dropdown arrow rect
+		public abstract int ToolBarDropDownArrowWidth { get; }   // width for the dropdown arrow on the ToolBarButton
+		public abstract int ToolBarDropDownArrowHeight { get; }  // height for the dropdown arrow on the ToolBarButton
+
+		/*
+			Methods that mimic ControlPaint signature and draw basic objects
+		*/
+
+		public abstract void DrawBorder (Graphics graphics, Rectangle bounds, Color leftColor, int leftWidth,
+			ButtonBorderStyle leftStyle, Color topColor, int topWidth, ButtonBorderStyle topStyle,
+			Color rightColor, int rightWidth, ButtonBorderStyle rightStyle, Color bottomColor,
+			int bottomWidth, ButtonBorderStyle bottomStyle);
+
+		public abstract void DrawBorder3D (Graphics graphics, Rectangle rectangle, Border3DStyle style, Border3DSide sides);
+
+		public abstract void DrawButton (Graphics graphics, Rectangle rectangle, ButtonState state);
+
+		public abstract void DrawCaptionButton (Graphics graphics, Rectangle rectangle, CaptionButton button, ButtonState state);
+
+		public abstract void DrawCheckBox (Graphics graphics, Rectangle rectangle, ButtonState state);
+
+		public abstract void DrawComboButton (Graphics graphics, Rectangle rectangle, ButtonState state);
+
+		public abstract void DrawContainerGrabHandle (Graphics graphics, Rectangle bounds);
+
+		public abstract void DrawFocusRectangle (Graphics graphics, Rectangle rectangle, Color foreColor, Color backColor);
+
+		public abstract void DrawGrabHandle (Graphics graphics, Rectangle rectangle, bool primary, bool enabled);
+
+		public abstract void DrawGrid (Graphics graphics, Rectangle area, Size pixelsBetweenDots, Color backColor);
+
+		public abstract void DrawImageDisabled (Graphics graphics, Image image, int x, int y, Color background);
+
+		public abstract void DrawLockedFrame (Graphics graphics, Rectangle rectangle, bool primary);
+
+		public abstract void DrawMenuGlyph (Graphics graphics, Rectangle rectangle, MenuGlyph glyph);
+
+		public abstract void DrawRadioButton (Graphics graphics, Rectangle rectangle, ButtonState state);
+
+		public abstract void DrawReversibleFrame (Rectangle rectangle, Color backColor, FrameStyle style);
+
+		public abstract void DrawReversibleLine (Point start, Point end, Color backColor);
+
+		public abstract void DrawScrollButton (Graphics graphics, Rectangle rectangle, ScrollButton button, ButtonState state);
+
+		public abstract void DrawSelectionFrame (Graphics graphics, bool active, Rectangle outsideRect, Rectangle insideRect,
+			Color backColor);
+
+		public abstract void DrawSizeGrip (Graphics graphics, Color backColor, Rectangle bounds);
+
+		public abstract void DrawStringDisabled (Graphics graphics, string s, Font font, Color color, RectangleF layoutRectangle,
+			StringFormat format);
+
+		/*
+			Methods that draw complete controls			
+		*/
+
+		public abstract void DrawLabel (Graphics dc, Rectangle area, BorderStyle border_style, string text, 
+			Color fore_color, Color back_color, Font font, StringFormat string_format, bool Enabled);
+
+		public abstract void DrawScrollBar (Graphics dc, Rectangle area, ScrollBar bar,
+			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);
+
+		public abstract void DrawTrackBar (Graphics dc, Rectangle area, TrackBar tb,
+				ref Rectangle thumb_pos, ref Rectangle thumb_area, bool highli_thumb,
+				float ticks, int value_pos, bool mouse_value);
+
+		public abstract void DrawProgressBar (Graphics dc, Rectangle area,  Rectangle client_area,
+			int barpos_pixels, int block_width);
+
+		public abstract void DrawToolBar (Graphics dc, ToolBar control, StringFormat format);
+
+		public abstract void DrawStatusBar (Graphics dc, Rectangle area, StatusBar sb);
+
+		public abstract void DrawOwnerDrawBackground (DrawItemEventArgs e);
+
+		public abstract void DrawOwnerDrawFocusRectangle (DrawItemEventArgs e);
+
+	}
+}