| @ -0,0 +1,139 @@ | |||
| /* 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; | |||
| } | |||
| void | |||
| draw_resize(Draw *draw, unsigned int w, unsigned int h) { | |||
| if(!draw) | |||
| return; | |||
| draw->w = w; | |||
| draw->h = h; | |||
| /* TODO: resize drawable */ | |||
| } | |||
| void | |||
| draw_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; | |||
| } | |||
| 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 * | |||
| font_create(const char *fontname) { | |||
| Fnt *font = (Fnt *)calloc(1, sizeof(Fnt)); | |||
| /* TODO: allocate actual font */ | |||
| return font; | |||
| } | |||
| void | |||
| font_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; | |||
| } | |||
| void | |||
| col_free(Col *col) { | |||
| if(!col) | |||
| return; | |||
| /* TODO: deallocate any color resource */ | |||
| free(col); | |||
| } | |||
| void | |||
| dc_setfont(DDC *dc, Fnt *font) { | |||
| if(!dc || !font) | |||
| return; | |||
| dc->font = font; | |||
| } | |||
| void | |||
| dc_setfg(DDC *dc, Col *col) { | |||
| if(!dc || !col) | |||
| return; | |||
| dc->fg = col; | |||
| } | |||
| void | |||
| dc_setbg(DDC *dc, Col *col) { | |||
| if(!dc || !col) | |||
| return; | |||
| dc->bg = col; | |||
| } | |||
| void | |||
| dc_setfill(DDC *dc, Bool fill) { | |||
| if(!dc) | |||
| return; | |||
| dc->fill = fill; | |||
| } | |||
| void | |||
| dc_drawrect(DDC *dc, int x, int y, unsigned int w, unsigned int h) { | |||
| if(!dc) | |||
| return; | |||
| /* TODO: draw the rectangle */ | |||
| } | |||
| void | |||
| dc_drawtext(DDC *dc, int x, int y, const char *text) { | |||
| if(!dc) | |||
| return; | |||
| /* TODO: draw the text */ | |||
| } | |||
| void | |||
| dc_map(DDC *dc, int x, int y, unsigned int w, unsigned int h) { | |||
| if(!dc) | |||
| return; | |||
| /* TODO: map the dc contents in the region */ | |||
| } | |||
| void | |||
| dc_getextents(DDC *dc, const char *text, TextExtents *extents) { | |||
| if(!dc || !extents) | |||
| return; | |||
| /* TODO: get extents */ | |||
| } | |||