tbasic draw.c structure - dwm - [fork] customized build of dwm, the dynamic win… | |
git clone git://src.adamsgaard.dk/dwm | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit d456617f0eb93df0ec8eb81ff6e04ca988c09c60 | |
parent 61fe833a062b0e027ec48ed7c7adeb2ed63089d3 | |
Author: [email protected] <unknown> | |
Date: Sun, 18 Nov 2012 12:04:29 +0100 | |
basic draw.c structure | |
Diffstat: | |
M Makefile | 2 +- | |
A draw.c | 139 ++++++++++++++++++++++++++++++ | |
M draw.h | 14 +++++++++----- | |
3 files changed, 149 insertions(+), 6 deletions(-) | |
--- | |
diff --git a/Makefile b/Makefile | |
t@@ -3,7 +3,7 @@ | |
include config.mk | |
-SRC = dwm.c | |
+SRC = draw.c dwm.c | |
OBJ = ${SRC:.c=.o} | |
all: options dwm | |
diff --git a/draw.c b/draw.c | |
t@@ -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 */ | |
+} | |
diff --git a/draw.h b/draw.h | |
t@@ -1,13 +1,16 @@ | |
/* 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; | |
Drawable drawable; | |
GC gc; | |
+ DDC *dc; | |
}; | |
-typedef struct _XDraw Draw; | |
struct _XCol { | |
unsigned long rgb; | |
t@@ -24,13 +27,14 @@ struct _XFont { | |
typedef struct _XFont Fnt; | |
/* X11 types - end */ | |
-typedef struct { | |
+struct _DDC { | |
Draw *draw; | |
Col *fg; | |
Col *bg; | |
Fnt *font; | |
Bool fill; | |
-} DDC; | |
+ DDC *next; | |
+}; | |
typedef struct { | |
unsigned int w; | |
t@@ -60,8 +64,8 @@ void col_free(Col *col); | |
/* Drawing context manipulation */ | |
void dc_setfont(DDC *dc, Fnt *font); | |
-void dc_setfg(DDC *dc, Col col); | |
-void dc_setbg(DDC *dc, Col col); | |
+void dc_setfg(DDC *dc, Col *col); | |
+void dc_setbg(DDC *dc, Col *col); | |
void dc_setfill(DDC *dc, Bool fill); | |
/* Drawing functions */ |