2017-10-12 01:19:28 +02:00
|
|
|
struct _colors
|
|
|
|
{
|
2018-02-05 20:13:37 +01:00
|
|
|
int x,y,w,h;
|
2017-10-12 01:19:28 +02:00
|
|
|
unsigned rows, columns;
|
|
|
|
unsigned cell_size;
|
|
|
|
dword mas[MAX_COLORS*MAX_COLORS];
|
|
|
|
dword image;
|
|
|
|
void set_default_values();
|
|
|
|
void set_color();
|
|
|
|
dword get_color();
|
|
|
|
dword get_image();
|
|
|
|
void draw_cell();
|
|
|
|
void draw_all_cells();
|
2017-10-17 01:41:50 +02:00
|
|
|
void move();
|
2017-10-12 01:19:28 +02:00
|
|
|
} colors;
|
|
|
|
|
|
|
|
void _colors::set_default_values()
|
|
|
|
{
|
2018-02-05 20:13:37 +01:00
|
|
|
int i;
|
2017-10-12 01:19:28 +02:00
|
|
|
|
2018-02-05 20:13:37 +01:00
|
|
|
columns = MAX_COLORS;
|
|
|
|
rows = MAX_COLORS;
|
|
|
|
cell_size = 5;
|
|
|
|
w = columns * cell_size;
|
|
|
|
h = rows * cell_size;
|
2017-10-12 01:19:28 +02:00
|
|
|
|
2018-02-05 20:13:37 +01:00
|
|
|
for (i = 0; i < columns*rows; i++) mas[i]=0xBFCAD2;
|
2017-10-12 01:19:28 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
void _colors::set_color(int _r, _c, _color)
|
|
|
|
{
|
|
|
|
mas[MAX_COLORS*_r + _c] = _color;
|
|
|
|
}
|
|
|
|
|
|
|
|
dword _colors::get_color(int _r, _c)
|
|
|
|
{
|
|
|
|
return mas[MAX_COLORS*_r + _c];
|
|
|
|
}
|
|
|
|
|
|
|
|
dword _colors::get_image()
|
|
|
|
{
|
|
|
|
int r=0, c=0;
|
|
|
|
dword i;
|
|
|
|
|
|
|
|
free(image);
|
|
|
|
i = image = malloc(rows*columns*3);
|
|
|
|
|
|
|
|
for (r = 0; r < rows; r++)
|
|
|
|
{
|
|
|
|
for (c = 0; c < columns; c++)
|
|
|
|
{
|
|
|
|
rgb.DwordToRgb(get_color(r,c));
|
|
|
|
ESBYTE[i] = rgb.b;
|
|
|
|
ESBYTE[i+1] = rgb.g;
|
|
|
|
ESBYTE[i+2] = rgb.r;
|
|
|
|
i += 3;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return image;
|
|
|
|
}
|
|
|
|
|
|
|
|
void _colors::draw_cell(int _x, _y, _color)
|
|
|
|
{
|
2017-10-17 01:41:50 +02:00
|
|
|
//DrawRectangle(_x, _y, cell_size, cell_size, system.color.work_graph);
|
|
|
|
//DrawBar(_x+1, _y+1, cell_size-1, cell_size-1, _color);
|
|
|
|
DrawBar(_x, _y, cell_size, cell_size, _color);
|
2017-10-12 01:19:28 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
void _colors::draw_all_cells()
|
|
|
|
{
|
|
|
|
int r, c, i;
|
|
|
|
for (i=300; i<MAX_COLORS*MAX_COLORS+300; i++) DeleteButton(i);
|
|
|
|
for (r = 0; r < rows; r++)
|
|
|
|
{
|
|
|
|
for (c = 0; c < columns; c++)
|
|
|
|
{
|
|
|
|
draw_cell(c*cell_size + x, r*cell_size + y, get_color(r, c));
|
2018-02-05 20:13:37 +01:00
|
|
|
//DefineHiddenButton(c*cell_size + x, r*cell_size + y, cell_size, cell_size, r*columns+c+300+BT_NOFRAME);
|
2017-10-12 01:19:28 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2017-10-17 01:41:50 +02:00
|
|
|
enum {
|
|
|
|
DIRECTION_LEFT,
|
|
|
|
DIRECTION_RIGHT,
|
|
|
|
DIRECTION_UP,
|
|
|
|
DIRECTION_DOWN
|
|
|
|
};
|
|
|
|
void _colors::move(int direction)
|
|
|
|
{
|
|
|
|
int r, c;
|
|
|
|
dword first_element_data;
|
|
|
|
|
|
|
|
if (direction == DIRECTION_LEFT)
|
|
|
|
{
|
|
|
|
for (r = 0; r < rows; r++)
|
|
|
|
{
|
|
|
|
first_element_data = get_color(r, 0);
|
|
|
|
for (c = 0; c < columns-1; c++) set_color(r, c, get_color(r, c+1));
|
|
|
|
set_color(r, columns-1, first_element_data);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (direction == DIRECTION_RIGHT)
|
|
|
|
{
|
|
|
|
for (r = 0; r < rows; r++)
|
|
|
|
{
|
|
|
|
first_element_data = get_color(r, columns-1);
|
|
|
|
for (c = columns-1; c > 0; c--) set_color(r, c, get_color(r, c-1));
|
|
|
|
set_color(r, 0, first_element_data);
|
|
|
|
}
|
|
|
|
}
|
2018-02-05 00:12:35 +01:00
|
|
|
if (direction == DIRECTION_UP)
|
|
|
|
{
|
|
|
|
for (c = 0; c < columns; c++)
|
|
|
|
{
|
|
|
|
first_element_data = get_color(0, c);
|
|
|
|
for (r = 0; r < rows-1; r++) set_color(r, c, get_color(r+1, c));
|
|
|
|
set_color(rows-1, c, first_element_data);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (direction == DIRECTION_DOWN)
|
|
|
|
{
|
|
|
|
for (c = 0; c < columns; c++)
|
|
|
|
{
|
|
|
|
first_element_data = get_color(rows-1, c);
|
|
|
|
for (r = rows-1; r > 0; r--) set_color(r, c, get_color(r-1, c));
|
|
|
|
set_color(0, c, first_element_data);
|
|
|
|
}
|
|
|
|
}
|
2017-10-17 01:41:50 +02:00
|
|
|
|
|
|
|
draw_all_cells();
|
|
|
|
}
|
2018-02-05 00:12:35 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|