From 3d6b970a4b25627e00fb4a4de6706fe067d58186 Mon Sep 17 00:00:00 2001 From: Derek Foreman Date: Fri, 28 Mar 2003 03:25:51 +0000 Subject: [PATCH] moved paint's arguments into the appearance struct --- render/render.c | 13 ++++++++++--- render/render.h | 5 +++-- render/test.c | 12 ++++++++---- 3 files changed, 21 insertions(+), 9 deletions(-) diff --git a/render/render.c b/render/render.c index f446a75d..9d4a2c67 100644 --- a/render/render.c +++ b/render/render.c @@ -87,10 +87,15 @@ void truecolor_startup(void) 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 @@ void x_paint(Window win, Appearance *l, int x, int y, int w, int 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); diff --git a/render/render.h b/render/render.h index d3752e65..d5f5f8bc 100644 --- a/render/render.h +++ b/render/render.h @@ -131,6 +131,7 @@ typedef struct 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); diff --git a/render/test.c b/render/test.c index f1992de9..4bcedb2c 100644 --- a/render/test.c +++ b/render/test.c @@ -56,21 +56,25 @@ int main() 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; } -- 2.39.2