Rev 7521 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
7257 | leency | 1 | #define TOIMAGE 1 |
2 | #define TOCANVAS 2 |
||
7254 | leency | 3 | |
7257 | leency | 4 | |
7977 | leency | 5 | struct TOOL { |
7254 | leency | 6 | int id; |
7262 | leency | 7 | dword cursor; |
7254 | leency | 8 | void (*activate)(); |
9 | void (*deactivate)(); |
||
10 | void (*onMouseEvent)(int x, int y, int lkm, int pkm); |
||
11 | void (*onKeyEvent)(dword keycode); |
||
12 | void (*onCanvasDraw)(); |
||
7977 | leency | 13 | } tools[8]; |
7254 | leency | 14 | |
7257 | leency | 15 | int previousTool = -1; |
7254 | leency | 16 | int currentTool = -1; |
17 | |||
7257 | leency | 18 | enum { |
19 | TOOL_NONE = -1, |
||
20 | TOOL_PENCIL, |
||
21 | TOOL_PIPETTE, |
||
22 | TOOL_FILL, |
||
23 | TOOL_LINE, |
||
24 | TOOL_RECT, |
||
7259 | leency | 25 | TOOL_BAR, |
7260 | leency | 26 | TOOL_SELECT, |
27 | TOOL_SCREEN_COPY |
||
7257 | leency | 28 | }; |
29 | #include "tools/pencil.h"; |
||
30 | #include "tools/pipette.h"; |
||
31 | #include "tools/fill.h"; |
||
7260 | leency | 32 | #include "tools/simple_figure.h"; |
7257 | leency | 33 | #include "tools/selection.h"; |
7260 | leency | 34 | #include "tools/screen_copy.h"; |
7254 | leency | 35 | |
7257 | leency | 36 | |
37 | void initTools() |
||
38 | { |
||
7259 | leency | 39 | tools[TOOL_PENCIL].id = TOOL_PENCIL; |
7262 | leency | 40 | tools[TOOL_PENCIL].cursor = #CursorPencil; |
7259 | leency | 41 | tools[TOOL_PENCIL].onMouseEvent = #PencilTool_onMouseEvent; |
42 | tools[TOOL_PENCIL].deactivate = #PencilTool_reset; |
||
7257 | leency | 43 | |
7259 | leency | 44 | tools[TOOL_PIPETTE].id = TOOL_PIPETTE; |
7262 | leency | 45 | tools[TOOL_PIPETTE].cursor = #CursorPipette; |
7259 | leency | 46 | tools[TOOL_PIPETTE].activate = #PipetteTool_activate; |
47 | tools[TOOL_PIPETTE].onMouseEvent = #PipetteTool_onMouseEvent; |
||
7271 | leency | 48 | tools[TOOL_PIPETTE].onKeyEvent = #PipetteTool_onKeyEvent; |
7257 | leency | 49 | |
7259 | leency | 50 | tools[TOOL_FILL].id = TOOL_FILL; |
7262 | leency | 51 | tools[TOOL_FILL].cursor = #CursorFill; |
7259 | leency | 52 | tools[TOOL_FILL].onMouseEvent = #FillTool_onMouseEvent; |
7257 | leency | 53 | |
7259 | leency | 54 | tools[TOOL_LINE].id = TOOL_LINE; |
7262 | leency | 55 | tools[TOOL_LINE].cursor = #CursorLine; |
7259 | leency | 56 | tools[TOOL_LINE].activate = #SimpleFigureTool_Reset; |
57 | tools[TOOL_LINE].deactivate = #SimpleFigureTool_Reset; |
||
58 | tools[TOOL_LINE].onMouseEvent = #SimpleFigureTool_onMouseEvent; |
||
59 | tools[TOOL_LINE].onCanvasDraw = #SimpleFigureTool_onCanvasDraw; |
||
7257 | leency | 60 | |
7259 | leency | 61 | tools[TOOL_RECT].id = TOOL_RECT; |
7262 | leency | 62 | tools[TOOL_RECT].cursor = #CursorRectangle; |
7259 | leency | 63 | tools[TOOL_RECT].activate = #SimpleFigureTool_Reset; |
64 | tools[TOOL_RECT].deactivate = #SimpleFigureTool_Reset; |
||
65 | tools[TOOL_RECT].onMouseEvent = #SimpleFigureTool_onMouseEvent; |
||
66 | tools[TOOL_RECT].onCanvasDraw = #SimpleFigureTool_onCanvasDraw; |
||
7257 | leency | 67 | |
7259 | leency | 68 | tools[TOOL_BAR].id = TOOL_BAR; |
7262 | leency | 69 | tools[TOOL_BAR].cursor = #CursorBar; |
7259 | leency | 70 | tools[TOOL_BAR].activate = #SimpleFigureTool_Reset; |
71 | tools[TOOL_BAR].deactivate = #SimpleFigureTool_Reset; |
||
72 | tools[TOOL_BAR].onMouseEvent = #SimpleFigureTool_onMouseEvent; |
||
73 | tools[TOOL_BAR].onCanvasDraw = #SimpleFigureTool_onCanvasDraw; |
||
74 | |||
75 | tools[TOOL_SELECT].id = TOOL_SELECT; |
||
7262 | leency | 76 | tools[TOOL_SELECT].cursor = #CursorSelect; |
7259 | leency | 77 | tools[TOOL_SELECT].activate = #SelectTool_activate; |
78 | tools[TOOL_SELECT].deactivate = #SelectTool_deactivate; |
||
79 | tools[TOOL_SELECT].onMouseEvent = #SelectTool_onMouseEvent; |
||
80 | tools[TOOL_SELECT].onCanvasDraw = #SelectTool_onCanvasDraw; |
||
81 | tools[TOOL_SELECT].onKeyEvent = #SelectTool_onKeyEvent; |
||
7260 | leency | 82 | |
83 | tools[TOOL_SCREEN_COPY].id = TOOL_SCREEN_COPY; |
||
7262 | leency | 84 | tools[TOOL_SCREEN_COPY].cursor = NULL; |
7260 | leency | 85 | tools[TOOL_SCREEN_COPY].activate = #ScreenCopy_activate; |
86 | tools[TOOL_SCREEN_COPY].onMouseEvent = #ScreenCopy_onMouseEvent; |
||
7444 | leency | 87 | tools[TOOL_SCREEN_COPY].onKeyEvent = #ScreenCopy_onKeyEvent; |
7257 | leency | 88 | } |
89 | |||
90 | |||
7254 | leency | 91 | void resetCurrentTool() { |
92 | if ((currentTool != TOOL_NONE) && (tools[currentTool].deactivate != 0)) { |
||
93 | tools[currentTool].deactivate(); |
||
94 | } |
||
95 | currentTool = TOOL_NONE; |
||
96 | } |
||
97 | |||
98 | void setCurrentTool(int index) { |
||
7257 | leency | 99 | previousTool = currentTool; |
7254 | leency | 100 | resetCurrentTool(); |
101 | |||
102 | currentTool = index; |
||
103 | |||
104 | if ((index != TOOL_NONE) && (tools[index].activate != 0)) |
||
105 | tools[index].activate(); |
||
106 | |||
7262 | leency | 107 | Cursor.Restore(); |
108 | if (wrapper.hovered()) SetCursor(); |
||
7254 | leency | 109 | DrawCanvas(); |
7977 | leency | 110 | DrawLeftPanelSelection(); |
7254 | leency | 111 | } |
112 | |||
7262 | leency | 113 | void SetCursor() |
114 | { |
||
115 | if (tools[currentTool].cursor) && (!Cursor.CursorPointer) { |
||
116 | Cursor.Load(tools[currentTool].cursor); |
||
117 | Cursor.Set(); |
||
118 | } |
||
119 | } |