Subversion Repositories Kolibri OS

Rev

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

Rev 7187 Rev 7190
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.31"
31
#define T_TITLE "Icon Editor 0.32"
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 69... Line 69...
69
proc_info Form;
69
proc_info Form;
Line 70... Line 70...
70
 
70
 
Line 71... Line 71...
71
more_less_box zoom = { PANEL_LEFT_W, -100, 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" };
72
 
72
 
73
dword default_palette[] = {
73
dword default_palette[] = {
-
 
74
0x330000,0x331900,0x333300,0x193300,0x003300,0x003319,0x003333,0x001933,0x000033,0x190033,
74
0x330000,0x331900,0x333300,0x193300,0x003300,0x003319,0x003333,0x001933,0x000033,0x190033,0x330033,0x330019,0x000000,
75
0x330033,0x330019,0x000000,0x660000,0x663300,0x666600,0x336600,0x006600,0x006633,0x006666,
75
0x660000,0x663300,0x666600,0x336600,0x006600,0x006633,0x006666,0x003366,0x000066,0x330066,0x660066,0x660033,0x202020,
76
0x003366,0x000066,0x330066,0x660066,0x660033,0x202020,0x990000,0x994C00,0x999900,0x4C9900,
76
0x990000,0x994C00,0x999900,0x4C9900,0x009900,0x00994C,0x009999,0x004C99,0x000099,0x4C0099,0x990099,0x99004C,0x404040,
77
0x009900,0x00994C,0x009999,0x004C99,0x000099,0x4C0099,0x990099,0x99004C,0x404040,0xCC0000,
-
 
78
0xCC6600,0xCCCC00,0x66CC00,0x00CC00,0x00CC66,0x00CCCC,0x0066CC,0x0000CC,0x6600CC,0xCC00CC,
77
0xCC0000,0xCC6600,0xCCCC00,0x66CC00,0x00CC00,0x00CC66,0x00CCCC,0x0066CC,0x0000CC,0x6600CC,0xCC00CC,0xCC0066,0x606060,
79
0xCC0066,0x606060,0xFF0000,0xFF8000,0xFFFF00,0x80FF00,0x00FF00,0x00FF80,0x00FFFF,0x0080FF,
78
0xFF0000,0xFF8000,0xFFFF00,0x80FF00,0x00FF00,0x00FF80,0x00FFFF,0x0080FF,0x0000FF,0x7F00FF,0xFF00FF,0xFF007F,0x808080,
80
0x0000FF,0x7F00FF,0xFF00FF,0xFF007F,0x808080,0xFF3333,0xFF9933,0xFFFF33,0x99FF33,0x33FF33,
79
0xFF3333,0xFF9933,0xFFFF33,0x99FF33,0x33FF33,0x33FF99,0x33FFFF,0x3399FF,0x3333FF,0x9933FF,0xFF33FF,0xFF3399,0xA0A0A0,
81
0x33FF99,0x33FFFF,0x3399FF,0x3333FF,0x9933FF,0xFF33FF,0xFF3399,0xA0A0A0,0xFF6666,0xFFB266,
80
0xFF6666,0xFFB266,0xFFFF66,0xB2FF66,0x66FF66,0x66FFB2,0x66FFFF,0x66B2FF,0x6666FF,0xB266FF,0xFF66FF,0xFF66B2,0xC0C0C0,
82
0xFFFF66,0xB2FF66,0x66FF66,0x66FFB2,0x66FFFF,0x66B2FF,0x6666FF,0xB266FF,0xFF66FF,0xFF66B2,
-
 
83
0xC0C0C0,0xFF9999,0xFFCC99,0xFFFF99,0xCCFF99,0x99FF99,0x99FFCC,0x99FFFF,0x99CCFF,0x9999FF,
81
0xFF9999,0xFFCC99,0xFFFF99,0xCCFF99,0x99FF99,0x99FFCC,0x99FFFF,0x99CCFF,0x9999FF,0xCC99FF,0xFF99FF,0xFF99CC,0xE0E0E0,
84
0xCC99FF,0xFF99FF,0xFF99CC,0xE0E0E0,0xFFCCCC,0xFFE5CC,0xFFFFCC,0xE5FFCC,0xCCFFCC,0xCCFFE5,
82
0xFFCCCC,0xFFE5CC,0xFFFFCC,0xE5FFCC,0xCCFFCC,0xCCFFE5,0xCCFFFF,0xCCE5FF,0xCCCCFF,0xE5CCFF,0xFFCCFF,0xFFCCE5,0xFFFFFF	
85
0xCCFFFF,0xCCE5FF,0xCCCCFF,0xE5CCFF,0xFFCCFF,0xFFCCE5,0xFFFFFF	
83
};
86
};
84
dword last_used_colors[13*2] = {
87
dword last_used_colors[13*2] = {
-
 
88
0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,
85
0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,
89
0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,
Line 86... Line 90...
86
0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF
90
0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF,0xFFFFFF
Line 87... Line 91...
87
};
91
};
Line 207... Line 211...
207
				LineTool_startX = mouseX;
211
				LineTool_startX = mouseX;
208
				LineTool_startY = mouseY;
212
				LineTool_startY = mouseY;
209
			}
