Subversion Repositories Kolibri OS

Rev

Rev 4005 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 4005 Rev 4008
Line 1... Line 1...
1
//notify 0.7
1
//notify 0.8
2
//SoUrcerer 2010, Leency 2012-2013, GNU GPLv2
2
//SoUrcerer 2010, Leency 2012-2013, GNU GPLv2
Line 3... Line 3...
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" 
Line -... Line 8...
-
 
8
#include "..\lib\figures.h" 
-
 
9
 
8
#include "..\lib\figures.h" 
10
dword shadow_buf_24, shadow_buf_32, lighter_pixel1, lighter_pixel2;
Line 9... Line 11...
9
 
11
 
10
?define PADDING 12;
12
?define PADDING 15;
Line 11... Line 13...
11
 
13
 
12
int SCREEN_SIZE_X,
14
int SCREEN_SIZE_X,
13
    SCREEN_SIZE_Y;
15
    SCREEN_SIZE_Y;
14
 
16
 
Line -... Line 17...
-
 
17
int WIN_X,
-
 
18
	WIN_Y,
-
 
19
    WIN_SIZE_X=256,
15
int WIN_X,
20
    WIN_SIZE_Y=28;
Line 16... Line 21...
16
	WIN_Y,
21
 
17
    WIN_SIZE_X=256,
22
int TEXT_X=PADDING,
18
    WIN_SIZE_Y=28;
23
	TEXT_Y;
Line 28... Line 33...
28
#else
33
#else
29
	?define DEFAULT_TEXT "This program shows notices. Open it with params.";
34
	?define DEFAULT_TEXT "This program shows notices. Open it with params.";
30
#endif
35
#endif
Line 31... Line 36...
31
 
36
 
