Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. struct _colors
  2. {
  3.         int x,y;
  4.         unsigned rows, columns;
  5.         unsigned cell_size;
  6.         dword mas[MAX_COLORS*MAX_COLORS];
  7.         dword image;
  8.         void set_default_values();
  9.         void set_color();
  10.         dword get_color();
  11.         dword get_image();
  12.         void draw_cell();
  13.         void draw_all_cells();
  14. } colors;
  15.  
  16. void _colors::set_default_values()
  17. {
  18.         columns = 2;
  19.         rows = 2;
  20.         cell_size = 20;
  21.  
  22.         set_color(0,0, 0x66b2ff);
  23.         set_color(0,1, 0x000066);
  24.  
  25.         set_color(1,0, 0x000066);
  26.         set_color(1,1, 0x66b2ff);
  27. }
  28.  
  29. void _colors::set_color(int _r, _c, _color)
  30. {
  31.         debugval("_r", _r);
  32.         debugval("_c", _c);
  33.         mas[MAX_COLORS*_r + _c] = _color;
  34. }
  35.  
  36. dword _colors::get_color(int _r, _c)
  37. {
  38.         return mas[MAX_COLORS*_r + _c];
  39. }
  40.  
  41. dword _colors::get_image()
  42. {
  43.         int r=0, c=0;
  44.         dword i;
  45.  
  46.         free(image);
  47.         i = image = malloc(rows*columns*3);
  48.  
  49.         for (r = 0; r < rows; r++)
  50.         {
  51.                 for (c = 0; c < columns; c++)
  52.                 {
  53.                         rgb.DwordToRgb(get_color(r,c));
  54.                         ESBYTE[i] = rgb.b;
  55.                         ESBYTE[i+1] = rgb.g;
  56.                         ESBYTE[i+2] = rgb.r;
  57.                         i += 3;
  58.                 }
  59.         }
  60.         return image;
  61. }
  62.  
  63. void _colors::draw_cell(int _x, _y, _color)
  64. {
  65.         DrawRectangle(_x, _y, cell_size, cell_size, 0xA7B2BA);
  66.         DrawBar(_x+1, _y+1, cell_size-1, cell_size-1, _color);
  67. }
  68.  
  69. void _colors::draw_all_cells()
  70. {
  71.         int r, c, i;
  72.         for (i=300; i<MAX_COLORS*MAX_COLORS+300; i++) DeleteButton(i);
  73.         for (r = 0; r < rows; r++)
  74.         {
  75.                 for (c = 0; c < columns; c++)
  76.                 {
  77.                         draw_cell(c*cell_size + x, r*cell_size + y, get_color(r, c));
  78.                         DefineHiddenButton(c*cell_size + x, r*cell_size + y, cell_size, cell_size, r*columns+c+300);
  79.                 }
  80.         }
  81. }
  82.  
  83.