Subversion Repositories Kolibri OS

Rev

Rev 5640 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

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