Subversion Repositories Kolibri OS

Rev

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

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