Blame


1 28994509 2004-04-21 devnull #include <u.h>
2 28994509 2004-04-21 devnull #include <libc.h>
3 28994509 2004-04-21 devnull #include <draw.h>
4 28994509 2004-04-21 devnull #include <memdraw.h>
5 28994509 2004-04-21 devnull #include <bio.h>
6 28994509 2004-04-21 devnull #include "imagefile.h"
7 28994509 2004-04-21 devnull
8 28994509 2004-04-21 devnull /* Separate colors, if not a grey scale or bitmap, into one byte per color per pixel, no alpha or X */
9 28994509 2004-04-21 devnull /* Result is GREY[1248] or RGB24 */
10 28994509 2004-04-21 devnull
11 28994509 2004-04-21 devnull int drawlog2[] = {
12 28994509 2004-04-21 devnull 0, 0, 1, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,
13 28994509 2004-04-21 devnull 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
14 28994509 2004-04-21 devnull 5
15 28994509 2004-04-21 devnull };
16 28994509 2004-04-21 devnull
17 28994509 2004-04-21 devnull static
18 28994509 2004-04-21 devnull int
19 28994509 2004-04-21 devnull notrans(ulong chan)
20 28994509 2004-04-21 devnull {
21 28994509 2004-04-21 devnull switch(chan){
22 28994509 2004-04-21 devnull case GREY1:
23 28994509 2004-04-21 devnull case GREY2:
24 28994509 2004-04-21 devnull case GREY4:
25 28994509 2004-04-21 devnull case GREY8:
26 28994509 2004-04-21 devnull case RGB24:
27 28994509 2004-04-21 devnull return 1;
28 28994509 2004-04-21 devnull }
29 28994509 2004-04-21 devnull return 0;
30 28994509 2004-04-21 devnull }
31 28994509 2004-04-21 devnull
32 28994509 2004-04-21 devnull Image*
33 28994509 2004-04-21 devnull multichan(Image *i)
34 28994509 2004-04-21 devnull {
35 28994509 2004-04-21 devnull Image *ni;
36 28994509 2004-04-21 devnull
37 28994509 2004-04-21 devnull if(notrans(i->chan))
38 28994509 2004-04-21 devnull return i;
39 28994509 2004-04-21 devnull
40 28994509 2004-04-21 devnull ni = allocimage(display, i->r, RGB24, 0, DNofill);
41 28994509 2004-04-21 devnull if(ni == nil)
42 28994509 2004-04-21 devnull return ni;
43 28994509 2004-04-21 devnull draw(ni, ni->r, i, nil, i->r.min);
44 28994509 2004-04-21 devnull return ni;
45 28994509 2004-04-21 devnull }
46 28994509 2004-04-21 devnull
47 28994509 2004-04-21 devnull Memimage*
48 28994509 2004-04-21 devnull memmultichan(Memimage *i)
49 28994509 2004-04-21 devnull {
50 28994509 2004-04-21 devnull Memimage *ni;
51 28994509 2004-04-21 devnull
52 28994509 2004-04-21 devnull if(notrans(i->chan))
53 28994509 2004-04-21 devnull return i;
54 28994509 2004-04-21 devnull
55 28994509 2004-04-21 devnull ni = allocmemimage(i->r, RGB24);
56 28994509 2004-04-21 devnull if(ni == nil)
57 28994509 2004-04-21 devnull return ni;
58 28994509 2004-04-21 devnull memimagedraw(ni, ni->r, i, i->r.min, nil, i->r.min, S);
59 28994509 2004-04-21 devnull return ni;
60 28994509 2004-04-21 devnull }