Rev 7151 | Rev 7154 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 7151 | Rev 7152 | ||
---|---|---|---|
Line 6... | Line 6... | ||
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 |
- | |
11 | Set minimal window size |
- | |
12 | Scroll mouse, +/- keyboard |
10 | Open with param |
Line 13... | Line 11... | ||
13 | */ |
11 | */ |
Line 14... | Line 12... | ||
14 | 12 | ||
Line 27... | Line 25... | ||
27 | // // |
25 | // // |
28 | // DATA // |
26 | // DATA // |
29 | // // |
27 | // // |
30 | //===================================================// |
28 | //===================================================// |
Line 31... | Line 29... | ||
31 | 29 | ||
Line 32... | Line 30... | ||
32 | #define T_TITLE "Icon Editor 0.08" |
30 | #define T_TITLE "Icon Editor 0.09" |
33 | 31 | ||
Line 34... | Line 32... | ||
34 | #define TOOLBAR_H 24+9 |
32 | #define TOOLBAR_H 24+8 |
35 | #define PALLETE_SIZE 116 |
33 | #define PALLETE_SIZE 116 |
36 | 34 | ||
Line 52... | Line 50... | ||
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 | }; |
Line 59... | Line 59... | ||
59 | 59 | ||
Line 60... | Line 60... | ||
60 | proc_info Form; |
60 | proc_info Form; |
Line 61... | Line -... | ||
61 | - | ||
62 | bool pick_active = false; |
- | |
63 | 61 | ||
Line 64... | Line 62... | ||
64 | #define ZOOM_IN 22 |
62 | bool pick_active = false; |
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, |
Line 92... | Line 90... | ||
92 | word btn; |
90 | word btn; |
Line 93... | Line 91... | ||
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); |
- | 94 | Libimg_LoadImage(#skin, "/sys/icons16.png"); |
|
Line 96... | Line 95... | ||
96 | Libimg_LoadImage(#skin, "/sys/icons16.png"); |
95 | //Libimg_ReplaceColor(skin.image, skin.w, skin.h, 0xFFfffFFF, 0xff808080); |
Line 97... | Line 96... | ||
97 | 96 | ||
98 | CreateCanvas(); |
97 | CreateCanvas(); |
Line 114... | Line 113... | ||
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, |
Line 165... | Line 169... | ||
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; |
Line 184... | Line 193... | ||
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; |
- | 197 | if (key_scancode == SCAN_CODE_KEY_I) EventPickActivate(); |
|
- | 198 | if (key_scancode == SCAN_CODE_MINUS) {zoom.click(BTN_ZOOM_OUT); DrawEditArea();} |
|
188 | if (key_scancode == SCAN_CODE_KEY_I) EventPickActivate(); |
199 | if (key_scancode == SCAN_CODE_PLUS) {zoom.click(BTN_ZOOM_IN); DrawEditArea();} |
Line 189... | Line 200... | ||
189 | break; |
200 | break; |
190 | 201 | ||
191 | case evReDraw: |
202 | case evReDraw: |
192 | draw_window(); |
203 | draw_window(); |
193 | break; |
204 | break; |
Line 194... | Line 205... | ||
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); |
Line 200... | Line 211... | ||
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 | } |
Line 216... | Line 227... | ||
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; |
Line 222... | Line 237... | ||
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 |
Line 307... | Line 322... | ||
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); |
Line 343... | Line 358... | ||
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]; |
- | |
348 | dword image_buf = image.get_image(); |
362 | char save_buf[3126]; |
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 | } |