Subversion Repositories Kolibri OS

Rev

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

  1. #define MEMSIZE 0x3E80
  2. #include "..\lib\kolibri.h"
  3. #include "..\lib\figures.h"
  4. #include "..\lib\strings.h"
  5. #include "..\lib\random.h"
  6. #include "..\lib\mem.h"
  7. #include "..\lib\file_system.h"
  8.  
  9. #ifndef ru
  10.         char *BUTTONS_CAPTIONS[]={
  11.         "Ïåðåçàãðóçêà    [Enter]"w, 13,
  12.         "Âûêëþ÷åíèå        [End]"w, 181,
  13.         "ßäðî             [Home]"w, 180,
  14.         "Îòìåíà            [Esc]"w, 27,
  15.         0};
  16. #else
  17.         char *BUTTONS_CAPTIONS[]={
  18.         " Reboot        [Enter]",13,
  19.         " Power off       [End]",181,
  20.         " Kernel         [Home]",180,
  21.         " Close           [Esc]",27,
  22.         0};
  23. #endif
  24.  
  25. system_colors sc;
  26.  
  27. unsigned char moon[6*6] = FROM "moon.raw";
  28.  
  29. int WIN_SIZE_X, WIN_SIZE_Y;
  30. int PANEL_X, PANEL_Y;
  31.  
  32. #define NIGHT_PALEL_HEIGHT      45
  33. #define STARS_COUNT                     30
  34.  
  35. #define PANEL_SIZE_X            260
  36. #define PANEL_SIZE_Y            165
  37.  
  38. dword stars_col[4]={0xD2CF19, 0x716900, 0x002041}; //0x005BFF - ãîëóáîé, ðåäêî
  39.  
  40.  
  41.  
  42. :void ShadowScreen(dword img, w, h)
  43. {
  44.         dword to = w*h*3 + img;
  45.         for ( ; img < to; img+=4)
  46.         {
  47.                 ESDWORD[img] >>= 1;
  48.                 $and ESDWORD[img], 7F7F7F7Fh
  49.         }
  50.         //for ( ; img < to; img+=4) { ESDWORD[img] >>= 2;       $and ESDWORD[img], 3F3F3F3Fh }
  51. }
  52.  
  53.  
  54. void main()
  55. {  
  56.         int key;
  57.         dword s1,s2, s3, s4, sides_w;
  58.  
  59.         mem_Init();
  60.         WIN_SIZE_X=GetScreenWidth()+1;
  61.         WIN_SIZE_Y=GetScreenHeight()+1;
  62.         PANEL_X=WIN_SIZE_X-PANEL_SIZE_X/2;
  63.         PANEL_Y=WIN_SIZE_Y-PANEL_SIZE_Y/2;
  64.  
  65.         sides_w = WIN_SIZE_X-PANEL_SIZE_X/2;
  66.         s1 = mem_Alloc(WIN_SIZE_X*PANEL_Y*3);
  67.         s2 = mem_Alloc(sides_w*PANEL_Y*3);
  68.         s3 = mem_Alloc(sides_w*PANEL_Y*3);
  69.         s4 = mem_Alloc(WIN_SIZE_X*PANEL_Y*3);  
  70.  
  71.         CopyScreen(s1, 0, 0, WIN_SIZE_X, PANEL_Y);
  72.         ShadowScreen(s1, WIN_SIZE_X, PANEL_Y);
  73.  
  74.         CopyScreen(s2, 0, PANEL_Y, sides_w, PANEL_SIZE_Y+1);
  75.         ShadowScreen(s2, sides_w, PANEL_SIZE_Y+1);
  76.  
  77.         CopyScreen(s3, sides_w+PANEL_SIZE_X+1, PANEL_Y, sides_w-1, PANEL_SIZE_Y+1);
  78.         ShadowScreen(s3, sides_w, PANEL_SIZE_Y+1);
  79.  
  80.         CopyScreen(s4, 0, PANEL_Y+PANEL_SIZE_Y+1, WIN_SIZE_X, PANEL_Y-1);
  81.         ShadowScreen(s4, WIN_SIZE_X, PANEL_Y-1);
  82.  
  83.  
  84.         goto _DRAW;
  85.         loop()
  86.    {
  87.                 WaitEventTimeout(130);
  88.                 switch(EAX & 0xFF)
  89.                 {
  90.                 case evButton:
  91.                         key=GetButtonID();              
  92.                         if (key==1) ExitProcess();
  93.                         GOTO _BUTTON_MARK;
  94.                        
  95.                 case evKey:
  96.                         key = GetKey();
  97.                         _BUTTON_MARK:
  98.                         if (key== 13) ExitSystem(REBOOT);   //ENTER
  99.                         if (key==180) ExitSystem(KERNEL);   //HOME
  100.                         if (key==181) ExitSystem(TURN_OFF); //END
  101.                         if (key== 27) ExitProcess();        //ESC
  102.                         if (key== 19) //CTRL+S
  103.                         {
  104.                                 RunProgram("rdsave",0);
  105.                                 ExitProcess();
  106.                         }
  107.                         break;
  108.          
  109.                 case evReDraw:
  110.                         sc.get();
  111.                         DefineAndDrawWindow(0,0,WIN_SIZE_X, WIN_SIZE_Y, 0x01, 0, 0, 0x01fffFFF);
  112.                         //_PutImage(0,0,WIN_SIZE_X,WIN_SIZE_Y,shadow_buf);
  113.                         _PutImage(0,0,WIN_SIZE_X, PANEL_Y,s1);
  114.                         draw_main_area(PANEL_X, PANEL_Y, PANEL_SIZE_X, PANEL_SIZE_Y);
  115.                         _PutImage(0,PANEL_Y,sides_w, PANEL_SIZE_Y+1,s2);
  116.                         _PutImage(sides_w+PANEL_SIZE_X+1,PANEL_Y,sides_w-1, PANEL_SIZE_Y+1,s3);
  117.                         _PutImage(0,PANEL_Y+PANEL_SIZE_Y+1,WIN_SIZE_X, PANEL_Y-1,s4);
  118.                         break;
  119.                 default: _DRAW:
  120.                         draw_stars();
  121.       }
  122.    }
  123. }
  124.  
  125.  
  126. void draw_main_area()
  127. {
  128.         int i=0;
  129.        
  130.         DrawRectangle(PANEL_X, PANEL_Y, PANEL_SIZE_X, PANEL_SIZE_Y, 0);
  131.         DrawBar(PANEL_X+1, PANEL_Y+NIGHT_PALEL_HEIGHT+1, PANEL_SIZE_X-1, PANEL_SIZE_Y-NIGHT_PALEL_HEIGHT-1, sc.work);
  132.        
  133.         for (i=0; i<4; i++)
  134.         {
  135.                 DefineButton(PANEL_X+33, i*23 + PANEL_Y+NIGHT_PALEL_HEIGHT+16, 190,19, BUTTONS_CAPTIONS[i*2+1],sc.work_button);
  136.                 WriteText(PANEL_X+59, i*23 + PANEL_Y+NIGHT_PALEL_HEIGHT+22, 0x80,sc.work_button_text, BUTTONS_CAPTIONS[i*2]);
  137.         }
  138.                
  139.         draw_stars();
  140. }
  141.  
  142. void draw_stars()
  143. {
  144.  
  145.         int i, x_pic, y_pic, col;
  146.        
  147.         DrawBar(PANEL_X+1, PANEL_Y+1, PANEL_SIZE_X-1, NIGHT_PALEL_HEIGHT, 0x002041);
  148.        
  149.         for (i=0; i<STARS_COUNT; i++)
  150.         {
  151.                 x_pic = random(PANEL_SIZE_X-1);
  152.                 y_pic = random(NIGHT_PALEL_HEIGHT-1);
  153.                 col = random(3);
  154.                 PutPixel(PANEL_X+1 +x_pic, PANEL_Y+1 +y_pic, stars_col[col]);
  155.         }
  156.         /*for (i=0; i<3; i++)
  157.         {
  158.                 x_pic = random(PANEL_SIZE_X-8)+4;
  159.                 y_pic = random(NIGHT_PALEL_HEIGHT-8)+4;
  160.                
  161.                 PutPixel(PANEL_X +x_pic, PANEL_Y +y_pic, stars_col[0]);
  162.                 PutPixel(PANEL_X+1 +x_pic, PANEL_Y +y_pic, stars_col[1]);
  163.                 PutPixel(PANEL_X-1 +x_pic, PANEL_Y +y_pic, stars_col[1]);
  164.                 PutPixel(PANEL_X +x_pic, PANEL_Y +y_pic+1, stars_col[1]);
  165.                 PutPixel(PANEL_X +x_pic, PANEL_Y +y_pic-1, stars_col[1]);
  166.         }*/
  167.        
  168.         _PutImage(PANEL_X+PANEL_SIZE_X-60,PANEL_Y+10, 6,6, #moon);
  169. }
  170.  
  171.  
  172.  
  173.  
  174.  
  175. stop:
  176.