Subversion Repositories Kolibri OS

Rev

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

Rev 7089 Rev 7096
Line 2... Line 2...
2
 * BACKGEN - Background generator
2
 * BACKGEN - Background generator
3
 * Author: Leency
3
 * Author: Leency
4
 * Licence: GPL v2
4
 * Licence: GPL v2
5
*/
5
*/
Line 6... Line 6...
6
 
6
 
Line 7... Line 7...
7
#define MEMSIZE 4096*10
7
#define MEMSIZE 4096*40
-
 
8
 
8
 
9
#include "../lib/gui.h"
-
 
10
#include "../lib/obj/libimg.h"
Line 9... Line 11...
9
#include "../lib/gui.h"
11
#include "../lib/patterns/rgb.h"
10
#include "../lib/patterns/rgb.h"
12
#include "../lib/patterns/libimg_load_skin.h"
11
 
13
 
12
//===================================================//
14
//===================================================//
13
//                                                   //
15
//                                                   //
Line -... Line 16...
-
 
16
//                       DATA                        //
-
 
17
//                                                   //
14
//                       DATA                        //
18
//===================================================//
-
 
19
 
-
 
20
#define T_TITLE "Background generator 0.6"
Line 15... Line 21...
15
//                                                   //
21
 
16
//===================================================//
22
#define MAX_COLORS 10
Line 17... Line 23...
17
 
23
#define TOOLBAR_H 24+8
18
#define MAX_COLORS 10
24
#define PALLETE_SIZE 116
Line 19... Line 25...
19
 
25
 
20
more_less_box x_count = { 10, 220, NULL, 1, MAX_COLORS, 22, 23, "X count" };
26
more_less_box x_count = { 10, TOOLBAR_H+220, NULL, 1, MAX_COLORS, 22, 23, "X count" };
Line 21... Line 27...
21
more_less_box y_count = { 10, 250, NULL, 1, MAX_COLORS, 24, 25, "Y count" };
27
more_less_box y_count = { 10, TOOLBAR_H+250, NULL, 1, MAX_COLORS, 24, 25, "Y count" };
22
 
28
 
-
 
29
rect preview = { 10, TOOLBAR_H+10, 200, 200 };
-
 
30
rect right_bar = { 230, TOOLBAR_H+10, 280, 320 };
-
 
31
 
-
 
32
dword active_color = 0xFFFfff;
-
 
33
char active_color_string[11]="0x00111222\0";
-
 
34
 
-
 
