Subversion Repositories Kolibri OS

Rev

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

Rev 7151 Rev 7152
Line 6... Line 6...
6
 
6
 
7
/*
7
/*
8
TODO/BUGS
8
TODO/BUGS
9
Flip first pixel doesn't work well
9
Flip first pixel doesn't work well
10
Open with param 
-
 
11
Set minimal window size
-
 
12
Scroll mouse, +/- keyboard
10
Open with param 
Line 13... Line 11...
13
*/
11
*/
Line 14... Line 12...
14
 
12
 
Line 27... Line 25...
27
//                                                   //
25
//                                                   //
28
//                       DATA                        //
26
//                       DATA                        //
29
//                                                   //
27
//                                                   //
30
//===================================================//
28
//===================================================//
Line 31... Line 29...
31
 
29
 
Line 32... Line 30...
32
#define T_TITLE "Icon Editor 0.08"
30
#define T_TITLE "Icon Editor 0.09"
33
 
31
 
Line 34... Line 32...
34
#define TOOLBAR_H    24+9
32
#define TOOLBAR_H    24+8
35
#define PALLETE_SIZE 116
33
#define PALLETE_SIZE 116
36
 
34
 
Line 52... Line 50...
52
	BTN_FLIP_HOR,
50
	BTN_FLIP_HOR,
53
	BTN_FLIP_VER,
51
	BTN_FLIP_VER,
54
	BTN_ROTATE_LEFT,
52
	BTN_ROTATE_LEFT,
55
	BTN_ROTATE_RIGHT,
53
	BTN_ROTATE_RIGHT,
56
	BTN_PICK,
54
	BTN_PICK,
-
 
55
	BTN_ZOOM_IN,
-
 
56
	BTN_ZOOM_OUT,
57
	BTN_PALETTE_COLOR_MAS = 100,
57
	BTN_PALETTE_COLOR_MAS = 100,
58
};
58
};
Line 59... Line 59...
59
 
59
 
Line 60... Line 60...
60
proc_info Form;
60
proc_info Form;
Line 61... Line -...
61
 
-
 
62
bool pick_active = false;
-
 
63
 
61
 
Line 64... Line 62...
64
#define ZOOM_IN 22
62
bool pick_active = false;
65
#define ZOOM_OUT 23
63
 
66
more_less_box zoom = { NULL, NULL, 11, 1, 40, ZOOM_IN, ZOOM_OUT, "Zoom" };
64
more_less_box zoom = { NULL, NULL, 11, 1, 40, BTN_ZOOM_IN, BTN_ZOOM_OUT, "Zoom" };
67
 
65
 