213
			}
210
			else {
214
			else {
211
				// Draw line from start position to current position
215
				// Draw line from start position to current position
212
				DrawLine(LineTool_startX - canvas.x/zoom.value, LineTool_startY - canvas.y/zoom.value, mouseX - canvas.x/zoom.value, mouseY - canvas.y/zoom.value, active_color_1, 1);
216
				DrawLine(LineTool_startX - canvas.x/zoom.value, 
-
 
217
					LineTool_startY - canvas.y/zoom.value, 
-
 
218
					mouseX - canvas.x/zoom.value, 
-
 
219
					mouseY - canvas.y/zoom.value, 
-
 
220
					active_color_1, 
-
 
221
					1);
213
				DrawCanvas();
222
				DrawCanvas();
Line 214... Line 223...
214
				
223
				
215
				// Reset start position
224
				// Reset start position
216
				LineTool_startX = -1;
225
				LineTool_startX = -1;
Line 228... Line 237...
228
	}
237
	}
229
}
238
}
Line 230... Line 239...
230
 
239
 
231
void LineTool_onCanvasDraw() {
240
void LineTool_onCanvasDraw() {
232
	if ((LineTool_startX >= 0) && (LineTool_startY >= 0)) {
241
	if ((LineTool_startX >= 0) && (LineTool_startY >= 0)) {
-
 
242
		DrawLine(LineTool_startX - canvas.x/zoom.value, 
-
 
243
			LineTool_startY - canvas.y/zoom.value, 
-
 
244
			mouse.x - canvas.x/zoom.value, 
-
 
245
			mouse.y - canvas.y/zoom.value, 
-
 
246
			active_color_1, 
233
		DrawLine(LineTool_startX - canvas.x/zoom.value, LineTool_startY - canvas.y/zoom.value, mouse.x - canvas.x/zoom.value, mouse.y - canvas.y/zoom.value, active_color_1, 2);
247
			2);
234
		LineTool_lastTempPosX = mouse.x - canvas.x/zoom.value;
248
		LineTool_lastTempPosX = mouse.x - canvas.x/zoom.value;
235
		LineTool_lastTempPosY = mouse.y - canvas.y/zoom.value;
249
		LineTool_lastTempPosY = mouse.y - canvas.y/zoom.value;
236
	}
250
	}
Line 337... Line 351...
337
		Libimg_LoadImage(#open_image, #param);
351
		Libimg_LoadImage(#open_image, #param);
338
		if (open_image.w==32) && (open_image.h==32) {
352
		if (open_image.w==32) && (open_image.h==32) {
339
			image.set_image(open_image.imgsrc);
353
			image.set_image(open_image.imgsrc);
340
		}
354
		}
341
		else {
355
		else {
342
			notify("'Error: image format is unacceptable.\nOnly images created in IconEditor (BMP, 32x32x16b) can be opened!' -E");
356
			notify("'Error: image format is unacceptable (PNG, 32x32x16b expected)' -E");
343
		}
357
		}
344
	}
358
	}
Line 345... Line 359...
345
 
359
 
346
	initTools();
360
	initTools();
Line 371... Line 385...
371
				case BTN_NEW:
385
				case BTN_NEW:
372
					image.create(32, 32);
386
					image.create(32, 32);
373
					DrawCanvas();
387
					DrawCanvas();
374
					break;
388
					break;
375
				case BTN_OPEN:
389
				case BTN_OPEN:
376
					RunProgram("/sys/lod", sprintf(#param, "*bmp* %s",#program_path));
390
					RunProgram("/sys/lod", sprintf(#param, "*png* %s",#program_path));
377
					break;
391
					break;
378
				case BTN_SAVE:
392
				case BTN_SAVE:
379
					EventSave();
393
					EventSave();
380
					break;
394
					break;
381
				case BTN_MOVE_LEFT:
395
				case BTN_MOVE_LEFT:
Line 568... Line 582...
568
		DrawBar(wrapper.x, wrapper.y, wrapper.w-1, top_side, color1); //top
582
		DrawBar(wrapper.x, wrapper.y, wrapper.w-1, top_side, color1); //top
569
		DrawBar(wrapper.x, wrapper.y+wrapper.h-top_side-1, wrapper.w-1, top_side, color1); //bottom
583
		DrawBar(wrapper.x, wrapper.y+wrapper.h-top_side-1, wrapper.w-1, top_side, color1); //bottom
570
	}
584
	}
571
	if (top_side>0)
585
	if (top_side>0)
572
	{
586
	{
-
 
587
		//left
573
		DrawBar(wrapper.x, wrapper.y+top_side, left_side, wrapper.h-top_side-top_side, color1); //left
588
		DrawBar(wrapper.x, wrapper.y+top_side, left_side, 
-
 
589
			wrapper.h-top_side-top_side, color1); 
-
 
590
		//right
574
		DrawBar(wrapper.x+wrapper.w-left_side-1, wrapper.y+top_side, left_side, wrapper.h-top_side-top_side, color1); //right
591
		DrawBar(wrapper.x+wrapper.w-left_side-1, wrapper.y+top_side, left_side, 
-
 
592
			wrapper.h-top_side-top_side, color1);
575
	}
593
	}
576
}
594
}
Line 577... Line 595...
577
 
595
 
578
void DrawActiveColor(dword iny)
596
void DrawActiveColor(dword iny)
Line 643... Line 661...
643
//                                                   //
661
//                                                   //
644
//                      EVENTS                       //
662
//                      EVENTS                       //
645
//                                                   //
663
//                                                   //
646
//===================================================//
664
//===================================================//
Line 647... Line -...
647
 
-
 
648
dword bmp_32x32x16_header[] = FROM "bmp32x32header";
665
 
649
void EventSave()
666
void EventSave()
-
 
667
{
-
 
668
	dword encoded_data=0;
650
{
669
	dword encoded_size=0;
-
 
670
	dword image_ptr = 0;
651
	char save_buf[3126];
671
	
-
 
672
	image_ptr = create_image(Image_bpp24, 32, 32);
-
 
673
 
-
 
674
	if (image_ptr == 0) {
-
 
675
		notify("'Error saving file, probably not enought memory!' -E");
-
 
676
	}
-
 
677
	else {
652
	memmov(#save_buf, #bmp_32x32x16_header, sizeof(bmp_32x32x16_header));
678
		EDI = image_ptr;
-
 
679
		memmov(EDI._Image.Data, image.get_image(), image.rows * image.columns * 3);
653
	memmov(#save_buf+sizeof(bmp_32x32x16_header), image.get_image(), sizeof(save_buf)-sizeof(bmp_32x32x16_header));
680
 
-
 
681
		encoded_data = encode_image(image_ptr, LIBIMG_FORMAT_PNG, 0, #encoded_size);
-
 
682
 
654
	if (WriteFile(sizeof(save_buf), #save_buf, "/rd/1/saved_image.bmp")==0)
683
		img_destroy stdcall(image_ptr);
-
 
684
 
655
	{
685
		if(encoded_data == 0) {
656
		notify("'File saved as /rd/1/saved_image.bmp' -O");
686
			notify("'Error saving file, incorrect data!' -E");
657
	}
687
		}
-
 
688
		else {
-
 
689
			if (WriteFile(encoded_size, encoded_data, "/rd/1/saved_image.png") == 0) {
-
 
690
				notify("'File saved as /rd/1/saved_image.png' -O");
-
 
691
			}
658
	else {
692
			else {
-
 
693
				notify("'Error saving file, probably not enought space on ramdisk!' -E");
-
 
694
			}
659
		notify("'Error saving BPM file, probably not enought space on ramdisk!' -E");
695
		}
660
	}
696
	}
Line 661... Line 697...
661
}
697
}
662
 
698