Introduction
Introduction Statistics Contact Development Disclaimer Help
tmemdraw.h - plan9port - [fork] Plan 9 from user space
git clone git://src.adamsgaard.dk/plan9port
Log
Files
Refs
README
LICENSE
---
tmemdraw.h (6266B)
---
1 #ifndef _MEMDRAW_H_
2 #define _MEMDRAW_H_ 1
3 #if defined(__cplusplus)
4 extern "C" {
5 #endif
6
7 AUTOLIB(memdraw)
8 AUTOLIB(memlayer)
9
10 typedef struct Memimage Memimage;
11 typedef struct Memdata Memdata;
12 typedef struct Memsubfont Memsubfont;
13 typedef struct Memlayer Memlayer;
14 typedef struct Memcmap Memcmap;
15 typedef struct Memdrawparam Memdrawparam;
16
17 /*
18 * Memdata is allocated from main pool, but .data from the image pool.
19 * Memdata is allocated separately to permit patching its pointer after
20 * compaction when windows share the image data.
21 * The first word of data is a back pointer to the Memdata, to find
22 * The word to patch.
23 */
24
25 struct Memdata
26 {
27 u32int *base; /* allocated data pointer */
28 uchar *bdata; /* pointer to first byte of actual d…
29 int ref; /* number of Memimages using this data */
30 void* imref;
31 int allocd; /* is this malloc'd? */
32 };
33
34 enum {
35 Frepl = 1<<0, /* is replicated */
36 Fsimple = 1<<1, /* is 1x1 */
37 Fgrey = 1<<2, /* is grey */
38 Falpha = 1<<3, /* has explicit alpha */
39 Fcmap = 1<<4, /* has cmap channel */
40 Fbytes = 1<<5 /* has only 8-bit channels */
41 };
42
43 struct Memimage
44 {
45 Rectangle r; /* rectangle in data area, local coor…
46 Rectangle clipr; /* clipping region */
47 int depth; /* number of bits of storage pe…
48 int nchan; /* number of channels */
49 u32int chan; /* channel descriptions */
50 Memcmap *cmap;
51
52 Memdata *data; /* pointer to data; shared …
53 int zero; /* data->bdata+zero==&byte conta…
54 u32int width; /* width in words of a singl…
55 Memlayer *layer; /* nil if not a layer*/
56 u32int flags;
57 void *X;
58 int screenref; /* reference count if this …
59
60 int shift[NChan];
61 int mask[NChan];
62 int nbits[NChan];
63 };
64
65 struct Memcmap
66 {
67 uchar cmap2rgb[3*256];
68 uchar rgb2cmap[16*16*16];
69 };
70
71 /*
72 * Subfonts
73 *
74 * given char c, Subfont *f, Fontchar *i, and Point p, one says
75 * i = f->info+c;
76 * draw(b, Rect(p.x+i->left, p.y+i->top,
77 * p.x+i->left+((i+1)->x-i->x), p.y+i->bottom),
78 * color, f->bits, Pt(i->x, i->top));
79 * p.x += i->width;
80 * to draw characters in the specified color (itself a Memimage) in Memi…
81 */
82
83 struct Memsubfont
84 {
85 char *name;
86 short n; /* number of chars in fon…
87 uchar height; /* height of bitmap …
88 char ascent; /* top of bitmap to b…
89 Fontchar *info; /* n+1 character descripto…
90 Memimage *bits; /* of font */
91 };
92
93 /*
94 * Encapsulated parameters and information for sub-draw routines.
95 */
96 enum {
97 Simplesrc=1<<0,
98 Simplemask=1<<1,
99 Replsrc=1<<2,
100 Replmask=1<<3,
101 Fullsrc=1<<4,
102 Fullmask=1<<5
103 };
104 struct Memdrawparam
105 {
106 Memimage *dst;
107 Rectangle r;
108 Memimage *src;
109 Rectangle sr;
110 Memimage *mask;
111 Rectangle mr;
112 int op;
113
114 u32int state;
115 u32int mval; /* if Simplemask, the mask pixel in mask for…
116 u32int mrgba; /* mval in rgba */
117 u32int sval; /* if Simplesrc, the source pixel in src for…
118 u32int srgba; /* sval in rgba */
119 u32int sdval; /* sval in dst format */
120 };
121
122 /*
123 * Memimage management
124 */
125
126 extern Memimage* allocmemimage(Rectangle, u32int);
127 extern Memimage* allocmemimaged(Rectangle, u32int, Memdata*, void…
128 extern Memimage* readmemimage(int);
129 extern Memimage* creadmemimage(int);
130 extern int writememimage(int, Memimage*);
131 extern void freememimage(Memimage*);
132 extern int loadmemimage(Memimage*, Rectangle, uchar*, int…
133 extern int cloadmemimage(Memimage*, Rectangle, uchar*, in…
134 extern int unloadmemimage(Memimage*, Rectangle, uchar*, i…
135 extern u32int* wordaddr(Memimage*, Point);
136 extern uchar* byteaddr(Memimage*, Point);
137 extern int drawclip(Memimage*, Rectangle*, Memimage*, Poi…
138 Memimage*, Point*, Rectangle*, Rectangle…
139 extern void memfillcolor(Memimage*, u32int);
140 extern int memsetchan(Memimage*, u32int);
141 extern u32int pixelbits(Memimage*, Point);
142
143 /*
144 * Graphics
145 */
146 extern void memdraw(Memimage*, Rectangle, Memimage*, Point,
147 Memimage*, Point, int);
148 extern void memline(Memimage*, Point, Point, int, int, int,
149 Memimage*, Point, int);
150 extern void mempoly(Memimage*, Point*, int, int, int, int,
151 Memimage*, Point, int);
152 extern void memfillpoly(Memimage*, Point*, int, int,
153 Memimage*, Point, int);
154 extern void _memfillpolysc(Memimage*, Point*, int, int,
155 Memimage*, Point, int, int, int, int);
156 extern void memimagedraw(Memimage*, Rectangle, Memimage*, Point,
157 Memimage*, Point, int);
158 extern int hwdraw(Memdrawparam*);
159 extern void memimageline(Memimage*, Point, Point, int, int, int,
160 Memimage*, Point, int);
161 extern void _memimageline(Memimage*, Point, Point, int, int, int,
162 Memimage*, Point, Rectangle, int);
163 extern Point memimagestring(Memimage*, Point, Memimage*, Point,
164 Memsubfont*, char*);
165 extern void memellipse(Memimage*, Point, int, int, int,
166 Memimage*, Point, int);
167 extern void memarc(Memimage*, Point, int, int, int, Memimage*,
168 Point, int, int, int);
169 extern Rectangle memlinebbox(Point, Point, int, int, int);
170 extern int memlineendsize(int);
171 extern void _memmkcmap(void);
172 extern void memimageinit(void);
173
174 /*
175 * Subfont management
176 */
177 extern Memsubfont* allocmemsubfont(char*, int, int, int, Fontchar…
178 extern Memsubfont* openmemsubfont(char*);
179 extern void freememsubfont(Memsubfont*);
180 extern Point memsubfontwidth(Memsubfont*, char*);
181
182 /*
183 * Predefined
184 */
185 extern Memimage* memwhite;
186 extern Memimage* memblack;
187 extern Memimage* memopaque;
188 extern Memimage* memtransparent;
189 extern Memcmap* memdefcmap;
190
191 /*
192 * Kernel interface
193 */
194 void memimagemove(void*, void*);
195
196 /*
197 * Kernel cruft
198 */
199 extern void rdb(void);
200 extern int iprint(char*, ...);
201 extern int drawdebug;
202
203 /*
204 * For other implementations, like x11.
205 */
206 extern void _memfillcolor(Memimage*, u32int);
207 extern Memimage* _allocmemimage(Rectangle, u32int);
208 extern int _cloadmemimage(Memimage*, Rectangle, uchar*, i…
209 extern int _loadmemimage(Memimage*, Rectangle, uchar*, in…
210 extern void _freememimage(Memimage*);
211 extern u32int _rgbatoimg(Memimage*, u32int);
212 extern u32int _imgtorgba(Memimage*, u32int);
213 extern u32int _pixelbits(Memimage*, Point);
214 extern int _unloadmemimage(Memimage*, Rectangle, uchar*, …
215 extern Memdrawparam* _memimagedrawsetup(Memimage*,
216 Rectangle, Memimage*, Point, Memimage*,
217 Point, int);
218 extern void _memimagedraw(Memdrawparam*);
219
220 #if defined(__cplusplus)
221 }
222 #endif
223 #endif
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.