#include "screenhack.h"
#include "erase.h"
-#define XROGER
+#define XSCREENSAVER_LOGO
static int solve_delay, pre_solve_delay, post_solve_delay;
static int logo_x, logo_y;
-#ifdef XROGER
-# define logo_width 128
-# define logo_height 128
+#ifdef XSCREENSAVER_LOGO
+# define logo_width 50
+# define logo_height 50
#else
# include <X11/bitmaps/xlogo64>
# define logo_width xlogo64_width
Window r;
int x, y;
unsigned int w, h, bw, d;
+
+ /* round up to grid size */
+ int ww = ((logo_width / grid_width) + 1) * grid_width;
+ int hh = ((logo_height / grid_height) + 1) * grid_height;
+
XGetGeometry (dpy, logo_map, &r, &x, &y, &w, &h, &bw, &d);
- XCopyPlane (dpy, logo_map, win, logo_gc,
- 0, 0, w, h,
- border_x + 3 + grid_width * logo_x,
- border_y + 3 + grid_height * logo_y, 1);
+ if (d == 1)
+ XCopyPlane (dpy, logo_map, win, logo_gc,
+ 0, 0, w, h,
+ border_x + 3 + grid_width * logo_x + ((ww - w) / 2),
+ border_y + 3 + grid_height * logo_y + ((hh - h) / 2),
+ 1);
+ else
+ XCopyArea (dpy, logo_map, win, logo_gc,
+ 0, 0, w, h,
+ border_x + 3 + grid_width * logo_x + ((ww - w) / 2),
+ border_y + 3 + grid_height * logo_y + ((hh - h) / 2));
}
draw_solid_square (start_x, start_y, WALL_TOP >> start_dir, tgc);
draw_solid_square (end_x, end_y, WALL_TOP >> end_dir, tgc);
if(!dir)
goto backtrack;
- found:
+ found: ;
}
else
{
"*maxLength: 5",
"*syncDraw: False",
"*bridge: False",
-#ifdef XROGER
- "*logoColor: red3",
-#endif
0
};
{ 0, 0, 0, 0 }
};
-#ifdef XROGER
-extern void skull (Display *, Window, GC, GC, int, int, int, int);
-#endif
-
void
screenhack(Display *display, Window window)
{
Pixmap gray;
int size, root, generator, this_gen;
XWindowAttributes xgwa;
- unsigned long bg, fg, pfg, pbg, lfg, sfg, ufg;
+ unsigned long bg, fg, pfg, pbg, sfg, ufg;
size = get_integer_resource ("gridSize", "Dimension");
root = get_boolean_resource("root", "Boolean");
bg = get_pixel_resource ("background","Background", dpy, xgwa.colormap);
fg = get_pixel_resource ("foreground","Foreground", dpy, xgwa.colormap);
- lfg = get_pixel_resource ("logoColor", "Foreground", dpy, xgwa.colormap);
pfg = get_pixel_resource ("liveColor", "Foreground", dpy, xgwa.colormap);
pbg = get_pixel_resource ("deadColor", "Foreground", dpy, xgwa.colormap);
sfg = get_pixel_resource ("skipColor", "Foreground", dpy, xgwa.colormap);
ufg = get_pixel_resource ("surroundColor", "Foreground", dpy, xgwa.colormap);
- if (mono_p) lfg = pfg = fg;
-
- if (lfg == bg)
- lfg = ((bg == WhitePixel (dpy, DefaultScreen (dpy)))
- ? BlackPixel (dpy, DefaultScreen (dpy))
- : WhitePixel (dpy, DefaultScreen (dpy)));
XSetForeground (dpy, gc, fg);
XSetBackground (dpy, gc, bg);
XSetBackground (dpy, sgc, bg);
XSetForeground (dpy, ugc, ufg);
XSetBackground (dpy, ugc, bg);
- XSetForeground (dpy, logo_gc, lfg);
+ XSetForeground (dpy, logo_gc, fg);
XSetBackground (dpy, logo_gc, bg);
XSetForeground (dpy, erase_gc, bg);
XSetBackground (dpy, erase_gc, bg);
XSetStipple (dpy, ugc, gray);
XSetFillStyle (dpy, ugc, FillOpaqueStippled);
-#ifdef XROGER
+#ifdef XSCREENSAVER_LOGO
{
- int w, h;
- XGCValues gcv;
- GC draw_gc, erase_gc;
- /* round up to grid size */
- w = ((logo_width / grid_width) + 1) * grid_width;
- h = ((logo_height / grid_height) + 1) * grid_height;
- logo_map = XCreatePixmap (dpy, win, w, h, 1);
- gcv.foreground = 1L;
- draw_gc = XCreateGC (dpy, logo_map, GCForeground, &gcv);
- gcv.foreground = 0L;
- erase_gc= XCreateGC (dpy, logo_map, GCForeground, &gcv);
- XFillRectangle (dpy, logo_map, erase_gc, 0, 0, w, h);
- skull (dpy, logo_map, draw_gc, erase_gc, 5, 0, w-10, h-10);
- XFreeGC (dpy, draw_gc);
- XFreeGC (dpy, erase_gc);
+ unsigned long *pixels; /* ignored - unfreed */
+ int npixels;
+ logo_map = xscreensaver_logo (dpy, win, xgwa.colormap, bg,
+ &pixels, &npixels, 0,
+ logo_width > 150);
}
#else
if (!(logo_map = XCreateBitmapFromData (dpy, win, logo_bits,