| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 | /* See LICENSE file for copyright and license details. */#include <stdlib.h>#include <X11/Xlib.h>#include "draw.h"Draw *draw_create(Display *dpy, Window win, unsigned int w, unsigned int h) {	Draw *draw = (Draw *)calloc(1, sizeof(Draw));	draw->w = w;	draw->h = h;	/* TODO: drawable creation */	/* TODO: gc allocation */	return draw;}voiddraw_resize(Draw *draw, unsigned int w, unsigned int h) {	if(!draw)		return;	draw->w = w;	draw->h = h;	/* TODO: resize drawable */}voiddraw_free(Draw *draw) {	/* TODO: deallocate DDCs */	/* TODO: deallocate drawable */	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;}voiddc_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 *font_create(const char *fontname) {	Fnt *font = (Fnt *)calloc(1, sizeof(Fnt));	/* TODO: allocate actual font */	return font;}voidfont_free(Fnt *font) {	if(!font)		return;	/* TODO: deallocate any font resources */	free(font);}Col *col_create(const char *colname) {	Col *col = (Col *)calloc(1, sizeof(Col));	/* TODO: allocate color */	return col;}voidcol_free(Col *col) {	if(!col)		return;	/* TODO: deallocate any color resource */	free(col);}voiddc_setfont(DDC *dc, Fnt *font) {	if(!dc || !font)		return;	dc->font = font;}voiddc_setfg(DDC *dc, Col *col) {	if(!dc || !col) 		return;	dc->fg = col;}voiddc_setbg(DDC *dc, Col *col) {	if(!dc || !col)		return;	dc->bg = col;}voiddc_setfill(DDC *dc, Bool fill) {	if(!dc)		return;	dc->fill = fill;}voiddc_drawrect(DDC *dc, int x, int y, unsigned int w, unsigned int h) {	if(!dc)		return;	/* TODO: draw the rectangle */}voiddc_drawtext(DDC *dc, int x, int y, const char *text) {	if(!dc)		return;	/* TODO: draw the text */}voiddc_map(DDC *dc, int x, int y, unsigned int w, unsigned int h) {	if(!dc)		return;	/* TODO: map the dc contents in the region */}voiddc_getextents(DDC *dc, const char *text, TextExtents *extents) {	if(!dc || !extents)		return;	/* TODO: get extents */}
 |