e66da733e6ec3cde07735906b3d478576e6e95ef
[tpg/acess2.git] / Usermode / Applications / axwin3_src / WM / renderer_widget_decorator.c
1 /*
2  * Acess2 Window Manager v3
3  * - By John Hodge (thePowersGang)
4  * 
5  * renderer_widget_decorator.c
6  * - Widget Decorator
7  */
8 #include <common.h>
9 #include <wm.h>
10 #include <renderer_widget.h>
11
12 #define BORDER_EVERYTHING       1
13
14 #define BOX_BGCOLOUR    0xC0C0C0
15 #define BOX_BORDER      0xA0A0A0
16 #define BUTTON_BGCOLOUR 0xD0D0D0
17 #define BUTTON_BORDER   0xF0F0F0
18 #define TEXT_COLOUR     0x000000
19
20 // === CODE ===
21 void Widget_Decorator_RenderWidget(tWindow *Window, tElement *Element)
22 {
23 //      _SysDebug("Widget_Decorator_RenderWidget: (Element={Type:%i,(%i,%i) %ix%i})",
24 //              Element->Type,
25 //              Element->CachedX, Element->CachedY,
26 //              Element->CachedW, Element->CachedH
27 //              );
28         
29         #if BORDER_EVERYTHING
30         WM_Render_DrawRect(
31                 Window,
32                 Element->CachedX, Element->CachedY,
33                 Element->CachedW, Element->CachedH,
34                 0
35                 );
36         #endif
37         
38         switch(Element->Type)
39         {
40         case ELETYPE_NONE:
41         case ELETYPE_BOX:       break;  // Box is a meta-element
42         
43         case ELETYPE_TABBAR:    // Tab Bar
44                 WM_Render_DrawRect(
45                         Window,
46                         Element->CachedX, Element->CachedY,
47                         Element->CachedW, Element->CachedH,
48                         BOX_BORDER
49                         );
50                 WM_Render_FillRect(
51                         Window,
52                         Element->CachedX+1, Element->CachedY+1,
53                         Element->CachedW-2, Element->CachedH-2,
54                         BOX_BGCOLOUR
55                         );
56                 // Enumerate Items.
57                 break;
58         case ELETYPE_TOOLBAR:   // Tool Bar
59                 WM_Render_DrawRect(
60                         Window,
61                         Element->CachedX, Element->CachedY,
62                         Element->CachedW, Element->CachedH,
63                         BOX_BORDER
64                         );
65                 WM_Render_FillRect(
66                         Window,
67                         Element->CachedX+1, Element->CachedY+1,
68                         Element->CachedW-2, Element->CachedH-2,
69                         BOX_BGCOLOUR
70                         );
71                 break;
72         
73         case ELETYPE_SPACER:    // Spacer (subtle line)
74                 WM_Render_FillRect(
75                         Window,
76                         Element->CachedX+3, Element->CachedY+3,
77                         Element->CachedW-6, Element->CachedH-6,
78                         BOX_BORDER
79                         );
80                 break;
81         
82         case ELETYPE_BUTTON:    // Button
83                 WM_Render_FillRect(
84                         Window,
85                         Element->CachedX+1, Element->CachedY+1,
86                         Element->CachedW-2, Element->CachedH-2,
87                         BUTTON_BGCOLOUR
88                         );
89                 WM_Render_DrawRect(
90                         Window,
91                         Element->CachedX, Element->CachedY,
92                         Element->CachedW-1, Element->CachedH-1,
93                         BUTTON_BORDER
94                         );
95                 break;
96         
97         case ELETYPE_TEXT:
98                 WM_Render_DrawText(
99                         Window,
100                         Element->CachedX+1, Element->CachedY+1,
101                         Element->CachedW-2, Element->CachedH-2,
102                         NULL,
103                         TEXT_COLOUR,
104                         Element->Text
105                         );
106                 break;
107         
108         case ELETYPE_IMAGE:
109                 WM_Render_DrawImage(
110                         Window,
111                         Element->CachedX, Element->CachedY,
112                         Element->CachedW, Element->CachedH,
113                         Element->Data
114                         );
115                 break;
116                 
117         default:
118                 _SysDebug(" ERROR: Unknown type %i", Element->Type);
119                 break;
120         }
121 }

UCC git Repository :: git.ucc.asn.au