initial commit
[fifth.git] / imageFile / f / lib / 5th_gfx2
1 : lineh ( color len x y imgbuf -- )\r
2 point swap cfill ;\r
3 \r
4 : linev ( color len x y imgbuf -- )\r
5 dup imgsize drop push\r
6 point swap\r
7 do 2dup c! i2 + loop\r
8 2drop pop drop ;\r
9 \r
10 var tmp1 var tmp2 var tmp3 var tmp4\r
11 : box ( color x2 x1 y2 y1 imgbuf  -- )\r
12      push       ( buf  i3 )\r
13 dup  push       ( y1   i2 )\r
14 over tmp1 !     ( y2   1  )\r
15 -    tmp2 !     ( ylen 2  )\r
16 dup  push       ( x1   i  )\r
17 over tmp3 !     ( x2   3  )\r
18 -    tmp4 !     ( xlen 4  )\r
19 \r
20 dup tmp4 @ i      i2     i3 lineh\r
21 dup tmp4 @ 1+ i   tmp1 @ i3 lineh\r
22 dup tmp2 @ i      i2     i3 linev\r
23     tmp2 @ tmp3 @ i2     i3 linev\r
24 pop pop 2drop pop drop ;\r
25 rh tmp1 rh tmp2 rh tmp3 rh tmp4\r
26 \r
27 var flipxs var flipys var fliplb var flipib var flipsa var flipda\r
28 : flipv ( imgbuf -- )\r
29 dup push imgsize over dynal push  ( sizex sizey  R: imgbuf linebuf )\r
30 flipys ! flipxs ! pop fliplb ! pop flipib !\r
31 flipys @ 2 / do\r
32         0 i flipib @ point flipsa !\r
33         0 flipys @ i - 1- flipib @ point flipda !\r
34         flipda @ fliplb @ dynp flipxs @ cmove\r
35         flipsa @ flipda @ flipxs @ cmove\r
36         fliplb @ dynp flipsa @ flipxs @ cmove\r
37 loop ;\r
38 rh flipxs rh flipys rh fliplb rh flipib rh flipsa rh flipda\r
39 \r
40 : imgcoltrans ( ImgBuf Color ToColor -- )\r
41 push push\r
42 dup dynp 8 + swap dyns 8 - do\r
43         dup c@ i2 = if i3 over c! then\r
44         1+\r
45 loop drop pop pop 2drop ;\r
46 \r
47 var imgfillbuf var imgfilld var imgfillc\r
48 : imgfill ( color x y imgbuf -- )\r
49 dup imgfillbuf ! point dup c@ imgfillc ! FE swap c!  ( color )\r
50 until\r
51         imgfilld off\r
52 \r
53         imgfillbuf @ imgsize\r
54         swap 1- swap\r
55         do\r
56                 imgfillbuf @ imgsize drop 1- i imgfillbuf @ point\r
57                 over do\r
58                         dup c@ FE = if\r
59                                 dup 1- c@ imgfillc @ = if\r
60                                         dup 1- FE swap c!\r
61                                         imgfilld on\r
62                                 then\r
63                         then\r
64                         1-\r
65                 loop drop\r
66 \r
67                 0 i imgfillbuf @ point\r
68                 over do\r
69                         dup c@ FE = if\r
70                                 dup 1+ c@ imgfillc @ = if\r
71                                         dup 1+ FE swap c!\r
72                                         imgfilld on\r
73                                 then\r
74                         then\r
75                         1+\r
76                 loop drop\r
77         loop drop\r
78 \r
79         imgfillbuf @ imgsize 1- swap\r
80         do\r
81                 i imgfillbuf @ dup imgsize swap push 1- swap point\r
82                 over do\r
83                         dup c@ FE = if\r
84                                 dup i2 - c@ imgfillc @ = if\r
85                                         dup i2 - FE swap c!\r
86                                         imgfilld on\r
87                                 then\r
88                         then\r
89                         i2 -\r
90                 loop drop\r
91 \r
92 \r
93                 i2 0 imgfillbuf @ point\r
94                 over do\r
95                         dup c@ FE = if\r
96                                 dup i2 + c@ imgfillc @ = if\r
97                                         dup i2 + FE swap c!\r
98                                         imgfilld on\r
99                                 then\r
100                         then\r
101                         i2 +\r
102                 loop pop 2drop\r
103         loop drop\r
104 imgfilld @ if imgfilld off else done then\r
105 loop\r
106 imgfillbuf @ FE rot imgcoltrans ;\r
107 rh imgfillbuf rh imgfilld rh imgfillc\r