diff options
Diffstat (limited to 'uisimulator/x11/uibasic.c')
-rw-r--r-- | uisimulator/x11/uibasic.c | 237 |
1 files changed, 115 insertions, 122 deletions
diff --git a/uisimulator/x11/uibasic.c b/uisimulator/x11/uibasic.c index 1b44f10d99..ca3c2c5568 100644 --- a/uisimulator/x11/uibasic.c +++ b/uisimulator/x11/uibasic.c | |||
@@ -54,158 +54,151 @@ Window window; | |||
54 | bool lcd_display_redraw=true; | 54 | bool lcd_display_redraw=true; |
55 | 55 | ||
56 | XrmOptionDescRec options [] = { | 56 | XrmOptionDescRec options [] = { |
57 | /* { "-subtractive", ".additive", XrmoptionNoArg, "false" }, */ | 57 | /* { "-subtractive", ".additive", XrmoptionNoArg, "false" }, */ |
58 | { "-server", ".server", XrmoptionSepArg, 0 }, | 58 | { "-server", ".server", XrmoptionSepArg, 0 }, |
59 | { "-help", ".help", XrmoptionNoArg, "false" }, | 59 | { "-help", ".help", XrmoptionNoArg, "false" }, |
60 | { 0, 0, 0, 0 } | 60 | { 0, 0, 0, 0 } |
61 | }; | 61 | }; |
62 | char *progclass = "rockboxui"; | 62 | char *progclass = "rockboxui"; |
63 | 63 | ||
64 | char *defaults [] = { | 64 | char *defaults [] = { |
65 | #ifdef IRIVER_H100 | 65 | #ifdef IRIVER_H100 |
66 | ".background: lightblue", | 66 | ".background: lightblue", |
67 | #elif defined ARCHOS_GMINI120 | 67 | #elif defined ARCHOS_GMINI120 |
68 | ".background: royalblue", | 68 | ".background: royalblue", |
69 | #else | 69 | #else |
70 | ".background: lightgreen", | 70 | ".background: lightgreen", |
71 | #endif | 71 | #endif |
72 | ".foreground: black", | 72 | ".foreground: black", |
73 | "*help: false", | 73 | "*help: false", |
74 | 0 | 74 | 0 |
75 | }; | 75 | }; |
76 | 76 | ||
77 | void init_window () | 77 | void init_window () |
78 | { | 78 | { |
79 | XGCValues gcv; | 79 | XGCValues gcv; |
80 | XWindowAttributes xgwa; | 80 | XWindowAttributes xgwa; |
81 | 81 | ||
82 | XGetWindowAttributes (dpy, window, &xgwa); | 82 | XGetWindowAttributes (dpy, window, &xgwa); |
83 | 83 | ||
84 | cmap = xgwa.colormap; | 84 | cmap = xgwa.colormap; |
85 | 85 | ||
86 | gcv.function = GXxor; | 86 | gcv.function = GXxor; |
87 | gcv.foreground = | 87 | gcv.foreground = get_pixel_resource("foreground", "Foreground", dpy, cmap); |
88 | get_pixel_resource ("foreground", "Foreground", dpy, cmap); | 88 | draw_gc = XCreateGC (dpy, window, GCForeground, &gcv); |
89 | draw_gc = XCreateGC (dpy, window, GCForeground, &gcv); | ||
90 | 89 | ||
91 | screen_resized(LCD_WIDTH, LCD_HEIGHT); | 90 | screen_resized(LCD_WIDTH, LCD_HEIGHT); |
92 | } | 91 | } |
93 | 92 | ||
94 | void screen_resized(int width, int height) | 93 | void screen_resized(int width, int height) |
95 | { | 94 | { |
96 | int maxx, maxy; | 95 | int maxx, maxy; |
97 | maxx = width; | 96 | maxx = width; |
98 | maxy = height; | 97 | maxy = height; |
99 | |||
100 | XSetForeground (dpy, draw_gc, get_pixel_resource ("background", "Background", | ||
101 | dpy, cmap)); | ||
102 | XFillRectangle(dpy, window, draw_gc, 0, 0, width*display_zoom, height*display_zoom); | ||
103 | lcd_display_redraw=true; | ||
104 | screen_redraw(); | ||
105 | } | ||
106 | 98 | ||
107 | void drawrect(int color, int x1, int y1, int x2, int y2) | ||
108 | { | ||
109 | if (color==0) { | ||
110 | XSetForeground(dpy, draw_gc, | 99 | XSetForeground(dpy, draw_gc, |
111 | get_pixel_resource("background", "Background", dpy, cmap)); | 100 | get_pixel_resource("background", "Background", dpy, cmap)); |
112 | } | 101 | XFillRectangle(dpy, window, draw_gc, 0, 0, width*display_zoom, |
113 | else | 102 | height*display_zoom); |
114 | XSetForeground(dpy, draw_gc, | 103 | lcd_display_redraw=true; |
115 | get_pixel_resource("foreground", "Foreground", dpy, cmap)); | 104 | screen_redraw(); |
116 | XFillRectangle(dpy, window, draw_gc, x1*display_zoom, y1*display_zoom, | 105 | } |
117 | x2*display_zoom, y2*display_zoom); | ||
118 | 106 | ||
107 | void drawrect(int color, int x1, int y1, int x2, int y2) | ||
108 | { | ||
109 | if (color==0) | ||
110 | XSetForeground(dpy, draw_gc, | ||
111 | get_pixel_resource("background", "Background", dpy, cmap)); | ||
112 | else | ||
113 | XSetForeground(dpy, draw_gc, | ||
114 | get_pixel_resource("foreground", "Foreground", dpy, cmap)); | ||
115 | |||
116 | XFillRectangle(dpy, window, draw_gc, x1*display_zoom, y1*display_zoom, | ||
117 | x2*display_zoom, y2*display_zoom); | ||
119 | } | 118 | } |
120 | 119 | ||
121 | static void help(void) | 120 | static void help(void) |
122 | { | 121 | { |
123 | printf(PROGNAME " " ROCKBOXUI_VERSION " " __DATE__ "\n" | 122 | printf(PROGNAME " " ROCKBOXUI_VERSION " " __DATE__ "\n" |
124 | "usage: " PROGNAME "\n" | 123 | "usage: " PROGNAME "\n"); |
125 | ); | ||
126 | } | 124 | } |
127 | 125 | ||
128 | void drawline(int color, int x1, int y1, int x2, int y2) | 126 | void drawline(int color, int x1, int y1, int x2, int y2) |
129 | { | 127 | { |
130 | if (color==0) { | 128 | if (color==0) |
131 | XSetForeground(dpy, draw_gc, | 129 | XSetForeground(dpy, draw_gc, |
132 | get_pixel_resource("background", "Background", dpy, cmap)); | 130 | get_pixel_resource("background", "Background", dpy, cmap)); |
133 | } | 131 | else |
134 | else | 132 | XSetForeground(dpy, draw_gc, |
135 | XSetForeground(dpy, draw_gc, | 133 | get_pixel_resource("foreground", "Foreground", dpy, cmap)); |
136 | get_pixel_resource("foreground", "Foreground", dpy, cmap)); | 134 | |
137 | 135 | XDrawLine(dpy, window, draw_gc, | |
138 | XDrawLine(dpy, window, draw_gc, | 136 | (int)(x1*display_zoom), |
139 | (int)(x1*display_zoom), | 137 | (int)(y1*display_zoom), |
140 | (int)(y1*display_zoom), | 138 | (int)(x2*display_zoom), |
141 | (int)(x2*display_zoom), | 139 | (int)(y2*display_zoom)); |
142 | (int)(y2*display_zoom)); | ||
143 | } | 140 | } |
144 | 141 | ||
145 | void drawdot(int color, int x, int y) | 142 | void drawdot(int color, int x, int y) |
146 | { | 143 | { |
147 | if (color==0) { | 144 | if (color==0) |
148 | XSetForeground(dpy, draw_gc, | 145 | XSetForeground(dpy, draw_gc, |
149 | get_pixel_resource("background", "Background", dpy, cmap)); | 146 | get_pixel_resource("background", "Background", dpy, cmap)); |
150 | } | 147 | else |
151 | else | 148 | XSetForeground(dpy, draw_gc, |
152 | XSetForeground(dpy, draw_gc, | 149 | get_pixel_resource("foreground", "Foreground", dpy, cmap)); |
153 | get_pixel_resource("foreground", "Foreground", dpy, cmap)); | 150 | |
154 | 151 | XFillRectangle(dpy, window, draw_gc, x*display_zoom, y*display_zoom, | |
155 | XFillRectangle(dpy, window, draw_gc, x*display_zoom, y*display_zoom, | 152 | display_zoom, display_zoom); |
156 | display_zoom, display_zoom); | ||
157 | } | 153 | } |
158 | 154 | ||
159 | void drawdots(int color, struct coordinate *points, int count) | 155 | void drawdots(int color, struct coordinate *points, int count) |
160 | { | 156 | { |
161 | if (color==0) { | 157 | if (color==0) |
162 | XSetForeground(dpy, draw_gc, | 158 | XSetForeground(dpy, draw_gc, |
163 | get_pixel_resource("background", "Background", dpy, cmap)); | 159 | get_pixel_resource("background", "Background", dpy, cmap)); |
164 | } | 160 | else |
165 | else | 161 | XSetForeground(dpy, draw_gc, |
166 | XSetForeground(dpy, draw_gc, | 162 | get_pixel_resource("foreground", "Foreground", dpy, cmap)); |
167 | get_pixel_resource("foreground", "Foreground", dpy, cmap)); | 163 | |
168 | 164 | while (count--) { | |
169 | while (count--) { | 165 | XFillRectangle(dpy, window, draw_gc, |
170 | XFillRectangle(dpy, window, draw_gc, | 166 | points[count].x*display_zoom, |
171 | points[count].x*display_zoom, | 167 | points[count].y*display_zoom, |
172 | points[count].y*display_zoom, | 168 | display_zoom, |
173 | display_zoom, | 169 | display_zoom); |
174 | display_zoom); | 170 | } |
175 | } | ||
176 | } | 171 | } |
177 | 172 | ||
178 | void drawrectangles(int color, struct rectangle *points, int count) | 173 | void drawrectangles(int color, struct rectangle *points, int count) |
179 | { | 174 | { |
180 | if (color==0) { | 175 | if (color==0) |
181 | XSetForeground(dpy, draw_gc, | 176 | XSetForeground(dpy, draw_gc, |
182 | get_pixel_resource("background", "Background", dpy, cmap)); | 177 | get_pixel_resource("background", "Background", dpy, cmap)); |
183 | } | 178 | else |
184 | else | 179 | XSetForeground(dpy, draw_gc, |
185 | XSetForeground(dpy, draw_gc, | 180 | get_pixel_resource("foreground", "Foreground", dpy, cmap)); |
186 | get_pixel_resource("foreground", "Foreground", dpy, cmap)); | 181 | |
187 | 182 | while (count--) { | |
188 | while (count--) { | 183 | XFillRectangle(dpy, window, draw_gc, |
189 | XFillRectangle(dpy, window, draw_gc, | 184 | points[count].x*display_zoom, |
190 | points[count].x*display_zoom, | 185 | points[count].y*display_zoom, |
191 | points[count].y*display_zoom, | 186 | points[count].width*display_zoom, |
192 | points[count].width*display_zoom, | 187 | points[count].height*display_zoom); |
193 | points[count].height*display_zoom); | 188 | } |
194 | |||
195 | } | ||
196 | } | 189 | } |
197 | 190 | ||
198 | void drawtext(int color, int x, int y, char *text) | 191 | void drawtext(int color, int x, int y, char *text) |
199 | { | 192 | { |
200 | if (color==0) { | 193 | if (color==0) |
201 | XSetForeground(dpy, draw_gc, | 194 | XSetForeground(dpy, draw_gc, |
202 | get_pixel_resource("background", "Background", dpy, cmap)); | 195 | get_pixel_resource("background", "Background", dpy, cmap)); |
203 | } | 196 | else |
204 | else | 197 | XSetForeground(dpy, draw_gc, |
205 | XSetForeground(dpy, draw_gc, | 198 | get_pixel_resource("foreground", "Foreground", dpy, cmap)); |
206 | get_pixel_resource("foreground", "Foreground", dpy, cmap)); | 199 | |
207 | 200 | XDrawString(dpy, window, draw_gc, x*display_zoom, y*display_zoom, text, | |
208 | XDrawString(dpy, window, draw_gc, x*display_zoom, y*display_zoom, text, strlen(text)); | 201 | strlen(text)); |
209 | } | 202 | } |
210 | 203 | ||
211 | /* this is where the applicaton starts */ | 204 | /* this is where the applicaton starts */ |
@@ -214,36 +207,36 @@ extern void app_main(void); | |||
214 | void | 207 | void |
215 | screenhack (Display *the_dpy, Window the_window) | 208 | screenhack (Display *the_dpy, Window the_window) |
216 | { | 209 | { |
217 | Bool helpme; | 210 | Bool helpme; |
211 | |||
212 | /* This doesn't work, but I don't know why (Daniel 1999-12-01) */ | ||
213 | helpme = get_boolean_resource ("help", "Boolean"); | ||
214 | if(helpme) | ||
215 | help(); | ||
218 | 216 | ||
219 | /* This doesn't work, but I don't know why (Daniel 1999-12-01) */ | 217 | printf(PROGNAME " " ROCKBOXUI_VERSION " (" __DATE__ ")\n"); |
220 | helpme = get_boolean_resource ("help", "Boolean"); | ||
221 | if(helpme) { | ||
222 | help(); | ||
223 | } | ||
224 | printf(PROGNAME " " ROCKBOXUI_VERSION " (" __DATE__ ")\n"); | ||
225 | 218 | ||
226 | dpy=the_dpy; | 219 | dpy=the_dpy; |
227 | window=the_window; | 220 | window=the_window; |
228 | 221 | ||
229 | init_window(); | 222 | init_window(); |
230 | 223 | ||
231 | screen_redraw(); | 224 | screen_redraw(); |
232 | 225 | ||
233 | app_main(); | 226 | app_main(); |
234 | } | 227 | } |
235 | 228 | ||
236 | void screen_redraw() | 229 | void screen_redraw() |
237 | { | 230 | { |
238 | /* draw a border around the "Recorder" screen */ | 231 | /* draw a border around the "Recorder" screen */ |
239 | #define X1 0 | 232 | #define X1 0 |
240 | #define Y1 0 | 233 | #define Y1 0 |
241 | #define X2 (LCD_WIDTH + MARGIN_X*2) | 234 | #define X2 (LCD_WIDTH + MARGIN_X*2) |
242 | #define Y2 (LCD_HEIGHT + MARGIN_Y) | 235 | #define Y2 (LCD_HEIGHT + MARGIN_Y) |
243 | 236 | ||
244 | drawline(1, X1, Y1, X2, Y1); | 237 | drawline(1, X1, Y1, X2, Y1); |
245 | drawline(1, X2, Y1, X2, Y2); | 238 | drawline(1, X2, Y1, X2, Y2); |
246 | drawline(1, X1, Y2, X2, Y2); | 239 | drawline(1, X1, Y2, X2, Y2); |
247 | drawline(1, X1, Y1, X1, Y2); | 240 | drawline(1, X1, Y1, X1, Y2); |
248 | lcd_update(); | 241 | lcd_update(); |
249 | } | 242 | } |