32
void PutText(dword x, y) {
37
void PutText(dword x, y) {
-
 
38
	WriteBufText(x,y, 0x88, 0, #param, shadow_buf_32);
-
 
39
}
-
 
40
 
-
 
41
void Text()
-
 
42
{
-
 
43
	PutText(TEXT_X-1,TEXT_Y+1);
-
 
44
	PutText(TEXT_X-1,TEXT_Y-1);
-
 
45
	PutText(TEXT_X-1,TEXT_Y  );
-
 
46
	PutText(TEXT_X+1,TEXT_Y-1);
-
 
47
	PutText(TEXT_X+1,TEXT_Y  );
-
 
48
	PutText(TEXT_X+1,TEXT_Y+1);
-
 
49
	PutText(TEXT_X,  TEXT_Y+1);
-
 
50
	PutText(TEXT_X,  TEXT_Y-1);
33
	WriteText(x,y, 0x80, 0, #param);
51
	WriteBufText(TEXT_X, TEXT_Y, 0x88, 0xFFFfff, #param, shadow_buf_32);
Line 34... Line 52...
34
}
52
}
35
 
53
 
36
inline fastcall int GetClientTop()
54
inline fastcall int GetClientTop()
Line 40... Line 58...
40
	$int 0x40
58
	$int 0x40
41
    $mov eax, ebx
59
    $mov eax, ebx
42
    $shr eax, 16
60
    $shr eax, 16
43
}
61
}
Line 44... Line 62...
44
 
62
 
-
 
63
void from24to32(dword src, dst, Width, Height)
-
 
64
{
-
 
65
conv24to32:
-
 
66
	$mov esi, src
-
 
67
	$mov edi, dst
-
 
68
		
-
 
69
	$mov eax, Width
-
 
70
	//$mul ESDWORD[Height]
-
 
71
	$mul Height
-
 
72
	$mov ecx, eax
-
 
73
	$xor al, al 
-
 
74
_next:	
-
 
75
	$movsw
-
 
76
	$movsb
-
 
77
	$stosb 	
-
 
78
	$loop _next
-
 
79
}
-
 
80
 
45
dword shadow_buf, lighter_pixel1, lighter_pixel2;
81
 
46
void GetBackground()
82
void GetBackground()
-
 
83
{
-
 
84
	int i;
-
 
85
 
-
 
86
	for (i=1; i<=6; i++)
47
{
87
	{
48
	CopyScreen(shadow_buf, WIN_X, WIN_Y, WIN_SIZE_X, WIN_SIZE_Y);
88
		ShadowImage(shadow_buf_24, WIN_SIZE_X, WIN_SIZE_Y, 1);
-
 
89
		if (i%2 == 0) ShadowImage(lighter_pixel1, 1, 1, 1);
49
	CopyScreen(lighter_pixel1, WIN_X, WIN_Y, 1, 1);
90
		if (i%2 == 0) ShadowImage(lighter_pixel2, 1, 1, 1);
-
 
91
		from24to32(shadow_buf_24, shadow_buf_32+8, WIN_SIZE_X, WIN_SIZE_Y);
50
	CopyScreen(lighter_pixel2, WIN_X, WIN_Y+WIN_SIZE_Y, 1, 1);
92
		Text();
51
	ShadowImage(shadow_buf, WIN_SIZE_X, WIN_SIZE_Y, 6);
93
		PutPaletteImage(shadow_buf_32+8,WIN_SIZE_X,WIN_SIZE_Y,0,0,32,0);
52
	ShadowImage(lighter_pixel1, 1, 1, 2);
94
		PutPixel(0,0,ESDWORD[lighter_pixel1]);
-
 
95
		PutPixel(0,WIN_SIZE_Y-1,ESDWORD[lighter_pixel2]);
-
 
96
		pause(5);
-
 
97
	}
-
 
98
}
-
 
99
 
-
 
100
void Exit()
-
 
101
{
53
	ShadowImage(lighter_pixel2, 1, 1, 2);
102
	ExitProcess();
Line 54... Line 103...
54
}
103
}
55
 
104
 
56
 
-
 
57
void main()
-
 
58
{   
-
 
59
	int TEXT_X=4,
-
 
60
	    TEXT_Y=12;
105
 
61
	char drawn;
106
void main()
62
	
107
{	
63
	if (!param)	strcpy(#param, DEFAULT_TEXT);
108
	if (!param)	strcpy(#param, DEFAULT_TEXT);
64
	if (strlen(#param)*6>WIN_SIZE_X)
109
	if (strlen(#param)*6>WIN_SIZE_X)
65
	{
110
	{
Line 66... Line 111...
66
		WIN_SIZE_X=strlen(#param)*6+PADDING;
111
		WIN_SIZE_X=strlen(#param)*6+PADDING;
67
		delay = strlen(#param)*10;
112
		delay = strlen(#param)*10;
68
	}
113
	}
69
 
114
 
70
	SCREEN_SIZE_X=GetScreenWidth()+1;	
115
	SCREEN_SIZE_X=GetScreenWidth()+1;	
Line 71... Line 116...
71
	WIN_X = SCREEN_SIZE_X-WIN_SIZE_X-1;
116
	WIN_X = SCREEN_SIZE_X-WIN_SIZE_X-1;
72
	WIN_Y = GetClientTop();
117
	WIN_Y = GetClientTop();
Line 73... Line 118...
73
	TEXT_X = -6*strlen(#param)+WIN_SIZE_X/2;
118
	TEXT_X = -6*strlen(#param)+WIN_SIZE_X/2+1;
74
	TEXT_Y = WIN_SIZE_Y/2-3;
119
	TEXT_Y = WIN_SIZE_Y/2-4;
-
 
120
	
75
	
121
	//emulate multithread :)
76
	//emulate multithread :)
122
	while (GetPixelColor(SCREEN_SIZE_X-1, SCREEN_SIZE_X, WIN_Y)==0x333333) WIN_Y+=WIN_SIZE_Y+17;
-
 
123
 
-
 
124
	mem_Init();
-
 
125
	shadow_buf_24 = malloc(WIN_SIZE_X*WIN_SIZE_Y*3);
77
	while (GetPixelColor(SCREEN_SIZE_X-1, SCREEN_SIZE_X, WIN_Y)==0x333333) WIN_Y+=WIN_SIZE_Y+17;
126
	shadow_buf_32 = malloc(WIN_SIZE_X*WIN_SIZE_Y*4+8);
-
 
127
	lighter_pixel1 = malloc(3);
Line 78... Line 128...
78
 
128
	lighter_pixel2 = malloc(3);
79
	mem_Init();
129
	CopyScreen(shadow_buf_24, WIN_X, WIN_Y, WIN_SIZE_X, WIN_SIZE_Y);
80
	shadow_buf = malloc(WIN_SIZE_X*WIN_SIZE_Y*3);
130
	CopyScreen(lighter_pixel1, WIN_X, WIN_Y, 1, 1);
81
	lighter_pixel1 = malloc(3);
131
	CopyScreen(lighter_pixel2, WIN_X, WIN_Y+WIN_SIZE_Y, 1, 1);
82
	lighter_pixel2 = malloc(3);
132
	ESDWORD[shadow_buf_32] = WIN_SIZE_X;
83
	GetBackground();
133
	ESDWORD[shadow_buf_32+4] = WIN_SIZE_Y;
84
 
134
 
85
	loop()
135
	loop()
Line 86... Line 136...
86
	{
136
	{
87
		WaitEventTimeout(delay);
137
		WaitEventTimeout(delay);
88
		switch(EAX & 0xFF)
-
 
89
		{
-
 
90
		case evButton:
-
 
91
			ExitProcess();
-
 
92
			break;
-
 
93
         
-
 
94
		case evReDraw:
-
 
95
			DefineAndDrawWindow(WIN_X+1,WIN_Y,WIN_SIZE_X, WIN_SIZE_Y-1, 0x01, 0, 0, 0x01fffFFF);
-
 
96
			if (drawn==1)
-
 
97
			{
-
 
98
				drawn=2;
-
 
99
				MoveSize(0,0,-1,-1);
-
 
100
				pause(3);
-
 
101
				GetBackground();
-
 
102
				MoveSize(WIN_X,WIN_Y,-1,-1);
138
		switch(EAX & 0xFF)
103
				drawn=1;
-
 
104
			} 
-
 
105
			DefineButton(0,0, WIN_SIZE_X, WIN_SIZE_Y, 1+BT_HIDE+BT_NOFRAME, 0);
-
 
106
 
-
 
107
			_PutImage(0,0,WIN_SIZE_X,WIN_SIZE_Y,shadow_buf);
-
 
108
			PutPixel(0,0,ESDWORD[lighter_pixel1]);
-
 
109
			PutPixel(0,WIN_SIZE_Y-1,ESDWORD[lighter_pixel2]);
-
 
110
			DrawBar(WIN_SIZE_X,0, 1, WIN_SIZE_Y, 0x333333);
-
 
111
 
-
 
112
			PutText(TEXT_X-1,TEXT_Y+1);
139
		{
113
			PutText(TEXT_X-1,TEXT_Y-1);
140
		case evButton:
114
			PutText(TEXT_X-1,TEXT_Y  );
141
			Exit();
-
 
142
			break;
115
			PutText(TEXT_X+1,TEXT_Y-1);
143
         
116
			PutText(TEXT_X+1,TEXT_Y  );
144
		case evReDraw:
117
			PutText(TEXT_X+1,TEXT_Y+1);
145
			DefineAndDrawWindow(WIN_X+1,WIN_Y,WIN_SIZE_X, WIN_SIZE_Y-1, 0x01, 0, 0, 0x01fffFFF);
118
			PutText(TEXT_X,  TEXT_Y+1);
146
			DrawBar(WIN_SIZE_X,0, 1, WIN_SIZE_Y, 0x333333);
119
			PutText(TEXT_X,  TEXT_Y-1);
147
			DefineButton(0,0, WIN_SIZE_X, WIN_SIZE_Y, 1+BT_HIDE+BT_NOFRAME, 0);