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: 8 // 9 // The above copyright notice and this permission notice shall be 10 // included in all copies or substantial portions of the Software. 11 // 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. 19 // 20 // Copyright (c) 2004 Novell, Inc. 21 // 22 // Authors: 23 // Peter Bartok pbartok@novell.com 24 // 25 26 27 // NOT COMPLETE 28 29 using System.Drawing; 30 using System.Drawing.Drawing2D; 31 using System.Drawing.Imaging; 32 33 namespace System.Windows.Forms { 34 public sealed class ControlPaint { 35 #region Local Variables 36 static int RGBMax=255; 37 static int HLSMax=255; 38 #endregion // Local Variables 39 40 #region Private Enumerations 41 42 43 #region Constructor 44 // Prevent a public constructor from being created ControlPaint()45 private ControlPaint() { 46 } 47 #endregion // Constructor 48 49 50 #endregion // Private Enumerations 51 52 #region Helpers Color2HBS(Color color, out int h, out int l, out int s)53 internal static void Color2HBS(Color color, out int h, out int l, out int s) { 54 int r; 55 int g; 56 int b; 57 int cMax; 58 int cMin; 59 int rDelta; 60 int gDelta; 61 int bDelta; 62 63 r=color.R; 64 g=color.G; 65 b=color.B; 66 67 cMax = Math.Max(Math.Max(r, g), b); 68 cMin = Math.Min(Math.Min(r, g), b); 69 70 l = (((cMax+cMin)*HLSMax)+RGBMax)/(2*RGBMax); 71 72 if (cMax==cMin) { // Achromatic 73 h=0; // h undefined 74 s=0; 75 return; 76 } 77 78 /* saturation */ 79 if (l<=(HLSMax/2)) { 80 s=(((cMax-cMin)*HLSMax)+((cMax+cMin)/2))/(cMax+cMin); 81 } else { 82 s=(((cMax-cMin)*HLSMax)+((2*RGBMax-cMax-cMin)/2))/(2*RGBMax-cMax-cMin); 83 } 84 85 /* hue */ 86 rDelta=(((cMax-r)*(HLSMax/6))+((cMax-cMin)/2))/(cMax-cMin); 87 gDelta=(((cMax-g)*(HLSMax/6))+((cMax-cMin)/2))/(cMax-cMin); 88 bDelta=(((cMax-b)*(HLSMax/6))+((cMax-cMin)/2))/(cMax-cMin); 89 90 if (r == cMax) { 91 h=bDelta - gDelta; 92 } else if (g == cMax) { 93 h=(HLSMax/3) + rDelta - bDelta; 94 } else { /* B == cMax */ 95 h=((2*HLSMax)/3) + gDelta - rDelta; 96 } 97 98 if (h<0) { 99 h+=HLSMax; 100 } 101 102 if (h>HLSMax) { 103 h-=HLSMax; 104 } 105 } 106 HueToRGB(int n1, int n2, int hue)107 private static int HueToRGB(int n1, int n2, int hue) { 108 if (hue<0) { 109 hue+=HLSMax; 110 } 111 112 if (hue>HLSMax) { 113 hue -= HLSMax; 114 } 115 116 /* return r,g, or b value from this tridrant */ 117 if (hue<(HLSMax/6)) { 118 return(n1+(((n2-n1)*hue+(HLSMax/12))/(HLSMax/6))); 119 } 120 121 if (hue<(HLSMax/2)) { 122 return(n2); 123 } 124 125 if (hue<((HLSMax*2)/3)) { 126 return(n1+(((n2-n1)*(((HLSMax*2)/3)-hue)+(HLSMax/12))/(HLSMax/6))); 127 } else { 128 return(n1); 129 } 130 } 131 HBS2Color(int hue, int lum, int sat)132 internal static Color HBS2Color(int hue, int lum, int sat) { 133 int R; 134 int G; 135 int B; 136 int Magic1; 137 int Magic2; 138 139 if (sat == 0) { /* Achromatic */ 140 R=G=B=(lum*RGBMax)/HLSMax; 141 // FIXME : Should throw exception if hue!=0 142 } else { 143 if (lum<=(HLSMax/2)) { 144 Magic2=(lum*(HLSMax+sat)+(HLSMax/2))/HLSMax; 145 } else { 146 Magic2=sat+lum-((sat*lum)+(HLSMax/2))/HLSMax; 147 } 148 Magic1=2*lum-Magic2; 149 150 R = Math.Min(255, (HueToRGB(Magic1,Magic2,hue+(HLSMax/3))*RGBMax+(HLSMax/2))/HLSMax); 151 G = Math.Min(255, (HueToRGB(Magic1,Magic2,hue)*RGBMax+(HLSMax/2))/HLSMax); 152 B = Math.Min(255, (HueToRGB(Magic1,Magic2,hue-(HLSMax/3))*RGBMax+(HLSMax/2))/HLSMax); 153 } 154 return (Color.FromArgb(R, G, B)); 155 } 156 #endregion // Helpers 157 158 #region Public Static Properties 159 public static Color ContrastControlDark { 160 get { return(SystemColors.ControlDark); } 161 } 162 #endregion // Public Static Properties 163 164 #region Public Static Methods 165 [MonoTODO ("Not implemented, will throw NotImplementedException")] CreateHBitmap16Bit(Bitmap bitmap, Color background)166 public static IntPtr CreateHBitmap16Bit (Bitmap bitmap, Color background) 167 { 168 throw new NotImplementedException (); 169 } 170 171 [MonoTODO ("Not implemented, will throw NotImplementedException")] CreateHBitmapColorMask(Bitmap bitmap, IntPtr monochromeMask)172 public static IntPtr CreateHBitmapColorMask (Bitmap bitmap, IntPtr monochromeMask) 173 { 174 throw new NotImplementedException (); 175 } 176 177 [MonoTODO ("Not implemented, will throw NotImplementedException")] CreateHBitmapTransparencyMask(Bitmap bitmap)178 public static IntPtr CreateHBitmapTransparencyMask (Bitmap bitmap) 179 { 180 throw new NotImplementedException (); 181 } 182 Light(Color baseColor)183 public static Color Light(Color baseColor) { 184 return Light(baseColor, 0.5f); 185 } 186 Light(Color baseColor, float percOfLightLight)187 public static Color Light (Color baseColor, float percOfLightLight) 188 { 189 if (baseColor.ToArgb () == ThemeEngine.Current.ColorControl.ToArgb ()) { 190 int r_sub, g_sub, b_sub; 191 Color color; 192 193 if (percOfLightLight <= 0f) 194 return ThemeEngine.Current.ColorControlLight; 195 196 if (percOfLightLight == 1.0f) 197 return ThemeEngine.Current.ColorControlLightLight; 198 199 r_sub = ThemeEngine.Current.ColorControlLightLight.R - ThemeEngine.Current.ColorControlLight.R; 200 g_sub = ThemeEngine.Current.ColorControlLightLight.G - ThemeEngine.Current.ColorControlLight.G; 201 b_sub = ThemeEngine.Current.ColorControlLightLight.B - ThemeEngine.Current.ColorControlLight.B; 202 203 color = Color.FromArgb (ThemeEngine.Current.ColorControlLight.A, 204 (int) (ThemeEngine.Current.ColorControlLight.R + (r_sub * percOfLightLight)), 205 (int) (ThemeEngine.Current.ColorControlLight.G + (g_sub * percOfLightLight)), 206 (int) (ThemeEngine.Current.ColorControlLight.B + (b_sub * percOfLightLight))); 207 return color; 208 } 209 210 int H, I, S; 211 212 ControlPaint.Color2HBS (baseColor, out H, out I, out S); 213 int NewIntensity = Math.Min (255, I + (int) ((255 - I) * 0.5f * percOfLightLight)); 214 215 return ControlPaint.HBS2Color (H, NewIntensity, S); 216 } 217 LightLight(Color baseColor)218 public static Color LightLight (Color baseColor) 219 { 220 return Light(baseColor, 1.0f); 221 } 222 Dark(Color baseColor)223 public static Color Dark (Color baseColor) 224 { 225 return Dark(baseColor, 0.5f); 226 } 227 Dark(Color baseColor, float percOfDarkDark)228 public static Color Dark (Color baseColor, float percOfDarkDark) 229 { 230 if (baseColor.ToArgb () == ThemeEngine.Current.ColorControl.ToArgb ()) { 231 232 int r_sub, g_sub, b_sub; 233 Color color; 234 235 if (percOfDarkDark <= 0f) 236 return ThemeEngine.Current.ColorControlDark; 237 238 if (percOfDarkDark == 1.0f) 239 return ThemeEngine.Current.ColorControlDarkDark; 240 241 r_sub = ThemeEngine.Current.ColorControlDarkDark.R - ThemeEngine.Current.ColorControlDark.R; 242 g_sub = ThemeEngine.Current.ColorControlDarkDark.G - ThemeEngine.Current.ColorControlDark.G; 243 b_sub = ThemeEngine.Current.ColorControlDarkDark.B - ThemeEngine.Current.ColorControlDark.B; 244 245 color = Color.FromArgb (ThemeEngine.Current.ColorControlDark.A, 246 (int) (ThemeEngine.Current.ColorControlDark.R + (r_sub * percOfDarkDark)), 247 (int) (ThemeEngine.Current.ColorControlDark.G + (g_sub * percOfDarkDark)), 248 (int) (ThemeEngine.Current.ColorControlDark.B + (b_sub * percOfDarkDark))); 249 return color; 250 } 251 252 int H, I, S; 253 254 ControlPaint.Color2HBS(baseColor, out H, out I, out S); 255 int PreIntensity = Math.Max (0, I - (int) (I * 0.333f)); 256 int NewIntensity = Math.Max (0, PreIntensity - (int) (PreIntensity * percOfDarkDark)); 257 return ControlPaint.HBS2Color(H, NewIntensity, S); 258 } 259 DarkDark(Color baseColor)260 public static Color DarkDark (Color baseColor) 261 { 262 return Dark(baseColor, 1.0f); 263 } 264 DrawBorder(Graphics graphics, Rectangle bounds, Color color, ButtonBorderStyle style)265 public static void DrawBorder (Graphics graphics, Rectangle bounds, Color color, ButtonBorderStyle style) 266 { 267 int line_width_top_left = 1; 268 int line_width_bottom_right = 1; 269 270 if (style == ButtonBorderStyle.Inset) 271 line_width_top_left = 2; 272 if (style == ButtonBorderStyle.Outset) { 273 line_width_bottom_right = 2; 274 line_width_top_left = 2; 275 } 276 277 DrawBorder(graphics, bounds, color, line_width_top_left, style, color, line_width_top_left, style, color, line_width_bottom_right, style, color, line_width_bottom_right, style); 278 } 279 DrawBorder(Graphics graphics, RectangleF bounds, Color color, ButtonBorderStyle style)280 internal static void DrawBorder (Graphics graphics, RectangleF bounds, Color color, ButtonBorderStyle style) 281 { 282 int line_width_top_left = 1; 283 int line_width_bottom_right = 1; 284 285 if (style == ButtonBorderStyle.Inset) 286 line_width_top_left = 2; 287 if (style == ButtonBorderStyle.Outset) { 288 line_width_bottom_right = 2; 289 line_width_top_left = 2; 290 } 291 292 ThemeEngine.Current.CPDrawBorder (graphics, bounds, color, line_width_top_left, style, color, line_width_top_left, style, color, line_width_bottom_right, style, color, line_width_bottom_right, style); 293 } 294 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)295 public static void DrawBorder( Graphics graphics, Rectangle bounds, Color leftColor, int leftWidth, 296 ButtonBorderStyle leftStyle, Color topColor, int topWidth, ButtonBorderStyle topStyle, 297 Color rightColor, int rightWidth, ButtonBorderStyle rightStyle, Color bottomColor, int bottomWidth, 298 ButtonBorderStyle bottomStyle) { 299 300 ThemeEngine.Current.CPDrawBorder (graphics, bounds, leftColor, leftWidth, 301 leftStyle, topColor, topWidth, topStyle, rightColor, rightWidth, rightStyle, 302 bottomColor, bottomWidth, bottomStyle); 303 } 304 305 DrawBorder3D(Graphics graphics, Rectangle rectangle)306 public static void DrawBorder3D(Graphics graphics, Rectangle rectangle) { 307 DrawBorder3D(graphics, rectangle, Border3DStyle.Etched, Border3DSide.Left | Border3DSide.Right | Border3DSide.Top | Border3DSide.Bottom); 308 } 309 DrawBorder3D(Graphics graphics, Rectangle rectangle, Border3DStyle style)310 public static void DrawBorder3D(Graphics graphics, Rectangle rectangle, Border3DStyle style) { 311 DrawBorder3D(graphics, rectangle, style, Border3DSide.Left | Border3DSide.Right | Border3DSide.Top | Border3DSide.Bottom); 312 } 313 DrawBorder3D(Graphics graphics, int x, int y, int width, int height)314 public static void DrawBorder3D(Graphics graphics, int x, int y, int width, int height) { 315 DrawBorder3D(graphics, new Rectangle(x, y, width, height), Border3DStyle.Etched, Border3DSide.Left | Border3DSide.Right | Border3DSide.Top | Border3DSide.Bottom); 316 } 317 DrawBorder3D(Graphics graphics, int x, int y, int width, int height, Border3DStyle style)318 public static void DrawBorder3D(Graphics graphics, int x, int y, int width, int height, Border3DStyle style) { 319 DrawBorder3D(graphics, new Rectangle(x, y, width, height), style, Border3DSide.Left | Border3DSide.Right | Border3DSide.Top | Border3DSide.Bottom); 320 } 321 DrawBorder3D( Graphics graphics, int x, int y, int width, int height, Border3DStyle style,Border3DSide sides)322 public static void DrawBorder3D( Graphics graphics, int x, int y, int width, int height, Border3DStyle style,Border3DSide sides) { 323 DrawBorder3D( graphics, new Rectangle(x, y, width, height), style, sides); 324 } 325 DrawBorder3D( Graphics graphics, Rectangle rectangle, Border3DStyle style, Border3DSide sides)326 public static void DrawBorder3D( Graphics graphics, Rectangle rectangle, Border3DStyle style, Border3DSide sides) { 327 328 ThemeEngine.Current.CPDrawBorder3D (graphics, rectangle, style, sides); 329 } 330 DrawButton( Graphics graphics, int x, int y, int width, int height, ButtonState state)331 public static void DrawButton( Graphics graphics, int x, int y, int width, int height, ButtonState state) { 332 DrawButton(graphics, new Rectangle(x, y, width, height), state); 333 } 334 DrawButton( Graphics graphics, Rectangle rectangle, ButtonState state)335 public static void DrawButton( Graphics graphics, Rectangle rectangle, ButtonState state) { 336 337 ThemeEngine.Current.CPDrawButton (graphics, rectangle, state); 338 } 339 340 DrawCaptionButton(Graphics graphics, int x, int y, int width, int height, CaptionButton button, ButtonState state)341 public static void DrawCaptionButton(Graphics graphics, int x, int y, int width, int height, CaptionButton button, ButtonState state) { 342 DrawCaptionButton(graphics, new Rectangle(x, y, width, height), button, state); 343 } 344 DrawCaptionButton(Graphics graphics, Rectangle rectangle, CaptionButton button, ButtonState state)345 public static void DrawCaptionButton(Graphics graphics, Rectangle rectangle, CaptionButton button, ButtonState state) { 346 347 ThemeEngine.Current.CPDrawCaptionButton (graphics, rectangle, button, state); 348 } 349 DrawCheckBox(Graphics graphics, int x, int y, int width, int height, ButtonState state)350 public static void DrawCheckBox(Graphics graphics, int x, int y, int width, int height, ButtonState state) { 351 DrawCheckBox(graphics, new Rectangle(x, y, width, height), state); 352 } 353 DrawCheckBox(Graphics graphics, Rectangle rectangle, ButtonState state)354 public static void DrawCheckBox(Graphics graphics, Rectangle rectangle, ButtonState state) { 355 356 ThemeEngine.Current.CPDrawCheckBox (graphics, rectangle, state); 357 } 358 DrawComboButton(Graphics graphics, Rectangle rectangle, ButtonState state)359 public static void DrawComboButton(Graphics graphics, Rectangle rectangle, ButtonState state) { 360 361 ThemeEngine.Current.CPDrawComboButton (graphics, rectangle, state); 362 } 363 DrawComboButton(Graphics graphics, int x, int y, int width, int height, ButtonState state)364 public static void DrawComboButton(Graphics graphics, int x, int y, int width, int height, ButtonState state) { 365 DrawComboButton(graphics, new Rectangle(x, y, width, height), state); 366 } 367 DrawContainerGrabHandle(Graphics graphics, Rectangle bounds)368 public static void DrawContainerGrabHandle(Graphics graphics, Rectangle bounds) { 369 370 ThemeEngine.Current.CPDrawContainerGrabHandle (graphics, bounds); 371 } 372 DrawFocusRectangle( Graphics graphics, Rectangle rectangle)373 public static void DrawFocusRectangle( Graphics graphics, Rectangle rectangle) { 374 DrawFocusRectangle(graphics, rectangle, SystemColors.Control, SystemColors.ControlText); 375 } 376 DrawFocusRectangle( Graphics graphics, Rectangle rectangle, Color foreColor, Color backColor)377 public static void DrawFocusRectangle( Graphics graphics, Rectangle rectangle, Color foreColor, Color backColor) { 378 379 ThemeEngine.Current.CPDrawFocusRectangle (graphics, rectangle, foreColor, backColor); 380 } 381 DrawGrabHandle(Graphics graphics, Rectangle rectangle, bool primary, bool enabled)382 public static void DrawGrabHandle(Graphics graphics, Rectangle rectangle, bool primary, bool enabled) { 383 384 ThemeEngine.Current.CPDrawGrabHandle (graphics, rectangle, primary, enabled); 385 } 386 DrawGrid(Graphics graphics, Rectangle area, Size pixelsBetweenDots, Color backColor)387 public static void DrawGrid(Graphics graphics, Rectangle area, Size pixelsBetweenDots, Color backColor) { 388 389 ThemeEngine.Current.CPDrawGrid (graphics, area, pixelsBetweenDots, backColor); 390 } 391 DrawImageDisabled(Graphics graphics, Image image, int x, int y, Color background)392 public static void DrawImageDisabled(Graphics graphics, Image image, int x, int y, Color background) { 393 394 ThemeEngine.Current.CPDrawImageDisabled (graphics, image, x, y, background); 395 } 396 DrawLockedFrame(Graphics graphics, Rectangle rectangle, bool primary)397 public static void DrawLockedFrame(Graphics graphics, Rectangle rectangle, bool primary) { 398 399 ThemeEngine.Current.CPDrawLockedFrame (graphics, rectangle, primary); 400 } 401 DrawMenuGlyph(Graphics graphics, Rectangle rectangle, MenuGlyph glyph)402 public static void DrawMenuGlyph(Graphics graphics, Rectangle rectangle, MenuGlyph glyph) { 403 404 ThemeEngine.Current.CPDrawMenuGlyph (graphics, rectangle, glyph, ThemeEngine.Current.ColorMenuText, Color.Empty); 405 } 406 DrawMenuGlyph(Graphics graphics, Rectangle rectangle, MenuGlyph glyph, Color foreColor, Color backColor)407 public static void DrawMenuGlyph (Graphics graphics, Rectangle rectangle, MenuGlyph glyph, Color foreColor, Color backColor) 408 { 409 ThemeEngine.Current.CPDrawMenuGlyph (graphics, rectangle, glyph, foreColor, backColor); 410 } 411 DrawMenuGlyph(Graphics graphics, int x, int y, int width, int height, MenuGlyph glyph)412 public static void DrawMenuGlyph(Graphics graphics, int x, int y, int width, int height, MenuGlyph glyph) { 413 DrawMenuGlyph(graphics, new Rectangle(x, y, width, height), glyph); 414 } 415 DrawMenuGlyph(Graphics graphics, int x, int y, int width, int height, MenuGlyph glyph, Color foreColor, Color backColor)416 public static void DrawMenuGlyph (Graphics graphics, int x, int y, int width, int height, MenuGlyph glyph, Color foreColor, Color backColor) 417 { 418 DrawMenuGlyph (graphics, new Rectangle (x, y, width, height), glyph, foreColor, backColor); 419 } 420 DrawMixedCheckBox(Graphics graphics, Rectangle rectangle, ButtonState state)421 public static void DrawMixedCheckBox(Graphics graphics, Rectangle rectangle, ButtonState state) { 422 ThemeEngine.Current.CPDrawMixedCheckBox (graphics, rectangle, state); 423 } 424 DrawMixedCheckBox(Graphics graphics, int x, int y, int width, int height, ButtonState state)425 public static void DrawMixedCheckBox(Graphics graphics, int x, int y, int width, int height, ButtonState state) { 426 DrawMixedCheckBox(graphics, new Rectangle(x, y, width, height), state); 427 } 428 429 DrawRadioButton(Graphics graphics, int x, int y, int width, int height, ButtonState state)430 public static void DrawRadioButton(Graphics graphics, int x, int y, int width, int height, ButtonState state) { 431 DrawRadioButton(graphics, new Rectangle(x, y, width, height), state); 432 } 433 DrawRadioButton(Graphics graphics, Rectangle rectangle, ButtonState state)434 public static void DrawRadioButton(Graphics graphics, Rectangle rectangle, ButtonState state) { 435 436 ThemeEngine.Current.CPDrawRadioButton (graphics, rectangle, state); 437 } 438 DrawReversibleFrame(Rectangle rectangle, Color backColor, FrameStyle style)439 public static void DrawReversibleFrame(Rectangle rectangle, Color backColor, FrameStyle style) { 440 XplatUI.DrawReversibleFrame (rectangle, backColor, style); 441 } 442 DrawReversibleLine(Point start, Point end, Color backColor)443 public static void DrawReversibleLine(Point start, Point end, Color backColor) { 444 XplatUI.DrawReversibleLine (start, end, backColor); 445 } 446 FillReversibleRectangle(Rectangle rectangle, Color backColor)447 public static void FillReversibleRectangle(Rectangle rectangle, Color backColor) { 448 XplatUI.FillReversibleRectangle (rectangle, backColor); 449 } 450 DrawScrollButton(Graphics graphics, int x, int y, int width, int height, ScrollButton button, ButtonState state)451 public static void DrawScrollButton (Graphics graphics, int x, int y, int width, int height, ScrollButton button, ButtonState state) { 452 ThemeEngine.Current.CPDrawScrollButton (graphics, new Rectangle(x, y, width, height), button, state); 453 } 454 DrawScrollButton(Graphics graphics, Rectangle rectangle, ScrollButton button, ButtonState state)455 public static void DrawScrollButton (Graphics graphics, Rectangle rectangle, ScrollButton button, ButtonState state) { 456 ThemeEngine.Current.CPDrawScrollButton (graphics, rectangle, button, state); 457 } 458 459 [MonoTODO ("Stub, does nothing")] 460 private static bool DSFNotImpl = false; DrawSelectionFrame(Graphics graphics, bool active, Rectangle outsideRect, Rectangle insideRect, Color backColor)461 public static void DrawSelectionFrame(Graphics graphics, bool active, Rectangle outsideRect, Rectangle insideRect, Color backColor) { 462 if (!DSFNotImpl) { 463 DSFNotImpl = true; 464 Console.WriteLine("NOT IMPLEMENTED: DrawSelectionFrame(Graphics graphics, bool active, Rectangle outsideRect, Rectangle insideRect, Color backColor)"); 465 } 466 //throw new NotImplementedException(); 467 } 468 DrawSizeGrip(Graphics graphics, Color backColor, Rectangle bounds)469 public static void DrawSizeGrip (Graphics graphics, Color backColor, Rectangle bounds) 470 { 471 ThemeEngine.Current.CPDrawSizeGrip (graphics, backColor, bounds); 472 } 473 DrawSizeGrip(Graphics graphics, Color backColor, int x, int y, int width, int height)474 public static void DrawSizeGrip(Graphics graphics, Color backColor, int x, int y, int width, int height) { 475 DrawSizeGrip(graphics, backColor, new Rectangle(x, y, width, height)); 476 } 477 DrawStringDisabled(Graphics graphics, string s, Font font, Color color, RectangleF layoutRectangle, StringFormat format)478 public static void DrawStringDisabled(Graphics graphics, string s, Font font, Color color, RectangleF layoutRectangle, StringFormat format) { 479 480 ThemeEngine.Current.CPDrawStringDisabled (graphics, s, font, color, layoutRectangle, format); 481 } 482 DrawStringDisabled(IDeviceContext dc, string s, Font font, Color color, Rectangle layoutRectangle, TextFormatFlags format)483 public static void DrawStringDisabled (IDeviceContext dc, string s, Font font, Color color, Rectangle layoutRectangle, TextFormatFlags format) 484 { 485 ThemeEngine.Current.CPDrawStringDisabled (dc, s, font, color, layoutRectangle, format); 486 } 487 DrawVisualStyleBorder(Graphics graphics, Rectangle bounds)488 public static void DrawVisualStyleBorder (Graphics graphics, Rectangle bounds) 489 { 490 ThemeEngine.Current.CPDrawVisualStyleBorder (graphics, bounds); 491 } 492 #endregion // Public Static Methods 493 } 494 } 495