Introduction
Introduction Statistics Contact Development Disclaimer Help
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 */
You are viewing proxied material from mx1.adamsgaard.dk. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.