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.c253
1 files changed, 253 insertions, 0 deletions
diff --git a/uisimulator/x11/uibasic.c b/uisimulator/x11/uibasic.c
new file mode 100644
index 0000000000..85cfb7d911
--- /dev/null
+++ b/uisimulator/x11/uibasic.c
@@ -0,0 +1,253 @@
+/***************************************************************************
+ * __________ __ ___.
+ * Open \______ \ ____ ____ | | _\_ |__ _______ ___
+ * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
+ * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
+ * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
+ * \/ \/ \/ \/ \/
+ * $Id$
+ *
+ * Copyright (C) 2002 by Daniel Stenberg <daniel@haxx.se>
+ *
+ * All files in this archive are subject to the GNU General Public License.
+ * See the file COPYING in the source tree root for full license agreement.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ****************************************************************************/
+#include <stdio.h>
+#include <string.h>
+#include <stdarg.h>
+#include <stdlib.h>
+#include <ctype.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+
+#include <errno.h>
+#include <ctype.h>
+#include <time.h>
+
+#include "screenhack.h"
+
+#include "version.h"
+
+#include "lcd-x11.h"
+
+#define MAX(x,y) ((x)>(y)?(x):(y))
+#define MIN(x,y) ((x)<(y)?(x):(y))
+
+#define PROGNAME "rockboxui"
+
+/* -- -- */
+
+GC draw_gc, erase_gc;
+static Colormap cmap;
+static XColor color_track, color_car;
+
+static long maxx, maxy;
+static double track_zoom=1;
+
+Display *dpy;
+Window window;
+
+XrmOptionDescRec options [] = {
+ /* { "-subtractive", ".additive", XrmoptionNoArg, "false" }, */
+ { "-server", ".server", XrmoptionSepArg, 0 },
+ { "-help", ".help", XrmoptionNoArg, "false" },
+ { 0, 0, 0, 0 }
+};
+char *progclass = "rockboxui";
+
+char *defaults [] = {
+ ".background: black",
+ ".foreground: white",
+ "*help: false",
+ 0
+};
+
+#define LOGFILE "xgui.log"
+void Logf(char *fmt, ...)
+{
+ va_list args;
+ FILE *log;
+ struct tm *t;
+ time_t now=time(NULL);
+
+ va_start(args, fmt);
+
+ t = localtime(&now);
+ log = fopen(LOGFILE, "a");
+ if(log) {
+ fprintf(log, "%02d:%02d:%02d ",
+ t->tm_hour, t->tm_min, t->tm_sec);
+ vfprintf(log, fmt, args);
+ fprintf(log, "\n");
+
+ fclose(log);
+ }
+
+ fprintf(stderr, "%02d:%02d:%02d ",
+ t->tm_hour, t->tm_min, t->tm_sec);
+ vfprintf(stderr, fmt, args);
+ fprintf(stderr, "\n");
+ va_end(args);
+}
+
+void init_window ()
+{
+ XGCValues gcv;
+ XWindowAttributes xgwa;
+ char *test_p;
+
+ XGetWindowAttributes (dpy, window, &xgwa);
+
+ color_track.red=65535;
+ color_track.green=65535;
+ color_track.blue=65535;
+
+ color_car.red=65535;
+ color_car.green=65535;
+ color_car.blue=0;
+
+ cmap = xgwa.colormap;
+
+ gcv.function = GXxor;
+ gcv.foreground =
+ get_pixel_resource ("foreground", "Foreground", dpy, cmap);
+ draw_gc = erase_gc = XCreateGC (dpy, window, GCForeground, &gcv);
+ XAllocColor (dpy, cmap, &color_track);
+ XAllocColor (dpy, cmap, &color_car);
+
+ screen_resized(200, 100);
+}
+
+void screen_resized(int width, int height)
+{
+#if 0
+ XWindowAttributes xgwa;
+ XGetWindowAttributes (dpy, window, &xgwa);
+ maxx = ((long)(xgwa.width));
+ maxy = ((long)(xgwa.height));
+#else
+ maxx = width-1;
+ maxy = height-1;
+#endif
+ XSetForeground (dpy, draw_gc, get_pixel_resource ("background", "Background",
+ dpy, cmap));
+ XFillRectangle(dpy, window, draw_gc, 0, 0, width, height);
+
+}
+
+static void help(void)
+{
+ printf(PROGNAME " " ROCKBOXUI_VERSION " " __DATE__ "\n"
+ "usage: " PROGNAME "\n"
+ );
+}
+
+void drawline(int color, int x1, int y1, int x2, int y2)
+{
+ if (color==0) {
+ XSetForeground(dpy, draw_gc,
+ get_pixel_resource("background", "Background", dpy, cmap));
+ }
+ else
+ XSetForeground(dpy, draw_gc,
+ get_pixel_resource("foreground", "Foreground", dpy, cmap));
+
+ XDrawLine(dpy, window, draw_gc,
+ (int)(x1*track_zoom),
+ (int)(y1*track_zoom),
+ (int)(x2*track_zoom),
+ (int)(y2*track_zoom));
+}
+
+void drawdot(int color, int x, int y)
+{
+ if (color==0) {
+ XSetForeground(dpy, draw_gc,
+ get_pixel_resource("background", "Background", dpy, cmap));
+ }
+ else
+ XSetForeground(dpy, draw_gc,
+ get_pixel_resource("foreground", "Foreground", dpy, cmap));
+
+ XDrawPoint(dpy, window, draw_gc, x, y);
+}
+
+void drawdots(int color, XPoint *points, int count)
+{
+ if (color==0) {
+ XSetForeground(dpy, draw_gc,
+ get_pixel_resource("background", "Background", dpy, cmap));
+ }
+ else
+ XSetForeground(dpy, draw_gc,
+ get_pixel_resource("foreground", "Foreground", dpy, cmap));
+
+
+ XDrawPoints(dpy, window, draw_gc, points, count, CoordModeOrigin);
+}
+
+void drawtext(int color, int x, int y, char *text)
+{
+ if (color==0) {
+ XSetForeground(dpy, draw_gc,
+ get_pixel_resource("background", "Background", dpy, cmap));
+ }
+ else
+ XSetForeground(dpy, draw_gc,
+ get_pixel_resource("foreground", "Foreground", dpy, cmap));
+
+ XDrawString(dpy, window, draw_gc, x, y, text, strlen(text));
+}
+
+
+void
+screenhack (Display *the_dpy, Window the_window)
+{
+ unsigned short porttouse=0;
+ char *proxy = NULL;
+ char *url = NULL;
+ int i;
+ char *guiname="Rock-the-box";
+ Bool helpme;
+
+ /* This doesn't work, but I don't know why (Daniel 1999-12-01) */
+ helpme = get_boolean_resource ("help", "Boolean");
+ if(helpme) {
+ help();
+ }
+ printf(PROGNAME " " ROCKBOXUI_VERSION " (" __DATE__ ")\n");
+
+ dpy=the_dpy;
+ window=the_window;
+
+ init_window();
+
+ Logf("Rockbox will kill ya!");
+
+ app_main();
+}
+
+void screen_redraw()
+{
+ int y, x;
+
+ lcd_update();
+
+ /* draw a border around the "Recorder" screen */
+
+#define X1 0
+#define Y1 0
+#define X2 (LCD_WIDTH + MARGIN_X*2)
+#define Y2 (LCD_HEIGHT + MARGIN_Y*2)
+
+ drawline(1, X1, Y1, X2, Y1);
+ drawline(1, X2, Y1, X2, Y2);
+ drawline(1, X1, Y2, X2, Y2);
+ drawline(1, X1, Y1, X1, Y2);
+
+}