aboutsummaryrefslogtreecommitdiff
path: root/draw.c
blob: 04e7f0d4f6f7d19a1b6aeadfd5dfdb3e14f6c69f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
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 */
}