Subversion Repositories Kolibri OS

Rev

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

  1. //notify 0.5
  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.        
  18. void main()
  19. {  
  20.         int TEXT_X=4,
  21.             TEXT_Y=12;
  22.         dword shadow_buf, lighter_pixel1, lighter_pixel2;
  23.        
  24.         mem_Init();
  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) WIN_SIZE_X=strlen(#param)*6+8;
  35.        
  36.         TEXT_X=-6*strlen(#param)+WIN_SIZE_X/2;
  37.         TEXT_Y=WIN_SIZE_Y/2-3;
  38.        
  39.         //èçÿÿÿùíûé êîñòûëü, ðåàëèçóþùèé ìíîãîïîòî÷íîñòü :)
  40.         while (GetPixelColor(SCREEN_SIZE_X-1, SCREEN_SIZE_X, WIN_Y)==0x333333) WIN_Y+=WIN_SIZE_Y+17;
  41.  
  42.         #if !defined(AUTOBUILD)
  43.         {
  44.                 shadow_buf = malloc(WIN_SIZE_X*WIN_SIZE_Y*3);
  45.                 lighter_pixel1 = malloc(3);
  46.                 lighter_pixel2 = malloc(3);
  47.                 CopyScreen(shadow_buf, SCREEN_SIZE_X-WIN_SIZE_X-1, WIN_Y, WIN_SIZE_X, WIN_SIZE_Y);
  48.                 CopyScreen(lighter_pixel1, SCREEN_SIZE_X-WIN_SIZE_X-1, WIN_Y, 1, 1);
  49.                 CopyScreen(lighter_pixel2, SCREEN_SIZE_X-WIN_SIZE_X-1, WIN_Y+WIN_SIZE_Y, 1, 1);
  50.                 ShadowImage(shadow_buf, WIN_SIZE_X, WIN_SIZE_Y, 4);
  51.                 ShadowImage(lighter_pixel1, 1, 1, 1);
  52.                 ShadowImage(lighter_pixel2, 1, 1, 1);
  53.         }
  54.         #endif
  55.  
  56.         loop()
  57.         {
  58.                 WaitEventTimeout(500);
  59.                 switch(EAX & 0xFF)
  60.                 {
  61.                 case evButton:
  62.                         if (GetButtonID()==1) ExitProcess();
  63.                         break;
  64.                        
  65.                 case evKey:
  66.                         break;
  67.          
  68.                 case evReDraw:
  69.                         DefineAndDrawWindow(SCREEN_SIZE_X-WIN_SIZE_X,WIN_Y,WIN_SIZE_X, WIN_SIZE_Y-1, 0x01, 0, 0, 0x01fffFFF);
  70.                         DefineButton(0,0, WIN_SIZE_X, WIN_SIZE_Y, 1+BT_HIDE+BT_NOFRAME, 0);
  71.                         //draw_grid();
  72.                         //PutShadow(0,0,WIN_SIZE_X,WIN_SIZE_Y, 0, 4);
  73.                         #ifdef AUTOBUILD
  74.                                 { draw_grid(); }
  75.                         #else
  76.                         {
  77.                                 _PutImage(0,0,WIN_SIZE_X,WIN_SIZE_Y,shadow_buf);
  78.                                 PutPixel(0,0,ESDWORD[lighter_pixel1]);
  79.                                 PutPixel(0,WIN_SIZE_Y-1,ESDWORD[lighter_pixel2]);
  80.                         }
  81.                         #endif
  82.                         DrawBar(WIN_SIZE_X,0, 1, WIN_SIZE_Y, 0x333333);
  83.                         WriteText(TEXT_X-1,TEXT_Y, 0x80, 0,#param); //òåíü
  84.                         WriteText(TEXT_X+1,TEXT_Y, 0x80, 0,#param);
  85.                         WriteText(TEXT_X,TEXT_Y-1, 0x80, 0,#param);
  86.                         WriteText(TEXT_X,TEXT_Y+1, 0x80, 0,#param);
  87.                         WriteText(TEXT_X-1,TEXT_Y-1, 0x80, 0,#param);
  88.                         WriteText(TEXT_X+1,TEXT_Y+1, 0x80, 0,#param);
  89.                         WriteText(TEXT_X-1,TEXT_Y+1, 0x80, 0,#param);
  90.                         WriteText(TEXT_X+1,TEXT_Y-1, 0x80, 0,#param);
  91.                        
  92.                         WriteText(TEXT_X,TEXT_Y, 0x80, 0xFFFfff,#param);
  93.                         break;
  94.                 default:
  95.                         ExitProcess();
  96.       }
  97.    }
  98. }
  99.  
  100.  
  101.  
  102. :void draw_grid()
  103. {
  104.         int x, y;
  105.        
  106.         for (y=0; y<=WIN_SIZE_Y; y++)
  107.         {
  108.                 for (x=0; x<=WIN_SIZE_X; x++)  
  109.                 {
  110.                         if (! y&1) && (! x&1) PutPixel(x, y, 0);
  111.                         if (  y&1) && (  x&1) PutPixel(x, y, 0);
  112.                 }
  113.         }
  114. }
  115.  
  116.  
  117. stop:
  118.