all repos — openbox @ 3d6b970a4b25627e00fb4a4de6706fe067d58186

openbox fork - make it a bit more like ryudo

moved paint's arguments into the appearance struct
Derek Foreman manmower@gmail.com
commit

3d6b970a4b25627e00fb4a4de6706fe067d58186

parent

69abb86cb0876a26d5d34da9d9c1de7d968cafc2

3 files changed, 21 insertions(+), 9 deletions(-)

jump to
M render/render.crender/render.c

@@ -87,10 +87,15 @@ while (blue_mask) { blue_mask >>= 1; render_blue_shift--; }

XFree(timage); } -void x_paint(Window win, Appearance *l, int x, int y, int w, int h) +void x_paint(Window win, Appearance *l) { - int i, transferred = 0; + int i, transferred = 0, sw, sh; + pixel32 *source; Pixmap oldp; + int x = l->area.x; + int y = l->area.y; + int w = l->area.width; + int h = l->area.height; if (w <= 0 || h <= 0 || x+w <= 0 || y+h <= 0) return;

@@ -111,7 +116,9 @@ l->surface.data.planar.pixel_data = g_new(pixel32, w * h);

if (l->surface.data.planar.grad == Background_ParentRelative) { - memset(l->surface.data.planar.pixel_data, 0, w*h*4); + sw = l->surface.data.planar.parent->area.width; + source = l->surface.data.planar.pixel_data; +/* for (i = */ } else if (l->surface.data.planar.grad == Background_Solid) gradient_solid(l, x, y, w, h);
M render/render.hrender/render.h

@@ -131,6 +131,7 @@ } Texture;

typedef struct Appearance { Surface surface; + Rect area; int textures; Texture *texture; Pixmap pixmap;

@@ -141,11 +142,11 @@ extern Visual *render_visual;

extern int render_depth; extern Colormap render_colormap; -void (*paint)(Window win, Appearance *l, int x, int y, int w, int h); +void (*paint)(Window win, Appearance *l); void render_startup(void); void init_appearance(Appearance *l); -void x_paint(Window win, Appearance *l, int x, int y, int w, int h); +void x_paint(Window win, Appearance *l); void render_shutdown(void); Appearance *appearance_new(SurfaceType type, int numtex); Appearance *appearance_copy(Appearance *a);
M render/test.crender/test.c

@@ -56,21 +56,25 @@ look->surface.data.planar.grad = Background_Solid;

look->surface.data.planar.secondary = color_new(0xFF, 0xFF, 0xFF); look->surface.data.planar.primary = color_parse("Red"); look->surface.data.planar.interlaced = FALSE; + look->area.x = 0; + look->area.x = 0; + look->area.width = 500; + look->area.height = 500; if (ob_display == NULL) { fprintf(stderr, "couldn't connect to X server :0\n"); return 0; } - paint(win, look, 0, 0, 500, 500); + paint(win, look); while (1) { XNextEvent(ob_display, &report); switch (report.type) { case Expose: break; case ConfigureNotify: - w = report.xconfigure.width; - h = report.xconfigure.height; - paint(win, look, 0, 0, w, h); + look->area.width = report.xconfigure.width; + look->area.height = report.xconfigure.height; + paint(win, look); printf("confignotify %i:%i\n", w, h); break; }