Subversion Repositories Kolibri OS

Rev

Rev 3363 | 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"
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;
3458 leency 45
	for ( ; img < to; img+=4)
46
	{
47
		ESDWORD[img] >>= 1;
48
		$and ESDWORD[img], 7F7F7F7Fh
49
	}
3363 leency 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
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: