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 |