summaryrefslogtreecommitdiff
path: root/uisimulator/x11/uibasic.c
diff options
context:
space:
mode:
Diffstat (limited to 'uisimulator/x11/uibasic.c')
-rw-r--r--uisimulator/x11/uibasic.c237
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;
54bool lcd_display_redraw=true; 54bool lcd_display_redraw=true;
55 55
56XrmOptionDescRec options [] = { 56XrmOptionDescRec 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};
62char *progclass = "rockboxui"; 62char *progclass = "rockboxui";
63 63
64char *defaults [] = { 64char *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
77void init_window () 77void 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
94void screen_resized(int width, int height) 93void 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
107void 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
107void 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
121static void help(void) 120static 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
128void drawline(int color, int x1, int y1, int x2, int y2) 126void 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
145void drawdot(int color, int x, int y) 142void 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
159void drawdots(int color, struct coordinate *points, int count) 155void 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
178void drawrectangles(int color, struct rectangle *points, int count) 173void 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
198void drawtext(int color, int x, int y, char *text) 191void 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);
214void 207void
215screenhack (Display *the_dpy, Window the_window) 208screenhack (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
236void screen_redraw() 229void 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}