68
dword palette_colors[] = {
66
dword default_palette[] = {
69
0x330000,0x331900,0x333300,0x193300,0x003300,0x003319,0x003333,0x001933,0x000033,0x190033,0x330033,0x330019,0x000000,
67
0x330000,0x331900,0x333300,0x193300,0x003300,0x003319,0x003333,0x001933,0x000033,0x190033,0x330033,0x330019,0x000000,
Line 92... Line 90...
92
	word btn;
90
	word btn;
Line 93... Line 91...
93
 
91
 
94
	load_dll(libio,  #libio_init,  1);
92
	load_dll(libio,  #libio_init,  1);
95
	load_dll(libimg, #libimg_init, 1);
93
	load_dll(libimg, #libimg_init, 1);
-
 
94
	Libimg_LoadImage(#skin, "/sys/icons16.png");
Line 96... Line 95...
96
	Libimg_LoadImage(#skin, "/sys/icons16.png");
95
	//Libimg_ReplaceColor(skin.image, skin.w, skin.h, 0xFFfffFFF, 0xff808080);
Line 97... Line 96...
97
 
96
 
98
	CreateCanvas();
97
	CreateCanvas();
Line 114... Line 113...
114
	loop() switch(WaitEvent())
113
	loop() switch(WaitEvent())
115
	{
114
	{
116
		case evMouse:
115
		case evMouse:
117
			mouse.get();
116
			mouse.get();
118
			if (pick_active) EventPickColor(mouse.lkm, mouse.pkm);
117
			if (pick_active) EventPickColor(mouse.lkm, mouse.pkm);
-
 
118
			else if (mouse.vert) {
-
 
119
				if (mouse.vert==65535) zoom.click(BTN_ZOOM_IN);
-
 
120
				if (mouse.vert==1) zoom.click(BTN_ZOOM_OUT);
-
 
121
				DrawEditArea();
-
 
122
			}
119
			else {
123
			else {
120
				if (mouse.x>canvas.x) && (mouse.y>canvas.y) 
124
				if (mouse.x>canvas.x) && (mouse.y>canvas.y) 
121
				&& (mouse.y
125
				&& (mouse.y
122
				{
126
				{
123
					if (mouse.lkm) image.set_pixel(mouse.y-canvas.y/zoom.value, 
127
					if (mouse.lkm) image.set_pixel(mouse.y-canvas.y/zoom.value, 
Line 165... Line 169...
165
					break;
169
					break;
166
				case BTN_FLIP_HOR:
170
				case BTN_FLIP_HOR:
167
					image.move(FLIP_HOR);
171
					image.move(FLIP_HOR);
168
					DrawCanvas();
172
					DrawCanvas();
169
					break;
173
					break;
170
				case CLOSE_BTN:
-
 
171
					ExitProcess();
-
 
172
				case BTN_PICK:
174
				case BTN_PICK:
173
					EventPickActivate();
175
					EventPickActivate();
174
					break;
176
					break;
-
 
177
				case BTN_ZOOM_IN:
-
 
178
				case BTN_ZOOM_OUT:
-
 
179
					zoom.click(btn);
-
 
180
					DrawEditArea();
-
 
181
					break;
-
 
182
				case CLOSE_BTN:
-
 
183
					ExitProcess();
-
 
184
					break;
175
			}              
185
			}              
176
			if (btn >= BTN_PALETTE_COLOR_MAS) && (btn < BTN_PALETTE_COLOR_MAS+PALLETE_SIZE) 
186
			if (btn >= BTN_PALETTE_COLOR_MAS) && (btn < BTN_PALETTE_COLOR_MAS+PALLETE_SIZE) 
177
			{ 
187
			{ 
178
				if (mouse.lkm) active_color_1 = palette_colors[btn-BTN_PALETTE_COLOR_MAS]; 
188
				if (mouse.lkm) active_color_1 = default_palette[btn-BTN_PALETTE_COLOR_MAS]; 
179
				if (mouse.pkm) active_color_2 = palette_colors[btn-BTN_PALETTE_COLOR_MAS]; 
189
				if (mouse.pkm) active_color_2 = default_palette[btn-BTN_PALETTE_COLOR_MAS]; 
180
				DrawActiveColor(NULL); 
190
				DrawActiveColor(NULL); 
181
			}
191
			}
182
			if (zoom.click(btn)) DrawEditArea();
-
 
183
			break;
192
			break;
Line 184... Line 193...
184
	  
193
	  
185
		case evKey:
194
		case evKey:
186
			GetKeys();
195
			GetKeys();
187
			if (key_scancode == SCAN_CODE_ESC) pick_active=false;
196
			if (key_scancode == SCAN_CODE_ESC) pick_active=false;
-
 
197
			if (key_scancode == SCAN_CODE_KEY_I) EventPickActivate();
-
 
198
			if (key_scancode == SCAN_CODE_MINUS) {zoom.click(BTN_ZOOM_OUT); DrawEditArea();}
188
			if (key_scancode == SCAN_CODE_KEY_I) EventPickActivate();
199
			if (key_scancode == SCAN_CODE_PLUS)  {zoom.click(BTN_ZOOM_IN);  DrawEditArea();}
Line 189... Line 200...
189
			break;
200
			break;
190
		 
201
		 
191
		case evReDraw:
202
		case evReDraw:
192
			draw_window();
203
			draw_window();
193
			break;
204
			break;
Line 194... Line 205...
194
	}
205
	}
195
}
206
}
196
 
207
 
197
void DrawToolbarButton(dword _id, _x, _icon_n)
208
void DrawToolbarButton(dword _id, _x, _icon_n)
198
{
209
{
199
	DrawWideRectangle(_x, 4, 24, 24, 4, 0xFFFfff);
210
	DrawWideRectangle(_x, 4, 22, 22, 3, 0xFFFfff);
Line 200... Line 211...
200
	DefineHiddenButton(_x, 4, 23, 23, _id);
211
	DefineHiddenButton(_x, 4, 21, 21, _id);
201
	img_draw stdcall(skin.image, _x+4, 8, 16, 16, 0, _icon_n*16);
212
	img_draw stdcall(skin.image, _x+3, 7, 16, 16, 0, _icon_n*16);
202
}
213
}
Line 216... Line 227...
216
	#define TB_ICON_PADDING 26
227
	#define TB_ICON_PADDING 26
217
	incn tx;
228
	incn tx;
218
	system.color.get();
229
	system.color.get();
219
	DefineAndDrawWindow(115+random(100), 50+random(100), 700, 540, 0x33, system.color.work, T_TITLE, 0);
230
	DefineAndDrawWindow(115+random(100), 50+random(100), 700, 540, 0x33, system.color.work, T_TITLE, 0);
220
	GetProcessInfo(#Form, SelfInfo);
231
	GetProcessInfo(#Form, SelfInfo);
-
 
232
	if (Form.status_window>2) return;
-
 
233
	if (Form.width  < 560) { MoveSize(OLD,OLD,560,OLD); return; }
-
 
234
	if (Form.height < 430) { MoveSize(OLD,OLD,OLD,430); return; }
-
 
235
 
221
	right_bar.x = Form.cwidth - right_bar.w;
236
	right_bar.x = Form.cwidth - right_bar.w;
Line 222... Line 237...
222
 
237
 
223
	tx.n = wrapper.x - TB_ICON_PADDING;
238
	tx.n = wrapper.x - TB_ICON_PADDING;
224
	DrawToolbarButton(BTN_NEW,    tx.inc(TB_ICON_PADDING), 2); //not implemented
239
	DrawToolbarButton(BTN_NEW,    tx.inc(TB_ICON_PADDING), 2); //not implemented
Line 307... Line 322...
307
	i = 0;
322
	i = 0;
308
	for (r = 0; r < 9; r++)
323
	for (r = 0; r < 9; r++)
309
	{
324
	{
310
		for (c = 0; c < 13; c++)
325
		for (c = 0; c < 13; c++)
311
		{
326
		{
312
			DrawBar(c*cellw + _x, r*cellw + _y, cellw, cellw, palette_colors[PALLETE_SIZE-i]);
327
			DrawBar(c*cellw + _x, r*cellw + _y, cellw, cellw, default_palette[PALLETE_SIZE-i]);
313
			DefineHiddenButton(c*cellw + _x, r*cellw + _y, cellw-1, cellw-1, BTN_PALETTE_COLOR_MAS+PALLETE_SIZE-i);
328
			DefineHiddenButton(c*cellw + _x, r*cellw + _y, cellw-1, cellw-1, BTN_PALETTE_COLOR_MAS+PALLETE_SIZE-i);
314
			i++;
329
			i++;
315
		}
330
		}
316
	}
331
	}
317
	DrawRectangle(_x-1, _y-1, c*cellw+1, r*cellw+1, system.color.work_light);
332
	DrawRectangle(_x-1, _y-1, c*cellw+1, r*cellw+1, system.color.work_light);
Line 343... Line 358...
343
 
358
 
344
dword bmp_32x32x16_header[] = FROM "bmp32x32header";
359
dword bmp_32x32x16_header[] = FROM "bmp32x32header";
345
void EventSave()
360
void EventSave()
346
{
361
{
347
	char save_buf[3126];
-
 
348
	dword image_buf = image.get_image();
362
	char save_buf[3126];
349
	memmov(#save_buf, #bmp_32x32x16_header, sizeof(bmp_32x32x16_header));
363
	memmov(#save_buf, #bmp_32x32x16_header, sizeof(bmp_32x32x16_header));
350
	memmov(#save_buf+sizeof(bmp_32x32x16_header), image_buf, sizeof(save_buf)-sizeof(bmp_32x32x16_header));
364
	memmov(#save_buf+sizeof(bmp_32x32x16_header), image.get_image(), sizeof(save_buf)-sizeof(bmp_32x32x16_header));
351
	if (WriteFile(sizeof(save_buf), #save_buf, "/rd/1/saved_image.bmp")==0)
365
	if (WriteFile(sizeof(save_buf), #save_buf, "/rd/1/saved_image.bmp")==0)
352
	{
366
	{
353
		notify("'File saved as /rd/1/saved_image.bmp' -O");
367
		notify("'File saved as /rd/1/saved_image.bmp' -O");
354
	}
368
	}