Subversion Repositories Kolibri OS

Rev

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);