Subversion Repositories Kolibri OS

Rev

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

Rev 4474 Rev 5422
1
//notify 0.8
1
//notify 0.8
2
//SoUrcerer 2010, Leency 2012-2013, GNU GPLv2
2
//SoUrcerer 2010, Leency 2012-2013, GNU GPLv2
3
 
3
 
4
#define MEMSIZE 0x2F00
4
#define MEMSIZE 0x2F00
5
#include "..\lib\kolibri.h" 
5
#include "..\lib\kolibri.h" 
6
#include "..\lib\strings.h" 
6
#include "..\lib\strings.h" 
7
#include "..\lib\mem.h" 
7
#include "..\lib\mem.h" 
8
#include "..\lib\figures.h" 
8
#include "..\lib\figures.h" 
9
 
9
 
10
dword shadow_buf_24, shadow_buf_32, lighter_pixel1, lighter_pixel2;
10
dword shadow_buf_24, shadow_buf_32, lighter_pixel1, lighter_pixel2;
11
 
11
 
12
?define PADDING 15;
12
?define PADDING 15;
13
 
13
 
14
int SCREEN_SIZE_X,
14
int SCREEN_SIZE_X,
15
    SCREEN_SIZE_Y;
15
    SCREEN_SIZE_Y;
16
 
16
 
17
int WIN_X,
17
int WIN_X,
18
	WIN_Y,
18
	WIN_Y,
19
    WIN_SIZE_X=256,
19
    WIN_SIZE_X=256,
20
    WIN_SIZE_Y=28;
20
    WIN_SIZE_Y=28;
21
 
21
 
22
int TEXT_X=PADDING,
22
int TEXT_X=PADDING,
23
	TEXT_Y;
23
	TEXT_Y;
24
 
24
 
25
int delay = 400;
25
int delay = 400;
26
 
26
 
27
#ifndef AUTOBUILD
27
#ifndef AUTOBUILD
28
	#include "lang.h--"
28
	#include "lang.h--"
29
#endif
29
#endif
30
 
30
 
31
#ifdef LANG_RUS
31
#ifdef LANG_RUS
32
	?define DEFAULT_TEXT "â  ¯à®£à ¬¬  ¯®ª §ë¢ ¥â 㢥¤®¬«¥­¨ï.";
32
	?define DEFAULT_TEXT "â  ¯à®£à ¬¬  ¯®ª §ë¢ ¥â 㢥¤®¬«¥­¨ï.";
33
#else
33
#else
34
	?define DEFAULT_TEXT "This program shows notices. Open it with params.";
34
	?define DEFAULT_TEXT "This program shows notices. Open it with params.";
35
#endif
35
#endif
36
 
36
 
