1 cfa37a7b 2004-04-10 devnull .TH MEMDRAW 3
5 cfa37a7b 2004-04-10 devnull Memdrawparam,
6 cfa37a7b 2004-04-10 devnull memimageinit,
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,
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,
37 cfa37a7b 2004-04-10 devnull hwdraw \- drawing routines for memory-resident images
38 cfa37a7b 2004-04-10 devnull .SH SYNOPSIS
40 cfa37a7b 2004-04-10 devnull .B #include <u.h>
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>
48 cfa37a7b 2004-04-10 devnull typedef struct Memdata
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;
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 */
66 cfa37a7b 2004-04-10 devnull typedef struct Memimage
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 */
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;
82 cfa37a7b 2004-04-10 devnull typedef struct Memdrawparam
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;
93 cfa37a7b 2004-04-10 devnull .ta \w'\fLMemsubfont* 'u
94 cfa37a7b 2004-04-10 devnull int drawdebug;
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)
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)
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)
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)
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)
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 Memsubfont* getmemdefont(void)
156 cfa37a7b 2004-04-10 devnull Point memimagestring(Memimage *dst, Point p, Memimage *color,
157 cfa37a7b 2004-04-10 devnull Point cp, Memsubfont *f, char *cs, Drawop op)
161 cfa37a7b 2004-04-10 devnull int iprint(char *fmt, ...)
162 cfa37a7b 2004-04-10 devnull int hwdraw(Memdrawparam *param)
164 cfa37a7b 2004-04-10 devnull .SH DESCRIPTION
166 cfa37a7b 2004-04-10 devnull .B Memimage
167 cfa37a7b 2004-04-10 devnull type defines memory-resident rectangular pictures and the methods to draw upon them;
168 cfa37a7b 2004-04-10 devnull .BR Memimage s
169 cfa37a7b 2004-04-10 devnull differ from
170 cfa37a7b 2004-04-10 devnull .BR Image s
172 bf8a59fa 2004-04-11 devnull .IR draw (3))
173 cfa37a7b 2004-04-10 devnull in that they are manipulated directly in user memory rather than by
174 cfa37a7b 2004-04-10 devnull RPCs to the
175 cfa37a7b 2004-04-10 devnull .B /dev/draw
176 cfa37a7b 2004-04-10 devnull hierarchy.
178 cfa37a7b 2004-04-10 devnull .Bmemdraw
179 cfa37a7b 2004-04-10 devnull library is the basis for the kernel
180 cfa37a7b 2004-04-10 devnull .IR draw (3)
181 cfa37a7b 2004-04-10 devnull driver and also used by a number of programs that must manipulate
182 cfa37a7b 2004-04-10 devnull images without a display.
186 cfa37a7b 2004-04-10 devnull .BR clipr ,
187 cfa37a7b 2004-04-10 devnull .BR depth ,
188 cfa37a7b 2004-04-10 devnull .BR nchan ,
190 cfa37a7b 2004-04-10 devnull .BR chan
191 cfa37a7b 2004-04-10 devnull structure elements are identical to
192 cfa37a7b 2004-04-10 devnull the ones of the same name
194 cfa37a7b 2004-04-10 devnull .B Image
195 cfa37a7b 2004-04-10 devnull structure.
198 cfa37a7b 2004-04-10 devnull .B flags
199 cfa37a7b 2004-04-10 devnull element of the
200 cfa37a7b 2004-04-10 devnull .B Memimage
201 cfa37a7b 2004-04-10 devnull structure holds a number of bits of information about the image.
202 cfa37a7b 2004-04-10 devnull In particular, it subsumes the
203 cfa37a7b 2004-04-10 devnull purpose of the
205 cfa37a7b 2004-04-10 devnull element of
206 cfa37a7b 2004-04-10 devnull .B Image
207 cfa37a7b 2004-04-10 devnull structures.
209 cfa37a7b 2004-04-10 devnull .I Memimageinit
210 cfa37a7b 2004-04-10 devnull initializes various static data that the library depends on,
211 cfa37a7b 2004-04-10 devnull as well as the replicated solid color images
212 cfa37a7b 2004-04-10 devnull .BR memopaque ,
213 cfa37a7b 2004-04-10 devnull .BR memtransparent ,
214 cfa37a7b 2004-04-10 devnull .BR memblack ,
216 cfa37a7b 2004-04-10 devnull .BR memwhite .
217 cfa37a7b 2004-04-10 devnull It should be called before referring to any of these images
218 cfa37a7b 2004-04-10 devnull and before calling any of the other library functions.
221 cfa37a7b 2004-04-10 devnull .B Memimage
222 cfa37a7b 2004-04-10 devnull points at a
223 cfa37a7b 2004-04-10 devnull .B Memdata
224 cfa37a7b 2004-04-10 devnull structure that in turn points at the actual pixel data for the image.
225 cfa37a7b 2004-04-10 devnull This allows multiple images to be associated with the same
226 cfa37a7b 2004-04-10 devnull .BR Memdata .
227 cfa37a7b 2004-04-10 devnull The first word of the data pointed at by
230 cfa37a7b 2004-04-10 devnull element of
231 cfa37a7b 2004-04-10 devnull .B Memdata
232 cfa37a7b 2004-04-10 devnull points back at the
233 cfa37a7b 2004-04-10 devnull .B Memdata
234 058b0118 2005-01-03 devnull structure, so that in the Plan 9 kernel, the
235 cfa37a7b 2004-04-10 devnull memory allocator (see
236 058b0118 2005-01-03 devnull Plan 9's \fIpool\fR(3))
237 cfa37a7b 2004-04-10 devnull can compact image memory
239 cfa37a7b 2004-04-10 devnull .IR memimagemove .
241 cfa37a7b 2004-04-10 devnull Because images can have different coordinate systems,
244 cfa37a7b 2004-04-10 devnull element of the
245 cfa37a7b 2004-04-10 devnull .B Memimage
246 cfa37a7b 2004-04-10 devnull structure contains the offset that must be added
248 cfa37a7b 2004-04-10 devnull .B bdata
249 cfa37a7b 2004-04-10 devnull element of the corresponding
250 cfa37a7b 2004-04-10 devnull .B Memdata
251 cfa37a7b 2004-04-10 devnull structure in order to yield a pointer to the data for the pixel (0,0).
253 cfa37a7b 2004-04-10 devnull .BR width
254 cfa37a7b 2004-04-10 devnull machine words
255 cfa37a7b 2004-04-10 devnull to this pointer moves it down one scan line.
257 cfa37a7b 2004-04-10 devnull .B depth
258 cfa37a7b 2004-04-10 devnull element can be used to determine how to move the
259 cfa37a7b 2004-04-10 devnull pointer horizontally.
260 cfa37a7b 2004-04-10 devnull Note that this method works even for images whose rectangles
261 cfa37a7b 2004-04-10 devnull do not include the origin, although one should only dereference
262 cfa37a7b 2004-04-10 devnull pointers corresponding to pixels within the image rectangle.
263 cfa37a7b 2004-04-10 devnull .I Wordaddr
265 cfa37a7b 2004-04-10 devnull .IR byteaddr
266 cfa37a7b 2004-04-10 devnull perform these calculations,
267 cfa37a7b 2004-04-10 devnull returning pointers to the word and byte, respectively,
268 cfa37a7b 2004-04-10 devnull that contain the beginning of the data for a given pixel.
270 cfa37a7b 2004-04-10 devnull .I Allocmemimage
271 cfa37a7b 2004-04-10 devnull allocages
272 cfa37a7b 2004-04-10 devnull images with a given rectangle and channel descriptor
274 cfa37a7b 2004-04-10 devnull .B strtochan
276 bf8a59fa 2004-04-11 devnull .IR graphics (3)),
277 cfa37a7b 2004-04-10 devnull creating a fresh
278 cfa37a7b 2004-04-10 devnull .B Memdata
279 cfa37a7b 2004-04-10 devnull structure and associated storage.
280 cfa37a7b 2004-04-10 devnull .I Allocmemimaged
281 cfa37a7b 2004-04-10 devnull is similar but uses the supplied
282 cfa37a7b 2004-04-10 devnull .I Memdata
283 cfa37a7b 2004-04-10 devnull structure rather than a new one.
285 cfa37a7b 2004-04-10 devnull .I readmemimage
286 cfa37a7b 2004-04-10 devnull function reads an uncompressed bitmap
287 cfa37a7b 2004-04-10 devnull from the given file descriptor,
289 cfa37a7b 2004-04-10 devnull .I creadmemimage
290 cfa37a7b 2004-04-10 devnull reads a compressed bitmap.
291 cfa37a7b 2004-04-10 devnull .I Writememimage
292 cfa37a7b 2004-04-10 devnull writes a compressed representation of
294 cfa37a7b 2004-04-10 devnull to file descriptor
295 cfa37a7b 2004-04-10 devnull .IR fd .
296 cfa37a7b 2004-04-10 devnull For more on bitmap formats, see
297 058b0118 2005-01-03 devnull .IR image (7).
298 cfa37a7b 2004-04-10 devnull .I Freememimage
299 cfa37a7b 2004-04-10 devnull frees images returned by any of these routines.
301 cfa37a7b 2004-04-10 devnull .B Memimage
302 cfa37a7b 2004-04-10 devnull structure contains some tables that are used
303 cfa37a7b 2004-04-10 devnull to store precomputed values depending on the channel descriptor.
304 cfa37a7b 2004-04-10 devnull .I Memsetchan
305 cfa37a7b 2004-04-10 devnull updates the
307 cfa37a7b 2004-04-10 devnull element of the structure as well as these tables,
308 cfa37a7b 2004-04-10 devnull returning \-1 if passed a bad channel descriptor.
310 cfa37a7b 2004-04-10 devnull .I Loadmemimage
312 cfa37a7b 2004-04-10 devnull .I cloadmemimage
313 cfa37a7b 2004-04-10 devnull replace the pixel data for a given rectangle of an image
314 cfa37a7b 2004-04-10 devnull with the given buffer of uncompressed or compressed
315 cfa37a7b 2004-04-10 devnull data, respectively.
316 cfa37a7b 2004-04-10 devnull When calling
317 cfa37a7b 2004-04-10 devnull .IR cloadmemimage ,
318 cfa37a7b 2004-04-10 devnull the buffer must contain an
319 cfa37a7b 2004-04-10 devnull integral number of
320 cfa37a7b 2004-04-10 devnull compressed chunks of data that exactly cover the rectangle.
321 cfa37a7b 2004-04-10 devnull .I Unloadmemimage
322 cfa37a7b 2004-04-10 devnull retrieves the uncompressed pixel data for a given rectangle of an image.
323 cfa37a7b 2004-04-10 devnull All three return the number of bytes consumed on success,
324 cfa37a7b 2004-04-10 devnull and \-1 in case of an error.
326 cfa37a7b 2004-04-10 devnull .I Memfillcolor
327 cfa37a7b 2004-04-10 devnull fills an image with the given color, a 32-bit number as
328 cfa37a7b 2004-04-10 devnull described in
329 bf8a59fa 2004-04-11 devnull .IR color (3).
331 cfa37a7b 2004-04-10 devnull .IR Memarc ,
332 cfa37a7b 2004-04-10 devnull .IR mempoly ,
333 cfa37a7b 2004-04-10 devnull .IR memellipse ,
334 cfa37a7b 2004-04-10 devnull .IR memfillpoly ,
335 cfa37a7b 2004-04-10 devnull .IR memimageline ,
337 cfa37a7b 2004-04-10 devnull .I memimagedraw
338 cfa37a7b 2004-04-10 devnull are identical to the
339 cfa37a7b 2004-04-10 devnull .IR arc ,
340 cfa37a7b 2004-04-10 devnull .IR poly ,
341 cfa37a7b 2004-04-10 devnull .IR ellipse ,
342 cfa37a7b 2004-04-10 devnull .IR fillpoly ,
343 cfa37a7b 2004-04-10 devnull .IR line ,
345 cfa37a7b 2004-04-10 devnull .IR gendraw ,
346 cfa37a7b 2004-04-10 devnull routines described in
347 bf8a59fa 2004-04-11 devnull .IR draw (3),
348 cfa37a7b 2004-04-10 devnull except that they operate on
349 cfa37a7b 2004-04-10 devnull .BR Memimage s
350 cfa37a7b 2004-04-10 devnull rather than
351 cfa37a7b 2004-04-10 devnull .BR Image s.
352 cfa37a7b 2004-04-10 devnull Similarly,
353 cfa37a7b 2004-04-10 devnull .IR allocmemsubfont ,
354 cfa37a7b 2004-04-10 devnull .IR openmemsubfont ,
355 cfa37a7b 2004-04-10 devnull .IR freememsubfont ,
356 cfa37a7b 2004-04-10 devnull .IR memsubfontwidth ,
357 cfa37a7b 2004-04-10 devnull .IR getmemdefont ,
359 cfa37a7b 2004-04-10 devnull .I memimagestring
361 cfa37a7b 2004-04-10 devnull .B Memimage
362 cfa37a7b 2004-04-10 devnull analogues of
363 cfa37a7b 2004-04-10 devnull .IR allocsubfont ,
364 cfa37a7b 2004-04-10 devnull .IR openfont ,
365 cfa37a7b 2004-04-10 devnull .IR freesubfont ,
366 cfa37a7b 2004-04-10 devnull .IR strsubfontwidth ,
367 cfa37a7b 2004-04-10 devnull .IR getdefont ,
369 cfa37a7b 2004-04-10 devnull .B string
371 bf8a59fa 2004-04-11 devnull .IR subfont (3)
373 bf8a59fa 2004-04-11 devnull .IR graphics (3)),
374 cfa37a7b 2004-04-10 devnull except that they operate
376 cfa37a7b 2004-04-10 devnull .BR Memsubfont s
377 cfa37a7b 2004-04-10 devnull rather than
378 cfa37a7b 2004-04-10 devnull .BR Font s.
380 cfa37a7b 2004-04-10 devnull .I Drawclip
381 cfa37a7b 2004-04-10 devnull takes the images involved in a draw operation,
382 cfa37a7b 2004-04-10 devnull together with the destination rectangle
384 cfa37a7b 2004-04-10 devnull and source
385 cfa37a7b 2004-04-10 devnull and mask alignment points
388 cfa37a7b 2004-04-10 devnull .BR mp ,
390 cfa37a7b 2004-04-10 devnull clips them according to the clipping rectangles of the images involved.
391 cfa37a7b 2004-04-10 devnull It also fills in the rectangles
395 cfa37a7b 2004-04-10 devnull with rectangles congruent to the returned destination rectangle
396 cfa37a7b 2004-04-10 devnull but translated so the upper left corners are the returned
399 cfa37a7b 2004-04-10 devnull .BR mp .
400 cfa37a7b 2004-04-10 devnull .I Drawclip
401 cfa37a7b 2004-04-10 devnull returns zero when the clipped rectangle is empty.
402 cfa37a7b 2004-04-10 devnull .I Memlinebbox
403 cfa37a7b 2004-04-10 devnull returns a conservative bounding box containing a line between
404 cfa37a7b 2004-04-10 devnull two points
405 cfa37a7b 2004-04-10 devnull with given end styles
406 cfa37a7b 2004-04-10 devnull and radius.
407 cfa37a7b 2004-04-10 devnull .I Memlineendsize
408 cfa37a7b 2004-04-10 devnull calculates the extra length added to a line by attaching
409 cfa37a7b 2004-04-10 devnull an end of a given style.
412 cfa37a7b 2004-04-10 devnull .I hwdraw
414 cfa37a7b 2004-04-10 devnull .I iprint
415 cfa37a7b 2004-04-10 devnull functions are no-op stubs that may be overridden by clients
416 cfa37a7b 2004-04-10 devnull of the library.
417 cfa37a7b 2004-04-10 devnull .I Hwdraw
418 cfa37a7b 2004-04-10 devnull is called at each call to
419 cfa37a7b 2004-04-10 devnull .I memimagedraw
420 cfa37a7b 2004-04-10 devnull with the current request's parameters.
421 cfa37a7b 2004-04-10 devnull If it can satisfy the request, it should do so
422 cfa37a7b 2004-04-10 devnull and return 1.
423 cfa37a7b 2004-04-10 devnull If it cannot satisfy the request, it should return 0.
424 cfa37a7b 2004-04-10 devnull This allows (for instance) the kernel to take advantage
425 cfa37a7b 2004-04-10 devnull of hardware acceleration.
426 cfa37a7b 2004-04-10 devnull .I Iprint
427 cfa37a7b 2004-04-10 devnull should format and print its arguments;
428 cfa37a7b 2004-04-10 devnull it is given much debugging output when
429 cfa37a7b 2004-04-10 devnull the global integer variable
430 cfa37a7b 2004-04-10 devnull .B drawdebug
431 cfa37a7b 2004-04-10 devnull is non-zero.
432 cfa37a7b 2004-04-10 devnull In the kernel,
433 cfa37a7b 2004-04-10 devnull .I iprint
434 cfa37a7b 2004-04-10 devnull prints to a serial line rather than the screen, for obvious reasons.
435 cfa37a7b 2004-04-10 devnull .SH SOURCE
436 c3674de4 2005-01-11 devnull .B \*9/src/libdraw
437 cfa37a7b 2004-04-10 devnull .SH SEE ALSO
438 bf8a59fa 2004-04-11 devnull .IR addpt (3),
439 bf8a59fa 2004-04-11 devnull .IR color (3),
440 bf8a59fa 2004-04-11 devnull .IR draw (3),
441 bf8a59fa 2004-04-11 devnull .IR graphics (3),
442 bf8a59fa 2004-04-11 devnull .IR memlayer (3),
443 bf8a59fa 2004-04-11 devnull .IR stringsize (3),
444 bf8a59fa 2004-04-11 devnull .IR subfont (3),
445 058b0118 2005-01-03 devnull .IR color (7),
446 058b0118 2005-01-03 devnull .IR utf (7)
447 cfa37a7b 2004-04-10 devnull .SH BUGS
448 cfa37a7b 2004-04-10 devnull .I Memimagestring
449 cfa37a7b 2004-04-10 devnull is unusual in using a subfont rather than a font,
450 cfa37a7b 2004-04-10 devnull and in having no parameter to align the source.
452 c8b6342d 2005-01-13 devnull These functions are
453 c8b6342d 2005-01-13 devnull archived into
454 058b0118 2005-01-03 devnull .IR libdraw .