Subversion Repositories Kolibri OS

Rev

Rev 3363 | Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

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