Rev 7186 | Rev 7190 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 7186 | Rev 7187 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | /* |
1 | /* |
2 | * Icon Editor for KolibriOS |
2 | * Icon Editor for KolibriOS |
3 | * Authors: Leency, |
3 | * Authors: Leency, Nicolas |
4 | * Licence: GPL v2 |
4 | * Licence: GPL v2 |
5 | */ |
5 | */ |
Line 6... | Line 6... | ||
6 | 6 | ||
7 | /* |
7 | /* |
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.3" |
31 | #define T_TITLE "Icon Editor 0.31" |
- | 32 | ||
32 | 33 | #define TOOLBAR_H 24+8 |
|
- | 34 | #define PANEL_LEFT_W 16+5+5+3+3 |
|
- | 35 | #define PALLETE_SIZE 116 |
|
Line 33... | Line 36... | ||
33 | #define TOOLBAR_H 24+8 |
36 | #define TB_ICON_PADDING 26 |
34 | #define PALLETE_SIZE 116 |
37 | |
35 | 38 | ||
Line 36... | Line 39... | ||
36 | rect wrapper = { 10, TOOLBAR_H, NULL, NULL }; |
39 | rect wrapper = { PANEL_LEFT_W, TOOLBAR_H, NULL, NULL }; |
37 | rect right_bar = { NULL, TOOLBAR_H, 280, NULL }; |
40 | rect right_bar = { NULL, TOOLBAR_H, 280, NULL }; |
Line 50... | Line 53... | ||
50 | BTN_MOVE_DOWN, |
53 | BTN_MOVE_DOWN, |
51 | BTN_FLIP_HOR, |
54 | BTN_FLIP_HOR, |
52 | BTN_FLIP_VER, |
55 | BTN_FLIP_VER, |
53 | BTN_ROTATE_LEFT, |
56 | BTN_ROTATE_LEFT, |
54 | BTN_ROTATE_RIGHT, |
57 | BTN_ROTATE_RIGHT, |
- | 58 | BTN_PENCIL, |
|
55 | BTN_PICK, |
59 | BTN_PICK, |
56 | BTN_FILL, |
60 | BTN_FILL, |
57 | BTN_LINE, |
61 | BTN_LINE, |
58 | BTN_RECT, |
62 | BTN_RECT, |
59 | BTN_ZOOM_IN, |
63 | BTN_ZOOM_IN, |
Line 62... | Line 66... | ||
62 | BTNS_LAST_USED_COLORS = 400 |
66 | BTNS_LAST_USED_COLORS = 400 |
63 | }; |
67 | }; |
Line 64... | Line 68... | ||
64 | 68 | ||
Line 65... | Line 69... | ||
65 | proc_info Form; |
69 | proc_info Form; |
Line 66... | Line 70... | ||
66 | 70 | ||
67 | more_less_box zoom = { NULL, NULL, 11, 1, 40, BTN_ZOOM_IN, BTN_ZOOM_OUT, "Zoom" }; |
71 | more_less_box zoom = { PANEL_LEFT_W, -100, 11, 1, 40, BTN_ZOOM_IN, BTN_ZOOM_OUT, "Zoom" }; |
68 | 72 | ||
69 | dword default_palette[] = { |
73 | dword default_palette[] = { |
Line 82... | Line 86... | ||
82 | 0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF |
86 | 0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF |
83 | }; |
87 | }; |
Line 84... | Line 88... | ||
84 | 88 | ||
Line 85... | Line -... | ||
85 | _image image; |
- | |
86 | - | ||
87 | libimg_image tools_icons; |
89 | _image image; |
Line 88... | Line 90... | ||
88 | 90 | ||
89 | libimg_image open_image; |
91 | libimg_image open_image; |
90 | 92 | ||
91 | enum { |
93 | enum { |
92 | TOOL_NONE = -1, |
94 | TOOL_NONE = -1, |
93 | TOOL_FILL = 0, |
95 | TOOL_PENCIL, |
94 | TOOL_PIPETTE = 1, |
96 | TOOL_PIPETTE, |
95 | TOOL_PENCIL = 2, |
97 | TOOL_FILL, |
Line 96... | Line 98... | ||
96 | TOOL_LINE = 3, |
98 | TOOL_LINE, |
97 | TOOL_RECT = 4, |
99 | TOOL_RECT, |
Line 122... | Line 124... | ||
122 | 124 | ||
123 | if ((index != TOOL_NONE) && (tools[index].activate != 0)) |
125 | if ((index != TOOL_NONE) && (tools[index].activate != 0)) |
Line 124... | Line 126... | ||
124 | tools[index].activate(); |
126 | tools[index].activate(); |
- | 127 | ||
125 | 128 | currentTool = index; |
|
Line 126... | Line 129... | ||
126 | currentTool = index; |
129 | DrawLeftPanel(); |
127 | } |
130 | } |
128 | 131 | ||
Line 293... | Line 296... | ||
293 | } |
296 | } |
294 | } |
297 | } |
Line 295... | Line 298... | ||
295 | 298 | ||
296 | void initTools() |
299 | void initTools() |
297 | { |
300 | { |
298 | tools[0].id = TOOL_FILL; |
301 | tools[0].id = TOOL_PENCIL; |
Line 299... | Line 302... | ||
299 | tools[0].onMouseEvent = #FillTool_onMouseEvent; |
302 | tools[0].onMouseEvent = #PencilTool_onMouseEvent; |
300 | 303 | ||
301 | tools[1].id = TOOL_PIPETTE; |
304 | tools[1].id = TOOL_PIPETTE; |
Line 302... | Line 305... | ||
302 | tools[1].activate = #PipetteTool_activate; |
305 | tools[1].activate = #PipetteTool_activate; |
303 | tools[1].onMouseEvent = #PipetteTool_onMouseEvent; |
306 | tools[1].onMouseEvent = #PipetteTool_onMouseEvent; |
Line 304... | Line 307... | ||
304 | 307 | ||
305 | tools[2].id = TOOL_PENCIL; |
308 | tools[2].id = TOOL_FILL; |
306 | tools[2].onMouseEvent = #PencilTool_onMouseEvent; |
309 | tools[2].onMouseEvent = #FillTool_onMouseEvent; |
307 | 310 | ||
Line 323... | Line 326... | ||
323 | word btn; |
326 | word btn; |
Line 324... | Line 327... | ||
324 | 327 | ||
325 | load_dll(libio, #libio_init, 1); |
328 | load_dll(libio, #libio_init, 1); |
326 | load_dll(libimg, #libimg_init, 1); |
329 | load_dll(libimg, #libimg_init, 1); |
327 | Libimg_LoadImage(#skin, "/sys/icons16.png"); |
- | |
328 | Libimg_LoadImage(#tools_icons, abspath("paint_tools.png")); |
330 | Libimg_LoadImage(#skin, "/sys/icons16.png"); |
329 | //system.color.get(); |
331 | //system.color.get(); |
Line 330... | Line 332... | ||
330 | //Libimg_ReplaceColor(skin.image, skin.w, skin.h, 0xFFfffFFF, system.color.work_text); |
332 | //Libimg_ReplaceColor(tools_img.image, tools_img.w, tools_img.h, 0xFFF8C0D0, system.color.work); |
Line 331... | Line 333... | ||
331 | 333 | ||
332 | image.create(32, 32); |
334 | image.create(32, 32); |
Line 398... | Line 400... | ||
398 | break; |
400 | break; |
399 | case BTN_FLIP_HOR: |
401 | case BTN_FLIP_HOR: |
400 | image.move(FLIP_HOR); |
402 | image.move(FLIP_HOR); |
401 | DrawCanvas(); |
403 | DrawCanvas(); |
402 | break; |
404 | break; |
- | 405 | case BTN_PENCIL: |
|
- | 406 | setCurrentTool(TOOL_PENCIL); |
|
- | 407 | break; |
|
403 | case BTN_PICK: |
408 | case BTN_PICK: |
404 | setCurrentTool(TOOL_PIPETTE); |
409 | setCurrentTool(TOOL_PIPETTE); |
405 | //EventPickActivate(); |
410 | //EventPickActivate(); |
406 | break; |
411 | break; |
407 | case BTN_FILL: |
412 | case BTN_FILL: |
Line 440... | Line 445... | ||
440 | break; |
445 | break; |
Line 441... | Line 446... | ||
441 | 446 | ||
442 | case evKey: |
447 | case evKey: |
443 | GetKeys(); |
448 | GetKeys(); |
- | 449 | if (key_scancode == SCAN_CODE_ESC) setCurrentTool(TOOL_PENCIL); |
|
444 | if (key_scancode == SCAN_CODE_ESC) setCurrentTool(TOOL_PENCIL); |
450 | if (key_scancode == SCAN_CODE_KEY_P) setCurrentTool(TOOL_PENCIL); |
445 | if (key_scancode == SCAN_CODE_KEY_I) setCurrentTool(TOOL_PIPETTE); |
451 | if (key_scancode == SCAN_CODE_KEY_I) setCurrentTool(TOOL_PIPETTE); |
- | 452 | if (key_scancode == SCAN_CODE_KEY_F) setCurrentTool(TOOL_FILL); |
|
- | 453 | if (key_scancode == SCAN_CODE_KEY_L) setCurrentTool(TOOL_LINE); |
|
446 | //if (key_scancode == SCAN_CODE_KEY_F) EventFillActivate(); |
454 | if (key_scancode == SCAN_CODE_KEY_R) setCurrentTool(TOOL_RECT); |
447 | if (key_scancode == SCAN_CODE_MINUS) {zoom.click(BTN_ZOOM_OUT); DrawEditArea();} |
455 | if (key_scancode == SCAN_CODE_MINUS) {zoom.click(BTN_ZOOM_OUT); DrawEditArea();} |
448 | if (key_scancode == SCAN_CODE_PLUS) {zoom.click(BTN_ZOOM_IN); DrawEditArea();} |
456 | if (key_scancode == SCAN_CODE_PLUS) {zoom.click(BTN_ZOOM_IN); DrawEditArea();} |
Line 449... | Line 457... | ||
449 | break; |
457 | break; |
Line 459... | Line 467... | ||
459 | DrawWideRectangle(_x, 4, 22, 22, 3, 0xFFFfff); |
467 | DrawWideRectangle(_x, 4, 22, 22, 3, 0xFFFfff); |
460 | DefineHiddenButton(_x, 4, 21, 21, _id); |
468 | DefineHiddenButton(_x, 4, 21, 21, _id); |
461 | img_draw stdcall(skin.image, _x+3, 7, 16, 16, 0, _icon_n*16); |
469 | img_draw stdcall(skin.image, _x+3, 7, 16, 16, 0, _icon_n*16); |
462 | } |
470 | } |
Line -... | Line 471... | ||
- | 471 | ||
- | 472 | void DrawLeftPanelButton(dword _id, _y, _icon_n) |
|
- | 473 | { |
|
- | 474 | int x = 5; |
|
- | 475 | DrawWideRectangle(x, _y, 22, 22, 3, 0xFFFfff); |
|
- | 476 | DefineHiddenButton(x, _y, 21, 21, _id); |
|
- | 477 | img_draw stdcall(skin.image, x+3, _y+3, 16, 16, 0, _icon_n*16); |
|
- | 478 | } |
|
463 | 479 | ||
464 | void DrawStatusBar() |
480 | void DrawStatusBar() |
465 | { |
481 | { |
466 | zoom.y = wrapper.y + wrapper.h + 6; |
482 | zoom.y = wrapper.y + wrapper.h + 6; |
467 | zoom.x = wrapper.x; |
483 | zoom.x = wrapper.x; |
Line 471... | Line 487... | ||
471 | WriteText(wrapper.x+wrapper.w-calc(strlen(#param)*8), zoom.y+2, 0x90, system.color.work_text, #param); |
487 | WriteText(wrapper.x+wrapper.w-calc(strlen(#param)*8), zoom.y+2, 0x90, system.color.work_text, #param); |
472 | } |
488 | } |
Line 473... | Line 489... | ||
473 | 489 | ||
474 | void draw_window() |
490 | void draw_window() |
475 | { |
- | |
476 | #define TB_ICON_PADDING 26 |
491 | { |
477 | incn tx; |
492 | incn tx; |
478 | system.color.get(); |
493 | system.color.get(); |
479 | DefineAndDrawWindow(115+random(100), 50+random(100), 700, 540, 0x33, system.color.work, T_TITLE, 0); |
494 | DefineAndDrawWindow(115+random(100), 50+random(100), 700, 540, 0x33, system.color.work, T_TITLE, 0); |
480 | GetProcessInfo(#Form, SelfInfo); |
495 | GetProcessInfo(#Form, SelfInfo); |
Line 496... | Line 511... | ||
496 | DrawToolbarButton(BTN_FLIP_HOR, tx.inc(TB_ICON_PADDING+8), 34); |
511 | DrawToolbarButton(BTN_FLIP_HOR, tx.inc(TB_ICON_PADDING+8), 34); |
497 | DrawToolbarButton(BTN_FLIP_VER, tx.inc(TB_ICON_PADDING), 35); |
512 | DrawToolbarButton(BTN_FLIP_VER, tx.inc(TB_ICON_PADDING), 35); |
498 | // DrawToolbarButton(BTN_ROTATE_LEFT, tx.inc(TB_ICON_PADDING), 36); //not implemented |
513 | // DrawToolbarButton(BTN_ROTATE_LEFT, tx.inc(TB_ICON_PADDING), 36); //not implemented |
499 | // DrawToolbarButton(BTN_ROTATE_RIGHT, tx.inc(TB_ICON_PADDING), 37); //not implemented |
514 | // DrawToolbarButton(BTN_ROTATE_RIGHT, tx.inc(TB_ICON_PADDING), 37); //not implemented |
Line 500... | Line -... | ||
500 | - | ||
501 | DrawToolbarButton(BTN_PICK, tx.inc(TB_ICON_PADDING+8), 38); |
- | |
502 | DrawToolbarButton(BTN_FILL, tx.inc(TB_ICON_PADDING), 39); |
- | |
503 | DrawToolbarButton(BTN_LINE, tx.inc(TB_ICON_PADDING), 40); |
515 | |
Line 504... | Line 516... | ||
504 | DrawToolbarButton(BTN_RECT, tx.inc(TB_ICON_PADDING), 41); |
516 | DrawLeftPanel(); |
Line 505... | Line 517... | ||
505 | 517 | ||
506 | DrawEditArea(); |
518 | DrawEditArea(); |
Line 507... | Line 519... | ||
507 | 519 | ||
508 | DrawActiveColor(right_bar.y); |
520 | DrawActiveColor(right_bar.y); |
Line -... | Line 521... | ||
- | 521 | DrawColorPallets(right_bar.x, right_bar.y + 30); |
|
- | 522 | ||
- | 523 | DrawStatusBar(); |
|
- | 524 | } |
|
- | 525 | ||
- | 526 | void DrawLeftPanel() |
|
- | 527 | { |
|
- | 528 | incn ty; |
|
- | 529 | ty.n = TOOLBAR_H-TB_ICON_PADDING; |
|
- | 530 | DrawLeftPanelButton(BTN_PENCIL, ty.inc(TB_ICON_PADDING), 38); |
|
- | 531 | DrawLeftPanelButton(BTN_PICK, ty.inc(TB_ICON_PADDING), 39); |
|
- | 532 | DrawLeftPanelButton(BTN_FILL, ty.inc(TB_ICON_PADDING), 40); |
|
509 | DrawColorPallets(right_bar.x, right_bar.y + 30); |
533 | DrawLeftPanelButton(BTN_LINE, ty.inc(TB_ICON_PADDING), 41); |
510 | 534 | DrawLeftPanelButton(BTN_RECT, ty.inc(TB_ICON_PADDING), 42); |
|
511 | DrawStatusBar(); |
535 | DrawRectangle3D(5, currentTool*TB_ICON_PADDING+TOOLBAR_H, 16+3+2, 16+3+2, 0x333333, 0x777777); |
512 | } |
536 | } |
513 | 537 | ||
Line 514... | Line 538... | ||
514 | void DrawEditArea() |
538 | void DrawEditArea() |
515 | { |
539 | { |
Line 516... | Line 540... | ||
516 | dword color1=0xC0C0C0; |
540 | dword color1=0xC0C0C0; |
517 | int top_side; |
541 | int top_side; |
518 | int left_side; |
542 | int left_side; |