Subversion Repositories Kolibri OS

Rev

Rev 6791 | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

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