Subversion Repositories Kolibri OS

Rev

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: