Subversion Repositories Kolibri OS

Rev

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

  1. //notify 0.52
  2. //SoUrcerer 2010, Leency 2012-2013, GNU GPLv2
  3.  
  4. #define MEMSIZE 0x3E80
  5. #include "..\lib\kolibri.h"
  6. #include "..\lib\strings.h"
  7. #include "..\lib\mem.h"
  8. #include "..\lib\figures.h"
  9.  
  10. int SCREEN_SIZE_X,
  11.     SCREEN_SIZE_Y;
  12.  
  13. int WIN_Y=0,
  14.     WIN_SIZE_X=300,
  15.     WIN_SIZE_Y=28;
  16.  
  17. int delay = 500;
  18.        
  19. void main()
  20. {  
  21.         int TEXT_X=4,
  22.             TEXT_Y=12;
  23.         dword shadow_buf, lighter_pixel1, lighter_pixel2;
  24.        
  25.         if (!param)
  26.         {
  27.                 if (GetSystemLanguage()==4)
  28.                         strcpy(#param, "â  ¯à®£à ¬¬  ¯®ª §ë¢ ¥â 㢥¤®¬«¥­¨ï.");
  29.                 else
  30.                         strcpy(#param, "This program shows notices. Open it with params.");
  31.         }
  32.        
  33.         SCREEN_SIZE_X=GetScreenWidth()+1;
  34.         if (strlen(#param)*6>WIN_SIZE_X)
  35.         {
  36.                 WIN_SIZE_X=strlen(#param)*6+8;
  37.                 delay = strlen(#param)*10;
  38.         }
  39.        
  40.         TEXT_X=-6*strlen(#param)+WIN_SIZE_X/2;
  41.         TEXT_Y=WIN_SIZE_Y/2-3;
  42.        
  43.         //èçÿÿÿùíûé êîñòûëü, ðåàëèçóþùèé ìíîãîïîòî÷íîñòü :)
  44.         while (GetPixelColor(SCREEN_SIZE_X-1, SCREEN_SIZE_X, WIN_Y)==0x333333) WIN_Y+=WIN_SIZE_Y+17;
  45.  
  46.         #if !defined(AUTOBUILD)
  47.         {
  48.                 mem_Init();
  49.                 shadow_buf = malloc(WIN_SIZE_X*WIN_SIZE_Y*3);
  50.                 lighter_pixel1 = malloc(3);
  51.                 lighter_pixel2 = malloc(3);
  52.                 CopyScreen(shadow_buf, SCREEN_SIZE_X-WIN_SIZE_X-1, WIN_Y, WIN_SIZE_X, WIN_SIZE_Y);
  53.                 CopyScreen(lighter_pixel1, SCREEN_SIZE_X-WIN_SIZE_X-1, WIN_Y, 1, 1);
  54.                 CopyScreen(lighter_pixel2, SCREEN_SIZE_X-WIN_SIZE_X-1, WIN_Y+WIN_SIZE_Y, 1, 1);
  55.                 ShadowImage(shadow_buf, WIN_SIZE_X, WIN_SIZE_Y, 4);
  56.                 ShadowImage(lighter_pixel1, 1, 1, 1);
  57.                 ShadowImage(lighter_pixel2, 1, 1, 1);
  58.         }
  59.         #endif
  60.  
  61.         loop()
  62.         {
  63.                 WaitEventTimeout(delay);
  64.                 switch(EAX & 0xFF)
  65.                 {
  66.                 case evButton:
  67.                         if (GetButtonID()==1) ExitProcess();
  68.                         break;
  69.                        
  70.                 case evKey:
  71.                         break;
  72.          
  73.                 case evReDraw:
  74.                         DefineAndDrawWindow(SCREEN_SIZE_X-WIN_SIZE_X,WIN_Y,WIN_SIZE_X, WIN_SIZE_Y-1, 0x01, 0, 0, 0x01fffFFF);
  75.                         DefineButton(0,0, WIN_SIZE_X, WIN_SIZE_Y, 1+BT_HIDE+BT_NOFRAME, 0);
  76.                         //draw_grid();
  77.                         //PutShadow(0,0,WIN_SIZE_X,WIN_SIZE_Y, 0, 4);
  78.                         #ifdef AUTOBUILD
  79.                                 { draw_grid(); }
  80.                         #else
  81.                         {
  82.                                 _PutImage(0,0,WIN_SIZE_X,WIN_SIZE_Y,shadow_buf);
  83.                                 PutPixel(0,0,ESDWORD[lighter_pixel1]);
  84.                                 PutPixel(0,WIN_SIZE_Y-1,ESDWORD[lighter_pixel2]);
  85.                         }
  86.                         #endif
  87.                         DrawBar(WIN_SIZE_X,0, 1, WIN_SIZE_Y, 0x333333);
  88.                         WriteText(TEXT_X-1,TEXT_Y, 0x80, 0,#param); //òåíü
  89.                         WriteText(TEXT_X+1,TEXT_Y, 0x80, 0,#param);
  90.                         WriteText(TEXT_X,TEXT_Y-1, 0x80, 0,#param);
  91.                         WriteText(TEXT_X,TEXT_Y+1, 0x80, 0,#param);
  92.                         WriteText(TEXT_X-1,TEXT_Y-1, 0x80, 0,#param);
  93.                         WriteText(TEXT_X+1,TEXT_Y+1, 0x80, 0,#param);
  94.                         WriteText(TEXT_X-1,TEXT_Y+1, 0x80, 0,#param);
  95.                         WriteText(TEXT_X+1,TEXT_Y-1, 0x80, 0,#param);
  96.                        
  97.                         WriteText(TEXT_X,TEXT_Y, 0x80, 0xFFFfff,#param);
  98.                         break;
  99.                 default:
  100.                         ExitProcess();
  101.       }
  102.    }
  103. }
  104.  
  105.  
  106.  
  107. :void draw_grid()
  108. {
  109.         int x, y;
  110.        
  111.         for (y=0; y<=WIN_SIZE_Y; y++)
  112.         {
  113.                 for (x=0; x<=WIN_SIZE_X; x++)  
  114.                 {
  115.                         if (! y&1) && (! x&1) PutPixel(x, y, 0);
  116.                         if (  y&1) && (  x&1) PutPixel(x, y, 0);
  117.                 }
  118.         }
  119. }
  120.  
  121.  
  122. stop:
  123.