Blame


1 cfa37a7b 2004-04-10 devnull .TH MEMDRAW 3
2 cfa37a7b 2004-04-10 devnull .SH NAME
3 cfa37a7b 2004-04-10 devnull Memimage,
4 cfa37a7b 2004-04-10 devnull Memdata,
5 cfa37a7b 2004-04-10 devnull Memdrawparam,
6 cfa37a7b 2004-04-10 devnull memimageinit,
7 cfa37a7b 2004-04-10 devnull wordaddr,
8 cfa37a7b 2004-04-10 devnull byteaddr,
9 cfa37a7b 2004-04-10 devnull memimagemove,
10 cfa37a7b 2004-04-10 devnull allocmemimage,
11 cfa37a7b 2004-04-10 devnull allocmemimaged,
12 cfa37a7b 2004-04-10 devnull readmemimage,
13 cfa37a7b 2004-04-10 devnull creadmemimage,
14 cfa37a7b 2004-04-10 devnull writememimage,
15 cfa37a7b 2004-04-10 devnull freememimage,
16 cfa37a7b 2004-04-10 devnull memsetchan,
17 cfa37a7b 2004-04-10 devnull loadmemimage,
18 cfa37a7b 2004-04-10 devnull cloadmemimage,
19 cfa37a7b 2004-04-10 devnull unloadmemimage,
20 cfa37a7b 2004-04-10 devnull memfillcolor,
21 cfa37a7b 2004-04-10 devnull memarc,
22 cfa37a7b 2004-04-10 devnull mempoly,
23 cfa37a7b 2004-04-10 devnull memellipse,
24 cfa37a7b 2004-04-10 devnull memfillpoly,
25 cfa37a7b 2004-04-10 devnull memimageline,
26 cfa37a7b 2004-04-10 devnull memimagedraw,
27 cfa37a7b 2004-04-10 devnull drawclip,
28 cfa37a7b 2004-04-10 devnull memlinebbox,
29 cfa37a7b 2004-04-10 devnull memlineendsize,
30 cfa37a7b 2004-04-10 devnull allocmemsubfont,
31 cfa37a7b 2004-04-10 devnull openmemsubfont,
32 cfa37a7b 2004-04-10 devnull freememsubfont,
33 cfa37a7b 2004-04-10 devnull memsubfontwidth,
34 cfa37a7b 2004-04-10 devnull getmemdefont,
35 cfa37a7b 2004-04-10 devnull memimagestring,
36 cfa37a7b 2004-04-10 devnull iprint,
37 cfa37a7b 2004-04-10 devnull hwdraw \- drawing routines for memory-resident images
38 cfa37a7b 2004-04-10 devnull .SH SYNOPSIS
39 cfa37a7b 2004-04-10 devnull .nf
40 cfa37a7b 2004-04-10 devnull .B #include <u.h>
41 cfa37a7b 2004-04-10 devnull .nf
42 cfa37a7b 2004-04-10 devnull .B #include <u.h>
43 cfa37a7b 2004-04-10 devnull .B #include <libc.h>
44 cfa37a7b 2004-04-10 devnull .B #include <draw.h>
45 cfa37a7b 2004-04-10 devnull .B #include <memdraw.h>
46 cfa37a7b 2004-04-10 devnull .PP
47 cfa37a7b 2004-04-10 devnull .ft L
48 cfa37a7b 2004-04-10 devnull typedef struct Memdata
49 cfa37a7b 2004-04-10 devnull {
50 cfa37a7b 2004-04-10 devnull ulong *base; /* allocated data pointer */
51 cfa37a7b 2004-04-10 devnull uchar *bdata; /* first byte of actual data; word-aligned */
52 cfa37a7b 2004-04-10 devnull int ref; /* number of Memimages using this data */
53 cfa37a7b 2004-04-10 devnull void* imref; /* last image that pointed at this */
54 cfa37a7b 2004-04-10 devnull int allocd; /* is this malloc'd? */
55 cfa37a7b 2004-04-10 devnull } Memdata;
56 cfa37a7b 2004-04-10 devnull
57 cfa37a7b 2004-04-10 devnull enum {
58 cfa37a7b 2004-04-10 devnull Frepl = 1<<0, /* is replicated */
59 cfa37a7b 2004-04-10 devnull Fsimple = 1<<1, /* is 1x1 */
60 cfa37a7b 2004-04-10 devnull Fgrey = 1<<2, /* is grey */
61 cfa37a7b 2004-04-10 devnull Falpha = 1<<3, /* has explicit alpha */
62 cfa37a7b 2004-04-10 devnull Fcmap = 1<<4, /* has cmap channel */
63 cfa37a7b 2004-04-10 devnull Fbytes = 1<<5, /* has only 8-bit channels */
64 cfa37a7b 2004-04-10 devnull };
65 cfa37a7b 2004-04-10 devnull
66 cfa37a7b 2004-04-10 devnull typedef struct Memimage
67 cfa37a7b 2004-04-10 devnull {
68 cfa37a7b 2004-04-10 devnull Rectangle r; /* rectangle in data area, local coords */
69 cfa37a7b 2004-04-10 devnull Rectangle clipr; /* clipping region */
70 cfa37a7b 2004-04-10 devnull int depth; /* number of bits of storage per pixel */
71 cfa37a7b 2004-04-10 devnull int nchan; /* number of channels */
72 cfa37a7b 2004-04-10 devnull ulong chan; /* channel descriptions */
73 cfa37a7b 2004-04-10 devnull
74 cfa37a7b 2004-04-10 devnull Memdata *data; /* pointer to data */
75 cfa37a7b 2004-04-10 devnull int zero; /* data->bdata+zero==&byte containing (0,0) */
76 cfa37a7b 2004-04-10 devnull ulong width; /* width in words of a single scan line */
77 cfa37a7b 2004-04-10 devnull Memlayer *layer; /* nil if not a layer*/
78 cfa37a7b 2004-04-10 devnull ulong flags;
79 cfa37a7b 2004-04-10 devnull \fI...\fP
80 cfa37a7b 2004-04-10 devnull } Memimage;
81 cfa37a7b 2004-04-10 devnull
82 cfa37a7b 2004-04-10 devnull typedef struct Memdrawparam
83 cfa37a7b 2004-04-10 devnull {
84 cfa37a7b 2004-04-10 devnull Memimage *dst;
85 cfa37a7b 2004-04-10 devnull Rectangle r;
86 cfa37a7b 2004-04-10 devnull Memimage *src;
87 cfa37a7b 2004-04-10 devnull Rectangle sr;
88 cfa37a7b 2004-04-10 devnull Memimage *mask;
89 cfa37a7b 2004-04-10 devnull Rectangle mr;
90 cfa37a7b 2004-04-10 devnull \fI...\fP
91 cfa37a7b 2004-04-10 devnull } Memdrawparam;
92 cfa37a7b 2004-04-10 devnull
93 cfa37a7b 2004-04-10 devnull .ta \w'\fLMemsubfont* 'u
94 cfa37a7b 2004-04-10 devnull int drawdebug;
95 cfa37a7b 2004-04-10 devnull .ft
96 cfa37a7b 2004-04-10 devnull .PP
97 cfa37a7b 2004-04-10 devnull .ft L
98 cfa37a7b 2004-04-10 devnull .nf
99 cfa37a7b 2004-04-10 devnull void memimageinit(void)
100 cfa37a7b 2004-04-10 devnull ulong* wordaddr(Memimage *i, Point p)
101 cfa37a7b 2004-04-10 devnull uchar* byteaddr(Memimage *i, Point p)
102 cfa37a7b 2004-04-10 devnull void memimagemove(void *from, void *to)
103 cfa37a7b 2004-04-10 devnull .PP
104 cfa37a7b 2004-04-10 devnull .ft L
105 cfa37a7b 2004-04-10 devnull .nf
106 cfa37a7b 2004-04-10 devnull Memimage* allocmemimage(Rectangle r, ulong chan)
107 cfa37a7b 2004-04-10 devnull Memimage* allocmemimaged(Rectangle r, ulong chan, Memdata *data)
108 cfa37a7b 2004-04-10 devnull Memimage* readmemimage(int fd)
109 cfa37a7b 2004-04-10 devnull Memimage* creadmemimage(int fd)
110 cfa37a7b 2004-04-10 devnull int writememimage(int fd, Memimage *i)
111 cfa37a7b 2004-04-10 devnull void freememimage(Memimage *i)
112 cfa37a7b 2004-04-10 devnull int memsetchan(Memimage*, ulong)
113 cfa37a7b 2004-04-10 devnull .PP
114 cfa37a7b 2004-04-10 devnull .ft L
115 cfa37a7b 2004-04-10 devnull .nf
116 cfa37a7b 2004-04-10 devnull int loadmemimage(Memimage *i, Rectangle r,
117 cfa37a7b 2004-04-10 devnull uchar *buf, int nbuf)
118 cfa37a7b 2004-04-10 devnull int cloadmemimage(Memimage *i, Rectangle r,
119 cfa37a7b 2004-04-10 devnull uchar *buf, int nbuf)
120 cfa37a7b 2004-04-10 devnull int unloadmemimage(Memimage *i, Rectangle r,
121 cfa37a7b 2004-04-10 devnull uchar *buf, int nbuf)
122 cfa37a7b 2004-04-10 devnull void memfillcolor(Memimage *i, ulong color)
123 cfa37a7b 2004-04-10 devnull .PP
124 cfa37a7b 2004-04-10 devnull .ft L
125 cfa37a7b 2004-04-10 devnull .nf
126 cfa37a7b 2004-04-10 devnull void memarc(Memimage *dst, Point c, int a, int b, int thick,
127 cfa37a7b 2004-04-10 devnull Memimage *src, Point sp, int alpha, int phi, Drawop op)
128 cfa37a7b 2004-04-10 devnull void mempoly(Memimage *dst, Point *p, int np, int end0,
129 cfa37a7b 2004-04-10 devnull int end1, int radius, Memimage *src, Point sp, Drawop op)
130 cfa37a7b 2004-04-10 devnull void memellipse(Memimage *dst, Point c, int a, int b,
131 cfa37a7b 2004-04-10 devnull int thick, Memimage *src, Point sp, Drawop op)
132 cfa37a7b 2004-04-10 devnull void memfillpoly(Memimage *dst, Point *p, int np, int wind,
133 cfa37a7b 2004-04-10 devnull Memimage *src, Point sp, Drawop op)
134 cfa37a7b 2004-04-10 devnull void memimageline(Memimage *dst, Point p0, Point p1, int end0,
135 cfa37a7b 2004-04-10 devnull int end1, int radius, Memimage *src, Point sp, Drawop op)
136 cfa37a7b 2004-04-10 devnull void memimagedraw(Memimage *dst, Rectangle r, Memimage *src,
137 cfa37a7b 2004-04-10 devnull Point sp, Memimage *mask, Point mp, Drawop op)
138 cfa37a7b 2004-04-10 devnull .PP
139 cfa37a7b 2004-04-10 devnull .ft L
140 cfa37a7b 2004-04-10 devnull .nf
141 cfa37a7b 2004-04-10 devnull int drawclip(Memimage *dst, Rectangle *dr, Memimage *src,
142 cfa37a7b 2004-04-10 devnull Point *sp, Memimage *mask, Point *mp,
143 cfa37a7b 2004-04-10 devnull Rectangle *sr, Rectangle *mr)
144 cfa37a7b 2004-04-10 devnull Rectangle memlinebbox(Point p0, Point p1, int end0, int end1,
145 cfa37a7b 2004-04-10 devnull int radius)
146 cfa37a7b 2004-04-10 devnull int memlineendsize(int end)
147 cfa37a7b 2004-04-10 devnull .PP
148 cfa37a7b 2004-04-10 devnull .ft L
149 cfa37a7b 2004-04-10 devnull .nf
150 cfa37a7b 2004-04-10 devnull Memsubfont* allocmemsubfont(char *name, int n, int height,
151 cfa37a7b 2004-04-10 devnull int ascent, Fontchar *info, Memimage *i)
152 cfa37a7b 2004-04-10 devnull Memsubfont* openmemsubfont(char *name)
153 cfa37a7b 2004-04-10 devnull void freememsubfont(Memsubfont *f)
154 cfa37a7b 2004-04-10 devnull Point memsubfontwidth(Memsubfont *f, char *s)
155 cfa37a7b 2004-04-10 devnull Point memimagestring(Memimage *dst, Point p, Memimage *color,
156 cfa37a7b 2004-04-10 devnull Point cp, Memsubfont *f, char *cs, Drawop op)
157 cfa37a7b 2004-04-10 devnull .PP
158 cfa37a7b 2004-04-10 devnull .ft L
159 cfa37a7b 2004-04-10 devnull .nf
160 cfa37a7b 2004-04-10 devnull int iprint(char *fmt, ...)
161 cfa37a7b 2004-04-10 devnull int hwdraw(Memdrawparam *param)
162 cfa37a7b 2004-04-10 devnull .ft R
163 cfa37a7b 2004-04-10 devnull .SH DESCRIPTION
164 cfa37a7b 2004-04-10 devnull The
165 cfa37a7b 2004-04-10 devnull .B Memimage
166 cfa37a7b 2004-04-10 devnull type defines memory-resident rectangular pictures and the methods to draw upon them;
167 cfa37a7b 2004-04-10 devnull .BR Memimage s
168 cfa37a7b 2004-04-10 devnull differ from
169 cfa37a7b 2004-04-10 devnull .BR Image s
170 cfa37a7b 2004-04-10 devnull (see
171 bf8a59fa 2004-04-11 devnull .IR draw (3))
172 cfa37a7b 2004-04-10 devnull in that they are manipulated directly in user memory rather than by
173 cfa37a7b 2004-04-10 devnull RPCs to the
174 cfa37a7b 2004-04-10 devnull .B /dev/draw
175 cfa37a7b 2004-04-10 devnull hierarchy.
176 cfa37a7b 2004-04-10 devnull The
177 cfa37a7b 2004-04-10 devnull .Bmemdraw
178 cfa37a7b 2004-04-10 devnull library is the basis for the kernel
179 cfa37a7b 2004-04-10 devnull .IR draw (3)
180 cfa37a7b 2004-04-10 devnull driver and also used by a number of programs that must manipulate
181 cfa37a7b 2004-04-10 devnull images without a display.
182 cfa37a7b 2004-04-10 devnull .PP
183 cfa37a7b 2004-04-10 devnull The
184 cfa37a7b 2004-04-10 devnull .BR r,
185 cfa37a7b 2004-04-10 devnull .BR clipr ,
186 cfa37a7b 2004-04-10 devnull .BR depth ,
187 cfa37a7b 2004-04-10 devnull .BR nchan ,
188 cfa37a7b 2004-04-10 devnull and
189 cfa37a7b 2004-04-10 devnull .BR chan
190 cfa37a7b 2004-04-10 devnull structure elements are identical to
191 cfa37a7b 2004-04-10 devnull the ones of the same name
192 cfa37a7b 2004-04-10 devnull in the
193 cfa37a7b 2004-04-10 devnull .B Image
194 cfa37a7b 2004-04-10 devnull structure.
195 cfa37a7b 2004-04-10 devnull .PP
196 cfa37a7b 2004-04-10 devnull The
197 cfa37a7b 2004-04-10 devnull .B flags
198 cfa37a7b 2004-04-10 devnull element of the
199 cfa37a7b 2004-04-10 devnull .B Memimage
200 cfa37a7b 2004-04-10 devnull structure holds a number of bits of information about the image.
201 cfa37a7b 2004-04-10 devnull In particular, it subsumes the
202 cfa37a7b 2004-04-10 devnull purpose of the
203 cfa37a7b 2004-04-10 devnull .B repl
204 cfa37a7b 2004-04-10 devnull element of
205 cfa37a7b 2004-04-10 devnull .B Image
206 cfa37a7b 2004-04-10 devnull structures.
207 cfa37a7b 2004-04-10 devnull .PP
208 cfa37a7b 2004-04-10 devnull .I Memimageinit
209 cfa37a7b 2004-04-10 devnull initializes various static data that the library depends on,
210 cfa37a7b 2004-04-10 devnull as well as the replicated solid color images
211 cfa37a7b 2004-04-10 devnull .BR memopaque ,
212 cfa37a7b 2004-04-10 devnull .BR memtransparent ,
213 cfa37a7b 2004-04-10 devnull .BR memblack ,
214 cfa37a7b 2004-04-10 devnull and
215 cfa37a7b 2004-04-10 devnull .BR memwhite .
216 cfa37a7b 2004-04-10 devnull It should be called before referring to any of these images
217 cfa37a7b 2004-04-10 devnull and before calling any of the other library functions.
218 cfa37a7b 2004-04-10 devnull .PP
219 cfa37a7b 2004-04-10 devnull Each
220 cfa37a7b 2004-04-10 devnull .B Memimage
221 cfa37a7b 2004-04-10 devnull points at a
222 cfa37a7b 2004-04-10 devnull .B Memdata
223 cfa37a7b 2004-04-10 devnull structure that in turn points at the actual pixel data for the image.
224 cfa37a7b 2004-04-10 devnull This allows multiple images to be associated with the same
225 cfa37a7b 2004-04-10 devnull .BR Memdata .
226 cfa37a7b 2004-04-10 devnull The first word of the data pointed at by
227 cfa37a7b 2004-04-10 devnull the
228 cfa37a7b 2004-04-10 devnull .B base
229 cfa37a7b 2004-04-10 devnull element of
230 cfa37a7b 2004-04-10 devnull .B Memdata
231 cfa37a7b 2004-04-10 devnull points back at the
232 cfa37a7b 2004-04-10 devnull .B Memdata
233 058b0118 2005-01-03 devnull structure, so that in the Plan 9 kernel, the
234 cfa37a7b 2004-04-10 devnull memory allocator (see
235 058b0118 2005-01-03 devnull Plan 9's \fIpool\fR(3))
236 cfa37a7b 2004-04-10 devnull can compact image memory
237 cfa37a7b 2004-04-10 devnull using
238 cfa37a7b 2004-04-10 devnull .IR memimagemove .
239 cfa37a7b 2004-04-10 devnull .PP
240 cfa37a7b 2004-04-10 devnull Because images can have different coordinate systems,
241 cfa37a7b 2004-04-10 devnull the
242 cfa37a7b 2004-04-10 devnull .B zero
243 cfa37a7b 2004-04-10 devnull element of the
244 cfa37a7b 2004-04-10 devnull .B Memimage
245 cfa37a7b 2004-04-10 devnull structure contains the offset that must be added
246 cfa37a7b 2004-04-10 devnull to the
247 cfa37a7b 2004-04-10 devnull .B bdata
248 cfa37a7b 2004-04-10 devnull element of the corresponding
249 cfa37a7b 2004-04-10 devnull .B Memdata
250 cfa37a7b 2004-04-10 devnull structure in order to yield a pointer to the data for the pixel (0,0).
251 cfa37a7b 2004-04-10 devnull Adding
252 cfa37a7b 2004-04-10 devnull .BR width
253 cfa37a7b 2004-04-10 devnull machine words
254 cfa37a7b 2004-04-10 devnull to this pointer moves it down one scan line.
255 cfa37a7b 2004-04-10 devnull The
256 cfa37a7b 2004-04-10 devnull .B depth
257 cfa37a7b 2004-04-10 devnull element can be used to determine how to move the
258 cfa37a7b 2004-04-10 devnull pointer horizontally.
259 cfa37a7b 2004-04-10 devnull Note that this method works even for images whose rectangles
260 cfa37a7b 2004-04-10 devnull do not include the origin, although one should only dereference
261 cfa37a7b 2004-04-10 devnull pointers corresponding to pixels within the image rectangle.
262 cfa37a7b 2004-04-10 devnull .I Wordaddr
263 cfa37a7b 2004-04-10 devnull and
264 cfa37a7b 2004-04-10 devnull .IR byteaddr
265 cfa37a7b 2004-04-10 devnull perform these calculations,
266 cfa37a7b 2004-04-10 devnull returning pointers to the word and byte, respectively,
267 cfa37a7b 2004-04-10 devnull that contain the beginning of the data for a given pixel.
268 cfa37a7b 2004-04-10 devnull .PP
269 cfa37a7b 2004-04-10 devnull .I Allocmemimage
270 5517aa03 2019-04-05 rsc allocates
271 cfa37a7b 2004-04-10 devnull images with a given rectangle and channel descriptor
272 cfa37a7b 2004-04-10 devnull (see
273 cfa37a7b 2004-04-10 devnull .B strtochan
274 cfa37a7b 2004-04-10 devnull in
275 bf8a59fa 2004-04-11 devnull .IR graphics (3)),
276 cfa37a7b 2004-04-10 devnull creating a fresh
277 cfa37a7b 2004-04-10 devnull .B Memdata
278 cfa37a7b 2004-04-10 devnull structure and associated storage.
279 cfa37a7b 2004-04-10 devnull .I Allocmemimaged
280 cfa37a7b 2004-04-10 devnull is similar but uses the supplied
281 cfa37a7b 2004-04-10 devnull .I Memdata
282 cfa37a7b 2004-04-10 devnull structure rather than a new one.
283 cfa37a7b 2004-04-10 devnull The
284 cfa37a7b 2004-04-10 devnull .I readmemimage
285 cfa37a7b 2004-04-10 devnull function reads an uncompressed bitmap
286 cfa37a7b 2004-04-10 devnull from the given file descriptor,
287 cfa37a7b 2004-04-10 devnull while
288 cfa37a7b 2004-04-10 devnull .I creadmemimage
289 cfa37a7b 2004-04-10 devnull reads a compressed bitmap.
290 cfa37a7b 2004-04-10 devnull .I Writememimage
291 cfa37a7b 2004-04-10 devnull writes a compressed representation of
292 cfa37a7b 2004-04-10 devnull .I i
293 cfa37a7b 2004-04-10 devnull to file descriptor
294 cfa37a7b 2004-04-10 devnull .IR fd .
295 cfa37a7b 2004-04-10 devnull For more on bitmap formats, see
296 058b0118 2005-01-03 devnull .IR image (7).
297 cfa37a7b 2004-04-10 devnull .I Freememimage
298 cfa37a7b 2004-04-10 devnull frees images returned by any of these routines.
299 cfa37a7b 2004-04-10 devnull The
300 cfa37a7b 2004-04-10 devnull .B Memimage
301 cfa37a7b 2004-04-10 devnull structure contains some tables that are used
302 cfa37a7b 2004-04-10 devnull to store precomputed values depending on the channel descriptor.
303 cfa37a7b 2004-04-10 devnull .I Memsetchan
304 cfa37a7b 2004-04-10 devnull updates the
305 cfa37a7b 2004-04-10 devnull .B chan
306 cfa37a7b 2004-04-10 devnull element of the structure as well as these tables,
307 cfa37a7b 2004-04-10 devnull returning \-1 if passed a bad channel descriptor.
308 cfa37a7b 2004-04-10 devnull .PP
309 cfa37a7b 2004-04-10 devnull .I Loadmemimage
310 cfa37a7b 2004-04-10 devnull and
311 cfa37a7b 2004-04-10 devnull .I cloadmemimage
312 cfa37a7b 2004-04-10 devnull replace the pixel data for a given rectangle of an image
313 cfa37a7b 2004-04-10 devnull with the given buffer of uncompressed or compressed
314 cfa37a7b 2004-04-10 devnull data, respectively.
315 cfa37a7b 2004-04-10 devnull When calling
316 cfa37a7b 2004-04-10 devnull .IR cloadmemimage ,
317 cfa37a7b 2004-04-10 devnull the buffer must contain an
318 cfa37a7b 2004-04-10 devnull integral number of
319 cfa37a7b 2004-04-10 devnull compressed chunks of data that exactly cover the rectangle.
320 cfa37a7b 2004-04-10 devnull .I Unloadmemimage
321 cfa37a7b 2004-04-10 devnull retrieves the uncompressed pixel data for a given rectangle of an image.
322 cfa37a7b 2004-04-10 devnull All three return the number of bytes consumed on success,
323 cfa37a7b 2004-04-10 devnull and \-1 in case of an error.
324 cfa37a7b 2004-04-10 devnull .PP
325 cfa37a7b 2004-04-10 devnull .I Memfillcolor
326 cfa37a7b 2004-04-10 devnull fills an image with the given color, a 32-bit number as
327 cfa37a7b 2004-04-10 devnull described in
328 bf8a59fa 2004-04-11 devnull .IR color (3).
329 cfa37a7b 2004-04-10 devnull .PP
330 cfa37a7b 2004-04-10 devnull .IR Memarc ,
331 cfa37a7b 2004-04-10 devnull .IR mempoly ,
332 cfa37a7b 2004-04-10 devnull .IR memellipse ,
333 cfa37a7b 2004-04-10 devnull .IR memfillpoly ,
334 cfa37a7b 2004-04-10 devnull .IR memimageline ,
335 cfa37a7b 2004-04-10 devnull and
336 cfa37a7b 2004-04-10 devnull .I memimagedraw
337 cfa37a7b 2004-04-10 devnull are identical to the
338 cfa37a7b 2004-04-10 devnull .IR arc ,
339 cfa37a7b 2004-04-10 devnull .IR poly ,
340 cfa37a7b 2004-04-10 devnull .IR ellipse ,
341 cfa37a7b 2004-04-10 devnull .IR fillpoly ,
342 cfa37a7b 2004-04-10 devnull .IR line ,
343 cfa37a7b 2004-04-10 devnull and
344 cfa37a7b 2004-04-10 devnull .IR gendraw ,
345 cfa37a7b 2004-04-10 devnull routines described in
346 bf8a59fa 2004-04-11 devnull .IR draw (3),
347 cfa37a7b 2004-04-10 devnull except that they operate on
348 cfa37a7b 2004-04-10 devnull .BR Memimage s
349 cfa37a7b 2004-04-10 devnull rather than
350 cfa37a7b 2004-04-10 devnull .BR Image s.
351 cfa37a7b 2004-04-10 devnull Similarly,
352 cfa37a7b 2004-04-10 devnull .IR allocmemsubfont ,
353 cfa37a7b 2004-04-10 devnull .IR openmemsubfont ,
354 cfa37a7b 2004-04-10 devnull .IR freememsubfont ,
355 cfa37a7b 2004-04-10 devnull .IR memsubfontwidth ,
356 cfa37a7b 2004-04-10 devnull and
357 cfa37a7b 2004-04-10 devnull .I memimagestring
358 cfa37a7b 2004-04-10 devnull are the
359 cfa37a7b 2004-04-10 devnull .B Memimage
360 cfa37a7b 2004-04-10 devnull analogues of
361 cfa37a7b 2004-04-10 devnull .IR allocsubfont ,
362 cfa37a7b 2004-04-10 devnull .IR openfont ,
363 cfa37a7b 2004-04-10 devnull .IR freesubfont ,
364 cfa37a7b 2004-04-10 devnull .IR strsubfontwidth ,
365 cfa37a7b 2004-04-10 devnull and
366 cfa37a7b 2004-04-10 devnull .B string
367 cfa37a7b 2004-04-10 devnull (see
368 bf8a59fa 2004-04-11 devnull .IR subfont (3)
369 cfa37a7b 2004-04-10 devnull and
370 bf8a59fa 2004-04-11 devnull .IR graphics (3)),
371 cfa37a7b 2004-04-10 devnull except that they operate
372 cfa37a7b 2004-04-10 devnull only on
373 cfa37a7b 2004-04-10 devnull .BR Memsubfont s
374 cfa37a7b 2004-04-10 devnull rather than
375 cfa37a7b 2004-04-10 devnull .BR Font s.
376 cfa37a7b 2004-04-10 devnull .PP
377 cfa37a7b 2004-04-10 devnull .I Drawclip
378 cfa37a7b 2004-04-10 devnull takes the images involved in a draw operation,
379 cfa37a7b 2004-04-10 devnull together with the destination rectangle
380 cfa37a7b 2004-04-10 devnull .B dr
381 cfa37a7b 2004-04-10 devnull and source
382 cfa37a7b 2004-04-10 devnull and mask alignment points
383 cfa37a7b 2004-04-10 devnull .B sp
384 cfa37a7b 2004-04-10 devnull and
385 cfa37a7b 2004-04-10 devnull .BR mp ,
386 cfa37a7b 2004-04-10 devnull and
387 cfa37a7b 2004-04-10 devnull clips them according to the clipping rectangles of the images involved.
388 cfa37a7b 2004-04-10 devnull It also fills in the rectangles
389 cfa37a7b 2004-04-10 devnull .B sr
390 cfa37a7b 2004-04-10 devnull and
391 cfa37a7b 2004-04-10 devnull .B mr
392 cfa37a7b 2004-04-10 devnull with rectangles congruent to the returned destination rectangle
393 cfa37a7b 2004-04-10 devnull but translated so the upper left corners are the returned
394 cfa37a7b 2004-04-10 devnull .B sp
395 cfa37a7b 2004-04-10 devnull and
396 cfa37a7b 2004-04-10 devnull .BR mp .
397 cfa37a7b 2004-04-10 devnull .I Drawclip
398 cfa37a7b 2004-04-10 devnull returns zero when the clipped rectangle is empty.
399 cfa37a7b 2004-04-10 devnull .I Memlinebbox
400 cfa37a7b 2004-04-10 devnull returns a conservative bounding box containing a line between
401 cfa37a7b 2004-04-10 devnull two points
402 cfa37a7b 2004-04-10 devnull with given end styles
403 cfa37a7b 2004-04-10 devnull and radius.
404 cfa37a7b 2004-04-10 devnull .I Memlineendsize
405 cfa37a7b 2004-04-10 devnull calculates the extra length added to a line by attaching
406 cfa37a7b 2004-04-10 devnull an end of a given style.
407 cfa37a7b 2004-04-10 devnull .PP
408 cfa37a7b 2004-04-10 devnull The
409 cfa37a7b 2004-04-10 devnull .I hwdraw
410 cfa37a7b 2004-04-10 devnull and
411 cfa37a7b 2004-04-10 devnull .I iprint
412 cfa37a7b 2004-04-10 devnull functions are no-op stubs that may be overridden by clients
413 cfa37a7b 2004-04-10 devnull of the library.
414 cfa37a7b 2004-04-10 devnull .I Hwdraw
415 cfa37a7b 2004-04-10 devnull is called at each call to
416 cfa37a7b 2004-04-10 devnull .I memimagedraw
417 cfa37a7b 2004-04-10 devnull with the current request's parameters.
418 cfa37a7b 2004-04-10 devnull If it can satisfy the request, it should do so
419 cfa37a7b 2004-04-10 devnull and return 1.
420 cfa37a7b 2004-04-10 devnull If it cannot satisfy the request, it should return 0.
421 cfa37a7b 2004-04-10 devnull This allows (for instance) the kernel to take advantage
422 cfa37a7b 2004-04-10 devnull of hardware acceleration.
423 cfa37a7b 2004-04-10 devnull .I Iprint
424 cfa37a7b 2004-04-10 devnull should format and print its arguments;
425 cfa37a7b 2004-04-10 devnull it is given much debugging output when
426 cfa37a7b 2004-04-10 devnull the global integer variable
427 cfa37a7b 2004-04-10 devnull .B drawdebug
428 cfa37a7b 2004-04-10 devnull is non-zero.
429 cfa37a7b 2004-04-10 devnull In the kernel,
430 cfa37a7b 2004-04-10 devnull .I iprint
431 cfa37a7b 2004-04-10 devnull prints to a serial line rather than the screen, for obvious reasons.
432 cfa37a7b 2004-04-10 devnull .SH SOURCE
433 57a2289b 2006-06-25 devnull .B \*9/src/libmemdraw
434 cfa37a7b 2004-04-10 devnull .SH SEE ALSO
435 bf8a59fa 2004-04-11 devnull .IR addpt (3),
436 bf8a59fa 2004-04-11 devnull .IR color (3),
437 bf8a59fa 2004-04-11 devnull .IR draw (3),
438 bf8a59fa 2004-04-11 devnull .IR graphics (3),
439 bf8a59fa 2004-04-11 devnull .IR memlayer (3),
440 bf8a59fa 2004-04-11 devnull .IR stringsize (3),
441 bf8a59fa 2004-04-11 devnull .IR subfont (3),
442 058b0118 2005-01-03 devnull .IR color (7),
443 058b0118 2005-01-03 devnull .IR utf (7)
444 cfa37a7b 2004-04-10 devnull .SH BUGS
445 cfa37a7b 2004-04-10 devnull .I Memimagestring
446 cfa37a7b 2004-04-10 devnull is unusual in using a subfont rather than a font,
447 cfa37a7b 2004-04-10 devnull and in having no parameter to align the source.