35
enum {
-
 
36
	BTN_APPLY_BACKGROUND = 10,
-
 
37
 
-
 
38
	BTN_NEW = 40,
-
 
39
	BTN_OPEN,
-
 
40
	BTN_SAVE,
-
 
41
	BTN_MOVE_LEFT,
-
 
42
	BTN_MOVE_RIGHT,
-
 
43
	BTN_MOVE_UP,
-
 
44
	BTN_MOVE_DOWN,
-
 
45
	BTN_FLIP_HOR,
23
rect preview = { 10, 10, 200, 200 };
46
	BTN_FLIP_VER,
Line 24... Line 47...
24
rect right_bar = { 230, 10, 280, 400 };
47
	BTN_ROTATE_LEFT,
Line -... Line 48...
-
 
48
	BTN_ROTATE_RIGHT,
-
 
49
 
25
 
50
	BTN_PICK,
26
dword active_color = 0xFFFfff;
51
 
27
char active_color_string[11]="0x00111222\0";
52
	BTN_PALETTE_COLOR_MAS = 100,
28
 
53
 
29
enum {
54
};
Line 54... Line 79...
54
 
79
 
55
void main()
80
void main()
56
{
81
{
Line -... Line 82...
-
 
82
	word btn;
-
 
83
 
-
 
84
	load_dll(libio,  #libio_init,  1);
-
 
85
	load_dll(libimg, #libimg_init, 1);
57
	word btn;
86
	Libimg_LoadImage(#skin, "/sys/icons16.png");
58
 
87
 
59
	colors.set_default_values();
88
	colors.set_default_values();
Line -... Line 89...
-
 
89
	x_count.value = colors.columns;
-
 
90
	y_count.value = colors.rows;
60
	x_count.value = colors.columns;
91
 
61
	y_count.value = colors.rows;
92
	SetEventMask(EVM_REDRAW+EVM_KEY+EVM_BUTTON+EVM_MOUSE+EVM_MOUSE_FILTER);
-
 
93
 
-
 
94
	loop() switch(WaitEvent())
-
 
95
	{
-
 
96
		case evMouse:
62
 
97
			mouse.get();
63
	loop() switch(WaitEvent())
98
			if (pick_active) EventPickColor();
64
	{
-
 
65
		case evButton:
-
 
66
			btn = GetButtonID();               
-
 
67
			if (btn == CLOSE_BTN) ExitProcess();
-
 
68
			if (btn == APPLY_BACKGROUND_BTN) {
99
 
69
				SetBackgroundImage(colors.columns, colors.rows, colors.get_image(), DRAW_DESKTOP_BG_STRETCH);
100
		case evButton:
-
 
101
			btn = GetButtonID(); 
-
 
102
			if (x_count.click(btn)) EventChangeFieldSize();
-
 
103
			if (y_count.click(btn)) EventChangeFieldSize();
-
 
104
			switch(btn)
-
 
105
			{
-
 
106
				case BTN_MOVE_LEFT:
70
			}
107
					colors.move(DIRECTION_LEFT);
-
 
108
					break;
-
 
109
				case BTN_MOVE_RIGHT:
-
 
110
					colors.move(DIRECTION_RIGHT);
-
 
111
					break;
-
 
112
				case CLOSE_BTN:
-
 
113
					ExitProcess();
-
 
114
				case BTN_APPLY_BACKGROUND:
-
 
115
					EventApplyBackground();
-
 
116
					break;
-
 
117
				case BTN_PICK:
-
 
118
					EventPickActivate();
71
			if (x_count.click(btn)) EventChangeFieldSize();
119
					break;
72
			if (y_count.click(btn)) EventChangeFieldSize();
120
			}              
73
			if (btn >= 100) && (btn < 228) 
121
			if (btn >= BTN_PALETTE_COLOR_MAS) && (btn < BTN_PALETTE_COLOR_MAS+PALLETE_SIZE) 
74
			{ 
122
			{ 
75
				active_color = default_colors[btn-100]; 
123
				active_color = default_colors[btn-BTN_PALETTE_COLOR_MAS]; 
76
				DrawActiveColor(NULL); 
124
				DrawActiveColor(NULL); 
77
			}
125
			}
Line 85... Line 133...
85
			break;
133
			break;
Line 86... Line 134...
86
	  
134
	  
87
		case evKey:
135
		case evKey:
88
			GetKeys();
136
			GetKeys();
-
 
137
			if (key_scancode == SCAN_CODE_ESC) ExitProcess();
-
 
138
			if (key_scancode == SCAN_CODE_ENTER) EventApplyBackground();
89
			if (key_scancode == SCAN_CODE_ESC) ExitProcess();
139
			if (key_scancode == SCAN_CODE_KEY_I) EventPickActivate();
Line 90... Line 140...
90
			break;
140
			break;
91
		 
141
		 
92
		case evReDraw:
142
		case evReDraw:
93
			draw_window();
143
			draw_window();
94
			break;
144
			break;
Line -... Line 145...
-
 
145
	}
-
 
146
}
-
 
147
 
-
 
148
void DrawToolbarButton(dword _id, _x, _icon_n)
-
 
149
{
-
 
150
	DrawWideRectangle(_x, 4, 24, 24, 4, 0xFFFfff);
-
 
151
	DefineHiddenButton(_x, 4, 23, 23, _id);
95
	}
152
	img_draw stdcall(skin.image, _x+4, 8, 16, 16, 0, _icon_n*16);
96
}
153
}
-
 
154
 
-
 
155
void draw_window()
97
 
156
{
98
void draw_window()
157
	#define TB_ICON_PADDING 26
99
{
158
	incn tx;
100
	system.color.get();
159
	system.color.get();
101
	DefineAndDrawWindow(215, 100, right_bar.x+right_bar.w+9, 
160
	DefineAndDrawWindow(215, 100, right_bar.x+right_bar.w+9, 
102
		right_bar.y+right_bar.h+skin_height+5, 
161
		right_bar.y+right_bar.h+skin_height+5, 
Line -... Line 162...
-
 
162
		0x34, system.color.work, T_TITLE,0
-
 
163
		);
-
 
164
	GetProcessInfo(#Form, SelfInfo);
-
 
165
 
-
 
166
	tx.n = preview.x - TB_ICON_PADDING;
-
 
167
	// DrawToolbarButton(BTN_NEW,    tx.inc(TB_ICON_PADDING), 2);
-
 
168
	// DrawToolbarButton(BTN_OPEN,   tx.inc(TB_ICON_PADDING), 0);
-
 
169
	// DrawToolbarButton(BTN_SAVE,   tx.inc(TB_ICON_PADDING), 5);
-
 
170
	DrawToolbarButton(BTN_MOVE_LEFT,  tx.inc(TB_ICON_PADDING),   30);
-
 
171
	DrawToolbarButton(BTN_MOVE_RIGHT, tx.inc(TB_ICON_PADDING),   31);
-
 
172
	// DrawToolbarButton(BTN_MOVE_UP,    tx.inc(TB_ICON_PADDING),   32);
-
 
173
	// DrawToolbarButton(BTN_MOVE_DOWN,  tx.inc(TB_ICON_PADDING),   33);
-
 
174
	// DrawToolbarButton(BTN_FLIP_HOR,   tx.inc(TB_ICON_PADDING+8), 34);
-
 
175
	// DrawToolbarButton(BTN_FLIP_VER,   tx.inc(TB_ICON_PADDING),   35);
-
 
176
	// DrawToolbarButton(BTN_ROTATE_LEFT,   tx.inc(TB_ICON_PADDING), 36);
-
 
177
	// DrawToolbarButton(BTN_ROTATE_RIGHT,  tx.inc(TB_ICON_PADDING), 37);
103
		0x34, system.color.work, "Background generator",0
178
 
104
		);
179
	DrawBar(0, TOOLBAR_H-1, Form.cwidth, 1, system.color.work_dark);
Line 105... Line 180...
105
	GetProcessInfo(#Form, SelfInfo);
180
	DrawBar(0, TOOLBAR_H, Form.cwidth, 1, system.color.work_light);
Line 106... Line 181...
106
 
181
 
-
 
182
	x_count.draw();
Line 107... Line 183...
107
	x_count.draw();
183
	y_count.draw();
108
	y_count.draw();
184
 
Line 109... Line 185...
109
 
185
	DrawColorsField();
110
	DrawColorsField();
186
 
111
 
187
	DrawStandartCaptButton(preview.x, 320, BTN_APPLY_BACKGROUND, "Fill background");
112
	DrawStandartCaptButton(10, 320, APPLY_BACKGROUND_BTN, "Fill background");
188
	DrawStandartCaptButton(right_bar.x + 150, right_bar.y, BTN_PICK, "Pipette");
Line 113... Line 189...
113
 
189
 
114
	DrawRightBar();
190
	DrawRightBar();
115
}
191
}
Line 130... Line 206...
130
	incn y;
206
	incn y;
131
	y.n = right_bar.y;
207
	y.n = right_bar.y;
132
	EDI = system.color.work;
208
	EDI = system.color.work;
133
	WriteTextB(right_bar.x, y.inc(3), 0x90, system.color.work_text, "Active color");
209
	WriteTextB(right_bar.x, y.inc(3), 0x90, system.color.work_text, "Active color");
134
	DrawActiveColor(y.inc(22));
210
	DrawActiveColor(y.inc(22));
135
	WriteTextB(right_bar.x, y.inc(34), 0x90, system.color.work_text, "Default colors");
211
	WriteTextB(right_bar.x, y.inc(34), 0x90, system.color.work_text, "Palette");
136
	DrawDefaultColors(right_bar.x, y.inc(22));
212
	DrawDefaultColors(right_bar.x, y.inc(22));
137
}
213
}
Line 138... Line 214...
138
 
214
 
139
void DrawActiveColor(dword iny)
215
void DrawActiveColor(dword iny)
Line 152... Line 228...
152
	i = 0;
228
	i = 0;
153
	for (r = 0; r < 9; r++)
229
	for (r = 0; r < 9; r++)
154
	{
230
	{
155
		for (c = 0; c < 13; c++)
231
		for (c = 0; c < 13; c++)
156
		{
232
		{
157
			colors.draw_cell(c*colors.cell_size + _x, r*colors.cell_size + _y, default_colors[i]);
233
			colors.draw_cell(c*colors.cell_size + _x, r*colors.cell_size + _y, default_colors[PALLETE_SIZE-i]);
158
			DefineHiddenButton(c*colors.cell_size + _x, r*colors.cell_size + _y, colors.cell_size, colors.cell_size, 100+i);
234
			DefineHiddenButton(c*colors.cell_size + _x, r*colors.cell_size + _y, 
-
 
235
				colors.cell_size-1, colors.cell_size-1, BTN_PALETTE_COLOR_MAS+PALLETE_SIZE-i);
159
			i++;
236
			i++;
160
		}
237
		}
161
	}
238
	}
-
 
239
	DrawRectangle(_x-1, _y-1, c*colors.cell_size+1, r*colors.cell_size+1, system.color.work_light);
-
 
240
	DrawRectangle(_x-2, _y-2, c*colors.cell_size+3, r*colors.cell_size+3, system.color.work_dark);
162
}
241
}
Line 163... Line 242...
163
 
242
 
164
 
243
 
Line 172... Line 251...
172
{
251
{
173
	colors.columns = x_count.value;
252
	colors.columns = x_count.value;
174
	colors.rows = y_count.value;
253
	colors.rows = y_count.value;
175
	DrawColorsField();
254
	DrawColorsField();
176
}
255
}
-
 
256
 
-
 
257
void EventPickActivate()
-
 
258
{
-
 
259
	SetEventMask(EVM_REDRAW+EVM_KEY+EVM_BUTTON+EVM_MOUSE);
-
 
260
	pick_active = true;
-
 
261
}
-
 
262
 
-
 
263
void EventPickColor()
-
 
264
{
-
 
265
	active_color = GetPixelColorFromScreen(mouse.x + Form.left, mouse.y + Form.top);
-
 
266
	DrawActiveColor(NULL);
-
 
267
	if (mouse.down) && (mouse.key&MOUSE_LEFT) {
-
 
268
		pick_active = false;
-
 
269
		SetEventMask(EVM_REDRAW+EVM_KEY+EVM_BUTTON+EVM_MOUSE+EVM_MOUSE_FILTER);
-
 
270
	}
-
 
271
}
-
 
272
 
-
 
273
void EventApplyBackground()
-
 
274
{
-
 
275
	SetBackgroundImage(colors.columns, colors.rows, colors.get_image(), DRAW_DESKTOP_BG_STRETCH);
-
 
276
}
177
277