Subversion Repositories Kolibri OS

Rev

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

  1. inline fastcall replace_2cols(EDI, EDX, ESI, ECX, EBX, EAX)
  2. {
  3.     EDX += EDI; //imgsrc + imgsize;
  4.     WHILE (EDI < EDX) {
  5.         IF (DSDWORD[EDI]==ESI) DSDWORD[EDI] = ECX;
  6.         ELSE IF (DSDWORD[EDI]==EBX) DSDWORD[EDI] = EAX;
  7.         EDI += 4;
  8.     }
  9. }
  10.  
  11. :unsigned int DrawTopPanelButton(dword _button_id, _x, _y, signed int _icon_n, bool pressed)
  12. {
  13.         #define TSZE 25
  14.         static dword lightest, i16_mem, old_work_light;
  15.         dword i16_size;
  16.         if (!lightest) || (old_work_light != sc.work_light) {
  17.                 old_work_light = sc.work_light;
  18.                 lightest = MixColors(sc.work_light, 0xFFFfff, skin_is_dark()*155 + 20);
  19.                 if (ESI = memopen("ICONS18", NULL, SHM_READ)) {
  20.                         i16_size = EDX;
  21.                         i16_mem = malloc(i16_size);
  22.                         memmov(i16_mem, ESI, i16_size);
  23.                         replace_2cols(i16_mem, i16_size, 0xffFFFfff, sc.work_light, 0xffCACBD6, sc.work_dark);                 
  24.                 }
  25.         }
  26.         DrawWideRectangle(_x+1, _y+1, TSZE, TSZE, 5, sc.work_light);
  27.         DefineHiddenButton(_x, _y, TSZE+1, TSZE+1, _button_id);
  28.         if (_icon_n==-1) {
  29.                 DrawBar(_x+6, _y+5, 16, 16, sc.work_light);
  30.                 DrawBar(_x+6, _y+7, 15, 3, sc.work_graph);
  31.                 $add ecx,5*65536
  32.                 $int 64
  33.                 $add ecx,5*65536
  34.                 $int 64
  35.         } else {
  36.                 if (i16_mem) PutPaletteImage(18*18*4*_icon_n + i16_mem,
  37.                         18, 18, TSZE/2-9+2+_x, TSZE/2-9+1+_y+pressed, 32, 0);
  38.         }
  39.  
  40.         if (!pressed) {
  41.                 DrawOvalBorder(_x, _y, TSZE, TSZE, lightest, sc.work_graph, sc.work_light, sc.work);
  42.         } else {
  43.                 DrawOvalBorder(_x, _y, TSZE, TSZE, sc.work_graph, sc.work_light, sc.work_dark, sc.work);
  44.                 PutShadow(_x+1, _y+1, TSZE, TSZE, true, 2);
  45.         }
  46.  
  47.         return _x;
  48. }