Subversion Repositories Kolibri OS

Rev

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;