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 d32deab1 2020-08-16 rsc .MR 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 977b25a7 2020-08-14 rsc library is the basis for the kernel
179 d32deab1 2020-08-16 rsc .MR 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 977b25a7 2020-08-14 rsc The
184 977b25a7 2020-08-14 rsc .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 977b25a7 2020-08-14 rsc .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 977b25a7 2020-08-14 rsc 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 977b25a7 2020-08-14 rsc 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 977b25a7 2020-08-14 rsc 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 977b25a7 2020-08-14 rsc 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 977b25a7 2020-08-14 rsc Each
220 cfa37a7b 2004-04-10 devnull .B Memimage
221 977b25a7 2020-08-14 rsc 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 977b25a7 2020-08-14 rsc 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 977b25a7 2020-08-14 rsc 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 977b25a7 2020-08-14 rsc Plan 9's
236 977b25a7 2020-08-14 rsc .IR pool (3))
237 cfa37a7b 2004-04-10 devnull can compact image memory
238 cfa37a7b 2004-04-10 devnull using
239 cfa37a7b 2004-04-10 devnull .IR memimagemove .
240 cfa37a7b 2004-04-10 devnull .PP
241 cfa37a7b 2004-04-10 devnull Because images can have different coordinate systems,
242 977b25a7 2020-08-14 rsc the
243 cfa37a7b 2004-04-10 devnull .B zero
244 977b25a7 2020-08-14 rsc 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
247 977b25a7 2020-08-14 rsc to the
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).
252 cfa37a7b 2004-04-10 devnull Adding
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.
256 cfa37a7b 2004-04-10 devnull The
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
264 cfa37a7b 2004-04-10 devnull and
265 977b25a7 2020-08-14 rsc .IR byteaddr
266 977b25a7 2020-08-14 rsc 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.
269 cfa37a7b 2004-04-10 devnull .PP
270 cfa37a7b 2004-04-10 devnull .I Allocmemimage
271 977b25a7 2020-08-14 rsc allocates
272 cfa37a7b 2004-04-10 devnull images with a given rectangle and channel descriptor
273 977b25a7 2020-08-14 rsc (see
274 cfa37a7b 2004-04-10 devnull .B strtochan
275 cfa37a7b 2004-04-10 devnull in
276 d32deab1 2020-08-16 rsc .MR 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.
284 cfa37a7b 2004-04-10 devnull The
285 cfa37a7b 2004-04-10 devnull .I readmemimage
286 977b25a7 2020-08-14 rsc function reads an uncompressed bitmap
287 cfa37a7b 2004-04-10 devnull from the given file descriptor,
288 cfa37a7b 2004-04-10 devnull while
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
293 cfa37a7b 2004-04-10 devnull .I i
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 d32deab1 2020-08-16 rsc .MR image (7) .
298 cfa37a7b 2004-04-10 devnull .I Freememimage
299 cfa37a7b 2004-04-10 devnull frees images returned by any of these routines.
300 cfa37a7b 2004-04-10 devnull The
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
306 cfa37a7b 2004-04-10 devnull .B chan
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.
309 cfa37a7b 2004-04-10 devnull .PP
310 cfa37a7b 2004-04-10 devnull .I Loadmemimage
311 cfa37a7b 2004-04-10 devnull and
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 977b25a7 2020-08-14 rsc 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.
325 cfa37a7b 2004-04-10 devnull .PP
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 977b25a7 2020-08-14 rsc described in
329 d32deab1 2020-08-16 rsc .MR color (3) .
330 cfa37a7b 2004-04-10 devnull .PP
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 ,
336 cfa37a7b 2004-04-10 devnull and
337 cfa37a7b 2004-04-10 devnull .I memimagedraw
338 977b25a7 2020-08-14 rsc 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 ,
344 cfa37a7b 2004-04-10 devnull and
345 cfa37a7b 2004-04-10 devnull .IR gendraw ,
346 cfa37a7b 2004-04-10 devnull routines described in
347 d32deab1 2020-08-16 rsc .MR draw (3) ,
348 cfa37a7b 2004-04-10 devnull except that they operate on
349 cfa37a7b 2004-04-10 devnull .BR Memimage s
350 977b25a7 2020-08-14 rsc rather than
351 cfa37a7b 2004-04-10 devnull .BR Image s.
352 977b25a7 2020-08-14 rsc 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 and
358 cfa37a7b 2004-04-10 devnull .I memimagestring
359 977b25a7 2020-08-14 rsc are the
360 cfa37a7b 2004-04-10 devnull .B Memimage
361 977b25a7 2020-08-14 rsc analogues of
362 cfa37a7b 2004-04-10 devnull .IR allocsubfont ,
363 cfa37a7b 2004-04-10 devnull .IR openfont ,
364 cfa37a7b 2004-04-10 devnull .IR freesubfont ,
365 cfa37a7b 2004-04-10 devnull .IR strsubfontwidth ,
366 cfa37a7b 2004-04-10 devnull and
367 cfa37a7b 2004-04-10 devnull .B string
368 977b25a7 2020-08-14 rsc (see
369 d32deab1 2020-08-16 rsc .MR subfont (3)
370 cfa37a7b 2004-04-10 devnull and
371 d32deab1 2020-08-16 rsc .MR graphics (3) ),
372 cfa37a7b 2004-04-10 devnull except that they operate
373 977b25a7 2020-08-14 rsc only on
374 cfa37a7b 2004-04-10 devnull .BR Memsubfont s
375 cfa37a7b 2004-04-10 devnull rather than
376 cfa37a7b 2004-04-10 devnull .BR Font s.
377 cfa37a7b 2004-04-10 devnull .PP
378 cfa37a7b 2004-04-10 devnull .I Drawclip
379 cfa37a7b 2004-04-10 devnull takes the images involved in a draw operation,
380 977b25a7 2020-08-14 rsc together with the destination rectangle
381 cfa37a7b 2004-04-10 devnull .B dr
382 cfa37a7b 2004-04-10 devnull and source
383 cfa37a7b 2004-04-10 devnull and mask alignment points
384 cfa37a7b 2004-04-10 devnull .B sp
385 cfa37a7b 2004-04-10 devnull and
386 cfa37a7b 2004-04-10 devnull .BR mp ,
387 cfa37a7b 2004-04-10 devnull and
388 cfa37a7b 2004-04-10 devnull clips them according to the clipping rectangles of the images involved.
389 cfa37a7b 2004-04-10 devnull It also fills in the rectangles
390 cfa37a7b 2004-04-10 devnull .B sr
391 cfa37a7b 2004-04-10 devnull and
392 cfa37a7b 2004-04-10 devnull .B mr
393 cfa37a7b 2004-04-10 devnull with rectangles congruent to the returned destination rectangle
394 cfa37a7b 2004-04-10 devnull but translated so the upper left corners are the returned
395 cfa37a7b 2004-04-10 devnull .B sp
396 cfa37a7b 2004-04-10 devnull and
397 cfa37a7b 2004-04-10 devnull .BR mp .
398 cfa37a7b 2004-04-10 devnull .I Drawclip
399 cfa37a7b 2004-04-10 devnull returns zero when the clipped rectangle is empty.
400 cfa37a7b 2004-04-10 devnull .I Memlinebbox
401 cfa37a7b 2004-04-10 devnull returns a conservative bounding box containing a line between
402 cfa37a7b 2004-04-10 devnull two points
403 cfa37a7b 2004-04-10 devnull with given end styles
404 cfa37a7b 2004-04-10 devnull and radius.
405 cfa37a7b 2004-04-10 devnull .I Memlineendsize
406 cfa37a7b 2004-04-10 devnull calculates the extra length added to a line by attaching
407 cfa37a7b 2004-04-10 devnull an end of a given style.
408 cfa37a7b 2004-04-10 devnull .PP
409 cfa37a7b 2004-04-10 devnull The
410 cfa37a7b 2004-04-10 devnull .I hwdraw
411 977b25a7 2020-08-14 rsc and
412 cfa37a7b 2004-04-10 devnull .I iprint
413 cfa37a7b 2004-04-10 devnull functions are no-op stubs that may be overridden by clients
414 cfa37a7b 2004-04-10 devnull of the library.
415 cfa37a7b 2004-04-10 devnull .I Hwdraw
416 cfa37a7b 2004-04-10 devnull is called at each call to
417 cfa37a7b 2004-04-10 devnull .I memimagedraw
418 cfa37a7b 2004-04-10 devnull with the current request's parameters.
419 977b25a7 2020-08-14 rsc If it can satisfy the request, it should do so
420 cfa37a7b 2004-04-10 devnull and return 1.
421 cfa37a7b 2004-04-10 devnull If it cannot satisfy the request, it should return 0.
422 cfa37a7b 2004-04-10 devnull This allows (for instance) the kernel to take advantage
423 cfa37a7b 2004-04-10 devnull of hardware acceleration.
424 cfa37a7b 2004-04-10 devnull .I Iprint
425 cfa37a7b 2004-04-10 devnull should format and print its arguments;
426 cfa37a7b 2004-04-10 devnull it is given much debugging output when
427 cfa37a7b 2004-04-10 devnull the global integer variable
428 cfa37a7b 2004-04-10 devnull .B drawdebug
429 cfa37a7b 2004-04-10 devnull is non-zero.
430 cfa37a7b 2004-04-10 devnull In the kernel,
431 cfa37a7b 2004-04-10 devnull .I iprint
432 cfa37a7b 2004-04-10 devnull prints to a serial line rather than the screen, for obvious reasons.
433 cfa37a7b 2004-04-10 devnull .SH SOURCE
434 57a2289b 2006-06-25 devnull .B \*9/src/libmemdraw
435 cfa37a7b 2004-04-10 devnull .SH SEE ALSO
436 d32deab1 2020-08-16 rsc .MR addpt (3) ,
437 d32deab1 2020-08-16 rsc .MR color (3) ,
438 d32deab1 2020-08-16 rsc .MR draw (3) ,
439 d32deab1 2020-08-16 rsc .MR graphics (3) ,
440 d32deab1 2020-08-16 rsc .MR memlayer (3) ,
441 d32deab1 2020-08-16 rsc .MR stringsize (3) ,
442 d32deab1 2020-08-16 rsc .MR subfont (3) ,
443 d32deab1 2020-08-16 rsc .MR color (7) ,
444 d32deab1 2020-08-16 rsc .MR utf (7)
445 cfa37a7b 2004-04-10 devnull .SH BUGS
446 cfa37a7b 2004-04-10 devnull .I Memimagestring
447 cfa37a7b 2004-04-10 devnull is unusual in using a subfont rather than a font,
448 cfa37a7b 2004-04-10 devnull and in having no parameter to align the source.