Rev 7194 | Rev 7204 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 7194 | Rev 7200 | ||
---|---|---|---|
Line 26... | Line 26... | ||
26 | // // |
26 | // // |
27 | // DATA // |
27 | // DATA // |
28 | // // |
28 | // // |
29 | //===================================================// |
29 | //===================================================// |
Line 30... | Line 30... | ||
30 | 30 | ||
Line 31... | Line 31... | ||
31 | #define T_TITLE "Icon Editor 0.33" |
31 | #define T_TITLE "Icon Editor 0.35" |
32 | 32 | ||
33 | #define TOOLBAR_H 24+8 |
33 | #define TOOLBAR_H 24+8 |
34 | #define PANEL_LEFT_W 16+5+5+3+3 |
34 | #define PANEL_LEFT_W 16+5+5+3+3 |
Line 35... | Line 35... | ||
35 | #define PALLETE_SIZE 116 |
35 | #define PALLETE_SIZE 116 |
36 | #define TB_ICON_PADDING 26 |
36 | #define TB_ICON_PADDING 26 |
- | 37 | ||
Line -... | Line 38... | ||
- | 38 | #define PAL_ITEMS_X_COUNT 13 |
|
- | 39 | #define COLSIZE 18 |
|
- | 40 | #define RIGHT_BAR_W PAL_ITEMS_X_COUNT*COLSIZE |
|
- | 41 | ||
- | 42 | struct block { |
|
- | 43 | int x,y,w,h; |
|
- | 44 | bool hovered(); |
|
- | 45 | }; |
|
- | 46 | ||
- | 47 | bool block::hovered() { |
|
- | 48 | if ((mouse.x>x) && (mouse.y>y) |
|
- | 49 | && (mouse.y |
|
- | 50 | return true; |
|
37 | 51 | return false; |
|
38 | #define PAL_ITEMS_X_COUNT 13 |
52 | } |
- | 53 | ||
39 | #define COLSIZE 18 |
54 | block canvas = { NULL, NULL, NULL, NULL }; |
- | 55 | block wrapper = { PANEL_LEFT_W, TOOLBAR_H, NULL, NULL }; |
|
- | 56 | block right_bar = { NULL, TOOLBAR_H, RIGHT_BAR_W+10, NULL }; |
|
Line 40... | Line 57... | ||
40 | 57 | ||
41 | rect wrapper = { PANEL_LEFT_W, TOOLBAR_H, NULL, NULL }; |
58 | block b_color_gradient = {NULL, 30+TOOLBAR_H, RIGHT_BAR_W, 30}; |
Line 42... | Line 59... | ||
42 | rect right_bar = { NULL, TOOLBAR_H, PAL_ITEMS_X_COUNT*COLSIZE+10, NULL }; |
59 | block b_last_colors = {NULL, 70+TOOLBAR_H, RIGHT_BAR_W, COLSIZE*2}; |
Line 143... | Line 160... | ||
143 | 160 | ||
144 | void FillTool_onMouseEvent(int mouseX, int mouseY, int lkm, int pkm) { |
161 | void FillTool_onMouseEvent(int mouseX, int mouseY, int lkm, int pkm) { |
145 | bool fill1=false; |
162 | bool fill1=false; |
Line 146... | Line -... | ||
146 | bool fill2=false; |
- | |
147 | - | ||
148 | if (mouseX>canvas.x) && (mouseY>canvas.y) |
163 | bool fill2=false; |
149 | && (mouseY |
164 | |
150 | && (mouseX |
165 | if (canvas.hovered()) |
151 | { |
166 | { |
152 | if (currentTool==TOOL_FILL) |
167 | if (currentTool==TOOL_FILL) |
153 | { |
168 | { |
Line 173... | Line 188... | ||
173 | void PipetteTool_activate() { |
188 | void PipetteTool_activate() { |
174 | SetEventMask(EVM_REDRAW+EVM_KEY+EVM_BUTTON+EVM_MOUSE); |
189 | SetEventMask(EVM_REDRAW+EVM_KEY+EVM_BUTTON+EVM_MOUSE); |
175 | } |
190 | } |
Line 176... | Line 191... | ||
176 | 191 | ||
177 | void PipetteTool_onMouseEvent(int mouseX, int mouseY, int lkm, int pkm) { |
192 | void PipetteTool_onMouseEvent(int mouseX, int mouseY, int lkm, int pkm) { |
178 | active_color_1 = GetPixelColorFromScreen(mouseX + Form.left + 5, mouseY + Form.top + skin_height); |
193 | active_color_1 = GetPixelUnderMouse(); |
Line 179... | Line 194... | ||
179 | DrawActiveColor(NULL); |
194 | DrawActiveColor(NULL); |
180 | 195 | ||
181 | if (mouse.down) && (mouse.key&MOUSE_LEFT) { |
196 | if (mouse.down) && (mouse.key&MOUSE_LEFT) { |
Line 185... | Line 200... | ||
185 | setCurrentTool(TOOL_PENCIL); |
200 | setCurrentTool(TOOL_PENCIL); |
186 | } |
201 | } |
187 | } |
202 | } |
Line 188... | Line 203... | ||
188 | 203 | ||
189 | void PencilTool_onMouseEvent(int mouseX, int mouseY, int lkm, int pkm) { |
- | |
190 | if (mouseX>canvas.x) && (mouseY>canvas.y) |
- | |
191 | && (mouseY |
204 | void PencilTool_onMouseEvent(int mouseX, int mouseY, int lkm, int pkm) { |
192 | && (mouseX |
205 | if (canvas.hovered()) |
193 | { |
206 | { |
194 | if (lkm) |
207 | if (lkm) |
195 | image.set_pixel(mouseY-canvas.y/zoom.value, |
208 | image.set_pixel(mouseY-canvas.y/zoom.value, |
196 | mouseX-canvas.x/zoom.value, active_color_1); |
209 | mouseX-canvas.x/zoom.value, active_color_1); |
Line 215... | Line 228... | ||
215 | LineTool_lastTempPosX = -1; |
228 | LineTool_lastTempPosX = -1; |
216 | LineTool_lastTempPosY = -1; |
229 | LineTool_lastTempPosY = -1; |
217 | } |
230 | } |
Line 218... | Line 231... | ||
218 | 231 | ||
219 | void LineTool_onMouseEvent(int mouseX, int mouseY, int lkm, int pkm) { |
- | |
220 | if ((mouseX>canvas.x) && (mouseY>canvas.y) |
- | |
221 | && (mouseY |
232 | void LineTool_onMouseEvent(int mouseX, int mouseY, int lkm, int pkm) { |
222 | && (mouseX |
233 | if (canvas.hovered()) |
223 | { |
234 | { |
224 | if (mouse.down) && (mouse.key & MOUSE_LEFT) { |
235 | if (mouse.down) && (mouse.key & MOUSE_LEFT) { |
225 | if ((LineTool_startX < 0) || (LineTool_startY < 0)) { |
236 | if ((LineTool_startX < 0) || (LineTool_startY < 0)) { |
226 | LineTool_startX = mouseX; |
237 | LineTool_startX = mouseX; |
Line 389... | Line 400... | ||
389 | if (mouse.vert==65535) zoom.click(BTN_ZOOM_IN); |
400 | if (mouse.vert==65535) zoom.click(BTN_ZOOM_IN); |
390 | if (mouse.vert==1) zoom.click(BTN_ZOOM_OUT); |
401 | if (mouse.vert==1) zoom.click(BTN_ZOOM_OUT); |
391 | DrawEditArea(); |
402 | DrawEditArea(); |
392 | } |
403 | } |
Line -... | Line 404... | ||
- | 404 | ||
- | 405 | if (mouse.down) { |
|
- | 406 | if (b_color_gradient.hovered()) |
|
- | 407 | || (b_last_colors.hovered()) |
|
- | 408 | || (b_default_palette.hovered()) { |
|
- | 409 | if (mouse.key&MOUSE_LEFT) EventSetActiveColor(1, GetPixelUnderMouse()); |
|
- | 410 | if (mouse.key&MOUSE_RIGHT) EventSetActiveColor(2, GetPixelUnderMouse()); |
|
- | 411 | } |
|
- | 412 | } |
|
393 | 413 | ||
Line 394... | Line 414... | ||
394 | break; |
414 | break; |
395 | 415 | ||
396 | case evButton: |
416 | case evButton: |
Line 458... | Line 478... | ||
458 | break; |
478 | break; |
459 | case CLOSE_BTN: |
479 | case CLOSE_BTN: |
460 | ExitProcess(); |
480 | ExitProcess(); |
461 | break; |
481 | break; |
462 | } |
482 | } |
463 | if (btn >= BTNS_PALETTE_COLOR_MAS) && (btn <= BTNS_PALETTE_COLOR_MAS+PALLETE_SIZE) |
- | |
464 | { |
- | |
465 | if (mouse.lkm) EventSetActiveColor(1, default_palette[btn - BTNS_PALETTE_COLOR_MAS]); |
- | |
466 | if (mouse.pkm) EventSetActiveColor(2, default_palette[btn - BTNS_PALETTE_COLOR_MAS]); |
- | |
467 | } |
- | |
468 | if (btn >= BTNS_LAST_USED_COLORS) && (btn < sizeof(last_used_colors)*sizeof(dword)) |
- | |
469 | { |
- | |
470 | if (mouse.lkm) active_color_1 = last_used_colors[btn - BTNS_LAST_USED_COLORS]; |
- | |
471 | if (mouse.pkm) active_color_2 = last_used_colors[btn - BTNS_LAST_USED_COLORS]; |
- | |
472 | DrawActiveColor(NULL); |
- | |
473 | } |
- | |
474 | break; |
483 | break; |
Line 475... | Line 484... | ||
475 | 484 | ||
476 | case evKey: |
485 | case evKey: |
477 | GetKeys(); |
486 | GetKeys(); |
Line 525... | Line 534... | ||
525 | if (Form.status_window>2) return; |
534 | if (Form.status_window>2) return; |
526 | if (Form.width < 560) { MoveSize(OLD,OLD,560,OLD); return; } |
535 | if (Form.width < 560) { MoveSize(OLD,OLD,560,OLD); return; } |
527 | if (Form.height < 430) { MoveSize(OLD,OLD,OLD,430); return; } |
536 | if (Form.height < 430) { MoveSize(OLD,OLD,OLD,430); return; } |
Line 528... | Line 537... | ||
528 | 537 | ||
- | 538 | right_bar.x = Form.cwidth - right_bar.w; |
|
Line 529... | Line 539... | ||
529 | right_bar.x = Form.cwidth - right_bar.w; |
539 | b_color_gradient.x = b_last_colors.x = b_default_palette.x = right_bar.x; |
530 | 540 | ||
531 | tx.n = 10-TB_ICON_PADDING; |
541 | tx.n = 10-TB_ICON_PADDING; |
532 | DrawToolbarButton(BTN_NEW, tx.inc(TB_ICON_PADDING), 2); //not implemented |
542 | DrawToolbarButton(BTN_NEW, tx.inc(TB_ICON_PADDING), 2); //not implemented |
Line 545... | Line 555... | ||
545 | DrawLeftPanel(); |
555 | DrawLeftPanel(); |
Line 546... | Line 556... | ||
546 | 556 | ||
Line 547... | Line 557... | ||
547 | DrawEditArea(); |
557 | DrawEditArea(); |
548 | 558 | ||
Line 549... | Line 559... | ||
549 | DrawActiveColor(right_bar.y); |
559 | DrawActiveColor(right_bar.y); |
550 | DrawColorPallets(right_bar.x, right_bar.y + 70); |
560 | DrawColorPallets(); |
Line 551... | Line 561... | ||
551 | 561 | ||
Line 619... | Line 629... | ||
619 | 629 | ||
620 | DrawBar(right_bar.x+110, outy, 20, 20, active_color_2); |
630 | DrawBar(right_bar.x+110, outy, 20, 20, active_color_2); |
621 | sprintf(#param, "%A", active_color_2); |
631 | sprintf(#param, "%A", active_color_2); |
622 | EDI = system.color.work; |
632 | EDI = system.color.work; |
623 | WriteText(right_bar.x+110 + 30, outy + 3, 0xD0, system.color.work_text, #param+4); |
633 | WriteText(right_bar.x+110 + 30, outy + 3, 0xD0, system.color.work_text, #param+4); |
624 | DrawCurrentColorGradientByLightness(right_bar.x, outy+30); |
634 | DrawCurrentColorGradientByLightness(); |
Line 625... | Line 635... | ||
625 | } |
635 | } |
626 | 636 | ||
627 | void DrawCurrentColorGradientByLightness(int x, y) |
637 | void DrawCurrentColorGradientByLightness() |
628 | { |
638 | { |
629 | int i; |
- | |
630 | int w = right_bar.w-10/2; |
639 | int i; |
- | 640 | int w = right_bar.w-10/2; |
|
631 | int h = 30; |
641 | for (i=0; i |
632 | for (i=0; i |
642 | DrawBar(b_color_gradient.x+i, b_color_gradient.y, |
- | 643 | 1, b_color_gradient.h, MixColors(active_color_1,0xFFFfff,255*i/w)); |
|
633 | DrawBar(x+i, y, 1, h, MixColors(active_color_1,0xFFFfff,255*i/w)); |
644 | for (i=0 ; i<=w; i++) |
634 | for (i=0 ; i<=w; i++) |
645 | DrawBar(b_color_gradient.x+w+w-i, b_color_gradient.y, |
Line 635... | Line 646... | ||
635 | DrawBar(x+w+w-i, y, 1, h, MixColors(active_color_1,0x000000,255*i/w)); |
646 | 1, b_color_gradient.h, MixColors(active_color_1,0x000000,255*i/w)); |
636 | } |
647 | } |
637 | 648 | ||
638 | void DrawColorPallets(dword _x, _y) |
- | |
639 | { |
649 | void DrawColorPallets() |
640 | int r, c, i=0; |
650 | { |
641 | 651 | int r, c, i=0; |
|
642 | //Last used colors |
652 | //Last used colors |
643 | for (r = 0; r < 2; r++) |
653 | for (r = 0; r < 2; r++) |
644 | { |
654 | { |
645 | for (c = 0; c < PAL_ITEMS_X_COUNT; c++, i++) |
655 | for (c = 0; c < PAL_ITEMS_X_COUNT; c++, i++) |
646 | { |
- | |
647 | DrawBar(c*COLSIZE + _x, r*COLSIZE + _y, COLSIZE, COLSIZE, last_used_colors[i]); |
656 | { |
648 | DefineHiddenButton(c*COLSIZE + _x, r*COLSIZE + _y, COLSIZE-1, COLSIZE-1, BTNS_LAST_USED_COLORS+i); |
657 | DrawBar(c*COLSIZE + b_last_colors.x, r*COLSIZE + b_last_colors.y, |
649 | - | ||
650 | } |
- | |
651 | } |
658 | COLSIZE, COLSIZE, last_used_colors[i]); |
652 | - | ||
653 | _y += r*COLSIZE + 10; |
659 | } |
654 | i=0; |
660 | } |
655 | 661 | i=0; |
|
656 | //Default colors |
662 | //Default colors |
657 | for (r = 0; r < 9; r++) |
663 | for (r = 0; r < 9; r++) |
658 | { |
664 | { |
659 | for (c = 0; c < PAL_ITEMS_X_COUNT; c++, i++) |
665 | for (c = 0; c < PAL_ITEMS_X_COUNT; c++, i++) |
660 | { |
666 | { |
661 | DrawBar(c*COLSIZE + _x, r*COLSIZE + _y, COLSIZE, COLSIZE, default_palette[PALLETE_SIZE-i]); |
667 | DrawBar(c*COLSIZE + b_default_palette.x, r*COLSIZE + b_default_palette.y, |
662 | DefineHiddenButton(c*COLSIZE + _x, r*COLSIZE + _y, COLSIZE-1, COLSIZE-1, BTNS_PALETTE_COLOR_MAS+PALLETE_SIZE-i); |
668 | COLSIZE, COLSIZE, default_palette[PALLETE_SIZE-i]); |
Line 663... | Line -... | ||
663 | } |
- | |
664 | } |
669 | } |
665 | } |
670 | } |
666 | 671 | } |
|
667 | 672 | ||
668 | void DrawCanvas() |
673 | void DrawCanvas() |
Line 678... | Line 683... | ||
678 | } |
683 | } |
Line 679... | Line 684... | ||
679 | 684 | ||
680 | if ((currentTool != TOOL_NONE) && (tools[currentTool].onCanvasDraw != 0)) |
685 | if ((currentTool != TOOL_NONE) && (tools[currentTool].onCanvasDraw != 0)) |
Line -... | Line 686... | ||
- | 686 | tools[currentTool].onCanvasDraw(); |
|
- | 687 | ||
- | 688 | DrawPreview(); |
|
- | 689 | } |
|
- | 690 | ||
- | 691 | void DrawPreview() |
|
- | 692 | { |
|
- | 693 | int x = right_bar.x; |
|
- | 694 | int y = wrapper.y + wrapper.h - image.rows-2; |
|
681 | tools[currentTool].onCanvasDraw(); |
695 | DrawRectangle(x, y, image.columns+1, image.rows+1, system.color.work_graph); |
Line -... | Line 696... | ||
- | 696 | _PutImage(x+1,y+1, image.columns, image.rows, image.get_image()); |
|
- | 697 | } |
|
- | 698 | ||
- | 699 | dword GetPixelUnderMouse() |
|
Line 682... | Line 700... | ||
682 | 700 | { |
|
683 | } |
701 | return GetPixelColorFromScreen(mouse.x + Form.left + 5, mouse.y + Form.top + skin_height); |
684 | 702 | } |
|
685 | 703 | ||
Line 732... | Line 750... | ||
732 | 750 | ||
733 | if (_number == 1) active_color_1 = _color; |
751 | if (_number == 1) active_color_1 = _color; |
Line 734... | Line 752... | ||
734 | if (_number == 2) active_color_2 = _color; |
752 | if (_number == 2) active_color_2 = _color; |
735 | 753 | ||
736 | DrawActiveColor(NULL); |
754 | DrawActiveColor(NULL); |
Line 737... | Line 755... | ||
737 | DrawColorPallets(right_bar.x, right_bar.y + 70); |
755 | DrawColorPallets(); |
738 | } |
756 | } |
739 | 757 | ||
Line 768... | Line 786... | ||
768 | 786 | ||
769 | // target - image (1) or canvas (2) |
787 | // target - image (1) or canvas (2) |
770 | void DrawLine(int x1, int y1, int x2, int y2, dword color, int target) { |
788 | void DrawLine(int x1, int y1, int x2, int y2, dword color, int target) { |
Line 771... | Line 789... | ||
771 | int dx, dy, signX, signY, error, error2; |
789 | int dx, dy, signX, signY, error, error2; |
772 | 790 | ||
Line 773... | Line 791... | ||
773 | debugval("Draw line", x1); |
791 | // debugval("Draw line", x1); |
774 | debugval("Draw line", y1); |
792 | // debugval("Draw line", y1); |
775 | 793 | ||
776 | debugval("Draw line", x2); |
794 | // debugval("Draw line", x2); |
Line 777... | Line 795... | ||
777 | debugval("Draw line", y2); |
795 | // debugval("Draw line", y2); |
778 | debugln("==="); |
796 | // debugln("==="); |