Usermode/AxWin3 - Added decorator support
[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 #define TEXTINPUT_BACKGROUND    0xFFFFFF
20 #define TEXTINPUT_BORDER_OUT    0x404040
21
22 // === CODE ===
23 void Widget_Decorator_RenderWidget(tWindow *Window, tElement *Element)
24 {
25 //      _SysDebug("Widget_Decorator_RenderWidget: (Element={Type:%i,(%i,%i) %ix%i})",
26 //              Element->Type,
27 //              Element->CachedX, Element->CachedY,
28 //              Element->CachedW, Element->CachedH
29 //              );
30         
31         #if BORDER_EVERYTHING
32         WM_Render_DrawRect(
33                 Window,
34                 Element->CachedX, Element->CachedY,
35                 Element->CachedW, Element->CachedH,
36                 0
37                 );
38         #endif
39         
40         switch(Element->Type)
41         {
42         case ELETYPE_NONE:
43         case ELETYPE_BOX:       break;  // Box is a meta-element
44         
45         case ELETYPE_TABBAR:    // Tab Bar
46                 WM_Render_DrawRect(
47                         Window,
48                         Element->CachedX, Element->CachedY,
49                         Element->CachedW, Element->CachedH,
50                         BOX_BORDER
51                         );
52                 WM_Render_FillRect(
53                         Window,
54                         Element->CachedX+1, Element->CachedY+1,
55                         Element->CachedW-2, Element->CachedH-2,
56                         BOX_BGCOLOUR
57                         );
58                 // Enumerate Items.
59                 break;
60         case ELETYPE_TOOLBAR:   // Tool Bar
61                 WM_Render_DrawRect(
62                         Window,
63                         Element->CachedX, Element->CachedY,
64                         Element->CachedW, Element->CachedH,
65                         BOX_BORDER
66                         );
67                 WM_Render_FillRect(
68                         Window,
69                         Element->CachedX+1, Element->CachedY+1,
70                         Element->CachedW-2, Element->CachedH-2,
71                         BOX_BGCOLOUR
72                         );
73                 break;
74         
75         case ELETYPE_SPACER:    // Spacer (subtle line)
76                 WM_Render_FillRect(
77                         Window,
78                         Element->CachedX+3, Element->CachedY+3,
79                         Element->CachedW-6, Element->CachedH-6,
80                         BOX_BORDER
81                         );
82                 break;
83         
84         case ELETYPE_BUTTON:    // Button
85                 WM_Render_FillRect(
86                         Window,
87                         Element->CachedX+1, Element->CachedY+1,
88                         Element->CachedW-2, Element->CachedH-2,
89                         BUTTON_BGCOLOUR
90                         );
91                 WM_Render_DrawRect(
92                         Window,
93                         Element->CachedX, Element->CachedY,
94                         Element->CachedW-1, Element->CachedH-1,
95                         BUTTON_BORDER
96                         );
97                 break;
98
99         // Text input field / Text Box
100         case ELETYPE_TEXTINPUT:
101         case ELETYPE_TEXTBOX:
102                 WM_Render_FillRect(
103                         Window, 
104                         Element->CachedX, Element->CachedY,
105                         Element->CachedW, Element->CachedH,
106                         TEXTINPUT_BACKGROUND
107                         );
108                 WM_Render_DrawRect(
109                         Window, 
110                         Element->CachedX, Element->CachedY,
111                         Element->CachedW, Element->CachedH,
112                         TEXTINPUT_BORDER_OUT
113                         );
114 //              WM_Render_DrawRect(
115 //                      Window, 
116 //                      Element->CachedX+1, Element->CachedY+1,
117 //                      Element->CachedW-2, Element->CachedH-2,
118 //                      TEXTINPUT_BORDER_IN
119 //                      );
120                 break;
121         
122         case ELETYPE_TEXT:
123                 WM_Render_DrawText(
124                         Window,
125                         Element->CachedX+1, Element->CachedY+1,
126                         Element->CachedW-2, Element->CachedH-2,
127                         NULL,
128                         TEXT_COLOUR,
129                         Element->Text
130                         );
131                 break;
132         
133         case ELETYPE_IMAGE:
134                 WM_Render_DrawImage(
135                         Window,
136                         Element->CachedX, Element->CachedY,
137                         Element->CachedW, Element->CachedH,
138                         Element->Data
139                         );
140                 break;
141                 
142         default:
143                 _SysDebug(" ERROR: Unknown type %i", Element->Type);
144                 break;
145         }
146 }

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