Subversion Repositories Kolibri OS

Rev

Rev 7194 | Rev 7204 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 7194 Rev 7200
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.33"
31
#define T_TITLE "Icon Editor 0.35"
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 35... Line 35...
35
#define PALLETE_SIZE 116
35
#define PALLETE_SIZE 116
36
#define TB_ICON_PADDING 26
36
#define TB_ICON_PADDING 26
-
 
37
 
Line -... Line 38...
-
 
38
#define PAL_ITEMS_X_COUNT 13
-
 
39
#define COLSIZE 18
-
 
40
#define RIGHT_BAR_W PAL_ITEMS_X_COUNT*COLSIZE
-
 
41
 
-
 
42
struct block {
-
 
43
	int x,y,w,h;
-
 
44
	bool hovered();
-
 
45
};
-
 
46
 
-
 
47
bool block::hovered() {
-
 
48
	if ((mouse.x>x) && (mouse.y>y) 
-
 
49
	&& (mouse.y
-
 
50
		return true;
37
 
51
	return false;
38
#define PAL_ITEMS_X_COUNT 13
52
}
-
 
53
 
39
#define COLSIZE 18
54
block canvas = { NULL, NULL, NULL, NULL };
-
 
55
block wrapper = { PANEL_LEFT_W, TOOLBAR_H, NULL, NULL };
-
 
56
block right_bar = { NULL, TOOLBAR_H, RIGHT_BAR_W+10, NULL };
Line 40... Line 57...
40
 
57
 
41
rect wrapper = { PANEL_LEFT_W, TOOLBAR_H, NULL, NULL };
58
block b_color_gradient = {NULL, 30+TOOLBAR_H, RIGHT_BAR_W, 30};
Line 42... Line 59...
42
rect right_bar = { NULL, TOOLBAR_H, PAL_ITEMS_X_COUNT*COLSIZE+10, NULL };
59
block b_last_colors = {NULL, 70+TOOLBAR_H, RIGHT_BAR_W, COLSIZE*2};
Line 143... Line 160...
143
 
160
 
144
void FillTool_onMouseEvent(int mouseX, int mouseY, int lkm, int pkm) {
161
void FillTool_onMouseEvent(int mouseX, int mouseY, int lkm, int pkm) {
145
	bool fill1=false;
162
	bool fill1=false;
Line 146... Line -...
146
	bool fill2=false;
-
 
147
 
-
 
148
	if (mouseX>canvas.x) && (mouseY>canvas.y) 
163
	bool fill2=false;
149
		&& (mouseY
164
 
150
		&& (mouseX
165
	if (canvas.hovered())
151
	{
166
	{
152
		if (currentTool==TOOL_FILL)
167
		if (currentTool==TOOL_FILL)
153
		{
168
		{
Line 173... Line 188...
173
void PipetteTool_activate() {
188
void PipetteTool_activate() {
174
	SetEventMask(EVM_REDRAW+EVM_KEY+EVM_BUTTON+EVM_MOUSE);
189
	SetEventMask(EVM_REDRAW+EVM_KEY+EVM_BUTTON+EVM_MOUSE);
175
}
190
}
Line 176... Line 191...
176
 
191
 
177
void PipetteTool_onMouseEvent(int mouseX, int mouseY, int lkm, int pkm) {
192
void PipetteTool_onMouseEvent(int mouseX, int mouseY, int lkm, int pkm) {
178
	active_color_1 = GetPixelColorFromScreen(mouseX + Form.left + 5, mouseY + Form.top + skin_height);
193
	active_color_1 = GetPixelUnderMouse();
Line 179... Line 194...
179
	DrawActiveColor(NULL);
194
	DrawActiveColor(NULL);
180
	
195
	
181
	if (mouse.down) && (mouse.key&MOUSE_LEFT) {
196
	if (mouse.down) && (mouse.key&MOUSE_LEFT) {
Line 185... Line 200...
185
		setCurrentTool(TOOL_PENCIL);
200
		setCurrentTool(TOOL_PENCIL);
186
	}
201
	}
187
}
202
}
Line 188... Line 203...
188
 
203
 
189
void PencilTool_onMouseEvent(int mouseX, int mouseY, int lkm, int pkm) {
-
 
190
	if (mouseX>canvas.x) && (mouseY>canvas.y) 
-
 
191
		&& (mouseY
204
void PencilTool_onMouseEvent(int mouseX, int mouseY, int lkm, int pkm) {
192
		&& (mouseX
205
	if (canvas.hovered()) 
193
	{
206
	{
194
		if (lkm) 
207
		if (lkm) 
195
			image.set_pixel(mouseY-canvas.y/zoom.value, 
208
			image.set_pixel(mouseY-canvas.y/zoom.value, 
196
				mouseX-canvas.x/zoom.value, active_color_1);
209
				mouseX-canvas.x/zoom.value, active_color_1);
Line 215... Line 228...
215
	LineTool_lastTempPosX = -1;
228
	LineTool_lastTempPosX = -1;
216
	LineTool_lastTempPosY = -1;
229
	LineTool_lastTempPosY = -1;
217
}
230
}
Line 218... Line 231...
218
 
231
 
219
void LineTool_onMouseEvent(int mouseX, int mouseY, int lkm, int pkm) {
-
 
220
	if ((mouseX>canvas.x) && (mouseY>canvas.y) 
-
 
221
		&& (mouseY
232
void LineTool_onMouseEvent(int mouseX, int mouseY, int lkm, int pkm) {
222
		&& (mouseX
233
	if (canvas.hovered()) 
223
	{
234
	{
224
		if (mouse.down) && (mouse.key & MOUSE_LEFT) {
235
		if (mouse.down) && (mouse.key & MOUSE_LEFT) {
225
			if ((LineTool_startX < 0) || (LineTool_startY < 0)) {
236
			if ((LineTool_startX < 0) || (LineTool_startY < 0)) {
226
				LineTool_startX = mouseX;
237
				LineTool_startX = mouseX;
Line 389... Line 400...
389
				if (mouse.vert==65535) zoom.click(BTN_ZOOM_IN);
400
				if (mouse.vert==65535) zoom.click(BTN_ZOOM_IN);
390
				if (mouse.vert==1) zoom.click(BTN_ZOOM_OUT);
401
				if (mouse.vert==1) zoom.click(BTN_ZOOM_OUT);
391
				DrawEditArea();
402
				DrawEditArea();
392
			}
403
			}
Line -... Line 404...
-
 
404
 
-
 
405
			if (mouse.down) {
-
 
406
				if (b_color_gradient.hovered()) 
-
 
407
				|| (b_last_colors.hovered())
-
 
408
				|| (b_default_palette.hovered()) {
-
 
409
					if (mouse.key&MOUSE_LEFT) EventSetActiveColor(1, GetPixelUnderMouse());
-
 
410
					if (mouse.key&MOUSE_RIGHT) EventSetActiveColor(2, GetPixelUnderMouse());
-
 
411
				}	
-
 
412
			}
393
 
413
 
Line 394... Line 414...
394
			break;
414
			break;
395
 
415
 
396
		case evButton:
416
		case evButton:
Line 458... Line 478...
458
					break;
478
					break;
459
				case CLOSE_BTN:
479
				case CLOSE_BTN:
460
					ExitProcess();
480
					ExitProcess();
461
					break;
481
					break;
462
			}              
482
			}
463
			if (btn >= BTNS_PALETTE_COLOR_MAS) && (btn <= BTNS_PALETTE_COLOR_MAS+PALLETE_SIZE) 
-
 
464
			{ 
-
 
465
				if (mouse.lkm) EventSetActiveColor(1, default_palette[btn - BTNS_PALETTE_COLOR_MAS]);
-
 
466
				if (mouse.pkm) EventSetActiveColor(2, default_palette[btn - BTNS_PALETTE_COLOR_MAS]);
-
 
467
			}
-
 
468
			if (btn >= BTNS_LAST_USED_COLORS) && (btn < sizeof(last_used_colors)*sizeof(dword))
-
 
469
			{
-
 
470
				if (mouse.lkm) active_color_1 = last_used_colors[btn - BTNS_LAST_USED_COLORS]; 
-
 
471
				if (mouse.pkm) active_color_2 = last_used_colors[btn - BTNS_LAST_USED_COLORS];
-
 
472
				DrawActiveColor(NULL);
-
 
473
			}
-
 
474
			break;
483
			break;
Line 475... Line 484...
475
	  
484
	  
476
		case evKey:
485
		case evKey:
477
			GetKeys();
486
			GetKeys();
Line 525... Line 534...
525
	if (Form.status_window>2) return;
534
	if (Form.status_window>2) return;
526
	if (Form.width  < 560) { MoveSize(OLD,OLD,560,OLD); return; }
535
	if (Form.width  < 560) { MoveSize(OLD,OLD,560,OLD); return; }
527
	if (Form.height < 430) { MoveSize(OLD,OLD,OLD,430); return; }
536
	if (Form.height < 430) { MoveSize(OLD,OLD,OLD,430); return; }
Line 528... Line 537...
528
 
537
 
-
 
538
	right_bar.x = Form.cwidth - right_bar.w;
Line 529... Line 539...
529
	right_bar.x = Form.cwidth - right_bar.w;
539
	b_color_gradient.x = b_last_colors.x = b_default_palette.x = right_bar.x;
530
 
540
 
531
	tx.n = 10-TB_ICON_PADDING;
541
	tx.n = 10-TB_ICON_PADDING;
532
	DrawToolbarButton(BTN_NEW,    tx.inc(TB_ICON_PADDING), 2); //not implemented
542
	DrawToolbarButton(BTN_NEW,    tx.inc(TB_ICON_PADDING), 2); //not implemented
Line 545... Line 555...
545
	DrawLeftPanel();
555
	DrawLeftPanel();
Line 546... Line 556...
546
	
556
	
Line 547... Line 557...
547
	DrawEditArea();
557
	DrawEditArea();
548
 
558
 
Line 549... Line 559...
549
	DrawActiveColor(right_bar.y);
559
	DrawActiveColor(right_bar.y);
550
	DrawColorPallets(right_bar.x, right_bar.y + 70);
560
	DrawColorPallets();
Line 551... Line 561...
551
 
561
 
Line 619... Line 629...
619
 
629
 
620
	DrawBar(right_bar.x+110, outy, 20, 20, active_color_2);
630
	DrawBar(right_bar.x+110, outy, 20, 20, active_color_2);
621
	sprintf(#param, "%A", active_color_2);
631
	sprintf(#param, "%A", active_color_2);
622
	EDI = system.color.work;
632
	EDI = system.color.work;
623
	WriteText(right_bar.x+110 + 30, outy + 3, 0xD0, system.color.work_text, #param+4);	
633
	WriteText(right_bar.x+110 + 30, outy + 3, 0xD0, system.color.work_text, #param+4);	
624
	DrawCurrentColorGradientByLightness(right_bar.x, outy+30);
634
	DrawCurrentColorGradientByLightness();
Line 625... Line 635...
625
}
635
}
626
 
636
 
627
void DrawCurrentColorGradientByLightness(int x, y)
637
void DrawCurrentColorGradientByLightness()
628
{
638
{
629
	int i;
-
 
630
	int w = right_bar.w-10/2;
639
	int i;
-
 
640
	int w = right_bar.w-10/2;
631
	int h = 30;
641
	for (i=0; i
632
	for (i=0; i
642
		DrawBar(b_color_gradient.x+i, b_color_gradient.y, 
-
 
643
			1, b_color_gradient.h, MixColors(active_color_1,0xFFFfff,255*i/w));
633
		DrawBar(x+i, y, 1, h, MixColors(active_color_1,0xFFFfff,255*i/w));
644
	for (i=0 ; i<=w; i++)
634
	for (i=0 ; i<=w; i++)
645
		DrawBar(b_color_gradient.x+w+w-i, b_color_gradient.y, 
Line 635... Line 646...
635
		DrawBar(x+w+w-i, y, 1, h, MixColors(active_color_1,0x000000,255*i/w));
646
			1, b_color_gradient.h, MixColors(active_color_1,0x000000,255*i/w));
636
}
647
}
637
 
648
 
638
void DrawColorPallets(dword _x, _y)
-
 
639
{
649
void DrawColorPallets()
640
	int r, c, i=0;
650
{
641
 
651
	int r, c, i=0;
642
	//Last used colors
652
	//Last used colors
643
	for (r = 0; r < 2; r++)
653
	for (r = 0; r < 2; r++)
644
	{
654
	{
645
		for (c = 0; c < PAL_ITEMS_X_COUNT; c++, i++)
655
		for (c = 0; c < PAL_ITEMS_X_COUNT; c++, i++)
646
		{
-
 
647
			DrawBar(c*COLSIZE + _x, r*COLSIZE + _y, COLSIZE, COLSIZE, last_used_colors[i]);
656
		{
648
			DefineHiddenButton(c*COLSIZE + _x, r*COLSIZE + _y, COLSIZE-1, COLSIZE-1, BTNS_LAST_USED_COLORS+i);
657
			DrawBar(c*COLSIZE + b_last_colors.x, r*COLSIZE + b_last_colors.y, 
649
			
-
 
650
		}
-
 
651
	}
658
				COLSIZE, COLSIZE, last_used_colors[i]);
652
 
-
 
653
	_y += r*COLSIZE + 10;
659
		}
654
	i=0;
660
	}
655
 
661
	i=0;
656
	//Default colors
662
	//Default colors
657
	for (r = 0; r < 9; r++)
663
	for (r = 0; r < 9; r++)
658
	{
664
	{
659
		for (c = 0; c < PAL_ITEMS_X_COUNT; c++, i++)
665
		for (c = 0; c < PAL_ITEMS_X_COUNT; c++, i++)
660
		{
666
		{
661
			DrawBar(c*COLSIZE + _x, r*COLSIZE + _y, COLSIZE, COLSIZE, default_palette[PALLETE_SIZE-i]);
667
			DrawBar(c*COLSIZE + b_default_palette.x, r*COLSIZE + b_default_palette.y, 
662
			DefineHiddenButton(c*COLSIZE + _x, r*COLSIZE + _y, COLSIZE-1, COLSIZE-1, BTNS_PALETTE_COLOR_MAS+PALLETE_SIZE-i);
668
				COLSIZE, COLSIZE, default_palette[PALLETE_SIZE-i]);
Line 663... Line -...
663
		}
-
 
664
	}
669
		}
665
}
670
	}
666
 
671
}
667
 
672
 
668
void DrawCanvas()
673
void DrawCanvas()
Line 678... Line 683...
678
	}
683
	}
Line 679... Line 684...
679
	
684
	
680
	if ((currentTool != TOOL_NONE) && (tools[currentTool].onCanvasDraw != 0))
685
	if ((currentTool != TOOL_NONE) && (tools[currentTool].onCanvasDraw != 0))
Line -... Line 686...
-
 
686
		tools[currentTool].onCanvasDraw();
-
 
687
 
-
 
688
	DrawPreview();
-
 
689
}
-
 
690
 
-
 
691
void DrawPreview()
-
 
692
{
-
 
693
	int x = right_bar.x;
-
 
694
	int y = wrapper.y + wrapper.h - image.rows-2;
681
		tools[currentTool].onCanvasDraw();
695
	DrawRectangle(x, y, image.columns+1, image.rows+1, system.color.work_graph);
Line -... Line 696...
-
 
696
	_PutImage(x+1,y+1, image.columns, image.rows, image.get_image());
-
 
697
}
-
 
698
 
-
 
699
dword GetPixelUnderMouse()
Line 682... Line 700...
682
 
700
{
683
}
701
	return GetPixelColorFromScreen(mouse.x + Form.left + 5, mouse.y + Form.top + skin_height);
684
 
702
}
685
 
703
 
Line 732... Line 750...
732
 
750
 
733
	if (_number == 1) active_color_1 = _color;
751
	if (_number == 1) active_color_1 = _color;
Line 734... Line 752...
734
	if (_number == 2) active_color_2 = _color;
752
	if (_number == 2) active_color_2 = _color;
735
 
753
 
736
	DrawActiveColor(NULL);
754
	DrawActiveColor(NULL);
Line 737... Line 755...
737
	DrawColorPallets(right_bar.x, right_bar.y + 70);
755
	DrawColorPallets();
738
}
756
}
739
 
757
 
Line 768... Line 786...
768
 
786
 
769
// target - image (1) or canvas (2)
787
// target - image (1) or canvas (2)
770
void DrawLine(int x1, int y1, int x2, int y2, dword color, int target) {
788
void DrawLine(int x1, int y1, int x2, int y2, dword color, int target) {
Line 771... Line 789...
771
	int dx, dy, signX, signY, error, error2;
789
	int dx, dy, signX, signY, error, error2;
772
 
790
 
Line 773... Line 791...
773
	debugval("Draw line", x1);
791
	// debugval("Draw line", x1);
774
	debugval("Draw line", y1);
792
	// debugval("Draw line", y1);
775
	
793
	
776
	debugval("Draw line", x2);
794
	// debugval("Draw line", x2);
Line 777... Line 795...
777
	debugval("Draw line", y2);
795
	// debugval("Draw line", y2);
778
	debugln("===");
796
	// debugln("===");