moved paint's arguments into the appearance struct

This commit is contained in:
Derek Foreman 2003-03-28 03:25:51 +00:00
parent 69abb86cb0
commit 3d6b970a4b
3 changed files with 21 additions and 9 deletions

View file

@ -87,10 +87,15 @@ void truecolor_startup(void)
XFree(timage); 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; 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; 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) { 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) else if (l->surface.data.planar.grad == Background_Solid)
gradient_solid(l, x, y, w, h); gradient_solid(l, x, y, w, h);

View file

@ -131,6 +131,7 @@ typedef struct Texture {
typedef struct Appearance { typedef struct Appearance {
Surface surface; Surface surface;
Rect area;
int textures; int textures;
Texture *texture; Texture *texture;
Pixmap pixmap; Pixmap pixmap;
@ -141,11 +142,11 @@ extern Visual *render_visual;
extern int render_depth; extern int render_depth;
extern Colormap render_colormap; 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 render_startup(void);
void init_appearance(Appearance *l); 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); void render_shutdown(void);
Appearance *appearance_new(SurfaceType type, int numtex); Appearance *appearance_new(SurfaceType type, int numtex);
Appearance *appearance_copy(Appearance *a); Appearance *appearance_copy(Appearance *a);

View file

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