3 //define test = Color { 5, 4, 2 };
4 define skinMainColor = Color { 0, 71, 128 };
5 define skinOppositeColor = blue; //Color { 252, 114, 22 };
6 //define skinBackground = Color { 40, 40, 40 };
7 //define skinBackground = Color { 185, 201, 215 };
8 //define skinBackground = Color { 229, 236, 241 };
9 define skinBackground = Color { 255, 255, 255 };
14 #define CORNER (BORDER * 2)
19 #define BUTTON_OFFSET 0
21 #define NAME_OFFSETX 4
26 #define MENU_HEIGHT 25
27 #define STATUS_HEIGHT 18
29 define skinForeground = skinMainColor;
30 define skinTextForeground = black;
31 define evenRowBackground = red; //Color { 80, 70, 60 };
33 define skinTextColor = skinMainColor;
34 define skinInactiveTextColor = Color { skinMainColor.r - 20, skinMainColor.g - 20, skinMainColor.b - 20 };
36 ColorKey skinGradient[3] =
38 { Color { 40,40,40 }, 0.0f },
40 { Color { 40,40,40 }, 1.0f },
43 class SimSkin_Window : Window
45 void ShowDecorations(Font captionFont, Surface surface, char * name, bool active, bool moving)
47 bool isNormal = (state == normal || state == maximized);
48 int top = 0, border = 0, bottom = 0;
49 if(state == minimized)
50 top = border = bottom = DEAD_BORDER;
51 else if(((BorderBits)borderStyle).sizable)
53 top = isNormal ? TOP : 0;
54 border = isNormal ? BORDER : 0;
57 else if(((BorderBits)borderStyle).fixed)
59 top = 2; //DEAD_BORDER;
63 else if(((BorderBits)borderStyle).contour)
70 if(((BorderBits)borderStyle).deep || ((BorderBits)borderStyle).bevel)
72 int deepTop = 0, deepBottom = 0, deepBorder = 0;
73 if(((BorderBits)borderStyle).contour)
76 deepTop = (((BorderBits)borderStyle).fixed && (state != maximized || !parent.menuBar)) ? (top + CAPTION) : top;
77 deepBottom = (((BorderBits)borderStyle).sizable && isNormal) ? bottom : border;
80 surface.Bevel(((BorderBits)borderStyle).bevel ? false : true, deepBorder, deepTop,
81 size.w - deepBorder - deepBorder, size.h - deepBottom - deepTop);
84 if(((BorderBits)borderStyle).fixed && (state != maximized || !parent.menuBar))
87 if(state != maximized || !((BorderBits)borderStyle).sizable)
89 // Frame for ES_CAPTION windows
90 surface.Bevel(false, 0, 0, size.w, size.h);
91 surface.SetForeground(activeBorder);
92 surface.Rectangle(2, 2, size.w-3, size.h-3);
94 // Resizeable frame is 1 pixel thicker
95 if(((BorderBits)borderStyle).sizable && isNormal)
96 surface.Rectangle(3, 3, size.w - 4, size.h - 4);
101 surface.Gradient(gradient, sizeof(gradient) / sizeof(ColorKey), GRADIENT_SMOOTHNESS, GRADIENT_DIRECTION,
102 border, top, size.w - border - 1, top + CAPTION - 2);
104 surface.Gradient(gradientInactive, sizeof(gradientInactive) / sizeof(ColorKey),
105 GRADIENT_SMOOTHNESS, GRADIENT_DIRECTION,
106 border, top, size.w - border - 1, top + CAPTION - 2);
108 surface.SetForeground(activeBorder);
109 if(state != minimized)
110 surface.HLine(border, size.w-border-1, top + CAPTION-1);
113 surface.SetForeground(skinBackground);
114 surface.Rectangle(0,0, size.w-1, size.h-1);
115 surface.SetForeground(active ? skinTextColor : skinInactiveTextColor);
116 surface.Rectangle(1,1, size.w-2, size.h-2);
117 surface.SetBackground(skinBackground);
118 surface.Area(2, 2, size.w-3, CAPTION + 1);
120 // surface.TextFont(captionFont);
121 // surface.WriteText(4,2, name, strlen(name));
123 surface.SetForeground((active ? skinTextColor : skinInactiveTextColor));
124 surface.TextOpacity(false);
125 surface.TextFont(captionFont);
128 int buttonsSize = border +
129 ((hasMaximize || hasMinimize) ? 52 : 18);
130 surface.WriteTextDots(left, border + NAME_OFFSETX, top + NAME_OFFSET,
131 size.w - (buttonsSize + border + 4), name, strlen(name));
134 if(((BorderBits)borderStyle).contour && !((BorderBits)borderStyle).fixed)
136 surface.SetForeground(skinForeground /*black*/);
137 surface.Rectangle(0, 0, size.w - 1, size.h - 1);
140 if(state != minimized && hasHorzScroll && hasVertScroll)
142 if(sbh && sbh.visible && sbv && sbv.visible)
144 surface.SetBackground(activeBorder);
146 clientStart.x + clientSize.w,
147 clientStart.y + clientSize.h,
148 clientStart.x + clientSize.w + SB_WIDTH - 1,
149 clientStart.y + clientSize.h + SB_HEIGHT - 1);
154 void GetDecorationsSize(MinMaxValue * w, MinMaxValue * h)
157 if((((BorderBits)borderStyle).deep || ((BorderBits)borderStyle).bevel) && state != minimized)
162 if(((BorderBits)borderStyle).sizable && (state == normal || state == maximized))
167 if(((BorderBits)borderStyle).fixed && (state != maximized || !parent.menuBar))
170 if(!((BorderBits)borderStyle).sizable || state == minimized)
176 if(((BorderBits)borderStyle).contour && !((BorderBits)borderStyle).fixed)
181 if(hasMenuBar && state != minimized)
185 if(statusBar && state != minimized)
191 bool IsMouseMoving(int x, int y, int w, int h)
193 BorderBits style = (BorderBits)borderStyle; // TOFIX: borderStyle.fixed doesn't work
196 bool resizeX, resizeY, resizeEndX, resizeEndY;
197 if(!IsMouseResizing(x, y, w, h, &resizeX, &resizeY, &resizeEndX, &resizeEndY))
203 bool IsMouseResizing(int x, int y, int w, int h, bool *resizeX, bool *resizeY, bool *resizeEndX, bool *resizeEndY)
207 *resizeX = *resizeY = *resizeEndX = *resizeEndY = false;
209 if(((BorderBits)borderStyle).sizable && (state == normal))
212 if(Box { 0, 0,CORNER-1, TOP-1 }.IsPointInside({x, y}))
213 result = *resizeX = *resizeY = true;
215 if(Box { w-CORNER-1, 0, w-1, TOP-1 }.IsPointInside({x, y}))
216 result = *resizeEndX = *resizeY = true;
218 if(Box { 0, h-BOTTOM-1, CORNER-1, h-1 }.IsPointInside({x, y}))
219 result = *resizeX = *resizeEndY = true;
220 // BottomRight Corner
221 if(Box { w-CORNER-1, h-BOTTOM-1, w-1, h-1 }.IsPointInside({x, y}))
222 result = *resizeEndX = *resizeEndY = true;
224 if(Box { 0,TOP, BORDER, h-BOTTOM-1 }.IsPointInside({x, y}))
225 result = *resizeX = true;
227 if(Box { w-BORDER-1, TOP, w-1, h-BOTTOM-1 }.IsPointInside({x, y}))
228 result = *resizeEndX = true;
230 if(Box { CORNER, 0, w-CORNER-1, TOP-1 }.IsPointInside({x, y}))
231 result = *resizeY = true;
233 if(Box { CORNER, h-BOTTOM-1, w-CORNER-1, h-1 }.IsPointInside({x, y}))
234 result = *resizeEndY = true;
239 void SetWindowMinimum(MinMaxValue * mw, MinMaxValue * mh)
241 bool isNormal = (state == normal || state == maximized);
242 if(((BorderBits)borderStyle).fixed && (state != maximized || !parent.menuBar))
250 if(((BorderBits)borderStyle).sizable && isNormal)
252 // GetDecorationsSize(window, mw, mh);
259 if(hasVertScroll && hasHorzScroll)
261 *mw += 2 * SB_WIDTH + SB_WIDTH;
262 *mh += 2 * SB_HEIGHT + SB_HEIGHT;
264 if(((BorderBits)borderStyle).sizable && isNormal)
270 void SetWindowArea(int * x, int * y, MinMaxValue * w, MinMaxValue * h, MinMaxValue * cw, MinMaxValue * ch)
272 bool isNormal = (state == normal || state == maximized);
273 MinMaxValue aw = 0, ah = 0;
277 GetDecorationsSize(&aw, &ah);
279 // Compute client area start
280 if(((BorderBits)borderStyle).deep || ((BorderBits)borderStyle).bevel)
286 if(((BorderBits)borderStyle).sizable && isNormal)
297 if(((BorderBits)borderStyle).fixed && (state != maximized || !parent.menuBar))
300 if(!((BorderBits)borderStyle).sizable || state == minimized)
307 if(((BorderBits)borderStyle).contour && !((BorderBits)borderStyle).fixed)
313 // Reduce client area
321 void UpdateNonClient()
323 bool isNormal = (state == normal || state == maximized);
324 int top = 0, border = 0;
326 if(state == minimized)
327 top = border = DEAD_BORDER;
328 else if(((BorderBits)borderStyle).sizable)
330 if(state == maximized && parent.menuBar)
337 top = isNormal ? TOP : 0;
338 border = isNormal ? BORDER : 0;
341 else if(((BorderBits)borderStyle).fixed)
346 else if(((BorderBits)borderStyle).contour)
351 insideBorder = border;
352 if(((BorderBits)borderStyle).deep)
357 if(state == minimized)
358 menuBar.visible = false;
360 menuBar.visible = true;
361 menuBar.Move(clientStart.x, clientStart.y - MENU_HEIGHT, size.w - insideBorder * 2, MENU_HEIGHT);
365 if(state == minimized)
366 statusBar.visible = false;
369 statusBar.visible = true;
370 statusBar.anchor = { left = clientStart.x, bottom = border };
371 statusBar.size.w = size.w - insideBorder * 2;
377 minimizeButton.anchor = { right = ((maximizeButton && !maximizeButton.disabled) ? 25 + 34 + 4 : 34 + 4) + border, top = top + BUTTON_OFFSET };
378 minimizeButton.size = { 20, 10 };
379 minimizeButton.foreground = skinForeground;
380 minimizeButton.background = skinBackground;
381 minimizeButton.bevel = false;
382 minimizeButton.OnRedraw = Minimize_OnRedraw;
383 minimizeButton.visible = true;
385 if(maximizeButton && !maximizeButton.disabled)
387 maximizeButton.anchor = { right = 34 + 4 + border, top = top + BUTTON_OFFSET };
388 maximizeButton.size = { 20, 10 };
389 maximizeButton.bevel = false;
390 maximizeButton.foreground = skinForeground;
391 maximizeButton.background = skinBackground;
392 maximizeButton.OnRedraw = Maximize_OnRedraw;
393 maximizeButton.visible = true;
397 closeButton.anchor = { right = -1 + border, top = top + BUTTON_OFFSET };
398 closeButton.size = { 34, 10 };
399 closeButton.bevel = false;
400 closeButton.foreground = skinForeground;
401 closeButton.background = skinBackground;
402 closeButton.OnRedraw = Close_OnRedraw;
403 closeButton.visible = true;
407 void OnApplyGraphics()
410 background = skinBackground;
411 foreground = skinForeground;*/
412 // Find something better?
416 static void Button::SmallButton_OnRedraw(Surface surface)
418 surface.SetBackground(parent.active ? background : skinBackground);
419 surface.Area(0, 0, clientSize.w - 2, clientSize.w - 1);
420 surface.SetForeground(parent.active ? skinTextColor : skinInactiveTextColor);
421 surface.VLine(0, clientSize.h - 2, 0);
422 surface.VLine(0, clientSize.h - 2, clientSize.w - 1);
423 surface.HLine(1, clientSize.w - 2, clientSize.h - 1);
426 static void Button::Minimize_OnRedraw(Surface surface)
428 SmallButton_OnRedraw(this, surface);
429 surface.DrawLine( 5, 3, 14, 3);
430 surface.DrawLine( 5, 4, 14, 4);
433 static void Button::Maximize_OnRedraw(Surface surface)
435 SmallButton_OnRedraw(this, surface);
436 surface.Rectangle( 5, 2, 14, 7);
437 surface.DrawLine( 5, 3, 14, 3);
440 static void Button::Close_OnRedraw(Surface surface)
442 SmallButton_OnRedraw(this, surface);
443 //surface.SetForeground(black);
444 surface.DrawLine( 7+7, 2, 12+7, 7);
445 surface.DrawLine( 8+7, 2, 13+7, 7);
446 surface.DrawLine( 12+7, 2, 7+7, 7);
447 surface.DrawLine( 13+7, 2, 8+7, 7);
450 /*class SimSkin_StatusBar : StatusBar
452 void OnApplyGraphics()
454 background = skinBackground;
455 foreground = skinForeground;
459 /*class SimSkin_FileDialog : FileDialog
461 void OnApplyGraphics()
464 background = skinBackground;
465 foreground = skinForeground;
466 for(child = firstChild; child; child = child.next)
469 child.foreground = skinForeground;
474 #define PUREVTBL(c) ((int (**)())*(void **)((byte *)class(c).data + sizeof(void *)))
476 extern int __ecereVMethodID___ecereNameSpace__ecere__gui__Window_OnApplyGraphics;
477 extern int __ecereVMethodID___ecereNameSpace__ecere__gui__Window_OnRedraw;
486 class SimSkin_Button : Button
488 void OnApplyGraphics()
490 //background = skinBackground;
491 background = Color { (int)70 * 6/10, (int)130* 6/10, (int)180* 6/10 };
492 foreground = skinForeground;
495 void OnRedraw(Surface surface)
497 int isDefault = (int)this.isDefault;
498 ((void (*)(Window, Surface))(void *)PUREVTBL(Button)[__ecereVMethodID___ecereNameSpace__ecere__gui__Window_OnRedraw])(this, surface);
499 if(bevel || (bevelOver && (buttonState == down || buttonState == over || checked)))
502 if(buttonState == down || checked)
504 surface.SetForeground(skinMainColor);
505 surface.HLine(isDefault + 0, clientSize.w-2-isDefault, 0);
506 surface.VLine(isDefault + 1, clientSize.h-2-isDefault, 0);
507 surface.SetForeground(Color { Min((int)c.r * 16/10, 255), Min((int)c.g * 16/10, 255), Min((int)c.b * 16/10,255) });
508 surface.HLine(isDefault + 0, clientSize.w-1-isDefault, clientSize.h-1-isDefault);
509 surface.VLine(isDefault + 0, clientSize.h-2-isDefault, clientSize.w-1-isDefault);
513 surface.SetForeground(Color { Min((int)c.r * 16/10, 255), Min((int)c.g * 16/10, 255), Min((int)c.b * 16/10,255) });
514 surface.HLine(0 + isDefault, clientSize.w-2 - isDefault, isDefault);
515 surface.VLine(1 + isDefault, clientSize.h-2 - isDefault, isDefault);
518 surface.SetForeground(skinMainColor);
519 surface.HLine(1 + isDefault, clientSize.w-2 - isDefault, clientSize.h-2 - isDefault);
520 surface.VLine(1 + isDefault, clientSize.h-3 - isDefault, clientSize.w-2 - isDefault);
524 //surface.SetForeground(skinForeground);
525 surface.SetForeground(Color { c.r * 4/10, c.g * 4/10, c.b * 4/10 });
526 surface.HLine( isDefault, clientSize.w-1 - isDefault, clientSize.h-1 - isDefault);
527 surface.VLine( isDefault, clientSize.h-2 - isDefault, clientSize.w-1 - isDefault);
533 surface.SetForeground(skinForeground);
534 surface.Rectangle(0,0,clientSize.w-1,clientSize.h-1);
536 if(!(bevelOver) && !isRemote)
541 int offset = (buttonState == down && this.offset) ? 1 : 0;
542 surface.SetForeground(skinForeground);
543 surface.LineStipple(0x5555);
545 #define CAPTION_DISTANCE 18
546 if((isRadio || isCheckbox) && text)
548 //x1 = clientSize.h + CAPTION_DISTANCE;
549 x1 = CAPTION_DISTANCE;
558 x2 = clientSize.w - 5+offset;
559 y2 = clientSize.h - 5+offset;
561 if(isRadio || isCheckbox)
569 if((x2 - x1) & 1) x2++;
570 if((y2 - y1) & 1) y2++;
572 surface.Rectangle(x1, y1, x2, y2);
573 surface.LineStipple(0);
578 #define CAPTION_DISTANCE 18
580 void OnRedraw(Surface surface)
584 ((void (*)(Window, Surface))(void *)PUREVTBL(Button)[__ecereVMethodID___ecereNameSpace__ecere__gui__Window_OnRedraw])(this, surface);
589 ButtonState state = this.buttonState;
590 Bitmap buttonBitmap = bitmap ? bitmap.bitmap : null;
591 char * text = this.text;
592 int offset = (state == down && this.offset) ? 1 : 0;
593 Color backColor = background;
594 int isDefault = this.isDefault;
599 if(bevelOver && checked)
606 if((bevel || bevelOver) /* && opacity && backColor*/)
608 if(!scaleBitmap || !buttonBitmap)
611 surface.SetBackground({(byte)(opacity * 255), backColor});
612 //surface.Area(1, 1,clientSize.w-3+offset,clientSize.h-3+offset);
613 surface.Area(0, 0,clientSize.w-1,clientSize.h-1);
615 ColorKey keys[2] = { { silver, 0.0f }, { white, 1.0f } };
616 surface.Gradient(keys, sizeof(keys) / sizeof(ColorKey), 1, vertical, 0, 0, clientSize.w-1, clientSize.h-1);
621 if(isCheckbox && !buttonBitmap)
624 int start = (clientSize.h - height) / 2;
627 // surface.SetBackground(activeBorder);
628 surface.SetBackground(gainsboro);
629 else if(active && !text)
630 surface.SetBackground((offset ? activeBorder : Color { 0,0,170 }));
632 surface.SetBackground((offset ? activeBorder : white));
633 surface.Area(2, start+2,height-3,start+height-3);
635 surface.SetForeground(Color { 85, 85, 85 });
636 surface.HLine(0, height - 2, start + 0);
637 surface.VLine(start+1, start+height - 2, 0);
639 surface.SetForeground(Color { 64,64,64 });
640 surface.HLine(1, height - 3, start + 1);
641 surface.VLine(start+2, start+height - 3, 1);
643 surface.SetForeground(Color { 212,208,200 });
644 surface.HLine(1, height - 2, start + height-2);
645 surface.VLine(start+1, start+height - 3, height-2);
647 surface.SetForeground(white);
648 surface.HLine(0, height - 1, start + height-1);
649 surface.VLine(start+0, start+height - 2, height-1);
654 surface.SetForeground(white);
656 surface.SetForeground(Color { 85, 85, 85 });
658 surface.SetForeground(black);
659 surface.DrawLine(4, start+8, 7,start+11);
660 surface.DrawLine(4, start+9, 7,start+12);
661 surface.DrawLine(7, start+11, 11,start+3);
662 surface.DrawLine(7, start+12, 11,start+4);
669 surface.SetForeground(white);
670 if(isRadio || isCheckbox)
672 int x = 0, y = (clientSize.h-buttonBitmap.height)/2;
673 if(bevelOver && text)
675 x = (CAPTION_DISTANCE-buttonBitmap.width)/2 + offset;
676 y = (clientSize.h-buttonBitmap.height)/2 + offset;
681 // Radio Buttons and Checkboxes
682 surface.Blit(buttonBitmap,
684 0,0,buttonBitmap.width,buttonBitmap.height);
692 surface.Stretch(buttonBitmap,
693 1 + offset, 1 + offset,0,0,
694 clientSize.w-3,clientSize.h-3,buttonBitmap.width,buttonBitmap.height);
696 surface.Stretch(buttonBitmap, 0,0, 0,0,
697 clientSize.w,clientSize.h,buttonBitmap.width,buttonBitmap.height);
702 surface.Blit(buttonBitmap,
703 (clientSize.w-buttonBitmap.width) /2 + offset,
704 (clientSize.h-buttonBitmap.height)/2 + offset,
705 0,0,buttonBitmap.width,buttonBitmap.height);
707 surface.Blit(buttonBitmap,
708 (clientSize.w-buttonBitmap.width)/2,
709 (clientSize.h-buttonBitmap.height)/2,
710 0,0,buttonBitmap.width,buttonBitmap.height);
716 if(bevel || (bevelOver && (state == down || state == over || checked)))
718 if(state == down || checked)
720 surface.SetForeground(Color { 85, 85, 85 });
721 surface.HLine(isDefault + 0, clientSize.w-2-isDefault, 0);
722 surface.VLine(isDefault + 1, clientSize.h-2-isDefault, 0);
723 surface.SetForeground(white);
724 surface.HLine(isDefault + 0, clientSize.w-1-isDefault, clientSize.h-1-isDefault);
725 surface.VLine(isDefault + 0, clientSize.h-2-isDefault, clientSize.w-1-isDefault);
729 surface.SetForeground(white);
730 surface.HLine(0 + isDefault, clientSize.w-2 - isDefault, isDefault);
731 surface.VLine(1 + isDefault, clientSize.h-2 - isDefault, isDefault);
732 surface.SetForeground(Color { 85, 85, 85 });
733 surface.HLine(1 + isDefault, clientSize.w-2 - isDefault, clientSize.h-2 - isDefault);
734 surface.VLine(1 + isDefault, clientSize.h-3 - isDefault, clientSize.w-2 - isDefault);
738 surface.SetForeground(black);
739 surface.HLine( isDefault, clientSize.w-1 - isDefault, clientSize.h-1 - isDefault);
740 surface.VLine( isDefault, clientSize.h-2 - isDefault, clientSize.w-1 - isDefault);
746 surface.TextOpacity(false);
747 surface.TextFont(font);
748 surface.SetForeground(foreground);
752 surface.TextExtent(text, strlen(text),&tw, &th);
754 if((isRadio || isCheckbox) && !bevelOver)
755 WriteCaption(surface, /*clientSize.h +*/ CAPTION_DISTANCE + 3,
756 (clientSize.h - th - 4)/2);
759 int x, y = (clientSize.h - th - 1)/2 + offset;
763 int width = clientSize.w - 2*6;
766 surface.WriteTextDots(alignment, x, y, width, text, strlen(text));
770 int width = clientSize.w - 2 * 6;
772 if(isCheckbox || ((isRadio || bevelOver) && buttonBitmap))
774 x += CAPTION_DISTANCE + 3;
779 if(alignment == right)
781 else if(alignment == center)
782 x += (width - tw) / 2;
784 WriteCaption(surface, x, y);
789 // Activation Highlight
792 surface.SetForeground(black);
793 surface.Rectangle(0,0,clientSize.w-1,clientSize.h-1);
795 if(!bevelOver && !isRemote)
797 if(active/* && (text || !(buttonStyle.radio || buttonStyle.checkBox))*/)
800 surface.SetForeground(black);
801 surface.LineStipple(0x5555);
803 if((isRadio || isCheckbox) && text)
805 x1 = /*clientSize.h + */CAPTION_DISTANCE;
814 x2 = clientSize.w - 5+offset;
815 y2 = clientSize.h - 5+offset;
817 if(isRadio || isCheckbox)
825 if((x2 - x1) & 1) x2++;
826 if((y2 - y1) & 1) y2++;
828 surface.Rectangle(x1, y1, x2, y2);
829 surface.LineStipple(0);
835 Button::OnRedraw(surface);
840 class SimSkin_ScrollBar : ScrollBar
842 void OnApplyGraphics()
844 ((void (*)(Window))(void *)PUREVTBL(ScrollBar)[__ecereVMethodID___ecereNameSpace__ecere__gui__Window_OnApplyGraphics])(this);
846 //background = { skinBackground.r * 9 / 6, skinBackground.g * 9 / 6, skinBackground.b * 9 / 6 };
848 upBtn.background = Color { 70 * 6/10, 130* 6/10, 180* 6/10 }; //skinBackground;
849 upBtn.bitmap = { (direction == vertical) ? "<:ecere>elements/arrowUp.png" : "<:ecere>elements/arrowLeft.png", monochrome = true };
850 downBtn.background = Color { 70 * 6/10, 130* 6/10, 180* 6/10 }; //skinBackground;
851 downBtn.bitmap = { (direction == vertical) ? "<:ecere>elements/arrowDown.png" : "<:ecere>elements/arrowRight.png", monochrome = true };
852 thumb.background = Color { 70 * 6/10, 130* 6/10, 180* 6/10 }; //skinBackground;*/
856 /*class SimSkin_DropBox : DropBox
858 void OnApplyGraphics()
860 ((void (*)(Window))(void *)PUREVTBL(DropBox)[__ecereVMethodID___ecereNameSpace__ecere__gui__Window_OnApplyGraphics])(this);
861 button.bitmap = { "<:ecere>elements/arrowDown.png", monochrome = true };
862 background = skinBackground;
863 foreground = skinForeground;
864 selectionColor = skinMainColor;
868 /*class SimSkin_ListBox : ListBox
870 void OnApplyGraphics()
872 ((void (*)(Window))(void *)PUREVTBL(ListBox)[__ecereVMethodID___ecereNameSpace__ecere__gui__Window_OnApplyGraphics])(this);
873 background = skinBackground;
874 foreground = skinForeground;
875 selectionColor = skinMainColor;
879 public class SimSkin : Skin
881 class_property(name) = "Sim";
882 class_property(selectionColor) = (Color)skinMainColor;
883 class_property(disabledBackColor) = (Color)Color{ 128,128,128 };
884 class_property(disabledFrontColor) = (Color)Color{ 255,255,255 };
886 FontResource ::SystemFont()
888 return { faceName = "Tahoma", size = 8.25f };
891 FontResource ::CaptionFont()
893 return { faceName = "Verdana", size = 6.5f };
896 char * ::CursorsBitmaps(uint id, int *hotSpotX, int *hotSpotY, byte ** paletteShades)
901 BitmapResource ::GetBitmap(int id)
911 int ::HorizontalSBH()