Rev 9893 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 9893 | Rev 9902 | ||
---|---|---|---|
Line 24... | Line 24... | ||
24 | 24 | ||
25 | CONST |
25 | CONST |
26 | fileName = "/sys/Icons16.png"; |
26 | fileName = "/sys/Icons16.png"; |
Line -... | Line 27... | ||
- | 27 | SIZE* = 18; |
|
- | 28 | ||
- | 29 | icoNew *= 0; |
|
- | 30 | icoOpen *= 1; |
|
- | 31 | icoSave *= 2; |
|
- | 32 | icoSearch *= 3; |
|
- | 33 | icoUndo *= 4; |
|
- | 34 | icoRedo *= 5; |
|
27 | SIZE* = 18; |
35 | icoBuild *= 6; |
28 | 36 | icoRun *= 7; |
|
Line 29... | Line -... | ||
29 | VAR |
- | |
30 | source: INTEGER; |
- | |
31 | - | ||
32 | (* |
- | |
33 | PROCEDURE copy (src, dst: INTEGER); |
- | |
34 | VAR |
- | |
35 | src_width, src_height, |
- | |
36 | dst_width, dst_height, |
- | |
37 | src_data, dst_data: INTEGER; |
- | |
38 | BEGIN |
- | |
39 | LibImg.GetInf(src, src_width, src_height, src_data); |
- | |
40 | LibImg.GetInf(dst, dst_width, dst_height, dst_data); |
- | |
41 | ASSERT(src_width = dst_width); |
- | |
42 | ASSERT(src_height = dst_height); |
- | |
Line 43... | Line 37... | ||
43 | SYSTEM.MOVE(src_data, dst_data, src_width*src_height*4) |
37 | |
44 | END copy; |
38 | NumberOfIcons = 8; |
45 | *) |
39 | |
Line 46... | Line -... | ||
46 | - | ||
47 | PROCEDURE [stdcall, "libimg.obj", ""] img_decode (data, size, options: INTEGER): INTEGER; END; |
- | |
48 | PROCEDURE [stdcall, "Libimg.obj", ""] img_convert (src, dst, dst_type, flags, param: INTEGER): INTEGER; END; |
- | |
49 | PROCEDURE [stdcall, "Libimg.obj", ""] img_destroy (img: INTEGER); END; |
- | |
50 | - | ||
51 | PROCEDURE GetInf (img: INTEGER; VAR width, height, data: INTEGER); |
- | |
52 | BEGIN |
- | |
Line 53... | Line 40... | ||
53 | SYSTEM.GET(img + 4, width); |
40 | |
54 | SYSTEM.GET(img + 8, height); |
41 | PROCEDURE [stdcall, "libimg.obj", ""] img_decode (data, size, options: INTEGER): INTEGER; END; |
55 | SYSTEM.GET(img + 24, data); |
42 | PROCEDURE [stdcall, "Libimg.obj", ""] img_convert (src, dst, dst_type, flags, param: INTEGER): INTEGER; END; |
56 | END GetInf; |
43 | PROCEDURE [stdcall, "Libimg.obj", ""] img_destroy (img: INTEGER); END; |
Line 88... | Line 75... | ||
88 | RETURN res |
75 | RETURN res |
89 | END load; |
76 | END load; |
Line 90... | Line 77... | ||
90 | 77 | ||
91 | - | ||
92 | PROCEDURE draw* (icons, n, x, y: INTEGER); |
- | |
93 | VAR |
78 | |
94 | width, height, data: INTEGER; |
- | |
95 | BEGIN |
79 | PROCEDURE draw* (icons, n, x, y: INTEGER); |
96 | GetInf(icons, width, height, data); |
80 | BEGIN |
Line -... | Line 81... | ||
- | 81 | KOSAPI.sysfunc7(65, icons + SIZE*SIZE*4*n, SIZE*65536 + SIZE, x*65536 + y, 32, 0, 0) |
|
- | 82 | END draw; |
|
- | 83 | ||
- | 84 | ||
- | 85 | PROCEDURE copy (img: INTEGER; n: INTEGER; dst: INTEGER; m: INTEGER); |
|
- | 86 | VAR |
|
- | 87 | data: INTEGER; |
|
- | 88 | BEGIN |
|
- | 89 | SYSTEM.GET(img + 24, data); |
|
97 | KOSAPI.sysfunc7(65, data + SIZE*SIZE*4*n, SIZE*65536 + SIZE, x*65536 + y, 32, 0, 0) |
90 | SYSTEM.MOVE(data + SIZE*SIZE*4*n, dst + SIZE*SIZE*4*m, SIZE*SIZE*4) |
98 | END draw; |
91 | END copy; |
99 | 92 | ||
100 | 93 | ||
101 | PROCEDURE iconsBackColor (icons: INTEGER; BackColor: INTEGER); |
94 | PROCEDURE iconsBackColor (icons: INTEGER; BackColor: INTEGER); |
102 | VAR |
95 | VAR |
103 | width, height, data, x, y, pix: INTEGER; |
96 | data, x, y, pix: INTEGER; |
104 | b, g, r, gr: BYTE; |
97 | b, g, r, gr: BYTE; |
105 | BEGIN |
98 | BEGIN |
106 | GetInf(icons, width, height, data); |
99 | data := icons; |
107 | FOR y := 0 TO height - 1 DO |
100 | FOR y := 0 TO SIZE*NumberOfIcons - 1 DO |
108 | FOR x := 0 TO width - 1 DO |
101 | FOR x := 0 TO SIZE - 1 DO |
109 | SYSTEM.GET32(data, pix); |
102 | SYSTEM.GET32(data, pix); |
Line 120... | Line 113... | ||
120 | END |
113 | END |
121 | END iconsBackColor; |
114 | END iconsBackColor; |
Line 122... | Line 115... | ||
122 | 115 | ||
- | 116 | ||
- | 117 | PROCEDURE get* (VAR icons, grayIcons: INTEGER; BackColor: INTEGER); |
|
123 | 118 | VAR |
|
124 | PROCEDURE get* (VAR icons, grayIcons: INTEGER; BackColor: INTEGER); |
- | |
125 | BEGIN |
119 | source: INTEGER; |
- | 120 | BEGIN |
|
- | 121 | source := load(); |
|
- | 122 | IF source # 0 THEN |
|
- | 123 | icons := KOSAPI.malloc(SIZE*SIZE*4*NumberOfIcons*2); |
|
126 | IF source = 0 THEN |
124 | grayIcons := icons + SIZE*SIZE*4*NumberOfIcons; |
- | 125 | ||
127 | source := load(); |
126 | copy(source, 2, icons, icoNew); |
- | 127 | copy(source, 0, icons, icoOpen); |
|
- | 128 | copy(source, 5, icons, icoSave); |
|
- | 129 | copy(source, 49, icons, icoSearch); |
|
- | 130 | copy(source, 37, icons, icoUndo); |
|
- | 131 | copy(source, 36, icons, icoRedo); |
|
- | 132 | copy(source, 54, icons, icoBuild); |
|
- | 133 | copy(source, 53, icons, icoRun); |
|
- | 134 | img_destroy(source); |
|
- | 135 | source := 0; |
|
128 | icons := load(); |
136 | SYSTEM.MOVE(icons, grayIcons, SIZE*SIZE*4*NumberOfIcons); |
129 | grayIcons := load(); |
137 | |
130 | iconsBackColor(grayIcons, -1); |
138 | iconsBackColor(grayIcons, -1); |
131 | iconsBackColor(grayIcons, BackColor); |
- | |
132 | iconsBackColor(icons, BackColor) |
- | |
133 | (*ELSE |
- | |
134 | copy(source, icons); |
139 | iconsBackColor(grayIcons, BackColor); |
135 | copy(source, grayIcons)*) |
140 | iconsBackColor(icons, BackColor) |
Line 136... | Line -... | ||
136 | END |
- | |
137 | END get; |
- | |
138 | - | ||
139 | 141 | END |
|
140 | BEGIN |
142 | END get; |