Subversion Repositories Kolibri OS

Rev

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

  1. #define MEMSIZE 1024*20
  2. #define ENTRY_POINT #main
  3.  
  4. #include "../lib/fs.h"
  5. #include "../lib/mem.h"
  6. #include "../lib/obj/libimg.h"
  7. #include "../lib/patterns/rgb.h"
  8.  
  9. void main()
  10. {
  11.         libimg_image icons32;
  12.         libimg_image icons16;
  13.         libimg_image icons16w;
  14.         unsigned int size32;
  15.         unsigned int size16;
  16.         char* shared_i32;
  17.         char* shared_i16;
  18.         char* shared_i16w;
  19.  
  20.         mem_init();
  21.         load_dll(libimg, #libimg_init, 1);
  22.         @SetEventMask(EVM_DESKTOPBG);
  23.  
  24.         icons32.load("/sys/icons32.png"); size32 = icons32.h * 32 * 4;
  25.         icons16.load("/sys/icons16.png"); size16 = icons16.h * 18 * 4;
  26.  
  27.         shared_i32 = memopen("ICONS32", size32, SHM_CREATE+SHM_WRITE);
  28.         memmov(shared_i32, icons32.imgsrc, size32);
  29.         img_destroy stdcall(icons32.image);
  30.  
  31.         shared_i16 = memopen("ICONS18", size16, SHM_CREATE + SHM_WRITE);
  32.         memmov(shared_i16, icons16.imgsrc, size16);
  33.         img_destroy stdcall(icons16.image);
  34.  
  35.         shared_i16w = memopen("ICONS18W", size16, SHM_CREATE + SHM_WRITE);
  36.  
  37. UPDATE_ICONS18WORK:
  38.         $push sc.work
  39.         sc.get();
  40.         $pop eax
  41.         if (sc.work != EAX) {
  42.                 icons16w.load("/sys/icons16.png");
  43.                 icons16w.replace_2colors(0xffFFFfff, sc.work, 0xffCACBD6, MixColors(sc.work, 0, 200));
  44.                 memmov(shared_i16w, icons16w.imgsrc, size16);
  45.                 img_destroy stdcall(icons16w.image);
  46.                 icons16w.image = NULL;
  47.         }
  48.  
  49.         loop() IF(WaitEvent()==evDesktop) GOTO UPDATE_ICONS18WORK;
  50. }
  51.