Subversion Repositories Kolibri OS

Rev

Rev 7151 | Rev 7155 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. struct _colors
  2. {
  3.  
  4.         unsigned rows, columns;
  5.         dword mas[32*32];
  6.         dword img;
  7.         void set_pixel();
  8.         dword get_pixel();
  9.         dword get_image();
  10.         void move();
  11. };
  12.  
  13. void _colors::set_pixel(int _r, _c, _color)
  14. {
  15.         mas[columns*_r + _c] = _color;
  16. }
  17.  
  18. dword _colors::get_pixel(int _r, _c)
  19. {
  20.         return mas[columns*_r + _c];
  21. }
  22.  
  23. dword _colors::get_image()
  24. {
  25.         int r=0, c=0;
  26.         dword i;
  27.  
  28.         free(img);
  29.         i = img = malloc(rows*columns*3);
  30.  
  31.         for (r = 0; r < rows; r++)
  32.         {
  33.                 for (c = 0; c < columns; c++)
  34.                 {
  35.                         rgb.DwordToRgb(get_pixel(r,c));
  36.                         ESBYTE[i] = rgb.b;
  37.                         ESBYTE[i+1] = rgb.g;
  38.                         ESBYTE[i+2] = rgb.r;
  39.                         i += 3;
  40.                 }
  41.         }
  42.         return img;
  43. }
  44.  
  45. enum {
  46.         MOVE_LEFT,
  47.         MOVE_RIGHT,
  48.         MOVE_UP,
  49.         MOVE_DOWN,
  50.         FLIP_VER,
  51.         FLIP_HOR,
  52.         ROTE
  53. };
  54. void _colors::move(int _direction)
  55. {
  56.         int r, c;
  57.         dword first_element_data;
  58.  
  59.         switch(_direction)
  60.         {
  61.                 case MOVE_LEFT:
  62.                                 for (r = 0; r < rows; r++)
  63.                                 {
  64.                                         first_element_data = get_pixel(r, 0);
  65.                                         for (c = 0; c < columns-1; c++) set_pixel(r, c, get_pixel(r, c+1));
  66.                                         set_pixel(r, columns-1, first_element_data);
  67.                                 }
  68.                                 break;
  69.                 case MOVE_RIGHT:
  70.                                 for (r = 0; r < rows; r++)
  71.                                 {
  72.                                         first_element_data = get_pixel(r, columns-1);
  73.                                         for (c = columns-1; c > 0; c--) set_pixel(r, c, get_pixel(r, c-1));
  74.                                         set_pixel(r, 0, first_element_data);
  75.                                 }      
  76.                                 break; 
  77.                 case MOVE_UP:
  78.                                 for (c = 0; c < columns; c++)
  79.                                 {
  80.                                         first_element_data = get_pixel(0, c);
  81.                                         for (r = 0; r < rows-1; r++) set_pixel(r, c, get_pixel(r+1, c));
  82.                                         set_pixel(rows-1, c, first_element_data);
  83.                                 }      
  84.                                 break;
  85.                 case MOVE_DOWN:
  86.                                 for (c = 0; c < columns; c++)
  87.                                 {
  88.                                         first_element_data = get_pixel(rows-1, c);
  89.                                         for (r = rows-1; r > 0; r--) set_pixel(r, c, get_pixel(r-1, c));
  90.                                         set_pixel(0, c, first_element_data);
  91.                                 }
  92.                                 break;
  93.                 case FLIP_HOR:
  94.                                 for (r = 0; r < rows; r++)
  95.                                 {
  96.                                         for (c = 0; c < columns/2; c++) {
  97.                                                 first_element_data = get_pixel(r, c);
  98.                                                 set_pixel(r, c, get_pixel(r, columns-c-1));
  99.                                                 set_pixel(r, columns-c-1, first_element_data);
  100.                                         }
  101.                                 }
  102.                                 break;
  103.                 case FLIP_VER:
  104.                                 for (c = 0; c < columns; c++)
  105.                                 {
  106.                                         for (r = 0; r < rows/2; r++) {
  107.                                                 first_element_data = get_pixel(r, c);
  108.                                                 set_pixel(r, c, get_pixel(rows-r-1, c));
  109.                                                 set_pixel(rows-r-1, c, first_element_data);
  110.                                         }
  111.                                 }
  112.                                 break; 
  113.         }
  114. }
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.