Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. /*
  2.                 control Image
  3. */
  4.  
  5. void DisplayImage(gui_image_t *Image)
  6. {
  7.         int     x;
  8.         int     y;
  9.         int     sizex;
  10.         int     sizey;
  11.         struct FINITION *fin;
  12.  
  13.         x=Image->ctrl_x;
  14.         y=Image->ctrl_y;
  15.         sizex=Image->ctrl_sizex;
  16.         sizey=Image->ctrl_sizey;
  17.         fin=(struct FINITION*)Image->finition;
  18.  
  19.         Draw(fin,TOOL_IMAGE,x,y,sizex,sizey,Image->bits_per_pixel,Image->img);
  20. }
  21.  
  22. //---------------------------------------------------------------------------------
  23. //                       control Image
  24. //---------------------------------------------------------------------------------
  25. void ImageProc(gui_image_t *Image,gui_message_t *message)
  26. {
  27.         finition_t      *fin;
  28.  
  29.         switch(message->type)
  30.         {
  31.                 case MESSAGE_FULL_REDRAW_ALL:
  32.                 {
  33.                         //draw Image
  34.                         if (Image->flags & FLAG_SHOW_CONTROL)   DisplayImage(Image);
  35.                         break;
  36.                 }
  37.                 case MESSAGE_FULL_REDRAW_ALL_WITH_FINITION:
  38.                 {
  39.                         fin=(struct FINITION*)Image->finition;
  40.                         fin->flags=fin->flags | FINITION_ON;
  41.                         fin->x=message->arg1;
  42.                         fin->y=message->arg2;
  43.                         fin->sizex=message->arg3;
  44.                         fin->sizey=message->arg4;
  45.                         DisplayImage(Image);
  46.                         break;
  47.                 }
  48.                 case MESSAGE_SPECIALIZED:
  49.                 {
  50.                         if (Image->flags & FLAG_GET_SPECIALIZED_MESSAGE_ON)
  51.                         {
  52.                                 if (Image->flags & FLAG_SHOW_CONTROL)   DisplayImage(Image);
  53.                                 Image->flags=Image->flags & FLAG_GET_SPECIALIZED_MESSAGE_OFF;
  54.                         }                      
  55.                         break;
  56.                 }
  57.                 case MESSAGE_CHANGE_POSITION_EVENT:
  58.                 {
  59.                         Image->ctrl_x=Image->ctrl_x+message->arg1;
  60.                         Image->ctrl_y=Image->ctrl_y+message->arg2;
  61.                         break;
  62.                 }
  63.                 case MESSAGE_DESTROY_CONTROL:
  64.                 {
  65.                         free(Image->finition);
  66.                         free(Image->img);
  67.                         break;
  68.                 }
  69.                 case MESSAGE_SET_MAIN_PARENT:
  70.                 {
  71.                         SendMessage((struct HEADER*)Image,message);
  72.                         Image->main_parent=(DWORD*)message->arg1;
  73.                         break;
  74.                 }
  75.  
  76.                 default: break;
  77.         }
  78.         //send message to child controls(if there is)
  79.         SendMessage((struct HEADER*)Image,message);
  80. }
  81.  
  82. //---------------------------------------------------------------------------------
  83. //                              create control Image
  84. //---------------------------------------------------------------------------------
  85. void* CreateImage(struct ImageData *info_for_control)
  86. {
  87.         gui_image_t     *Image;
  88.         finition_t      *fin;
  89.         DWORD           sizemem;
  90.  
  91.         Image=malloc(sizeof(struct ControlImage));
  92.         Image->finition=malloc(sizeof(struct FINITION));
  93.         fin=(struct FINITION*)Image->finition;
  94.         fin->flags=0;
  95.  
  96.         ID++;
  97. #ifdef  DEBUG
  98.         printf("\ncreated image with ID=%d",(int)ID);
  99. #endif
  100.         Image->child_bk=(DWORD*)NULL;
  101.         Image->child_fd=(DWORD*)NULL;
  102.         Image->active_control_for_keys=(DWORD*)NULL;
  103.         Image->active_control_for_mouse=(DWORD*)NULL;
  104.         Image->callback=(DWORD*)NULL;
  105.         Image->timer=(DWORD*)NULL;
  106.  
  107.         Image->ctrl_proc=(DWORD*)&ImageProc;
  108.         Image->ctrl_x=(DWORD)info_for_control->x;
  109.         Image->ctrl_y=(DWORD)info_for_control->y;
  110.         Image->ctrl_sizex=(DWORD)info_for_control->width;
  111.         Image->ctrl_sizey=(DWORD)info_for_control->height;
  112.         Image->bits_per_pixel=info_for_control->bits_per_pixel;
  113.         Image->ctrl_ID=ID;
  114.         Image->flags=0;
  115.         Image->flags=Image->flags | FLAG_SHOW_CONTROL;
  116.  
  117.         switch(Image->bits_per_pixel)
  118.         {
  119.                 case 32:
  120.                 {
  121.                         sizemem=(Image->ctrl_sizex*Image->ctrl_sizey)*4;
  122.                         Image->bytes_per_pixel=4;
  123.                         break;
  124.                 }
  125.                 case 24:
  126.                 {
  127.                         sizemem=(Image->ctrl_sizex*Image->ctrl_sizey)*3;
  128.                         Image->bytes_per_pixel=3;
  129.                         break;
  130.                 }
  131.                 case 16:
  132.                 {
  133.                         sizemem=(Image->ctrl_sizex*Image->ctrl_sizey)*2;
  134.                         Image->bytes_per_pixel=2;
  135.                         break;
  136.                 }
  137.                 case 15:
  138.                 {
  139.                         sizemem=(Image->ctrl_sizex*Image->ctrl_sizey)*2;
  140.                         Image->bytes_per_pixel=2;
  141.                         break;
  142.                 }
  143.                 case 8:
  144.                 {
  145.                         sizemem=Image->ctrl_sizex*Image->ctrl_sizey;
  146.                         Image->bytes_per_pixel=1;
  147.                         break;
  148.                 }
  149.                 case 4:
  150.                 {
  151.                         sizemem=((Image->ctrl_sizex*Image->ctrl_sizey)>>1)+1;
  152.                         Image->bytes_per_pixel=0;
  153.                         break;
  154.                 }
  155.                 default: return(NULL);
  156.         }
  157.  
  158.         Image->img=malloc(sizemem);
  159.  
  160.         return(Image);
  161. }
  162.  
  163.