Rev 5651 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
3363 | leency | 1 | #define MEMSIZE 0x3E80 |
2 | #include "..\lib\kolibri.h" |
||
5499 | leency | 3 | #include "..\lib\gui.h" |
3363 | leency | 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, |
||
4885 | leency | 13 | //"Ядро [Home]"w, 180, |
3363 | leency | 14 | "Отмена [Esc]"w, 27, |
15 | 0}; |
||
16 | #else |
||
17 | char *BUTTONS_CAPTIONS[]={ |
||
18 | " Reboot [Enter]",13, |
||
19 | " Power off [End]",181, |
||
4885 | leency | 20 | //" Kernel [Home]",180, |
3363 | leency | 21 | " Close [Esc]",27, |
22 | 0}; |
||
23 | #endif |
||
24 | |||
25 | unsigned char moon[6*6] = FROM "moon.raw"; |
||
26 | |||
27 | int WIN_SIZE_X, WIN_SIZE_Y; |
||
28 | int PANEL_X, PANEL_Y; |
||
29 | |||
4885 | leency | 30 | #define NIGHT_PALEL_HEIGHT 50 |
31 | #define STARS_COUNT 25 |
||
3363 | leency | 32 | |
33 | #define PANEL_SIZE_X 260 |
||
4885 | leency | 34 | #define PANEL_SIZE_Y 148 |
3363 | leency | 35 | |
36 | :void ShadowScreen(dword img, w, h) |
||
37 | { |
||
38 | dword to = w*h*3 + img; |
||
3458 | leency | 39 | for ( ; img < to; img+=4) |
40 | { |
||
41 | ESDWORD[img] >>= 1; |
||
42 | $and ESDWORD[img], 7F7F7F7Fh |
||
43 | } |
||
3363 | leency | 44 | //for ( ; img < to; img+=4) { ESDWORD[img] >>= 2; $and ESDWORD[img], 3F3F3F3Fh } |
45 | } |
||
46 | |||
47 | |||
48 | void main() |
||
49 | { |
||
50 | int key; |
||
5582 | pavelyakov | 51 | dword s1,s2, s3, s4, sides_w,i; |
3363 | leency | 52 | |
53 | WIN_SIZE_X=GetScreenWidth()+1; |
||
54 | WIN_SIZE_Y=GetScreenHeight()+1; |
||
55 | PANEL_X=WIN_SIZE_X-PANEL_SIZE_X/2; |
||
56 | PANEL_Y=WIN_SIZE_Y-PANEL_SIZE_Y/2; |
||
57 | |||
58 | sides_w = WIN_SIZE_X-PANEL_SIZE_X/2; |
||
59 | s1 = mem_Alloc(WIN_SIZE_X*PANEL_Y*3); |
||
60 | s2 = mem_Alloc(sides_w*PANEL_Y*3); |
||
61 | s3 = mem_Alloc(sides_w*PANEL_Y*3); |
||
62 | s4 = mem_Alloc(WIN_SIZE_X*PANEL_Y*3); |
||
63 | |||
64 | CopyScreen(s1, 0, 0, WIN_SIZE_X, PANEL_Y); |
||
65 | ShadowScreen(s1, WIN_SIZE_X, PANEL_Y); |
||
66 | |||
67 | CopyScreen(s2, 0, PANEL_Y, sides_w, PANEL_SIZE_Y+1); |
||
68 | ShadowScreen(s2, sides_w, PANEL_SIZE_Y+1); |
||
69 | |||
70 | CopyScreen(s3, sides_w+PANEL_SIZE_X+1, PANEL_Y, sides_w-1, PANEL_SIZE_Y+1); |
||
71 | ShadowScreen(s3, sides_w, PANEL_SIZE_Y+1); |
||
72 | |||
73 | CopyScreen(s4, 0, PANEL_Y+PANEL_SIZE_Y+1, WIN_SIZE_X, PANEL_Y-1); |
||
74 | ShadowScreen(s4, WIN_SIZE_X, PANEL_Y-1); |
||
75 | |||
76 | |||
77 | goto _DRAW; |
||
78 | loop() |
||
79 | { |
||
5640 | pavelyakov | 80 | WaitEventTimeout(7); |
3363 | leency | 81 | switch(EAX & 0xFF) |
82 | { |
||
83 | case evButton: |
||
84 | key=GetButtonID(); |
||
85 | if (key==1) ExitProcess(); |
||
86 | GOTO _BUTTON_MARK; |
||
87 | |||
88 | case evKey: |
||
89 | key = GetKey(); |
||
90 | _BUTTON_MARK: |
||
91 | if (key== 13) ExitSystem(REBOOT); //ENTER |
||
92 | if (key==180) ExitSystem(KERNEL); //HOME |
||
93 | if (key==181) ExitSystem(TURN_OFF); //END |
||
94 | if (key== 27) ExitProcess(); //ESC |
||
95 | if (key== 19) //CTRL+S |
||
96 | { |
||
97 | RunProgram("rdsave",0); |
||
98 | ExitProcess(); |
||
99 | } |
||
100 | break; |
||
101 | |||
102 | case evReDraw: |
||
5674 | pavelyakov | 103 | system.color.get(); |
3363 | leency | 104 | DefineAndDrawWindow(0,0,WIN_SIZE_X, WIN_SIZE_Y, 0x01, 0, 0, 0x01fffFFF); |
105 | //_PutImage(0,0,WIN_SIZE_X,WIN_SIZE_Y,shadow_buf); |
||
5640 | pavelyakov | 106 | _PutImage(0,0,WIN_SIZE_X, PANEL_Y,s1); |
107 | _PutImage(0,PANEL_Y,sides_w, PANEL_SIZE_Y+1,s2); |
||
108 | _PutImage(sides_w+PANEL_SIZE_X+1,PANEL_Y,sides_w-1, PANEL_SIZE_Y+1,s3); |
||
109 | _PutImage(0,PANEL_Y+PANEL_SIZE_Y+1,WIN_SIZE_X, PANEL_Y-1,s4); |
||
3363 | leency | 110 | draw_main_area(PANEL_X, PANEL_Y, PANEL_SIZE_X, PANEL_SIZE_Y); |
111 | break; |
||
112 | default: _DRAW: |
||
113 | draw_stars(); |
||
114 | } |
||
115 | } |
||
116 | } |
||
117 | |||
118 | |||
119 | void draw_main_area() |
||
120 | { |
||
121 | int i=0; |
||
122 | |||
123 | DrawRectangle(PANEL_X, PANEL_Y, PANEL_SIZE_X, PANEL_SIZE_Y, 0); |
||
5674 | pavelyakov | 124 | DrawBar(PANEL_X+1, PANEL_Y+NIGHT_PALEL_HEIGHT+1, PANEL_SIZE_X-1, PANEL_SIZE_Y-NIGHT_PALEL_HEIGHT-1, system.color.work); |
3363 | leency | 125 | |
4885 | leency | 126 | for (i=0; i<3; i++) |
3363 | leency | 127 | { |
5674 | pavelyakov | 128 | DefineButton(PANEL_X+33, i*23 + PANEL_Y+NIGHT_PALEL_HEIGHT+16, 190,19, BUTTONS_CAPTIONS[i*2+1],system.color.work_button); |
129 | WriteText(PANEL_X+59, i*23 + PANEL_Y+NIGHT_PALEL_HEIGHT+22, 0x80,system.color.work_button_text, BUTTONS_CAPTIONS[i*2]); |
||
3363 | leency | 130 | } |
131 | |||
132 | draw_stars(); |
||
133 | } |
||
134 | |||
4885 | leency | 135 | dword stars_col[4]={0xD2CF19, 0x716900, 0x002041, 0xEAE0DE}; //0x005BFF - голубой, редко |
136 | |||
3363 | leency | 137 | void draw_stars() |
138 | { |
||
139 | |||
140 | int i, x_pic, y_pic, col; |
||
141 | |||
142 | DrawBar(PANEL_X+1, PANEL_Y+1, PANEL_SIZE_X-1, NIGHT_PALEL_HEIGHT, 0x002041); |
||
143 | |||
144 | for (i=0; i |
||
145 | { |
||
4885 | leency | 146 | x_pic = random(PANEL_SIZE_X-2); |
147 | y_pic = random(NIGHT_PALEL_HEIGHT-2); |
||
148 | col = random(4); |
||
149 | PutPixel(PANEL_X+2 +x_pic, PANEL_Y+2 +y_pic, stars_col[col]); |
||
150 | if (stars_col[col]==0xD2CF19) |
||
151 | { |
||
152 | PutPixel(PANEL_X+2 +x_pic+1, PANEL_Y+2 +y_pic, stars_col[col+1]); |
||
153 | PutPixel(PANEL_X+2 +x_pic-1, PANEL_Y+2 +y_pic, stars_col[col+1]); |
||
154 | PutPixel(PANEL_X+2 +x_pic, PANEL_Y+2 +y_pic-1, stars_col[col+1]); |
||
155 | PutPixel(PANEL_X+2 +x_pic, PANEL_Y+2 +y_pic+1, stars_col[col+1]); |
||
156 | } |
||
157 | |||
3363 | leency | 158 | } |
4885 | leency | 159 | _PutImage(PANEL_X+PANEL_SIZE_X-60+random(3),PANEL_Y+10+random(3), 6,6, #moon); |
3363 | leency | 160 | } |
161 | |||
162 | |||
163 | |||
164 | |||
165 | |||
166 | stop:3;>>> |