37
void PutText(dword x, y) {
37
void PutText(dword x, y) {
38
	WriteBufText(x,y, 0x88, 0, #param, shadow_buf_32);
38
	WriteBufText(x,y, 0x88, 0, #param, shadow_buf_32);
39
}
39
}
40
 
40
 
41
void Text()
41
void Text()
42
{
42
{
43
	PutText(TEXT_X-1,TEXT_Y+1);
43
	PutText(TEXT_X-1,TEXT_Y+1);
44
	PutText(TEXT_X-1,TEXT_Y-1);
44
	PutText(TEXT_X-1,TEXT_Y-1);
45
	PutText(TEXT_X-1,TEXT_Y  );
45
	PutText(TEXT_X-1,TEXT_Y  );
46
	PutText(TEXT_X+1,TEXT_Y-1);
46
	PutText(TEXT_X+1,TEXT_Y-1);
47
	PutText(TEXT_X+1,TEXT_Y  );
47
	PutText(TEXT_X+1,TEXT_Y  );
48
	PutText(TEXT_X+1,TEXT_Y+1);
48
	PutText(TEXT_X+1,TEXT_Y+1);
49
	PutText(TEXT_X,  TEXT_Y+1);
49
	PutText(TEXT_X,  TEXT_Y+1);
50
	PutText(TEXT_X,  TEXT_Y-1);
50
	PutText(TEXT_X,  TEXT_Y-1);
51
	WriteBufText(TEXT_X, TEXT_Y, 0x88, 0xFFFfff, #param, shadow_buf_32);
51
	WriteBufText(TEXT_X, TEXT_Y, 0x88, 0xFFFfff, #param, shadow_buf_32);
52
}
52
}
53
 
-
 
54
inline fastcall int GetClientTop()
-
 
55
{
-
 
56
	$mov eax, 48
-
 
57
	$mov ebx, 5
-
 
58
	$int 0x40
-
 
59
    $mov eax, ebx
-
 
60
    $shr eax, 16
-
 
61
}
-
 
62
 
53
 
63
void from24to32(ESI, EDI, EAX, EBX) //src,dst,w,h
54
void from24to32(ESI, EDI, EAX, EBX) //src,dst,w,h
64
{
55
{
65
conv24to32:
56
conv24to32:
66
	$mul ebx
57
	$mul ebx
67
	$mov ecx, eax
58
	$mov ecx, eax
68
	$xor al, al 
59
	$xor al, al 
69
_next:	
60
_next:	
70
	$movsw
61
	$movsw
71
	$movsb
62
	$movsb
72
	$stosb 	
63
	$stosb 	
73
	$loop _next
64
	$loop _next
74
}
65
}
75
 
66
 
76
void DrawBackground()
67
void DrawBackground()
77
{
68
{
78
	PutPaletteImage(shadow_buf_32+8,WIN_SIZE_X,WIN_SIZE_Y,0,0,32,0);
69
	PutPaletteImage(shadow_buf_32+8,WIN_SIZE_X,WIN_SIZE_Y,0,0,32,0);
79
	PutPixel(0,0,ESDWORD[lighter_pixel1]);
70
	PutPixel(0,0,ESDWORD[lighter_pixel1]);
80
	PutPixel(0,WIN_SIZE_Y-1,ESDWORD[lighter_pixel2]);	
71
	PutPixel(0,WIN_SIZE_Y-1,ESDWORD[lighter_pixel2]);	
81
}
72
}
82
 
73
 
83
void GetBackground()
74
void GetBackground()
84
{
75
{
85
	int i;
76
	int i;
86
	static int was_once;
77
	static int was_once;
87
 
78
 
88
	if (was_once)
79
	if (was_once)
89
	{
80
	{
90
		DrawBackground();
81
		DrawBackground();
91
		return;
82
		return;
92
	}
83
	}
93
	for (i=1; i<=6; i++)
84
	for (i=1; i<=6; i++)
94
	{
85
	{
95
		was_once = 1;
86
		was_once = 1;
96
		ShadowImage(shadow_buf_24, WIN_SIZE_X, WIN_SIZE_Y, 1);
87
		ShadowImage(shadow_buf_24, WIN_SIZE_X, WIN_SIZE_Y, 1);
97
		if (i%2 == 0) ShadowImage(lighter_pixel1, 1, 1, 1);
88
		if (i%2 == 0) ShadowImage(lighter_pixel1, 1, 1, 1);
98
		if (i%2 == 0) ShadowImage(lighter_pixel2, 1, 1, 1);
89
		if (i%2 == 0) ShadowImage(lighter_pixel2, 1, 1, 1);
99
		from24to32(shadow_buf_24, shadow_buf_32+8, WIN_SIZE_X, WIN_SIZE_Y);
90
		from24to32(shadow_buf_24, shadow_buf_32+8, WIN_SIZE_X, WIN_SIZE_Y);
100
		Text();
91
		Text();
101
		DrawBackground();
92
		DrawBackground();
102
		pause(5);
93
		pause(5);
103
	}
94
	}
104
}
95
}
105
 
96
 
106
void Exit()
97
void Exit()
107
{
98
{
108
	ExitProcess();
99
	ExitProcess();
109
}
100
}
110
 
101
 
111
 
102
 
112
void main()
103
void main()
113
{	
104
{	
114
	if (!param)	strcpy(#param, DEFAULT_TEXT);
105
	if (!param)	strcpy(#param, DEFAULT_TEXT);
115
	if (strlen(#param)*6>WIN_SIZE_X)
106
	if (strlen(#param)*6>WIN_SIZE_X)
116
	{
107
	{
117
		WIN_SIZE_X=strlen(#param)*6+PADDING;
108
		WIN_SIZE_X=strlen(#param)*6+PADDING;
118
		delay = strlen(#param)*10;
109
		delay = strlen(#param)*10;
119
	}
110
	}
120
 
111
 
121
	SCREEN_SIZE_X=GetScreenWidth()+1;	
112
	SCREEN_SIZE_X=GetScreenWidth()+1;	
122
	WIN_X = SCREEN_SIZE_X-WIN_SIZE_X-1;
113
	WIN_X = SCREEN_SIZE_X-WIN_SIZE_X-1;
123
	WIN_Y = GetClientTop();
114
	WIN_Y = GetClientTop();
124
	TEXT_X = -6*strlen(#param)+WIN_SIZE_X/2+1;
115
	TEXT_X = -6*strlen(#param)+WIN_SIZE_X/2+1;
125
	TEXT_Y = WIN_SIZE_Y/2-4;
116
	TEXT_Y = WIN_SIZE_Y/2-4;
126
	
117
	
127
	//emulate multithread :)
118
	//emulate multithread :)
128
	while (GetPixelColor(SCREEN_SIZE_X-1, SCREEN_SIZE_X, WIN_Y)==0x333333) WIN_Y+=WIN_SIZE_Y+17;
119
	while (GetPixelColor(SCREEN_SIZE_X-1, SCREEN_SIZE_X, WIN_Y)==0x333333) WIN_Y+=WIN_SIZE_Y+17;
129
 
120
 
130
	mem_Init();
121
	mem_Init();
131
	shadow_buf_24 = malloc(WIN_SIZE_X*WIN_SIZE_Y*3);
122
	shadow_buf_24 = malloc(WIN_SIZE_X*WIN_SIZE_Y*3);
132
	shadow_buf_32 = malloc(WIN_SIZE_X*WIN_SIZE_Y*4+8);
123
	shadow_buf_32 = malloc(WIN_SIZE_X*WIN_SIZE_Y*4+8);
133
	lighter_pixel1 = malloc(3);
124
	lighter_pixel1 = malloc(3);
134
	lighter_pixel2 = malloc(3);
125
	lighter_pixel2 = malloc(3);
135
	CopyScreen(shadow_buf_24, WIN_X, WIN_Y, WIN_SIZE_X, WIN_SIZE_Y);
126
	CopyScreen(shadow_buf_24, WIN_X, WIN_Y, WIN_SIZE_X, WIN_SIZE_Y);
136
	CopyScreen(lighter_pixel1, WIN_X, WIN_Y, 1, 1);
127
	CopyScreen(lighter_pixel1, WIN_X, WIN_Y, 1, 1);
137
	CopyScreen(lighter_pixel2, WIN_X, WIN_Y+WIN_SIZE_Y, 1, 1);
128
	CopyScreen(lighter_pixel2, WIN_X, WIN_Y+WIN_SIZE_Y, 1, 1);
138
	ESDWORD[shadow_buf_32] = WIN_SIZE_X;
129
	ESDWORD[shadow_buf_32] = WIN_SIZE_X;
139
	ESDWORD[shadow_buf_32+4] = WIN_SIZE_Y;
130
	ESDWORD[shadow_buf_32+4] = WIN_SIZE_Y;
140
 
131
 
141
	loop()
132
	loop()
142
	{
133
	{
143
		WaitEventTimeout(delay);
134
		WaitEventTimeout(delay);
144
		switch(EAX & 0xFF)
135
		switch(EAX & 0xFF)
145
		{
136
		{
146
		case evButton:
137
		case evButton:
147
			Exit();
138
			Exit();
148
			break;
139
			break;
149
         
140
         
150
		case evReDraw:
141
		case evReDraw:
151
			DefineAndDrawWindow(WIN_X+1,WIN_Y,WIN_SIZE_X, WIN_SIZE_Y-1, 0x01, 0, 0, 0x01fffFFF);
142
			DefineAndDrawWindow(WIN_X+1,WIN_Y,WIN_SIZE_X, WIN_SIZE_Y-1, 0x01, 0, 0, 0x01fffFFF);
152
			DrawBar(WIN_SIZE_X,0, 1, WIN_SIZE_Y, 0x333333);
143
			DrawBar(WIN_SIZE_X,0, 1, WIN_SIZE_Y, 0x333333);
153
			DefineButton(0,0, WIN_SIZE_X, WIN_SIZE_Y, 1+BT_HIDE+BT_NOFRAME, 0);
144
			DefineButton(0,0, WIN_SIZE_X, WIN_SIZE_Y, 1+BT_HIDE+BT_NOFRAME, 0);
154
			GetBackground();
145
			GetBackground();
155
			break;
146
			break;
156
 
147
 
157
		default:
148
		default:
158
			Exit();
149
			Exit();
159
      }
150
      }
160
   }
151
   }
161
}
152
}
162
 
153
 
163
 
154
 
164
stop:
155
stop: