Subversion Repositories Kolibri OS

Rev

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

Rev 7373 Rev 7422
Line 29... Line 29...
29
//                                                   //
29
//                                                   //
30
//===================================================//
30
//===================================================//
Line 31... Line 31...
31
 
31
 
32
#ifdef LANG_RUS
32
#ifdef LANG_RUS
33
#define T_NOTIFY_OPEN "'IconEdit
33
#define T_NOTIFY_OPEN "'IconEdit
34
‚ ¤ ­­ë© ¬®¬¥­â IconEdit ¬®¦¥â ®âªà뢠âì ⮫쪮 ¨ª®­ª¨, ᮧ¤ ­­ë¥ ¢ á ¬®¬ । ªâ®à¥.
34
‚ ¤ ­­ë© ¬®¬¥­â IconEdit ¬®¦¥â ®âªà뢠âì ⮫쪮 ¨ª®­ª¨, ᮧ¤ ­­ë¥ ¢ á ¬®¬ । ªâ®à¥.
35
…᫨ ­ã¦­® ®âªàëâì ¤à㣮¥ ¨§®¡à ¦¥­¨¥, ¢®á¯®«ì§ã©â¥áì ¨­áâà㬥­â®¬ <”®â® ¯¯ à â>
35
…᫨ ­ã¦­® ®âªàëâì ¤à㣮¥ ¨§®¡à ¦¥­¨¥, ¢®á¯®«ì§ã©â¥áì ¨­áâà㬥­â®¬ <”®â® ¯¯ à â>
36
¤«ï § å¢ â  ª à⨭ª¨ á íªà ­ .' -Wt"
36
¤«ï § å¢ â  ª à⨭ª¨ á íªà ­ .' -Wt"
37
#else
37
#else
38
#define T_NOTIFY_OPEN "'IconEdit
38
#define T_NOTIFY_OPEN "'IconEdit
39
You can open only files created in IconEdit for now!
39
You can open only files created in IconEdit for now!
40
In other case please use  tool to get an image from screen.' -Wt"
40
In other case please use  tool to get an image from screen.' -Wt"
Line 41... Line 41...
41
#endif
41
#endif
Line 42... Line 42...
42
 
42
 
43
 
43
 
44
#define T_TITLE "Icon Editor 0.56 Alpha"
44
#define T_TITLE "Icon Editor 0.57b Alpha"
Line 56... Line 56...
56
 
56
 
57
block canvas = { NULL, NULL, NULL, NULL };
57
block canvas = { NULL, NULL, NULL, NULL };
58
block wrapper = { LEFTBAR_W, TOPBAR_H, NULL, NULL };
58
block wrapper = { LEFTBAR_W, TOPBAR_H, NULL, NULL };
Line -... Line 59...
-
 
59
block right_bar = { NULL, 10+TOPBAR_H, RIGHT_BAR_W+10, NULL };
59
block right_bar = { NULL, 10+TOPBAR_H, RIGHT_BAR_W+10, NULL };
60
 
-
 
61
dword linear_gradient[RIGHT_BAR_W];
60
 
62
block b_color_gradient = {NULL, 40+TOPBAR_H, RIGHT_BAR_W, 25};
61
block b_color_gradient = {NULL, 40+TOPBAR_H, RIGHT_BAR_W, 30};
63
//block b_opacity_gradient = {NULL, 75+TOPBAR_H, RIGHT_BAR_W, 15};
Line -... Line 64...
-
 
64
block b_last_colors = {NULL, 75+TOPBAR_H, RIGHT_BAR_W, COLSIZE};
62
block b_last_colors = {NULL, 80+TOPBAR_H, RIGHT_BAR_W, COLSIZE*2};
65
block b_default_palette = {NULL, COLSIZE+10+75+TOPBAR_H, RIGHT_BAR_W, COLSIZE*9};
63
block b_default_palette = {NULL, COLSIZE*2+10+80+TOPBAR_H, RIGHT_BAR_W, COLSIZE*9};
66
 
64
 
67
dword transparent = 0xBFCAD2;
Line 65... Line 68...
65
dword color1 = 0x000000;
68
dword color1 = 0x000000;
Line 101... Line 104...
101
	BTNS_LAST_USED_COLORS = 400
104
	BTNS_LAST_USED_COLORS = 400
102
};
105
};
Line 103... Line 106...
103
 
106
 
104
proc_info Form;
107
proc_info Form;
-
 
108
dword semi_white;
Line 105... Line 109...
105
dword semi_white;
109
bool bg_dark=false;
Line 106... Line 110...
106
 
110
 
107
more_less_box zoom = { 11, 1, 40, "Zoom" };
111
more_less_box zoom = { 11, 1, 40, "Zoom" };
Line 118... Line 122...
118
0xFFFF66,0xB2FF66,0x66FF66,0x66FFB2,0x66FFFF,0x66B2FF,0x6666FF,0xB266FF,0xFF66FF,0xFF66B2,
122
0xFFFF66,0xB2FF66,0x66FF66,0x66FFB2,0x66FFFF,0x66B2FF,0x6666FF,0xB266FF,0xFF66FF,0xFF66B2,
119
0xC0C0C0,0xFF9999,0xFFCC99,0xFFFF99,0xCCFF99,0x99FF99,0x99FFCC,0x99FFFF,0x99CCFF,0x9999FF,
123
0xC0C0C0,0xFF9999,0xFFCC99,0xFFFF99,0xCCFF99,0x99FF99,0x99FFCC,0x99FFFF,0x99CCFF,0x9999FF,
120
0xCC99FF,0xFF99FF,0xFF99CC,0xE0E0E0,0xFFCCCC,0xFFE5CC,0xFFFFCC,0xE5FFCC,0xCCFFCC,0xCCFFE5,
124
0xCC99FF,0xFF99FF,0xFF99CC,0xE0E0E0,0xFFCCCC,0xFFE5CC,0xFFFFCC,0xE5FFCC,0xCCFFCC,0xCCFFE5,
121
0xCCFFFF,0xCCE5FF,0xCCCCFF,0xE5CCFF,0xFFCCFF,0xFFCCE5,0xFFFFFF	
125
0xCCFFFF,0xCCE5FF,0xCCCCFF,0xE5CCFF,0xFFCCFF,0xFFCCE5,0xFFFFFF	
122
};
126
};
-
 
127
 
-
 
128
#define LAST_USED_MAX 13
123
dword last_used_colors[13*2] = {
129
dword last_used_colors[LAST_USED_MAX] = {
124
0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,
-
 
125
0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,
130
0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,
126
0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF
131
0xFFFFFF,0xFFFFFF,0xFFFFFF
127
};
132
};
Line 128... Line 133...
128
 
133
 
129
CustomCursor Cursor;
134
CustomCursor Cursor;
130
dword CursorBar = FROM "cursors/bar.cur";
135
dword CursorBar = FROM "cursors/bar.cur";
Line 155... Line 160...
155
 
160
 
156
void main()
161
void main()
157
{
162
{
158
	word btn;
163
	word btn;
-
 
164
	libimg_image open_image;
Line 159... Line 165...
159
	libimg_image open_image;
165
	dword tmp_bg_col;
160
 
166
 
161
	load_dll(libio,  #libio_init,  1);
167
	load_dll(libio,  #libio_init,  1);
Line 162... Line 168...
162
	load_dll(libimg, #libimg_init, 1);
168
	load_dll(libimg, #libimg_init, 1);
163
	load_dll(boxlib, #box_lib_init,0);
169
	load_dll(boxlib, #box_lib_init,0);
Line 164... Line 170...
164
 
170
 
-
 
171
	Libimg_LoadImage(#top_icons, "/sys/icons16.png");
165
	Libimg_LoadImage(#top_icons, "/sys/icons16.png");
172
	Libimg_LoadImage(#left_icons, "/sys/icons16.png");
166
	Libimg_LoadImage(#left_icons, "/sys/icons16.png");
173
 
167
 
174
	system.color.get();
Line 168... Line 175...
168
	system.color.get();
175
 
169
	semi_white = MixColors(system.color.work, 0xFFFfff, 96);
176
	semi_white = MixColors(system.color.work, 0xFFFfff, 96);
Line -... Line 177...
-
 
177
	Libimg_ReplaceColor(top_icons.image, top_icons.w, top_icons.h, 0xffFFFfff, semi_white);
-
 
178
	Libimg_ReplaceColor(top_icons.image, top_icons.w, top_icons.h, 0xffCACBD6, MixColors(semi_white, 0, 220));
-
 
179
 
-
 
180
	Libimg_ReplaceColor(left_icons.image, left_icons.w, left_icons.h, 0xffFFFfff, system.color.work);
-
 
181
	Libimg_ReplaceColor(left_icons.image, left_icons.w, left_icons.h, 0xffCACBD6, MixColors(system.color.work, 0, 200));
-
 
182
 
170
	Libimg_ReplaceColor(top_icons.image, top_icons.w, top_icons.h, 0xffFFFfff, semi_white);
183
	//fix line and rectandle color for dark skins
171
	Libimg_ReplaceColor(top_icons.image, top_icons.w, top_icons.h, 0xffCACBD6, MixColors(semi_white, 0, 220));
184
	if (GrayScaleImage(#system.color.work,1,1)<65) bg_dark=true; else bg_dark=false;
172
 
185
	if (bg_dark) Libimg_ReplaceColor(left_icons.image, left_icons.w, left_icons.h, 0xff545454, 0xffD3D3D4);
173
	Libimg_ReplaceColor(left_icons.image, left_icons.w, left_icons.h, 0xffFFFfff, system.color.work);
186
 
174
	Libimg_ReplaceColor(left_icons.image, left_icons.w, left_icons.h, 0xffCACBD6, MixColors(system.color.work, 0, 200));
187
	EventSetActiveColor(1, color1);
Line 183... Line 196...
183
		if (open_image.w*open_image.h>MAX_CELL_SIZE*MAX_CELL_SIZE) {
196
		if (open_image.w*open_image.h>MAX_CELL_SIZE*MAX_CELL_SIZE) {
184
			notify("'Hey, this is just an icon editor,\nselected image is too big to open!' -E");
197
			notify("'Hey, this is just an icon editor,\nselected image is too big to open!' -E");
185
			ExitProcess();
198
			ExitProcess();
186
		}
199
		}
187
		else {
200
		else {
188
			image.create(open_image.w, open_image.h);
201
			image.create(open_image.h, open_image.w);
189
			image.set_image(open_image.imgsrc);
202
			image.set_image(open_image.imgsrc);
190
		}
203
		}
191
	}
204
	}
Line 192... Line 205...
192
 
205
 
Line 255... Line 268...
255
			{
268
			{
256
				case BTN_NEW:
269
				case BTN_NEW:
257
					EventCreateNewIcon();
270
					EventCreateNewIcon();
258
					break;
271
					break;
259
				case BTN_OPEN:
272
				case BTN_OPEN:
260
					notify(T_NOTIFY_OPEN);
273
					EventOpenIcon();
261
					RunProgram("/sys/lod", sprintf(#param, "*png* %s",#program_path));
-
 
262
					break;
274
					break;
263
				case BTN_SAVE:
275
				case BTN_SAVE:
264
					EventSaveIconToFile();
276
					EventSaveIconToFile();
265
					break;
277
					break;
266
				case BTN_MOVE_LEFT:
278
				case BTN_MOVE_LEFT:
Line 321... Line 333...
321
			break;
333
			break;
Line 322... Line 334...
322
	  
334
	  
323
		case evKey:
335
		case evKey:
Line 324... Line 336...
324
			GetKeys();
336
			GetKeys();
-
 
337
 
325
 
338
			if (key_modifier&KEY_LCTRL) || (key_modifier&KEY_RCTRL)
-
 
339
			{
-
 
340
				switch(key_scancode)
-
 
341
				{
-
 
342
					case SCAN_CODE_KEY_S:
-
 
343
						EventSaveIconToFile();
-
 
344
						break;
-
 
345
					case SCAN_CODE_KEY_O:
-
 
346
						EventOpenIcon();
-
 
347
						break;
Line -... Line 348...
-
 
348
				}
326
			if (currentTool != TOOL_NONE) && (tools[currentTool].onKeyEvent != 0)
349
			}
-
 
350
 
-
 
351
			if (key_modifier&KEY_LSHIFT) || (key_modifier&KEY_RSHIFT) {
-
 
352
				if (key_scancode == SCAN_CODE_DEL) EventCleanCanvas();
-
 
353
			}
Line 327... Line 354...
327
				tools[currentTool].onKeyEvent(key_scancode);
354
 
328
 
355
			if (currentTool != TOOL_NONE) && (tools[currentTool].onKeyEvent != 0)
329
			if (key_scancode == SCAN_CODE_DEL) EventCleanCanvas();
356
				tools[currentTool].onKeyEvent(key_scancode);
330
 
357
 
Line 468... Line 495...
468
	//canvas{
495
	//canvas{
469
	canvas.w = image.columns * zoom.value;
496
	canvas.w = image.columns * zoom.value;
470
	canvas.h = image.rows * zoom.value;
497
	canvas.h = image.rows * zoom.value;
471
	if (canvas.w+2 > wrapper.w) || (canvas.h+2 > wrapper.h) { 
498
	if (canvas.w+2 > wrapper.w) || (canvas.h+2 > wrapper.h) { 
472
		zoom.value--;
499
		zoom.value--;
-
 
500
		if (zoom.x) zoom.redraw();
473
		DrawEditArea();
501
		DrawEditArea();
474
		return;
502
		return;
475
	}
503
	}
476
	canvas.x = -zoom.value*image.columns+wrapper.w/2 + wrapper.x;
504
	canvas.x = -zoom.value*image.columns+wrapper.w/2 + wrapper.x;
477
	canvas.y = -zoom.value*image.rows+wrapper.h/2 + wrapper.y;
505
	canvas.y = -zoom.value*image.rows+wrapper.h/2 + wrapper.y;
Line 505... Line 533...
505
	#define CELL 20
533
	#define CELL 20
506
	static dword outy;
534
	static dword outy;
507
	if (iny != NULL) outy = iny;
535
	if (iny != NULL) outy = iny;
508
	DrawFrame(right_bar.x, outy, CELL, CELL, NULL);
536
	DrawFrame(right_bar.x, outy, CELL, CELL, NULL);
509
	DrawBar(right_bar.x+2, outy+2, CELL-4, CELL-4, color1);
537
	DrawBar(right_bar.x+2, outy+2, CELL-4, CELL-4, color1);
510
	sprintf(#param, "%A", color1);
-
 
511
	WriteTextWithBg(right_bar.x+30, outy+3, 0xD0, system.color.work_text, #param+4, system.color.work);
-
 
Line 512... Line 538...
512
 
538
 
513
	DrawFrame(right_bar.x+110, outy, CELL, CELL, NULL);
539
	DrawFrame(right_bar.x+CELL+5, outy, CELL, CELL, NULL);
-
 
540
	DrawBar(right_bar.x+CELL+5+2, outy+2, CELL-4, CELL-4, color2);
514
	DrawBar(right_bar.x+110+2, outy+2, CELL-4, CELL-4, color2);
541
 
515
	sprintf(#param, "%A", color2);
542
	//sprintf(#param, "%A", color1);
516
	WriteTextWithBg(right_bar.x+30+110, outy+3, 0xD0, system.color.work_text, #param+4, system.color.work);	
543
	//WriteTextWithBg(right_bar.x+30, outy+3, 0xD0, system.color.work_text, #param+4, system.color.work);
517
	DrawCurrentColorGradientByLightness();
544
	DrawCurrentColorGradient();
Line -... Line 545...
-
 
545
}
-
 
546
 
-
 
547
int lmax;
-
 
548
void GenerateCurrentColorGradient()
-
 
549
{
-
 
550
	int i, avg, rmax;
-
 
551
 
-
 
552
	rgb.DwordToRgb(color1);
-
 
553
	avg = 255 - calc(rgb.r + rgb.g + rgb.b / 3);
-
 
554
 
-
 
555
	lmax = b_color_gradient.w *avg/255 | 1;
-
 
556
	rmax = b_color_gradient.w - lmax | 1;
-
 
557
	if (lmax == 0) lmax=1;
-
 
558
	if (rmax == 0) rmax=1;
-
 
559
	
-
 
560
	for (i=0; i
-
 
561
		linear_gradient[i] = MixColors(color1,0xFFFfff,255*i/lmax);
-
 
562
	}
-
 
563
 
-
 
564
	for (i=0 ; i<=rmax; i++) {
-
 
565
		linear_gradient[lmax+rmax - i] = MixColors(color1,0x000000,255*i/rmax);
-
 
566
	}
518
}
567
}
519
 
568
 
520
void DrawCurrentColorGradientByLightness()
569
void DrawCurrentColorGradient()
521
{
570
{
522
	int i;
-
 
523
	int w = right_bar.w-10/2;
571
	int i;
524
	for (i=0; i
572
	dword hitch_color=system.color.work;
Line -... Line 573...
-
 
573
	int hitch_x = b_color_gradient.x+lmax-1;
-
 
574
	if (lmax>b_color_gradient.w-2) hitch_x=b_color_gradient.x+b_color_gradient.w-3;
-
 
575
 
525
		DrawBar(b_color_gradient.x+i, b_color_gradient.y, 
576
	for (i=0 ; i
526
			1, b_color_gradient.h, MixColors(color1,0xFFFfff,255*i/w));
577
		DrawBar(b_color_gradient.x+i, b_color_gradient.y, 1, b_color_gradient.h, linear_gradient[i]);		
Line 527... Line -...
527
 
-
 
528
	//current color marker	
578
	}
529
	DrawBar(b_color_gradient.x+i-1, b_color_gradient.y-2, 3,2, 0x000000);
579
	//current color marker	
530
 
580
	DrawBar( b_color_gradient.x-1, b_color_gradient.y-2, b_color_gradient.w+4, 2, system.color.work);
Line 531... Line 581...
531
	for (i=0 ; i<=w; i++)
581
	
532
		DrawBar(b_color_gradient.x+w+w-i, b_color_gradient.y, 
582
	if (bg_dark) hitch_color=0xFFFfff; else hitch_color=0;
533
			1, b_color_gradient.h, MixColors(color1,0x000000,255*i/w));
583
	DrawBar(hitch_x, b_color_gradient.y-2, 3,2, hitch_color);
534
}
584
}
535
 
585
 
536
void DrawColorPallets()
586
void DrawColorPallets()
537
{
587
{
538
	int r, c, i=0;
588
	int r, c, i=0;
539
	//Last used colors
589
	//Last used colors
540
	for (r = 0; r < 2; r++)
590
	for (r = 0; r < LAST_USED_MAX/PAL_ITEMS_X_COUNT; r++)
Line 609... Line 659...
609
		image.columns, image.rows, image.get_image_with_replaced_color(color2, _col_to));
659
		image.columns, image.rows, image.get_image_with_replaced_color(color2, _col_to));
610
}
660
}
Line 611... Line 661...
611
 
661
 
612
void ShowWindow_TestIcon()
662
void ShowWindow_TestIcon()
-
 
663
{
-
 
664
	if (image.rows>=preview_size) || (image.columns>=preview_size) {
-
 
665
		notify("'IconEdit\nImage is too big for preview!' -tE");
-
 
666
		return;
613
{
667
	}
614
	loop() switch(WaitEvent())
668
	loop() switch(WaitEvent())
615
	{
669
	{
616
		case evButton:
670
		case evButton:
617
			if (GetButtonID()) ExitProcess();
671
			if (GetButtonID()) ExitProcess();
Line 643... Line 697...
643
{
697
{
644
	EventSaveIconToFile();
698
	EventSaveIconToFile();
645
	Window_CanvasReSize.create();
699
	Window_CanvasReSize.create();
646
}
700
}
Line -... Line 701...
-
 
701
 
-
 
702
void EventOpenIcon()
-
 
703
{
-
 
704
	//notify(T_NOTIFY_OPEN);
-
 
705
	RunProgram("/sys/lod", sprintf(#param, "*png* %s",#program_path));
-
 
706
}
647
 
707
 
648
void EventSaveIconToFile()
708
void EventSaveIconToFile()
649
{
709
{
650
	int i=0;
710
	int i=0;
651
	char save_file_name[4096];
711
	char save_file_name[4096];
Line 672... Line 732...
672
}
732
}
Line 673... Line 733...
673
 
733
 
674
void EventSetActiveColor(int _number, _color)
734
void EventSetActiveColor(int _number, _color)
675
{
735
{
-
 
736
	int i;
676
	int i;
737
	if (last_used_colors[0] == _color) return;
677
	for (i=13*2-1; i>0; i--) {
738
	for (i=LAST_USED_MAX-1; i>0; i--) {
678
		last_used_colors[i] = last_used_colors[i-1];
739
		last_used_colors[i] = last_used_colors[i-1];
679
	}
740
	}
Line 680... Line 741...
680
	last_used_colors[0] = _color;
741
	last_used_colors[0] = _color;
681
 
742
 
Line -... Line 743...
-
 
743
	if (_number == 1) color1 = _color;
-
 
744
	if (_number == 2) color2 = _color;
-
 
745
 
-
 
746
	if (b_color_gradient.hovered()) {
-
 
747
		lmax = mouse.x - b_color_gradient.x;
-
 
748
	}
682
	if (_number == 1) color1 = _color;
749
	else {
683
	if (_number == 2) color2 = _color;
750
		GenerateCurrentColorGradient();
684
 
751
	}
Line 685... Line 752...
685
	DrawActiveColor(NULL);
752
	DrawActiveColor(NULL);