removed DDC, all is Draw-dependent
This commit is contained in:
		
							
								
								
									
										65
									
								
								draw.c
									
									
									
									
									
								
							
							
						
						
									
										65
									
								
								draw.c
									
									
									
									
									
								
							@@ -35,28 +35,6 @@ draw_free(Draw *draw) {
 | 
				
			|||||||
	free(draw);
 | 
						free(draw);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
DDC *
 | 
					 | 
				
			||||||
dc_create(Draw *draw) {
 | 
					 | 
				
			||||||
	DDC *dc = (DDC *)calloc(1, sizeof(DDC));
 | 
					 | 
				
			||||||
	dc->draw = draw;
 | 
					 | 
				
			||||||
	dc->next = draw->dc;
 | 
					 | 
				
			||||||
	draw->dc = dc;
 | 
					 | 
				
			||||||
	return dc;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void
 | 
					 | 
				
			||||||
dc_free(DDC *dc) {
 | 
					 | 
				
			||||||
	DDC **tdc;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if(!dc)
 | 
					 | 
				
			||||||
		return;
 | 
					 | 
				
			||||||
	/* remove from dc list */
 | 
					 | 
				
			||||||
	for(tdc = &dc->draw->dc; *tdc && *tdc != dc; tdc = &(*tdc)->next);
 | 
					 | 
				
			||||||
	*tdc = dc->next;
 | 
					 | 
				
			||||||
	/* TODO: deallocate any resources of this dc, if needed */
 | 
					 | 
				
			||||||
	free(dc);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Fnt *
 | 
					Fnt *
 | 
				
			||||||
font_create(const char *fontname) {
 | 
					font_create(const char *fontname) {
 | 
				
			||||||
	Fnt *font = (Fnt *)calloc(1, sizeof(Fnt));
 | 
						Fnt *font = (Fnt *)calloc(1, sizeof(Fnt));
 | 
				
			||||||
@@ -88,57 +66,50 @@ col_free(Col *col) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void
 | 
					void
 | 
				
			||||||
dc_setfont(DDC *dc, Fnt *font) {
 | 
					draw_setfont(Draw *draw, Fnt *font) {
 | 
				
			||||||
	if(!dc || !font)
 | 
						if(!draw || !font)
 | 
				
			||||||
		return;
 | 
							return;
 | 
				
			||||||
	dc->font = font;
 | 
						draw->font = font;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void
 | 
					void
 | 
				
			||||||
dc_setfg(DDC *dc, Col *col) {
 | 
					draw_setfg(Draw *draw, Col *col) {
 | 
				
			||||||
	if(!dc || !col) 
 | 
						if(!draw || !col) 
 | 
				
			||||||
		return;
 | 
							return;
 | 
				
			||||||
	dc->fg = col;
 | 
						draw->fg = col;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void
 | 
					void
 | 
				
			||||||
dc_setbg(DDC *dc, Col *col) {
 | 
					draw_setbg(Draw *draw, Col *col) {
 | 
				
			||||||
	if(!dc || !col)
 | 
						if(!draw || !col)
 | 
				
			||||||
		return;
 | 
							return;
 | 
				
			||||||
	dc->bg = col;
 | 
						draw->bg = col;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void
 | 
					void
 | 
				
			||||||
dc_setfill(DDC *dc, Bool fill) {
 | 
					draw_rect(Draw *draw, int x, int y, unsigned int w, unsigned int h) {
 | 
				
			||||||
	if(!dc)
 | 
						if(!draw)
 | 
				
			||||||
		return;
 | 
					 | 
				
			||||||
	dc->fill = fill;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void
 | 
					 | 
				
			||||||
dc_drawrect(DDC *dc, int x, int y, unsigned int w, unsigned int h) {
 | 
					 | 
				
			||||||
	if(!dc)
 | 
					 | 
				
			||||||
		return;
 | 
							return;
 | 
				
			||||||
	/* TODO: draw the rectangle */
 | 
						/* TODO: draw the rectangle */
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void
 | 
					void
 | 
				
			||||||
dc_drawtext(DDC *dc, int x, int y, const char *text) {
 | 
					draw_text(Draw *draw, int x, int y, const char *text) {
 | 
				
			||||||
	if(!dc)
 | 
						if(!draw)
 | 
				
			||||||
		return;
 | 
							return;
 | 
				
			||||||
	/* TODO: draw the text */
 | 
						/* TODO: draw the text */
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void
 | 
					void
 | 
				
			||||||
dc_map(DDC *dc, int x, int y, unsigned int w, unsigned int h) {
 | 
					draw_map(Draw *draw, int x, int y, unsigned int w, unsigned int h) {
 | 
				
			||||||
	if(!dc)
 | 
						if(!draw)
 | 
				
			||||||
		return;
 | 
							return;
 | 
				
			||||||
	/* TODO: map the dc contents in the region */
 | 
						/* TODO: map the draw contents in the region */
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void
 | 
					void
 | 
				
			||||||
dc_getextents(DDC *dc, const char *text, TextExtents *extents) {
 | 
					draw_getextents(Draw *draw, const char *text, TextExtents *extents) {
 | 
				
			||||||
	if(!dc || !extents)
 | 
						if(!draw || !extents)
 | 
				
			||||||
		return;
 | 
							return;
 | 
				
			||||||
	/* TODO: get extents */
 | 
						/* TODO: get extents */
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										57
									
								
								draw.h
									
									
									
									
									
								
							
							
						
						
									
										57
									
								
								draw.h
									
									
									
									
									
								
							@@ -1,19 +1,5 @@
 | 
				
			|||||||
/* See LICENSE file for copyright and license details. */
 | 
					/* See LICENSE file for copyright and license details. */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct _DDC DDC;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* X11 types - begin */
 | 
					 | 
				
			||||||
typedef struct _XDraw Draw;
 | 
					 | 
				
			||||||
struct _XDraw {
 | 
					 | 
				
			||||||
	unsigned int w, h;
 | 
					 | 
				
			||||||
	Display *dpy;
 | 
					 | 
				
			||||||
	int screen;
 | 
					 | 
				
			||||||
	Window win;
 | 
					 | 
				
			||||||
	Drawable drawable;
 | 
					 | 
				
			||||||
	GC gc;
 | 
					 | 
				
			||||||
	DDC *dc;
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
struct _XCol {
 | 
					struct _XCol {
 | 
				
			||||||
	unsigned long rgb;
 | 
						unsigned long rgb;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
@@ -29,15 +15,6 @@ struct _XFont {
 | 
				
			|||||||
typedef struct _XFont Fnt;
 | 
					typedef struct _XFont Fnt;
 | 
				
			||||||
/* X11 types - end */
 | 
					/* X11 types - end */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct _DDC {
 | 
					 | 
				
			||||||
	Draw *draw;
 | 
					 | 
				
			||||||
	Col *fg;
 | 
					 | 
				
			||||||
	Col *bg;
 | 
					 | 
				
			||||||
	Fnt *font;
 | 
					 | 
				
			||||||
	Bool fill;
 | 
					 | 
				
			||||||
	DDC *next;
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
typedef struct {
 | 
					typedef struct {
 | 
				
			||||||
	unsigned int w;
 | 
						unsigned int w;
 | 
				
			||||||
	unsigned int h;
 | 
						unsigned int h;
 | 
				
			||||||
@@ -47,15 +24,26 @@ typedef struct {
 | 
				
			|||||||
	int yOff;
 | 
						int yOff;
 | 
				
			||||||
} TextExtents;
 | 
					} TextExtents;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* X11 types - begin */
 | 
				
			||||||
 | 
					typedef struct _XDraw Draw;
 | 
				
			||||||
 | 
					struct _XDraw {
 | 
				
			||||||
 | 
						unsigned int w, h;
 | 
				
			||||||
 | 
						Display *dpy;
 | 
				
			||||||
 | 
						int screen;
 | 
				
			||||||
 | 
						Window win;
 | 
				
			||||||
 | 
						Drawable drawable;
 | 
				
			||||||
 | 
						GC gc;
 | 
				
			||||||
 | 
						Col *fg;
 | 
				
			||||||
 | 
						Col *bg;
 | 
				
			||||||
 | 
						Fnt *font;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Drawable abstraction */
 | 
					/* Drawable abstraction */
 | 
				
			||||||
Draw *draw_create(Display *dpy, int screen, Window win, unsigned int w, unsigned int h);
 | 
					Draw *draw_create(Display *dpy, int screen, Window win, unsigned int w, unsigned int h);
 | 
				
			||||||
void draw_resize(Draw *draw, unsigned int w, unsigned int h);
 | 
					void draw_resize(Draw *draw, unsigned int w, unsigned int h);
 | 
				
			||||||
void draw_free(Draw *draw);
 | 
					void draw_free(Draw *draw);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Drawing context abstraction */
 | 
					 | 
				
			||||||
DDC *dc_create(Draw *draw);
 | 
					 | 
				
			||||||
void dc_free(DDC *dc);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* Fnt abstraction */
 | 
					/* Fnt abstraction */
 | 
				
			||||||
Fnt *font_create(const char *fontname);
 | 
					Fnt *font_create(const char *fontname);
 | 
				
			||||||
void font_free(Fnt *font);
 | 
					void font_free(Fnt *font);
 | 
				
			||||||
@@ -65,18 +53,17 @@ Col *col_create(const char *colname);
 | 
				
			|||||||
void col_free(Col *col);
 | 
					void col_free(Col *col);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Drawing context manipulation */
 | 
					/* Drawing context manipulation */
 | 
				
			||||||
void dc_setfont(DDC *dc, Fnt *font);
 | 
					void draw_setfont(Draw *draw, Fnt *font);
 | 
				
			||||||
void dc_setfg(DDC *dc, Col *col);
 | 
					void draw_setfg(Draw *draw, Col *col);
 | 
				
			||||||
void dc_setbg(DDC *dc, Col *col);
 | 
					void draw_setbg(Draw *draw, Col *col);
 | 
				
			||||||
void dc_setfill(DDC *dc, Bool fill);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Drawing functions */
 | 
					/* Drawing functions */
 | 
				
			||||||
void dc_drawrect(DDC *dc, int x, int y, unsigned int w, unsigned int h);
 | 
					void draw_rect(Draw *draw, int x, int y, unsigned int w, unsigned int h);
 | 
				
			||||||
void dc_drawtext(DDC *dc, int x, int y, const char *text);
 | 
					void draw_text(Draw *draw, int x, int y, const char *text);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Map functions */
 | 
					/* Map functions */
 | 
				
			||||||
void dc_map(DDC *dc, int x, int y, unsigned int w, unsigned int h);
 | 
					void draw_map(Draw *draw, int x, int y, unsigned int w, unsigned int h);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Text functions */
 | 
					/* Text functions */
 | 
				
			||||||
void dc_getextents(DDC *dc, const char *text, TextExtents *extents);
 | 
					void draw_getextents(Draw *draw, const char *text, TextExtents *extents);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user