Rev 7206 | Rev 7227 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 7206 | Rev 7207 | ||
---|---|---|---|
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.38" |
31 | #define T_TITLE "Icon Editor 0.39" |
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 57... | Line 57... | ||
57 | 57 | ||
58 | block b_color_gradient = {NULL, 30+TOOLBAR_H, RIGHT_BAR_W, 30}; |
58 | block b_color_gradient = {NULL, 30+TOOLBAR_H, RIGHT_BAR_W, 30}; |
59 | block b_last_colors = {NULL, 70+TOOLBAR_H, RIGHT_BAR_W, COLSIZE*2}; |
59 | block b_last_colors = {NULL, 70+TOOLBAR_H, RIGHT_BAR_W, COLSIZE*2}; |
Line 60... | Line 60... | ||
60 | block b_default_palette = {NULL, COLSIZE*2+10+70+TOOLBAR_H, RIGHT_BAR_W, COLSIZE*9}; |
60 | block b_default_palette = {NULL, COLSIZE*2+10+70+TOOLBAR_H, RIGHT_BAR_W, COLSIZE*9}; |
61 | 61 | ||
- | 62 | dword color1 = 0x000000; |
|
Line 62... | Line 63... | ||
62 | dword active_color_1 = 0x000000; |
63 | dword color2 = 0xFFFfff; |
63 | dword active_color_2 = 0xFFFfff; |
64 | dword tool_color; |
64 | 65 | ||
65 | enum { |
66 | enum { |
Line 161... | Line 162... | ||
161 | // CODE // |
162 | // CODE // |
162 | // // |
163 | // // |
163 | //===================================================// |
164 | //===================================================// |
Line 164... | Line 165... | ||
164 | 165 | ||
165 | void FillTool_onMouseEvent(int mouseX, int mouseY, int lkm, int pkm) { |
- | |
166 | bool fill1=false; |
- | |
167 | bool fill2=false; |
- | |
168 | - | ||
169 | if (canvas.hovered()) |
- | |
170 | { |
166 | void FillTool_onMouseEvent(int mouseX, int mouseY, int lkm, int pkm) { |
171 | if (currentTool==TOOL_FILL) |
- | |
172 | { |
- | |
173 | if (mouse.key&MOUSE_LEFT)&&(mouse.up) fill1=true; |
- | |
174 | if (mouse.key&MOUSE_RIGHT)&&(mouse.up) fill2=true; |
- | |
175 | } |
- | |
176 | else |
167 | if (canvas.hovered()) && (currentTool==TOOL_FILL) && (mouse.up) |
177 | { |
- | |
178 | if (lkm) fill1=true; |
- | |
179 | if (pkm) fill2=true; |
- | |
180 | } |
- | |
181 | if (fill1) |
168 | { |
182 | EventFill(mouseY-canvas.y/zoom.value, |
- | |
183 | mouseX-canvas.x/zoom.value, active_color_1); |
- | |
184 | if (fill2) |
- | |
185 | EventFill(mouseY-canvas.y/zoom.value, |
169 | EventFill(mouseY-canvas.y/zoom.value, |
186 | mouseX-canvas.x/zoom.value, active_color_2); |
- | |
187 | - | ||
188 | if ((fill1) || (fill2)) |
170 | mouseX-canvas.x/zoom.value, tool_color); |
189 | actionsHistory.saveCurrentState(); |
- | |
190 | 171 | actionsHistory.saveCurrentState(); |
|
191 | DrawCanvas(); |
172 | DrawCanvas(); |
192 | } |
173 | } |
Line 193... | Line 174... | ||
193 | } |
174 | } |
194 | 175 | ||
195 | void PipetteTool_activate() { |
176 | void PipetteTool_activate() { |
Line 196... | Line 177... | ||
196 | SetEventMask(EVM_REDRAW+EVM_KEY+EVM_BUTTON+EVM_MOUSE); |
177 | SetEventMask(EVM_REDRAW+EVM_KEY+EVM_BUTTON+EVM_MOUSE); |
197 | } |
178 | } |
198 | 179 | ||
Line 199... | Line 180... | ||
199 | void PipetteTool_onMouseEvent(int mouseX, int mouseY, int lkm, int pkm) { |
180 | void PipetteTool_onMouseEvent(int mouseX, int mouseY, int lkm, int pkm) { |
200 | active_color_1 = GetPixelUnderMouse(); |
181 | tool_color = GetPixelUnderMouse(); |
201 | DrawActiveColor(NULL); |
182 | DrawBar(Form.cwidth-30, 5, 20, 20, tool_color); |
- | 183 | ||
Line 202... | Line 184... | ||
202 | 184 | if (mouse.down) { |
|
203 | if (mouse.down) && (mouse.key&MOUSE_LEFT) { |
185 | SetEventMask(EVM_REDRAW+EVM_KEY+EVM_BUTTON+EVM_MOUSE+EVM_MOUSE_FILTER); |
204 | SetEventMask(EVM_REDRAW+EVM_KEY+EVM_BUTTON+EVM_MOUSE+EVM_MOUSE_FILTER); |
186 | if (mouse.key&MOUSE_LEFT) EventSetActiveColor(1, tool_color); |
Line 205... | Line 187... | ||
205 | EventSetActiveColor(1, active_color_1); |
187 | if (mouse.key&MOUSE_RIGHT) EventSetActiveColor(2, tool_color); |
Line 206... | Line 188... | ||
206 | 188 | ||
207 | setCurrentTool(TOOL_PENCIL); |
189 | setCurrentTool(TOOL_PENCIL); |
208 | } |
190 | } |
209 | } |
191 | } |
210 | 192 | ||
211 | bool PencilTool_Drawing = false; |
193 | bool PencilTool_Drawing = false; |
212 | 194 | ||
Line 213... | Line -... | ||
213 | void PencilTool_onMouseEvent(int mouseX, int mouseY, int lkm, int pkm) { |
- | |
214 | if (canvas.hovered()) |
- | |
215 | { |
- | |
216 | if ((PencilTool_Drawing == true) && (!lkm) && (!pkm)) { |
195 | void PencilTool_onMouseEvent(int mouseX, int mouseY, int lkm, int pkm) { |
217 | actionsHistory.saveCurrentState(); |
196 | if (canvas.hovered()) |
218 | PencilTool_Drawing = false; |
197 | { |
219 | } |
- | |
220 | - | ||
221 | if (lkm) |
198 | if ((PencilTool_Drawing == true) && (!mouse.key)) { |
222 | image.set_pixel(mouseY-canvas.y/zoom.value, |
199 | actionsHistory.saveCurrentState(); |
223 | mouseX-canvas.x/zoom.value, active_color_1); |
200 | PencilTool_Drawing = false; |
224 | if (pkm) |
201 | } |
225 | image.set_pixel(mouseY-canvas.y/zoom.value, |
202 | |
Line 226... | Line 203... | ||
226 | mouseX-canvas.x/zoom.value, active_color_2); |
203 | if (mouse.key) { |
Line 273... | Line 250... | ||
273 | if (mouseX>canvas.x+canvas.w-zoom.value) mouseX = canvas.x+canvas.w-zoom.value; |
250 | if (mouseX>canvas.x+canvas.w-zoom.value) mouseX = canvas.x+canvas.w-zoom.value; |
274 | if (mouseY>canvas.y+canvas.h-zoom.value) mouseY = canvas.y+canvas.h-zoom.value; |
251 | if (mouseY>canvas.y+canvas.h-zoom.value) mouseY = canvas.y+canvas.h-zoom.value; |
275 | if (mouseX |
252 | if (mouseX |
276 | if (mouseY |
253 | if (mouseY |
Line 277... | Line 254... | ||
277 | 254 | ||
278 | if (mouse.lkm) { |
255 | if (mouse.key) { |
279 | if ((figTool_States[currentFigToolState].startX < 0) || (figTool_States[currentFigToolState].startY < 0)) { |
256 | if ((figTool_States[currentFigToolState].startX < 0) || (figTool_States[currentFigToolState].startY < 0)) { |
280 | figTool_States[currentFigToolState].startX = mouseX; |
257 | figTool_States[currentFigToolState].startX = mouseX; |
281 | figTool_States[currentFigToolState].startY = mouseY; |
258 | figTool_States[currentFigToolState].startY = mouseY; |
282 | } |
259 | } |
Line 296... | Line 273... | ||
296 | if (currentTool == TOOL_LINE) { |
273 | if (currentTool == TOOL_LINE) { |
297 | DrawLine(figTool_States[currentFigToolState].startX - canvas.x/zoom.value, |
274 | DrawLine(figTool_States[currentFigToolState].startX - canvas.x/zoom.value, |
298 | figTool_States[currentFigToolState].startY - canvas.y/zoom.value, |
275 | figTool_States[currentFigToolState].startY - canvas.y/zoom.value, |
299 | mouseX - canvas.x/zoom.value, |
276 | mouseX - canvas.x/zoom.value, |
300 | mouseY - canvas.y/zoom.value, |
277 | mouseY - canvas.y/zoom.value, |
301 | active_color_1, |
278 | tool_color, |
302 | 1); |
279 | 1); |
303 | } |
280 | } |
304 | else if (currentTool == TOOL_RECT) { |
281 | else if (currentTool == TOOL_RECT) { |
305 | DrawRectangleInCanvas(figTool_States[currentFigToolState].startX - canvas.x/zoom.value, |
282 | DrawRectangleInCanvas(figTool_States[currentFigToolState].startX - canvas.x/zoom.value, |
306 | figTool_States[currentFigToolState].startY - canvas.y/zoom.value, |
283 | figTool_States[currentFigToolState].startY - canvas.y/zoom.value, |
307 | mouseX - canvas.x/zoom.value, |
284 | mouseX - canvas.x/zoom.value, |
308 | mouseY - canvas.y/zoom.value, active_color_1, 1); |
285 | mouseY - canvas.y/zoom.value, tool_color, 1); |
309 | } |
286 | } |
Line 310... | Line 287... | ||
310 | 287 | ||
Line 311... | Line 288... | ||
311 | DrawCanvas(); |
288 | DrawCanvas(); |
Line 321... | Line 298... | ||
321 | } |
298 | } |
322 | } |
299 | } |
323 | } |
300 | } |
Line 324... | Line 301... | ||
324 | 301 | ||
325 | void SimpleFigureTool_onCanvasDraw() { |
302 | void SimpleFigureTool_onCanvasDraw() { |
326 | if ((figTool_States[currentFigToolState].startX >= 0) && (figTool_States[currentFigToolState].startY >= 0) && (mouse.lkm)) { |
303 | if ((figTool_States[currentFigToolState].startX >= 0) && (figTool_States[currentFigToolState].startY >= 0) && (mouse.key)) { |
327 | if (currentTool == TOOL_LINE) { |
304 | if (currentTool == TOOL_LINE) { |
328 | DrawLine(figTool_States[currentFigToolState].startX - canvas.x/zoom.value, |
305 | DrawLine(figTool_States[currentFigToolState].startX - canvas.x/zoom.value, |
329 | figTool_States[currentFigToolState].startY - canvas.y/zoom.value, |
306 | figTool_States[currentFigToolState].startY - canvas.y/zoom.value, |
330 | mouseX_last - canvas.x/zoom.value, |
307 | mouseX_last - canvas.x/zoom.value, |
331 | mouseY_last - canvas.y/zoom.value, |
308 | mouseY_last - canvas.y/zoom.value, |
332 | active_color_1, |
309 | tool_color, |
333 | 2); |
310 | 2); |
334 | } |
311 | } |
335 | else if (currentTool == TOOL_RECT) { |
312 | else if (currentTool == TOOL_RECT) { |
336 | DrawRectangleInCanvas(figTool_States[currentFigToolState].startX - canvas.x/zoom.value, |
313 | DrawRectangleInCanvas(figTool_States[currentFigToolState].startX - canvas.x/zoom.value, |
337 | figTool_States[currentFigToolState].startY - canvas.y/zoom.value, |
314 | figTool_States[currentFigToolState].startY - canvas.y/zoom.value, |
338 | mouseX_last - canvas.x/zoom.value, |
315 | mouseX_last - canvas.x/zoom.value, |
339 | mouseY_last - canvas.y/zoom.value, |
316 | mouseY_last - canvas.y/zoom.value, |
340 | active_color_1, |
317 | tool_color, |
341 | 2); |
318 | 2); |
Line 342... | Line 319... | ||
342 | } |
319 | } |
343 | 320 | ||
Line 404... | Line 381... | ||
404 | loop() switch(WaitEvent()) |
381 | loop() switch(WaitEvent()) |
405 | { |
382 | { |
406 | case evMouse: |
383 | case evMouse: |
407 | mouse.get(); |
384 | mouse.get(); |
Line -... | Line 385... | ||
- | 385 | ||
- | 386 | if (mouse.lkm) tool_color = color1; |
|
- | 387 | if (mouse.pkm) tool_color = color2; |
|
- | 388 | if (mouse.mkm) break; |
|
408 | 389 | ||
409 | if (currentTool != TOOL_NONE) |
390 | if (currentTool != TOOL_NONE) |
Line 410... | Line 391... | ||
410 | tools[currentTool].onMouseEvent(mouse.x, mouse.y, mouse.lkm, mouse.pkm); |
391 | tools[currentTool].onMouseEvent(mouse.x, mouse.y, mouse.lkm, mouse.pkm); |
411 | 392 | ||
Line 637... | Line 618... | ||
637 | 618 | ||
638 | void DrawActiveColor(dword iny) |
619 | void DrawActiveColor(dword iny) |
639 | { |
620 | { |
640 | static dword outy; |
621 | static dword outy; |
641 | if (iny != NULL) outy = iny; |
622 | if (iny != NULL) outy = iny; |
642 | DrawBar(right_bar.x, outy, 20, 20, active_color_1); |
623 | DrawBar(right_bar.x, outy, 20, 20, color1); |
643 | sprintf(#param, "%A", active_color_1); |
624 | sprintf(#param, "%A", color1); |
644 | EDI = system.color.work; |
625 | EDI = system.color.work; |
Line 645... | Line 626... | ||
645 | WriteText(right_bar.x + 30, outy + 3, 0xD0, system.color.work_text, #param+4); |
626 | WriteText(right_bar.x + 30, outy + 3, 0xD0, system.color.work_text, #param+4); |
646 | 627 | ||
647 | DrawBar(right_bar.x+110, outy, 20, 20, active_color_2); |
628 | DrawBar(right_bar.x+110, outy, 20, 20, color2); |
648 | sprintf(#param, "%A", active_color_2); |
629 | sprintf(#param, "%A", color2); |
649 | EDI = system.color.work; |
630 | EDI = system.color.work; |
650 | WriteText(right_bar.x+110 + 30, outy + 3, 0xD0, system.color.work_text, #param+4); |
631 | WriteText(right_bar.x+110 + 30, outy + 3, 0xD0, system.color.work_text, #param+4); |
Line 655... | Line 636... | ||
655 | { |
636 | { |
656 | int i; |
637 | int i; |
657 | int w = right_bar.w-10/2; |
638 | int w = right_bar.w-10/2; |
658 | for (i=0; i |
639 | for (i=0; i |
659 | DrawBar(b_color_gradient.x+i, b_color_gradient.y, |
640 | DrawBar(b_color_gradient.x+i, b_color_gradient.y, |
660 | 1, b_color_gradient.h, MixColors(active_color_1,0xFFFfff,255*i/w)); |
641 | 1, b_color_gradient.h, MixColors(color1,0xFFFfff,255*i/w)); |
661 | for (i=0 ; i<=w; i++) |
642 | for (i=0 ; i<=w; i++) |
662 | DrawBar(b_color_gradient.x+w+w-i, b_color_gradient.y, |
643 | DrawBar(b_color_gradient.x+w+w-i, b_color_gradient.y, |
663 | 1, b_color_gradient.h, MixColors(active_color_1,0x000000,255*i/w)); |
644 | 1, b_color_gradient.h, MixColors(color1,0x000000,255*i/w)); |
664 | } |
645 | } |
Line 665... | Line 646... | ||
665 | 646 | ||
666 | void DrawColorPallets() |
647 | void DrawColorPallets() |
667 | { |
648 | { |
Line 763... | Line 744... | ||
763 | for (i=13*2-1; i>0; i--) { |
744 | for (i=13*2-1; i>0; i--) { |
764 | last_used_colors[i] = last_used_colors[i-1]; |
745 | last_used_colors[i] = last_used_colors[i-1]; |
765 | } |
746 | } |
766 | last_used_colors[0] = _color; |
747 | last_used_colors[0] = _color; |
Line 767... | Line 748... | ||
767 | 748 | ||
768 | if (_number == 1) active_color_1 = _color; |
749 | if (_number == 1) color1 = _color; |
Line 769... | Line 750... | ||
769 | if (_number == 2) active_color_2 = _color; |
750 | if (_number == 2) color2 = _color; |
770 | 751 | ||
771 | DrawActiveColor(NULL); |
752 | DrawActiveColor(NULL); |