Rev 7151 | Rev 7154 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 7151 | Rev 7152 | ||
---|---|---|---|
1 | /* |
1 | /* |
2 | * BACKGEN - Background generator |
2 | * BACKGEN - Background generator |
3 | * Author: Leency |
3 | * Author: Leency |
4 | * Licence: GPL v2 |
4 | * Licence: GPL v2 |
5 | */ |
5 | */ |
6 | 6 | ||
7 | /* |
7 | /* |
8 | TODO/BUGS |
8 | TODO/BUGS |
9 | Flip first pixel doesn't work well |
9 | Flip first pixel doesn't work well |
10 | Open with param |
10 | Open with param |
11 | Set minimal window size |
- | |
12 | Scroll mouse, +/- keyboard |
- | |
13 | */ |
11 | */ |
14 | 12 | ||
15 | #define MEMSIZE 4096*40 |
13 | #define MEMSIZE 4096*40 |
16 | 14 | ||
17 | #include "../lib/gui.h" |
15 | #include "../lib/gui.h" |
18 | #include "../lib/random.h" |
16 | #include "../lib/random.h" |
19 | #include "../lib/mem.h" |
17 | #include "../lib/mem.h" |
20 | #include "../lib/obj/libimg.h" |
18 | #include "../lib/obj/libimg.h" |
21 | #include "../lib/patterns/rgb.h" |
19 | #include "../lib/patterns/rgb.h" |
22 | #include "../lib/patterns/libimg_load_skin.h" |
20 | #include "../lib/patterns/libimg_load_skin.h" |
23 | 21 | ||
24 | #include "colors_mas.h" |
22 | #include "colors_mas.h" |
25 | 23 | ||
26 | //===================================================// |
24 | //===================================================// |
27 | // // |
25 | // // |
28 | // DATA // |
26 | // DATA // |
29 | // // |
27 | // // |
30 | //===================================================// |
28 | //===================================================// |
31 | 29 | ||
32 | #define T_TITLE "Icon Editor 0.08" |
30 | #define T_TITLE "Icon Editor 0.09" |
33 | 31 | ||
34 | #define TOOLBAR_H 24+9 |
32 | #define TOOLBAR_H 24+8 |
35 | #define PALLETE_SIZE 116 |
33 | #define PALLETE_SIZE 116 |
36 | 34 | ||
37 | rect wrapper = { 10, TOOLBAR_H, NULL, NULL }; |
35 | rect wrapper = { 10, TOOLBAR_H, NULL, NULL }; |
38 | rect right_bar = { NULL, TOOLBAR_H, 280, NULL }; |
36 | rect right_bar = { NULL, TOOLBAR_H, 280, NULL }; |
39 | rect canvas = { NULL, NULL, NULL, NULL }; |
37 | rect canvas = { NULL, NULL, NULL, NULL }; |
40 | 38 | ||
41 | dword active_color_1 = 0x000000; |
39 | dword active_color_1 = 0x000000; |
42 | dword active_color_2 = 0xFFFfff; |
40 | dword active_color_2 = 0xFFFfff; |
43 | 41 | ||
44 | enum { |
42 | enum { |
45 | BTN_NEW = 40, |
43 | BTN_NEW = 40, |
46 | BTN_OPEN, |
44 | BTN_OPEN, |
47 | BTN_SAVE, |
45 | BTN_SAVE, |
48 | BTN_MOVE_LEFT, |
46 | BTN_MOVE_LEFT, |
49 | BTN_MOVE_RIGHT, |
47 | BTN_MOVE_RIGHT, |
50 | BTN_MOVE_UP, |
48 | BTN_MOVE_UP, |
51 | BTN_MOVE_DOWN, |
49 | BTN_MOVE_DOWN, |
52 | BTN_FLIP_HOR, |
50 | BTN_FLIP_HOR, |
53 | BTN_FLIP_VER, |
51 | BTN_FLIP_VER, |
54 | BTN_ROTATE_LEFT, |
52 | BTN_ROTATE_LEFT, |
55 | BTN_ROTATE_RIGHT, |
53 | BTN_ROTATE_RIGHT, |
56 | BTN_PICK, |
54 | BTN_PICK, |
- | 55 | BTN_ZOOM_IN, |
|
- | 56 | BTN_ZOOM_OUT, |
|
57 | BTN_PALETTE_COLOR_MAS = 100, |
57 | BTN_PALETTE_COLOR_MAS = 100, |
58 | }; |
58 | }; |
59 | 59 | ||
60 | proc_info Form; |
60 | proc_info Form; |
61 | 61 | ||
62 | bool pick_active = false; |
62 | bool pick_active = false; |
63 | - | ||
64 | #define ZOOM_IN 22 |
- | |
65 | #define ZOOM_OUT 23 |
63 | |
66 | more_less_box zoom = { NULL, NULL, 11, 1, 40, ZOOM_IN, ZOOM_OUT, "Zoom" }; |
64 | more_less_box zoom = { NULL, NULL, 11, 1, 40, BTN_ZOOM_IN, BTN_ZOOM_OUT, "Zoom" }; |
67 | 65 | ||
68 | dword palette_colors[] = { |
66 | dword default_palette[] = { |
69 | 0x330000,0x331900,0x333300,0x193300,0x003300,0x003319,0x003333,0x001933,0x000033,0x190033,0x330033,0x330019,0x000000, |
67 | 0x330000,0x331900,0x333300,0x193300,0x003300,0x003319,0x003333,0x001933,0x000033,0x190033,0x330033,0x330019,0x000000, |
70 | 0x660000,0x663300,0x666600,0x336600,0x006600,0x006633,0x006666,0x003366,0x000066,0x330066,0x660066,0x660033,0x202020, |
68 | 0x660000,0x663300,0x666600,0x336600,0x006600,0x006633,0x006666,0x003366,0x000066,0x330066,0x660066,0x660033,0x202020, |
71 | 0x990000,0x994C00,0x999900,0x4C9900,0x009900,0x00994C,0x009999,0x004C99,0x000099,0x4C0099,0x990099,0x99004C,0x404040, |
69 | 0x990000,0x994C00,0x999900,0x4C9900,0x009900,0x00994C,0x009999,0x004C99,0x000099,0x4C0099,0x990099,0x99004C,0x404040, |
72 | 0xCC0000,0xCC6600,0xCCCC00,0x66CC00,0x00CC00,0x00CC66,0x00CCCC,0x0066CC,0x0000CC,0x6600CC,0xCC00CC,0xCC0066,0x606060, |
70 | 0xCC0000,0xCC6600,0xCCCC00,0x66CC00,0x00CC00,0x00CC66,0x00CCCC,0x0066CC,0x0000CC,0x6600CC,0xCC00CC,0xCC0066,0x606060, |
73 | 0xFF0000,0xFF8000,0xFFFF00,0x80FF00,0x00FF00,0x00FF80,0x00FFFF,0x0080FF,0x0000FF,0x7F00FF,0xFF00FF,0xFF007F,0x808080, |
71 | 0xFF0000,0xFF8000,0xFFFF00,0x80FF00,0x00FF00,0x00FF80,0x00FFFF,0x0080FF,0x0000FF,0x7F00FF,0xFF00FF,0xFF007F,0x808080, |
74 | 0xFF3333,0xFF9933,0xFFFF33,0x99FF33,0x33FF33,0x33FF99,0x33FFFF,0x3399FF,0x3333FF,0x9933FF,0xFF33FF,0xFF3399,0xA0A0A0, |
72 | 0xFF3333,0xFF9933,0xFFFF33,0x99FF33,0x33FF33,0x33FF99,0x33FFFF,0x3399FF,0x3333FF,0x9933FF,0xFF33FF,0xFF3399,0xA0A0A0, |
75 | 0xFF6666,0xFFB266,0xFFFF66,0xB2FF66,0x66FF66,0x66FFB2,0x66FFFF,0x66B2FF,0x6666FF,0xB266FF,0xFF66FF,0xFF66B2,0xC0C0C0, |
73 | 0xFF6666,0xFFB266,0xFFFF66,0xB2FF66,0x66FF66,0x66FFB2,0x66FFFF,0x66B2FF,0x6666FF,0xB266FF,0xFF66FF,0xFF66B2,0xC0C0C0, |
76 | 0xFF9999,0xFFCC99,0xFFFF99,0xCCFF99,0x99FF99,0x99FFCC,0x99FFFF,0x99CCFF,0x9999FF,0xCC99FF,0xFF99FF,0xFF99CC,0xE0E0E0, |
74 | 0xFF9999,0xFFCC99,0xFFFF99,0xCCFF99,0x99FF99,0x99FFCC,0x99FFFF,0x99CCFF,0x9999FF,0xCC99FF,0xFF99FF,0xFF99CC,0xE0E0E0, |
77 | 0xFFCCCC,0xFFE5CC,0xFFFFCC,0xE5FFCC,0xCCFFCC,0xCCFFE5,0xCCFFFF,0xCCE5FF,0xCCCCFF,0xE5CCFF,0xFFCCFF,0xFFCCE5,0xFFFFFF |
75 | 0xFFCCCC,0xFFE5CC,0xFFFFCC,0xE5FFCC,0xCCFFCC,0xCCFFE5,0xCCFFFF,0xCCE5FF,0xCCCCFF,0xE5CCFF,0xFFCCFF,0xFFCCE5,0xFFFFFF |
78 | }; |
76 | }; |
79 | 77 | ||
80 | _colors image; |
78 | _colors image; |
81 | 79 | ||
82 | libimg_image open_image; |
80 | libimg_image open_image; |
83 | 81 | ||
84 | //===================================================// |
82 | //===================================================// |
85 | // // |
83 | // // |
86 | // CODE // |
84 | // CODE // |
87 | // // |
85 | // // |
88 | //===================================================// |
86 | //===================================================// |
89 | 87 | ||
90 | void main() |
88 | void main() |
91 | { |
89 | { |
92 | word btn; |
90 | word btn; |
93 | 91 | ||
94 | load_dll(libio, #libio_init, 1); |
92 | load_dll(libio, #libio_init, 1); |
95 | load_dll(libimg, #libimg_init, 1); |
93 | load_dll(libimg, #libimg_init, 1); |
96 | Libimg_LoadImage(#skin, "/sys/icons16.png"); |
94 | Libimg_LoadImage(#skin, "/sys/icons16.png"); |
- | 95 | //Libimg_ReplaceColor(skin.image, skin.w, skin.h, 0xFFfffFFF, 0xff808080); |
|
97 | 96 | ||
98 | CreateCanvas(); |
97 | CreateCanvas(); |
99 | 98 | ||
100 | /* |
99 | /* |
101 | if (param) { |
100 | if (param) { |
102 | Libimg_LoadImage(#open_image, #param); |
101 | Libimg_LoadImage(#open_image, #param); |
103 | if (open_image.w==32) && (open_image.h==32) { |
102 | if (open_image.w==32) && (open_image.h==32) { |
104 | memmov(#image.mas, open_image.image, 32*32*3); |
103 | memmov(#image.mas, open_image.image, 32*32*3); |
105 | } |
104 | } |
106 | else { |
105 | else { |
107 | notify("'Error: image format is unacceptable.\nOnly images created in IconEditor (BMP, 32x32x16b) can be opened!' -E"); |
106 | notify("'Error: image format is unacceptable.\nOnly images created in IconEditor (BMP, 32x32x16b) can be opened!' -E"); |
108 | } |
107 | } |
109 | } |
108 | } |
110 | */ |
109 | */ |
111 | 110 | ||
112 | SetEventMask(EVM_REDRAW+EVM_KEY+EVM_BUTTON+EVM_MOUSE+EVM_MOUSE_FILTER); |
111 | SetEventMask(EVM_REDRAW+EVM_KEY+EVM_BUTTON+EVM_MOUSE+EVM_MOUSE_FILTER); |
113 | 112 | ||
114 | loop() switch(WaitEvent()) |
113 | loop() switch(WaitEvent()) |
115 | { |
114 | { |
116 | case evMouse: |
115 | case evMouse: |
117 | mouse.get(); |
116 | mouse.get(); |
118 | if (pick_active) EventPickColor(mouse.lkm, mouse.pkm); |
117 | if (pick_active) EventPickColor(mouse.lkm, mouse.pkm); |
- | 118 | else if (mouse.vert) { |
|
- | 119 | if (mouse.vert==65535) zoom.click(BTN_ZOOM_IN); |
|
- | 120 | if (mouse.vert==1) zoom.click(BTN_ZOOM_OUT); |
|
- | 121 | DrawEditArea(); |
|
- | 122 | } |
|
119 | else { |
123 | else { |
120 | if (mouse.x>canvas.x) && (mouse.y>canvas.y) |
124 | if (mouse.x>canvas.x) && (mouse.y>canvas.y) |
121 | && (mouse.y |
125 | && (mouse.y |
122 | { |
126 | { |
123 | if (mouse.lkm) image.set_pixel(mouse.y-canvas.y/zoom.value, |
127 | if (mouse.lkm) image.set_pixel(mouse.y-canvas.y/zoom.value, |
124 | mouse.x-canvas.x/zoom.value, active_color_1); |
128 | mouse.x-canvas.x/zoom.value, active_color_1); |
125 | if (mouse.pkm) image.set_pixel(mouse.y-canvas.y/zoom.value, |
129 | if (mouse.pkm) image.set_pixel(mouse.y-canvas.y/zoom.value, |
126 | mouse.x-canvas.x/zoom.value, active_color_2); |
130 | mouse.x-canvas.x/zoom.value, active_color_2); |
127 | DrawCanvas(); |
131 | DrawCanvas(); |
128 | } |
132 | } |
129 | } |
133 | } |
130 | break; |
134 | break; |
131 | 135 | ||
132 | case evButton: |
136 | case evButton: |
133 | btn = GetButtonID(); |
137 | btn = GetButtonID(); |
134 | switch(btn) |
138 | switch(btn) |
135 | { |
139 | { |
136 | case BTN_NEW: |
140 | case BTN_NEW: |
137 | CreateCanvas(); |
141 | CreateCanvas(); |
138 | DrawCanvas(); |
142 | DrawCanvas(); |
139 | break; |
143 | break; |
140 | case BTN_OPEN: |
144 | case BTN_OPEN: |
141 | RunProgram("/sys/lod", sprintf(#param, "*bmp* %s",#program_path)); |
145 | RunProgram("/sys/lod", sprintf(#param, "*bmp* %s",#program_path)); |
142 | break; |
146 | break; |
143 | case BTN_SAVE: |
147 | case BTN_SAVE: |
144 | EventSave(); |
148 | EventSave(); |
145 | break; |
149 | break; |
146 | case BTN_MOVE_LEFT: |
150 | case BTN_MOVE_LEFT: |
147 | image.move(MOVE_LEFT); |
151 | image.move(MOVE_LEFT); |
148 | DrawCanvas(); |
152 | DrawCanvas(); |
149 | break; |
153 | break; |
150 | case BTN_MOVE_RIGHT: |
154 | case BTN_MOVE_RIGHT: |
151 | image.move(MOVE_RIGHT); |
155 | image.move(MOVE_RIGHT); |
152 | DrawCanvas(); |
156 | DrawCanvas(); |
153 | break; |
157 | break; |
154 | case BTN_MOVE_UP: |
158 | case BTN_MOVE_UP: |
155 | image.move(MOVE_UP); |
159 | image.move(MOVE_UP); |
156 | DrawCanvas(); |
160 | DrawCanvas(); |
157 | break; |
161 | break; |
158 | case BTN_MOVE_DOWN: |
162 | case BTN_MOVE_DOWN: |
159 | image.move(MOVE_DOWN); |
163 | image.move(MOVE_DOWN); |
160 | DrawCanvas(); |
164 | DrawCanvas(); |
161 | break; |
165 | break; |
162 | case BTN_FLIP_VER: |
166 | case BTN_FLIP_VER: |
163 | image.move(FLIP_VER); |
167 | image.move(FLIP_VER); |
164 | DrawCanvas(); |
168 | DrawCanvas(); |
165 | break; |
169 | break; |
166 | case BTN_FLIP_HOR: |
170 | case BTN_FLIP_HOR: |
167 | image.move(FLIP_HOR); |
171 | image.move(FLIP_HOR); |
168 | DrawCanvas(); |
172 | DrawCanvas(); |
169 | break; |
173 | break; |
170 | case CLOSE_BTN: |
- | |
171 | ExitProcess(); |
- | |
172 | case BTN_PICK: |
174 | case BTN_PICK: |
173 | EventPickActivate(); |
175 | EventPickActivate(); |
174 | break; |
176 | break; |
- | 177 | case BTN_ZOOM_IN: |
|
- | 178 | case BTN_ZOOM_OUT: |
|
- | 179 | zoom.click(btn); |
|
- | 180 | DrawEditArea(); |
|
- | 181 | break; |
|
- | 182 | case CLOSE_BTN: |
|
- | 183 | ExitProcess(); |
|
- | 184 | break; |
|
175 | } |
185 | } |
176 | if (btn >= BTN_PALETTE_COLOR_MAS) && (btn < BTN_PALETTE_COLOR_MAS+PALLETE_SIZE) |
186 | if (btn >= BTN_PALETTE_COLOR_MAS) && (btn < BTN_PALETTE_COLOR_MAS+PALLETE_SIZE) |
177 | { |
187 | { |
178 | if (mouse.lkm) active_color_1 = palette_colors[btn-BTN_PALETTE_COLOR_MAS]; |
188 | if (mouse.lkm) active_color_1 = default_palette[btn-BTN_PALETTE_COLOR_MAS]; |
179 | if (mouse.pkm) active_color_2 = palette_colors[btn-BTN_PALETTE_COLOR_MAS]; |
189 | if (mouse.pkm) active_color_2 = default_palette[btn-BTN_PALETTE_COLOR_MAS]; |
180 | DrawActiveColor(NULL); |
190 | DrawActiveColor(NULL); |
181 | } |
191 | } |
182 | if (zoom.click(btn)) DrawEditArea(); |
- | |
183 | break; |
192 | break; |
184 | 193 | ||
185 | case evKey: |
194 | case evKey: |
186 | GetKeys(); |
195 | GetKeys(); |
187 | if (key_scancode == SCAN_CODE_ESC) pick_active=false; |
196 | if (key_scancode == SCAN_CODE_ESC) pick_active=false; |
188 | if (key_scancode == SCAN_CODE_KEY_I) EventPickActivate(); |
197 | if (key_scancode == SCAN_CODE_KEY_I) EventPickActivate(); |
- | 198 | if (key_scancode == SCAN_CODE_MINUS) {zoom.click(BTN_ZOOM_OUT); DrawEditArea();} |
|
- | 199 | if (key_scancode == SCAN_CODE_PLUS) {zoom.click(BTN_ZOOM_IN); DrawEditArea();} |
|
189 | break; |
200 | break; |
190 | 201 | ||
191 | case evReDraw: |
202 | case evReDraw: |
192 | draw_window(); |
203 | draw_window(); |
193 | break; |
204 | break; |
194 | } |
205 | } |
195 | } |
206 | } |
196 | 207 | ||
197 | void DrawToolbarButton(dword _id, _x, _icon_n) |
208 | void DrawToolbarButton(dword _id, _x, _icon_n) |
198 | { |
209 | { |
199 | DrawWideRectangle(_x, 4, 24, 24, 4, 0xFFFfff); |
210 | DrawWideRectangle(_x, 4, 22, 22, 3, 0xFFFfff); |
200 | DefineHiddenButton(_x, 4, 23, 23, _id); |
211 | DefineHiddenButton(_x, 4, 21, 21, _id); |
201 | img_draw stdcall(skin.image, _x+4, 8, 16, 16, 0, _icon_n*16); |
212 | img_draw stdcall(skin.image, _x+3, 7, 16, 16, 0, _icon_n*16); |
202 | } |
213 | } |
203 | 214 | ||
204 | void DrawStatusBar() |
215 | void DrawStatusBar() |
205 | { |
216 | { |
206 | zoom.y = wrapper.y + wrapper.h + 6; |
217 | zoom.y = wrapper.y + wrapper.h + 6; |
207 | zoom.x = wrapper.x; |
218 | zoom.x = wrapper.x; |
208 | zoom.draw(); |
219 | zoom.draw(); |
209 | 220 | ||
210 | sprintf(#param,"Canvas: %ix%i", image.rows, image.columns); |
221 | sprintf(#param,"Canvas: %ix%i", image.rows, image.columns); |
211 | WriteText(wrapper.x+wrapper.w-calc(strlen(#param)*8), zoom.y+2, 0x90, system.color.work_text, #param); |
222 | WriteText(wrapper.x+wrapper.w-calc(strlen(#param)*8), zoom.y+2, 0x90, system.color.work_text, #param); |
212 | } |
223 | } |
213 | 224 | ||
214 | void draw_window() |
225 | void draw_window() |
215 | { |
226 | { |
216 | #define TB_ICON_PADDING 26 |
227 | #define TB_ICON_PADDING 26 |
217 | incn tx; |
228 | incn tx; |
218 | system.color.get(); |
229 | system.color.get(); |
219 | DefineAndDrawWindow(115+random(100), 50+random(100), 700, 540, 0x33, system.color.work, T_TITLE, 0); |
230 | DefineAndDrawWindow(115+random(100), 50+random(100), 700, 540, 0x33, system.color.work, T_TITLE, 0); |
220 | GetProcessInfo(#Form, SelfInfo); |
231 | GetProcessInfo(#Form, SelfInfo); |
- | 232 | if (Form.status_window>2) return; |
|
- | 233 | if (Form.width < 560) { MoveSize(OLD,OLD,560,OLD); return; } |
|
- | 234 | if (Form.height < 430) { MoveSize(OLD,OLD,OLD,430); return; } |
|
- | 235 | ||
221 | right_bar.x = Form.cwidth - right_bar.w; |
236 | right_bar.x = Form.cwidth - right_bar.w; |
222 | 237 | ||
223 | tx.n = wrapper.x - TB_ICON_PADDING; |
238 | tx.n = wrapper.x - TB_ICON_PADDING; |
224 | DrawToolbarButton(BTN_NEW, tx.inc(TB_ICON_PADDING), 2); //not implemented |
239 | DrawToolbarButton(BTN_NEW, tx.inc(TB_ICON_PADDING), 2); //not implemented |
225 | DrawToolbarButton(BTN_OPEN, tx.inc(TB_ICON_PADDING), 0); //not implemented |
240 | DrawToolbarButton(BTN_OPEN, tx.inc(TB_ICON_PADDING), 0); //not implemented |
226 | DrawToolbarButton(BTN_SAVE, tx.inc(TB_ICON_PADDING), 5); |
241 | DrawToolbarButton(BTN_SAVE, tx.inc(TB_ICON_PADDING), 5); |
227 | DrawToolbarButton(BTN_MOVE_LEFT, tx.inc(TB_ICON_PADDING+8), 30); |
242 | DrawToolbarButton(BTN_MOVE_LEFT, tx.inc(TB_ICON_PADDING+8), 30); |
228 | DrawToolbarButton(BTN_MOVE_RIGHT, tx.inc(TB_ICON_PADDING), 31); |
243 | DrawToolbarButton(BTN_MOVE_RIGHT, tx.inc(TB_ICON_PADDING), 31); |
229 | DrawToolbarButton(BTN_MOVE_UP, tx.inc(TB_ICON_PADDING), 32); |
244 | DrawToolbarButton(BTN_MOVE_UP, tx.inc(TB_ICON_PADDING), 32); |
230 | DrawToolbarButton(BTN_MOVE_DOWN, tx.inc(TB_ICON_PADDING), 33); |
245 | DrawToolbarButton(BTN_MOVE_DOWN, tx.inc(TB_ICON_PADDING), 33); |
231 | 246 | ||
232 | DrawToolbarButton(BTN_FLIP_HOR, tx.inc(TB_ICON_PADDING+8), 34); //not implemented |
247 | DrawToolbarButton(BTN_FLIP_HOR, tx.inc(TB_ICON_PADDING+8), 34); //not implemented |
233 | DrawToolbarButton(BTN_FLIP_VER, tx.inc(TB_ICON_PADDING), 35); //not implemented |
248 | DrawToolbarButton(BTN_FLIP_VER, tx.inc(TB_ICON_PADDING), 35); //not implemented |
234 | DrawToolbarButton(BTN_ROTATE_LEFT, tx.inc(TB_ICON_PADDING), 36); //not implemented |
249 | DrawToolbarButton(BTN_ROTATE_LEFT, tx.inc(TB_ICON_PADDING), 36); //not implemented |
235 | DrawToolbarButton(BTN_ROTATE_RIGHT, tx.inc(TB_ICON_PADDING), 37); //not implemented |
250 | DrawToolbarButton(BTN_ROTATE_RIGHT, tx.inc(TB_ICON_PADDING), 37); //not implemented |
236 | 251 | ||
237 | DrawToolbarButton(BTN_PICK, tx.inc(TB_ICON_PADDING+8), 38); |
252 | DrawToolbarButton(BTN_PICK, tx.inc(TB_ICON_PADDING+8), 38); |
238 | 253 | ||
239 | DrawEditArea(); |
254 | DrawEditArea(); |
240 | 255 | ||
241 | DrawDefaultColors(right_bar.x, right_bar.y); |
256 | DrawDefaultColors(right_bar.x, right_bar.y); |
242 | DrawActiveColor(right_bar.y + 200); |
257 | DrawActiveColor(right_bar.y + 200); |
243 | 258 | ||
244 | DrawStatusBar(); |
259 | DrawStatusBar(); |
245 | } |
260 | } |
246 | 261 | ||
247 | void DrawEditArea() |
262 | void DrawEditArea() |
248 | { |
263 | { |
249 | dword color1=0xC0C0C0; |
264 | dword color1=0xC0C0C0; |
250 | int left_padding; |
265 | int left_padding; |
251 | int top_padding; |
266 | int top_padding; |
252 | 267 | ||
253 | wrapper.w = Form.cwidth - right_bar.w - 30; |
268 | wrapper.w = Form.cwidth - right_bar.w - 30; |
254 | wrapper.h = Form.cheight - TOOLBAR_H - 35; |
269 | wrapper.h = Form.cheight - TOOLBAR_H - 35; |
255 | 270 | ||
256 | //canvas{ |
271 | //canvas{ |
257 | canvas.w = image.columns * zoom.value; |
272 | canvas.w = image.columns * zoom.value; |
258 | canvas.h = image.rows * zoom.value; |
273 | canvas.h = image.rows * zoom.value; |
259 | if (canvas.w+2 > wrapper.w) || (canvas.h+2 > wrapper.h) { |
274 | if (canvas.w+2 > wrapper.w) || (canvas.h+2 > wrapper.h) { |
260 | zoom.value--; |
275 | zoom.value--; |
261 | DrawEditArea(); |
276 | DrawEditArea(); |
262 | return; |
277 | return; |
263 | } |
278 | } |
264 | canvas.x = -zoom.value*image.columns+wrapper.w/2 + wrapper.x; |
279 | canvas.x = -zoom.value*image.columns+wrapper.w/2 + wrapper.x; |
265 | canvas.y = -zoom.value*image.rows+wrapper.h/2 + wrapper.y; |
280 | canvas.y = -zoom.value*image.rows+wrapper.h/2 + wrapper.y; |
266 | DrawRectangle(canvas.x-1, canvas.y-1, canvas.w+1, canvas.h+1, 0x808080); |
281 | DrawRectangle(canvas.x-1, canvas.y-1, canvas.w+1, canvas.h+1, 0x808080); |
267 | DrawCanvas(); |
282 | DrawCanvas(); |
268 | //} |
283 | //} |
269 | 284 | ||
270 | left_padding = canvas.x-wrapper.x-1; |
285 | left_padding = canvas.x-wrapper.x-1; |
271 | top_padding = canvas.y-wrapper.y-1; |
286 | top_padding = canvas.y-wrapper.y-1; |
272 | 287 | ||
273 | DrawRectangle(wrapper.x-1, wrapper.y-1, wrapper.w+1, wrapper.h+1, system.color.work_graph); |
288 | DrawRectangle(wrapper.x-1, wrapper.y-1, wrapper.w+1, wrapper.h+1, system.color.work_graph); |
274 | 289 | ||
275 | if (left_padding>0) |
290 | if (left_padding>0) |
276 | { |
291 | { |
277 | DrawBar(wrapper.x, wrapper.y, wrapper.w, top_padding, color1); //top |
292 | DrawBar(wrapper.x, wrapper.y, wrapper.w, top_padding, color1); //top |
278 | DrawBar(wrapper.x, wrapper.y+wrapper.h-top_padding, wrapper.w, top_padding, color1); //bottom |
293 | DrawBar(wrapper.x, wrapper.y+wrapper.h-top_padding, wrapper.w, top_padding, color1); //bottom |
279 | } |
294 | } |
280 | if (top_padding>0) |
295 | if (top_padding>0) |
281 | { |
296 | { |
282 | DrawBar(wrapper.x, wrapper.y+top_padding, left_padding, wrapper.h-top_padding-top_padding, color1); //left |
297 | DrawBar(wrapper.x, wrapper.y+top_padding, left_padding, wrapper.h-top_padding-top_padding, color1); //left |
283 | DrawBar(wrapper.x+wrapper.w-left_padding, wrapper.y+top_padding, left_padding, wrapper.h-top_padding-top_padding, color1); //right |
298 | DrawBar(wrapper.x+wrapper.w-left_padding, wrapper.y+top_padding, left_padding, wrapper.h-top_padding-top_padding, color1); //right |
284 | } |
299 | } |
285 | } |
300 | } |
286 | 301 | ||
287 | void DrawActiveColor(dword iny) |
302 | void DrawActiveColor(dword iny) |
288 | { |
303 | { |
289 | static dword outy; |
304 | static dword outy; |
290 | if (iny != NULL) outy = iny; |
305 | if (iny != NULL) outy = iny; |
291 | DrawBar(right_bar.x, outy, 20, 20, active_color_1); |
306 | DrawBar(right_bar.x, outy, 20, 20, active_color_1); |
292 | sprintf(#param, "%A", active_color_1); |
307 | sprintf(#param, "%A", active_color_1); |
293 | EDI = system.color.work; |
308 | EDI = system.color.work; |
294 | WriteText(right_bar.x + 30, outy + 3, 0xD0, system.color.work_text, #param+4); |
309 | WriteText(right_bar.x + 30, outy + 3, 0xD0, system.color.work_text, #param+4); |
295 | 310 | ||
296 | DrawBar(right_bar.x+110, outy, 20, 20, active_color_2); |
311 | DrawBar(right_bar.x+110, outy, 20, 20, active_color_2); |
297 | sprintf(#param, "%A", active_color_2); |
312 | sprintf(#param, "%A", active_color_2); |
298 | EDI = system.color.work; |
313 | EDI = system.color.work; |
299 | WriteText(right_bar.x+110 + 30, outy + 3, 0xD0, system.color.work_text, #param+4); |
314 | WriteText(right_bar.x+110 + 30, outy + 3, 0xD0, system.color.work_text, #param+4); |
300 | } |
315 | } |
301 | 316 | ||
302 | void DrawDefaultColors(dword _x, _y) |
317 | void DrawDefaultColors(dword _x, _y) |
303 | { |
318 | { |
304 | int r, c, i; |
319 | int r, c, i; |
305 | int cellw = 20; |
320 | int cellw = 20; |
306 | 321 | ||
307 | i = 0; |
322 | i = 0; |
308 | for (r = 0; r < 9; r++) |
323 | for (r = 0; r < 9; r++) |
309 | { |
324 | { |
310 | for (c = 0; c < 13; c++) |
325 | for (c = 0; c < 13; c++) |
311 | { |
326 | { |
312 | DrawBar(c*cellw + _x, r*cellw + _y, cellw, cellw, palette_colors[PALLETE_SIZE-i]); |
327 | DrawBar(c*cellw + _x, r*cellw + _y, cellw, cellw, default_palette[PALLETE_SIZE-i]); |
313 | DefineHiddenButton(c*cellw + _x, r*cellw + _y, cellw-1, cellw-1, BTN_PALETTE_COLOR_MAS+PALLETE_SIZE-i); |
328 | DefineHiddenButton(c*cellw + _x, r*cellw + _y, cellw-1, cellw-1, BTN_PALETTE_COLOR_MAS+PALLETE_SIZE-i); |
314 | i++; |
329 | i++; |
315 | } |
330 | } |
316 | } |
331 | } |
317 | DrawRectangle(_x-1, _y-1, c*cellw+1, r*cellw+1, system.color.work_light); |
332 | DrawRectangle(_x-1, _y-1, c*cellw+1, r*cellw+1, system.color.work_light); |
318 | DrawRectangle(_x-2, _y-2, c*cellw+3, r*cellw+3, system.color.work_dark); |
333 | DrawRectangle(_x-2, _y-2, c*cellw+3, r*cellw+3, system.color.work_dark); |
319 | } |
334 | } |
320 | 335 | ||
321 | 336 | ||
322 | //===================================================// |
337 | //===================================================// |
323 | // // |
338 | // // |
324 | // EVENTS // |
339 | // EVENTS // |
325 | // // |
340 | // // |
326 | //===================================================// |
341 | //===================================================// |
327 | 342 | ||
328 | void EventPickActivate() |
343 | void EventPickActivate() |
329 | { |
344 | { |
330 | SetEventMask(EVM_REDRAW+EVM_KEY+EVM_BUTTON+EVM_MOUSE); |
345 | SetEventMask(EVM_REDRAW+EVM_KEY+EVM_BUTTON+EVM_MOUSE); |
331 | pick_active = true; |
346 | pick_active = true; |
332 | } |
347 | } |
333 | 348 | ||
334 | void EventPickColor(dword lkm_status, pkm_status) |
349 | void EventPickColor(dword lkm_status, pkm_status) |
335 | { |
350 | { |
336 | active_color_1 = GetPixelColorFromScreen(mouse.x + Form.left + 5, mouse.y + Form.top + skin_height); |
351 | active_color_1 = GetPixelColorFromScreen(mouse.x + Form.left + 5, mouse.y + Form.top + skin_height); |
337 | DrawActiveColor(NULL); |
352 | DrawActiveColor(NULL); |
338 | if (mouse.down) && (mouse.key&MOUSE_LEFT) { |
353 | if (mouse.down) && (mouse.key&MOUSE_LEFT) { |
339 | pick_active = false; |
354 | pick_active = false; |
340 | SetEventMask(EVM_REDRAW+EVM_KEY+EVM_BUTTON+EVM_MOUSE+EVM_MOUSE_FILTER); |
355 | SetEventMask(EVM_REDRAW+EVM_KEY+EVM_BUTTON+EVM_MOUSE+EVM_MOUSE_FILTER); |
341 | } |
356 | } |
342 | } |
357 | } |
343 | 358 | ||
344 | dword bmp_32x32x16_header[] = FROM "bmp32x32header"; |
359 | dword bmp_32x32x16_header[] = FROM "bmp32x32header"; |
345 | void EventSave() |
360 | void EventSave() |
346 | { |
361 | { |
347 | char save_buf[3126]; |
362 | char save_buf[3126]; |
348 | dword image_buf = image.get_image(); |
- | |
349 | memmov(#save_buf, #bmp_32x32x16_header, sizeof(bmp_32x32x16_header)); |
363 | memmov(#save_buf, #bmp_32x32x16_header, sizeof(bmp_32x32x16_header)); |
350 | memmov(#save_buf+sizeof(bmp_32x32x16_header), image_buf, sizeof(save_buf)-sizeof(bmp_32x32x16_header)); |
364 | memmov(#save_buf+sizeof(bmp_32x32x16_header), image.get_image(), sizeof(save_buf)-sizeof(bmp_32x32x16_header)); |
351 | if (WriteFile(sizeof(save_buf), #save_buf, "/rd/1/saved_image.bmp")==0) |
365 | if (WriteFile(sizeof(save_buf), #save_buf, "/rd/1/saved_image.bmp")==0) |
352 | { |
366 | { |
353 | notify("'File saved as /rd/1/saved_image.bmp' -O"); |
367 | notify("'File saved as /rd/1/saved_image.bmp' -O"); |
354 | } |
368 | } |
355 | else { |
369 | else { |
356 | notify("'Error saving BPM file, probably not enought space on ramdisk!' -E"); |
370 | notify("'Error saving BPM file, probably not enought space on ramdisk!' -E"); |
357 | } |
371 | } |
358 | } |
372 | } |
359 | 373 | ||
360 | void CreateCanvas() |
374 | void CreateCanvas() |
361 | { |
375 | { |
362 | int i; |
376 | int i; |
363 | image.columns = 32; |
377 | image.columns = 32; |
364 | image.rows = 32; |
378 | image.rows = 32; |
365 | for (i = 0; i < image.columns*image.rows; i++) image.mas[i]=0xBFCAD2; |
379 | for (i = 0; i < image.columns*image.rows; i++) image.mas[i]=0xBFCAD2; |
366 | } |
380 | } |
367 | 381 | ||
368 | void DrawCanvas() |
382 | void DrawCanvas() |
369 | { |
383 | { |
370 | int r, c; |
384 | int r, c; |
371 | for (r = 0; r < image.rows; r++) |
385 | for (r = 0; r < image.rows; r++) |
372 | { |
386 | { |
373 | for (c = 0; c < image.columns; c++) |
387 | for (c = 0; c < image.columns; c++) |
374 | { |
388 | { |
375 | DrawBar(c*zoom.value + canvas.x, r*zoom.value + canvas.y, |
389 | DrawBar(c*zoom.value + canvas.x, r*zoom.value + canvas.y, |
376 | zoom.value, zoom.value, image.get_pixel(r, c)); |
390 | zoom.value, zoom.value, image.get_pixel(r, c)); |
377 | } |
391 | } |
378 | } |
392 | } |
379 | }>>>>>> |
393 | }>>>>>>>> |
380 | > |
394 | > |