Rev 7373 | Rev 7444 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 7373 | Rev 7422 | ||
---|---|---|---|
Line 29... | Line 29... | ||
29 | // // |
29 | // // |
30 | //===================================================// |
30 | //===================================================// |
Line 31... | Line 31... | ||
31 | 31 | ||
32 | #ifdef LANG_RUS |
32 | #ifdef LANG_RUS |
33 | #define T_NOTIFY_OPEN "'IconEdit |
33 | #define T_NOTIFY_OPEN "'IconEdit |
34 | ¤ ë© ¬®¬¥â IconEdit ¬®¦¥â ®âªàë¢ âì ⮫쪮 ¨ª®ª¨, ᮧ¤ ë¥ ¢ á ¬®¬ । ªâ®à¥. |
34 | ‚ ¤ ë© ¬®¬¥â IconEdit ¬®¦¥â ®âªàë¢ âì ⮫쪮 ¨ª®ª¨, ᮧ¤ ë¥ ¢ á ¬®¬ । ªâ®à¥. |
35 | ᫨ 㦮 ®âªàëâì ¤à㣮¥ ¨§®¡à ¦¥¨¥, ¢®á¯®«ì§ã©â¥áì ¨áâà㬥⮬ <®â® ¯¯ à â> |
35 | …᫨ 㦮 ®âªàëâì ¤à㣮¥ ¨§®¡à ¦¥¨¥, ¢®á¯®«ì§ã©â¥áì ¨áâà㬥⮬ <”®â® ¯¯ à â> |
36 | ¤«ï § å¢ â ª à⨪¨ á íªà .' -Wt" |
36 | ¤«ï § å¢ â ª à⨪¨ á íªà .' -Wt" |
37 | #else |
37 | #else |
38 | #define T_NOTIFY_OPEN "'IconEdit |
38 | #define T_NOTIFY_OPEN "'IconEdit |
39 | You can open only files created in IconEdit for now! |
39 | You can open only files created in IconEdit for now! |
40 | In other case please use |
40 | In other case please use |
Line 41... | Line 41... | ||
41 | #endif |
41 | #endif |
Line 42... | Line 42... | ||
42 | 42 | ||
43 | 43 | ||
44 | #define T_TITLE "Icon Editor 0.56 Alpha" |
44 | #define T_TITLE "Icon Editor 0.57b Alpha" |
Line 56... | Line 56... | ||
56 | 56 | ||
57 | block canvas = { NULL, NULL, NULL, NULL }; |
57 | block canvas = { NULL, NULL, NULL, NULL }; |
58 | block wrapper = { LEFTBAR_W, TOPBAR_H, NULL, NULL }; |
58 | block wrapper = { LEFTBAR_W, TOPBAR_H, NULL, NULL }; |
Line -... | Line 59... | ||
- | 59 | block right_bar = { NULL, 10+TOPBAR_H, RIGHT_BAR_W+10, NULL }; |
|
59 | block right_bar = { NULL, 10+TOPBAR_H, RIGHT_BAR_W+10, NULL }; |
60 | |
- | 61 | dword linear_gradient[RIGHT_BAR_W]; |
|
60 | 62 | block b_color_gradient = {NULL, 40+TOPBAR_H, RIGHT_BAR_W, 25}; |
|
61 | block b_color_gradient = {NULL, 40+TOPBAR_H, RIGHT_BAR_W, 30}; |
63 | //block b_opacity_gradient = {NULL, 75+TOPBAR_H, RIGHT_BAR_W, 15}; |
Line -... | Line 64... | ||
- | 64 | block b_last_colors = {NULL, 75+TOPBAR_H, RIGHT_BAR_W, COLSIZE}; |
|
62 | block b_last_colors = {NULL, 80+TOPBAR_H, RIGHT_BAR_W, COLSIZE*2}; |
65 | block b_default_palette = {NULL, COLSIZE+10+75+TOPBAR_H, RIGHT_BAR_W, COLSIZE*9}; |
63 | block b_default_palette = {NULL, COLSIZE*2+10+80+TOPBAR_H, RIGHT_BAR_W, COLSIZE*9}; |
66 | |
64 | 67 | dword transparent = 0xBFCAD2; |
|
Line 65... | Line 68... | ||
65 | dword color1 = 0x000000; |
68 | dword color1 = 0x000000; |
Line 101... | Line 104... | ||
101 | BTNS_LAST_USED_COLORS = 400 |
104 | BTNS_LAST_USED_COLORS = 400 |
102 | }; |
105 | }; |
Line 103... | Line 106... | ||
103 | 106 | ||
104 | proc_info Form; |
107 | proc_info Form; |
- | 108 | dword semi_white; |
|
Line 105... | Line 109... | ||
105 | dword semi_white; |
109 | bool bg_dark=false; |
Line 106... | Line 110... | ||
106 | 110 | ||
107 | more_less_box zoom = { 11, 1, 40, "Zoom" }; |
111 | more_less_box zoom = { 11, 1, 40, "Zoom" }; |
Line 118... | Line 122... | ||
118 | 0xFFFF66,0xB2FF66,0x66FF66,0x66FFB2,0x66FFFF,0x66B2FF,0x6666FF,0xB266FF,0xFF66FF,0xFF66B2, |
122 | 0xFFFF66,0xB2FF66,0x66FF66,0x66FFB2,0x66FFFF,0x66B2FF,0x6666FF,0xB266FF,0xFF66FF,0xFF66B2, |
119 | 0xC0C0C0,0xFF9999,0xFFCC99,0xFFFF99,0xCCFF99,0x99FF99,0x99FFCC,0x99FFFF,0x99CCFF,0x9999FF, |
123 | 0xC0C0C0,0xFF9999,0xFFCC99,0xFFFF99,0xCCFF99,0x99FF99,0x99FFCC,0x99FFFF,0x99CCFF,0x9999FF, |
120 | 0xCC99FF,0xFF99FF,0xFF99CC,0xE0E0E0,0xFFCCCC,0xFFE5CC,0xFFFFCC,0xE5FFCC,0xCCFFCC,0xCCFFE5, |
124 | 0xCC99FF,0xFF99FF,0xFF99CC,0xE0E0E0,0xFFCCCC,0xFFE5CC,0xFFFFCC,0xE5FFCC,0xCCFFCC,0xCCFFE5, |
121 | 0xCCFFFF,0xCCE5FF,0xCCCCFF,0xE5CCFF,0xFFCCFF,0xFFCCE5,0xFFFFFF |
125 | 0xCCFFFF,0xCCE5FF,0xCCCCFF,0xE5CCFF,0xFFCCFF,0xFFCCE5,0xFFFFFF |
122 | }; |
126 | }; |
- | 127 | ||
- | 128 | #define LAST_USED_MAX 13 |
|
123 | dword last_used_colors[13*2] = { |
129 | dword last_used_colors[LAST_USED_MAX] = { |
124 | 0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF, |
- | |
125 | 0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF, |
130 | 0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF, |
126 | 0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF |
131 | 0xFFFFFF,0xFFFFFF,0xFFFFFF |
127 | }; |
132 | }; |
Line 128... | Line 133... | ||
128 | 133 | ||
129 | CustomCursor Cursor; |
134 | CustomCursor Cursor; |
130 | dword CursorBar = FROM "cursors/bar.cur"; |
135 | dword CursorBar = FROM "cursors/bar.cur"; |
Line 155... | Line 160... | ||
155 | 160 | ||
156 | void main() |
161 | void main() |
157 | { |
162 | { |
158 | word btn; |
163 | word btn; |
- | 164 | libimg_image open_image; |
|
Line 159... | Line 165... | ||
159 | libimg_image open_image; |
165 | dword tmp_bg_col; |
160 | 166 | ||
161 | load_dll(libio, #libio_init, 1); |
167 | load_dll(libio, #libio_init, 1); |
Line 162... | Line 168... | ||
162 | load_dll(libimg, #libimg_init, 1); |
168 | load_dll(libimg, #libimg_init, 1); |
163 | load_dll(boxlib, #box_lib_init,0); |
169 | load_dll(boxlib, #box_lib_init,0); |
Line 164... | Line 170... | ||
164 | 170 | ||
- | 171 | Libimg_LoadImage(#top_icons, "/sys/icons16.png"); |
|
165 | Libimg_LoadImage(#top_icons, "/sys/icons16.png"); |
172 | Libimg_LoadImage(#left_icons, "/sys/icons16.png"); |
166 | Libimg_LoadImage(#left_icons, "/sys/icons16.png"); |
173 | |
167 | 174 | system.color.get(); |
|
Line 168... | Line 175... | ||
168 | system.color.get(); |
175 | |
169 | semi_white = MixColors(system.color.work, 0xFFFfff, 96); |
176 | semi_white = MixColors(system.color.work, 0xFFFfff, 96); |
Line -... | Line 177... | ||
- | 177 | Libimg_ReplaceColor(top_icons.image, top_icons.w, top_icons.h, 0xffFFFfff, semi_white); |
|
- | 178 | Libimg_ReplaceColor(top_icons.image, top_icons.w, top_icons.h, 0xffCACBD6, MixColors(semi_white, 0, 220)); |
|
- | 179 | ||
- | 180 | Libimg_ReplaceColor(left_icons.image, left_icons.w, left_icons.h, 0xffFFFfff, system.color.work); |
|
- | 181 | Libimg_ReplaceColor(left_icons.image, left_icons.w, left_icons.h, 0xffCACBD6, MixColors(system.color.work, 0, 200)); |
|
- | 182 | ||
170 | Libimg_ReplaceColor(top_icons.image, top_icons.w, top_icons.h, 0xffFFFfff, semi_white); |
183 | //fix line and rectandle color for dark skins |
171 | Libimg_ReplaceColor(top_icons.image, top_icons.w, top_icons.h, 0xffCACBD6, MixColors(semi_white, 0, 220)); |
184 | if (GrayScaleImage(#system.color.work,1,1)<65) bg_dark=true; else bg_dark=false; |
172 | 185 | if (bg_dark) Libimg_ReplaceColor(left_icons.image, left_icons.w, left_icons.h, 0xff545454, 0xffD3D3D4); |
|
173 | Libimg_ReplaceColor(left_icons.image, left_icons.w, left_icons.h, 0xffFFFfff, system.color.work); |
186 | |
174 | Libimg_ReplaceColor(left_icons.image, left_icons.w, left_icons.h, 0xffCACBD6, MixColors(system.color.work, 0, 200)); |
187 | EventSetActiveColor(1, color1); |
Line 183... | Line 196... | ||
183 | if (open_image.w*open_image.h>MAX_CELL_SIZE*MAX_CELL_SIZE) { |
196 | if (open_image.w*open_image.h>MAX_CELL_SIZE*MAX_CELL_SIZE) { |
184 | notify("'Hey, this is just an icon editor,\nselected image is too big to open!' -E"); |
197 | notify("'Hey, this is just an icon editor,\nselected image is too big to open!' -E"); |
185 | ExitProcess(); |
198 | ExitProcess(); |
186 | } |
199 | } |
187 | else { |
200 | else { |
188 | image.create(open_image.w, open_image.h); |
201 | image.create(open_image.h, open_image.w); |
189 | image.set_image(open_image.imgsrc); |
202 | image.set_image(open_image.imgsrc); |
190 | } |
203 | } |
191 | } |
204 | } |
Line 192... | Line 205... | ||
192 | 205 | ||
Line 255... | Line 268... | ||
255 | { |
268 | { |
256 | case BTN_NEW: |
269 | case BTN_NEW: |
257 | EventCreateNewIcon(); |
270 | EventCreateNewIcon(); |
258 | break; |
271 | break; |
259 | case BTN_OPEN: |
272 | case BTN_OPEN: |
260 | notify(T_NOTIFY_OPEN); |
273 | EventOpenIcon(); |
261 | RunProgram("/sys/lod", sprintf(#param, "*png* %s",#program_path)); |
- | |
262 | break; |
274 | break; |
263 | case BTN_SAVE: |
275 | case BTN_SAVE: |
264 | EventSaveIconToFile(); |
276 | EventSaveIconToFile(); |
265 | break; |
277 | break; |
266 | case BTN_MOVE_LEFT: |
278 | case BTN_MOVE_LEFT: |
Line 321... | Line 333... | ||
321 | break; |
333 | break; |
Line 322... | Line 334... | ||
322 | 334 | ||
323 | case evKey: |
335 | case evKey: |
Line 324... | Line 336... | ||
324 | GetKeys(); |
336 | GetKeys(); |
- | 337 | ||
325 | 338 | if (key_modifier&KEY_LCTRL) || (key_modifier&KEY_RCTRL) |
|
- | 339 | { |
|
- | 340 | switch(key_scancode) |
|
- | 341 | { |
|
- | 342 | case SCAN_CODE_KEY_S: |
|
- | 343 | EventSaveIconToFile(); |
|
- | 344 | break; |
|
- | 345 | case SCAN_CODE_KEY_O: |
|
- | 346 | EventOpenIcon(); |
|
- | 347 | break; |
|
Line -... | Line 348... | ||
- | 348 | } |
|
326 | if (currentTool != TOOL_NONE) && (tools[currentTool].onKeyEvent != 0) |
349 | } |
- | 350 | ||
- | 351 | if (key_modifier&KEY_LSHIFT) || (key_modifier&KEY_RSHIFT) { |
|
- | 352 | if (key_scancode == SCAN_CODE_DEL) EventCleanCanvas(); |
|
- | 353 | } |
|
Line 327... | Line 354... | ||
327 | tools[currentTool].onKeyEvent(key_scancode); |
354 | |
328 | 355 | if (currentTool != TOOL_NONE) && (tools[currentTool].onKeyEvent != 0) |
|
329 | if (key_scancode == SCAN_CODE_DEL) EventCleanCanvas(); |
356 | tools[currentTool].onKeyEvent(key_scancode); |
330 | 357 | ||
Line 468... | Line 495... | ||
468 | //canvas{ |
495 | //canvas{ |
469 | canvas.w = image.columns * zoom.value; |
496 | canvas.w = image.columns * zoom.value; |
470 | canvas.h = image.rows * zoom.value; |
497 | canvas.h = image.rows * zoom.value; |
471 | if (canvas.w+2 > wrapper.w) || (canvas.h+2 > wrapper.h) { |
498 | if (canvas.w+2 > wrapper.w) || (canvas.h+2 > wrapper.h) { |
472 | zoom.value--; |
499 | zoom.value--; |
- | 500 | if (zoom.x) zoom.redraw(); |
|
473 | DrawEditArea(); |
501 | DrawEditArea(); |
474 | return; |
502 | return; |
475 | } |
503 | } |
476 | canvas.x = -zoom.value*image.columns+wrapper.w/2 + wrapper.x; |
504 | canvas.x = -zoom.value*image.columns+wrapper.w/2 + wrapper.x; |
477 | canvas.y = -zoom.value*image.rows+wrapper.h/2 + wrapper.y; |
505 | canvas.y = -zoom.value*image.rows+wrapper.h/2 + wrapper.y; |
Line 505... | Line 533... | ||
505 | #define CELL 20 |
533 | #define CELL 20 |
506 | static dword outy; |
534 | static dword outy; |
507 | if (iny != NULL) outy = iny; |
535 | if (iny != NULL) outy = iny; |
508 | DrawFrame(right_bar.x, outy, CELL, CELL, NULL); |
536 | DrawFrame(right_bar.x, outy, CELL, CELL, NULL); |
509 | DrawBar(right_bar.x+2, outy+2, CELL-4, CELL-4, color1); |
537 | DrawBar(right_bar.x+2, outy+2, CELL-4, CELL-4, color1); |
510 | sprintf(#param, "%A", color1); |
- | |
511 | WriteTextWithBg(right_bar.x+30, outy+3, 0xD0, system.color.work_text, #param+4, system.color.work); |
- | |
Line 512... | Line 538... | ||
512 | 538 | ||
513 | DrawFrame(right_bar.x+110, outy, CELL, CELL, NULL); |
539 | DrawFrame(right_bar.x+CELL+5, outy, CELL, CELL, NULL); |
- | 540 | DrawBar(right_bar.x+CELL+5+2, outy+2, CELL-4, CELL-4, color2); |
|
514 | DrawBar(right_bar.x+110+2, outy+2, CELL-4, CELL-4, color2); |
541 | |
515 | sprintf(#param, "%A", color2); |
542 | //sprintf(#param, "%A", color1); |
516 | WriteTextWithBg(right_bar.x+30+110, outy+3, 0xD0, system.color.work_text, #param+4, system.color.work); |
543 | //WriteTextWithBg(right_bar.x+30, outy+3, 0xD0, system.color.work_text, #param+4, system.color.work); |
517 | DrawCurrentColorGradientByLightness(); |
544 | DrawCurrentColorGradient(); |
Line -... | Line 545... | ||
- | 545 | } |
|
- | 546 | ||
- | 547 | int lmax; |
|
- | 548 | void GenerateCurrentColorGradient() |
|
- | 549 | { |
|
- | 550 | int i, avg, rmax; |
|
- | 551 | ||
- | 552 | rgb.DwordToRgb(color1); |
|
- | 553 | avg = 255 - calc(rgb.r + rgb.g + rgb.b / 3); |
|
- | 554 | ||
- | 555 | lmax = b_color_gradient.w *avg/255 | 1; |
|
- | 556 | rmax = b_color_gradient.w - lmax | 1; |
|
- | 557 | if (lmax == 0) lmax=1; |
|
- | 558 | if (rmax == 0) rmax=1; |
|
- | 559 | ||
- | 560 | for (i=0; i |
|
- | 561 | linear_gradient[i] = MixColors(color1,0xFFFfff,255*i/lmax); |
|
- | 562 | } |
|
- | 563 | ||
- | 564 | for (i=0 ; i<=rmax; i++) { |
|
- | 565 | linear_gradient[lmax+rmax - i] = MixColors(color1,0x000000,255*i/rmax); |
|
- | 566 | } |
|
518 | } |
567 | } |
519 | 568 | ||
520 | void DrawCurrentColorGradientByLightness() |
569 | void DrawCurrentColorGradient() |
521 | { |
570 | { |
522 | int i; |
- | |
523 | int w = right_bar.w-10/2; |
571 | int i; |
524 | for (i=0; i |
572 | dword hitch_color=system.color.work; |
Line -... | Line 573... | ||
- | 573 | int hitch_x = b_color_gradient.x+lmax-1; |
|
- | 574 | if (lmax>b_color_gradient.w-2) hitch_x=b_color_gradient.x+b_color_gradient.w-3; |
|
- | 575 | ||
525 | DrawBar(b_color_gradient.x+i, b_color_gradient.y, |
576 | for (i=0 ; i |
526 | 1, b_color_gradient.h, MixColors(color1,0xFFFfff,255*i/w)); |
577 | DrawBar(b_color_gradient.x+i, b_color_gradient.y, 1, b_color_gradient.h, linear_gradient[i]); |
Line 527... | Line -... | ||
527 | - | ||
528 | //current color marker |
578 | } |
529 | DrawBar(b_color_gradient.x+i-1, b_color_gradient.y-2, 3,2, 0x000000); |
579 | //current color marker |
530 | 580 | DrawBar( b_color_gradient.x-1, b_color_gradient.y-2, b_color_gradient.w+4, 2, system.color.work); |
|
Line 531... | Line 581... | ||
531 | for (i=0 ; i<=w; i++) |
581 | |
532 | DrawBar(b_color_gradient.x+w+w-i, b_color_gradient.y, |
582 | if (bg_dark) hitch_color=0xFFFfff; else hitch_color=0; |
533 | 1, b_color_gradient.h, MixColors(color1,0x000000,255*i/w)); |
583 | DrawBar(hitch_x, b_color_gradient.y-2, 3,2, hitch_color); |
534 | } |
584 | } |
535 | 585 | ||
536 | void DrawColorPallets() |
586 | void DrawColorPallets() |
537 | { |
587 | { |
538 | int r, c, i=0; |
588 | int r, c, i=0; |
539 | //Last used colors |
589 | //Last used colors |
540 | for (r = 0; r < 2; r++) |
590 | for (r = 0; r < LAST_USED_MAX/PAL_ITEMS_X_COUNT; r++) |
Line 609... | Line 659... | ||
609 | image.columns, image.rows, image.get_image_with_replaced_color(color2, _col_to)); |
659 | image.columns, image.rows, image.get_image_with_replaced_color(color2, _col_to)); |
610 | } |
660 | } |
Line 611... | Line 661... | ||
611 | 661 | ||
612 | void ShowWindow_TestIcon() |
662 | void ShowWindow_TestIcon() |
- | 663 | { |
|
- | 664 | if (image.rows>=preview_size) || (image.columns>=preview_size) { |
|
- | 665 | notify("'IconEdit\nImage is too big for preview!' -tE"); |
|
- | 666 | return; |
|
613 | { |
667 | } |
614 | loop() switch(WaitEvent()) |
668 | loop() switch(WaitEvent()) |
615 | { |
669 | { |
616 | case evButton: |
670 | case evButton: |
617 | if (GetButtonID()) ExitProcess(); |
671 | if (GetButtonID()) ExitProcess(); |
Line 643... | Line 697... | ||
643 | { |
697 | { |
644 | EventSaveIconToFile(); |
698 | EventSaveIconToFile(); |
645 | Window_CanvasReSize.create(); |
699 | Window_CanvasReSize.create(); |
646 | } |
700 | } |
Line -... | Line 701... | ||
- | 701 | ||
- | 702 | void EventOpenIcon() |
|
- | 703 | { |
|
- | 704 | //notify(T_NOTIFY_OPEN); |
|
- | 705 | RunProgram("/sys/lod", sprintf(#param, "*png* %s",#program_path)); |
|
- | 706 | } |
|
647 | 707 | ||
648 | void EventSaveIconToFile() |
708 | void EventSaveIconToFile() |
649 | { |
709 | { |
650 | int i=0; |
710 | int i=0; |
651 | char save_file_name[4096]; |
711 | char save_file_name[4096]; |
Line 672... | Line 732... | ||
672 | } |
732 | } |
Line 673... | Line 733... | ||
673 | 733 | ||
674 | void EventSetActiveColor(int _number, _color) |
734 | void EventSetActiveColor(int _number, _color) |
675 | { |
735 | { |
- | 736 | int i; |
|
676 | int i; |
737 | if (last_used_colors[0] == _color) return; |
677 | for (i=13*2-1; i>0; i--) { |
738 | for (i=LAST_USED_MAX-1; i>0; i--) { |
678 | last_used_colors[i] = last_used_colors[i-1]; |
739 | last_used_colors[i] = last_used_colors[i-1]; |
679 | } |
740 | } |
Line 680... | Line 741... | ||
680 | last_used_colors[0] = _color; |
741 | last_used_colors[0] = _color; |
681 | 742 | ||
Line -... | Line 743... | ||
- | 743 | if (_number == 1) color1 = _color; |
|
- | 744 | if (_number == 2) color2 = _color; |
|
- | 745 | ||
- | 746 | if (b_color_gradient.hovered()) { |
|
- | 747 | lmax = mouse.x - b_color_gradient.x; |
|
- | 748 | } |
|
682 | if (_number == 1) color1 = _color; |
749 | else { |
683 | if (_number == 2) color2 = _color; |
750 | GenerateCurrentColorGradient(); |
684 | 751 | } |
|
Line 685... | Line 752... | ||
685 | DrawActiveColor(NULL); |
752 | DrawActiveColor(NULL); |