Subversion Repositories Kolibri OS

Rev

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

Rev 3376 Rev 4004
Line 1... Line 1...
1
//notify 0.52
1
//notify 0.7
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 0x3E80
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
?define PADDING 12;
9
 
11
 
Line 10... Line 12...
10
int SCREEN_SIZE_X,
12
int SCREEN_SIZE_X,
-
 
13
    SCREEN_SIZE_Y;
11
    SCREEN_SIZE_Y;
14
 
12
 
15
int WIN_X,
Line 13... Line 16...
13
int WIN_Y=0,
16
	WIN_Y,
Line -... Line 17...
-
 
17
    WIN_SIZE_X=256,
-
 
18
    WIN_SIZE_Y=28;
-
 
19
 
-
 
20
int delay = 400;
-
 
21
 
14
    WIN_SIZE_X=300,
22
#include "lang.h--"
-
 
23
#ifdef LANG_RUS
-
 
24
	?define DEFAULT_TEXT "â  ¯à®£à ¬¬  ¯®ª §ë¢ ¥â 㢥¤®¬«¥­¨ï.";
-
 
25
#else
-
 
26
	?define DEFAULT_TEXT "This program shows notices. Open it with params.";
-
 
27
#endif
-
 
28
 
15
    WIN_SIZE_Y=28;
29
void PutText(dword x, y) {
-
 
30
	WriteText(x,y, 0x80, 0, #param);
-
 
31
}
16
 
32
 
17
int delay = 500;
33
inline fastcall int GetClientTop()
18
	
34
{
-
 
35
	$mov eax, 48
Line -... Line 36...
-
 
36
	$mov ebx, 5
19
void main()
37
	$int 0x40
20
{   
38
    $mov eax, ebx
-
 
39
    $shr eax, 16
21
	int TEXT_X=4,
40
}
22
	    TEXT_Y=12;
41
 
-
 
42
dword shadow_buf, lighter_pixel1, lighter_pixel2;
23
	dword shadow_buf, lighter_pixel1, lighter_pixel2;
43
void GetBackground()
24
	
44
{
25
	if (!param)
45
	CopyScreen(shadow_buf, WIN_X, WIN_Y, WIN_SIZE_X, WIN_SIZE_Y);
Line -... Line 46...
-
 
46
	CopyScreen(lighter_pixel1, WIN_X, WIN_Y, 1, 1);
-
 
47
	CopyScreen(lighter_pixel2, WIN_X, WIN_Y+WIN_SIZE_Y, 1, 1);
-
 
48
	ShadowImage(shadow_buf, WIN_SIZE_X, WIN_SIZE_Y, 6);
-
 
49
	ShadowImage(lighter_pixel1, 1, 1, 2);
-
 
50
	ShadowImage(lighter_pixel2, 1, 1, 2);
-
 
51
}
-
 
52
 
26
	{
53
 
27
		if (GetSystemLanguage()==4)
54
void main()
28
			strcpy(#param, "â  ¯à®£à ¬¬  ¯®ª §ë¢ ¥â 㢥¤®¬«¥­¨ï.");
55
{   
29
		else
56
	int TEXT_X=4,
30
			strcpy(#param, "This program shows notices. Open it with params.");
57
	    TEXT_Y=12;
31
	}
58
	char drawn;
Line -... Line 59...
-
 
59
	
-
 
60
	if (!param)	strcpy(#param, DEFAULT_TEXT);
-
 
61
	if (strlen(#param)*6>WIN_SIZE_X)
32
	
62
	{
33
	SCREEN_SIZE_X=GetScreenWidth()+1;
63
		WIN_SIZE_X=strlen(#param)*6+PADDING;
Line 34... Line 64...
34
	if (strlen(#param)*6>WIN_SIZE_X)
64
		delay = strlen(#param)*10;
35
	{
65
	}
Line 36... Line -...
36
		WIN_SIZE_X=strlen(#param)*6+8;
-
 
37
		delay = strlen(#param)*10;
-
 
38
	}
66
 
39
	
67
	SCREEN_SIZE_X=GetScreenWidth()+1;	
40
	TEXT_X=-6*strlen(#param)+WIN_SIZE_X/2;
68
	WIN_X = SCREEN_SIZE_X-WIN_SIZE_X-1;
41
	TEXT_Y=WIN_SIZE_Y/2-3;
69
	WIN_Y = GetClientTop();
42
	
-
 
43
	//èçÿÿÿùíûé êîñòûëü, ðåàëèçóþùèé ìíîãîïîòî÷íîñòü :)
-
 
44
	while (GetPixelColor(SCREEN_SIZE_X-1, SCREEN_SIZE_X, WIN_Y)==0x333333) WIN_Y+=WIN_SIZE_Y+17;
-
 
45
 
-
 
46
	#if !defined(AUTOBUILD)
-
 
47
	{
-
 
48
		mem_Init();
-
 
49
		shadow_buf = malloc(WIN_SIZE_X*WIN_SIZE_Y*3);
70
	TEXT_X = -6*strlen(#param)+WIN_SIZE_X/2;
Line 50... Line 71...
50
		lighter_pixel1 = malloc(3);
71
	TEXT_Y = WIN_SIZE_Y/2-3;
51
		lighter_pixel2 = malloc(3);
72
	
52
		CopyScreen(shadow_buf, SCREEN_SIZE_X-WIN_SIZE_X-1, WIN_Y, WIN_SIZE_X, WIN_SIZE_Y);
73
	//emulate multithread :)
53
		CopyScreen(lighter_pixel1, SCREEN_SIZE_X-WIN_SIZE_X-1, WIN_Y, 1, 1);
74
	while (GetPixelColor(SCREEN_SIZE_X-1, SCREEN_SIZE_X, WIN_Y)==0x333333) WIN_Y+=WIN_SIZE_Y+17;
54
		CopyScreen(lighter_pixel2, SCREEN_SIZE_X-WIN_SIZE_X-1, WIN_Y+WIN_SIZE_Y, 1, 1);
75
 
55
		ShadowImage(shadow_buf, WIN_SIZE_X, WIN_SIZE_Y, 4);
76
	mem_Init();
56
		ShadowImage(lighter_pixel1, 1, 1, 1);
-
 
57
		ShadowImage(lighter_pixel2, 1, 1, 1);
77
	shadow_buf = malloc(WIN_SIZE_X*WIN_SIZE_Y*3);
58
	}
-
 
59
	#endif
-
 
60
 
78
	lighter_pixel1 = malloc(3);
Line 61... Line 79...
61
	loop()
79
	lighter_pixel2 = malloc(3);
62
	{
80
	GetBackground();
63
		WaitEventTimeout(delay);
-
 
64
		switch(EAX & 0xFF)
81
 
65
		{
-
 
66
		case evButton:
-
 
67
			if (GetButtonID()==1) ExitProcess();
-
 
68
			break;
-
 
69
			
82
	loop()
-
 
83
	{
-
 
84
		WaitEventTimeout(delay);
-
 
85
		switch(EAX & 0xFF)
-
 
86
		{
-
 
87
		case evButton:
-
 
88
			ExitProcess();
-
 
89
			break;
-
 
90
         
-
 
91
		case evReDraw:
70
		case evKey:
92
			DefineAndDrawWindow(WIN_X+1,WIN_Y,WIN_SIZE_X, WIN_SIZE_Y-1, 0x01, 0, 0, 0x01fffFFF);
71
			break;
93
			if (drawn==1)
72
         
94
			{
73
		case evReDraw:
-
 
74
			DefineAndDrawWindow(SCREEN_SIZE_X-WIN_SIZE_X,WIN_Y,WIN_SIZE_X, WIN_SIZE_Y-1, 0x01, 0, 0, 0x01fffFFF);
-
 
75
			DefineButton(0,0, WIN_SIZE_X, WIN_SIZE_Y, 1+BT_HIDE+BT_NOFRAME, 0);
95
				drawn=2;
76
			//draw_grid();
-
 
77
			//PutShadow(0,0,WIN_SIZE_X,WIN_SIZE_Y, 0, 4);
-
 
78
			#ifdef AUTOBUILD
-
 
79
				{ draw_grid(); }
-
 
80
			#else
-
 
81
			{
-
 
82
				_PutImage(0,0,WIN_SIZE_X,WIN_SIZE_Y,shadow_buf);
-
 
83
				PutPixel(0,0,ESDWORD[lighter_pixel1]);
-
 
Line -... Line 96...
-
 
96
				MoveSize(0,0,-1,-1);
-
 
97
				pause(3);
-
 
98
				GetBackground();
-
 
99
				MoveSize(WIN_X,WIN_Y,-1,-1);
-
 
100
				drawn=1;
-
 
101
			} 
-
 
102
			DefineButton(0,0, WIN_SIZE_X, WIN_SIZE_Y, 1+BT_HIDE+BT_NOFRAME, 0);
-
 
103
 
84
				PutPixel(0,WIN_SIZE_Y-1,ESDWORD[lighter_pixel2]);
104
			_PutImage(0,0,WIN_SIZE_X,WIN_SIZE_Y,shadow_buf);
-
 
105
			PutPixel(0,0,ESDWORD[lighter_pixel1]);
85
			}
106
			PutPixel(0,WIN_SIZE_Y-1,ESDWORD[lighter_pixel2]);
86
			#endif
107
			DrawBar(WIN_SIZE_X,0, 1, WIN_SIZE_Y, 0x333333);
87
			DrawBar(WIN_SIZE_X,0, 1, WIN_SIZE_Y, 0x333333);
108
 
88
			WriteText(TEXT_X-1,TEXT_Y, 0x80, 0,#param); //òåíü
109
			PutText(TEXT_X-1,TEXT_Y+1);
89
			WriteText(TEXT_X+1,TEXT_Y, 0x80, 0,#param);
110
			PutText(TEXT_X-1,TEXT_Y-1);
90
			WriteText(TEXT_X,TEXT_Y-1, 0x80, 0,#param);
111
			PutText(TEXT_X-1,TEXT_Y  );
Line 91... Line -...
91
			WriteText(TEXT_X,TEXT_Y+1, 0x80, 0,#param);
-
 
92
			WriteText(TEXT_X-1,TEXT_Y-1, 0x80, 0,#param);
-
 
93
			WriteText(TEXT_X+1,TEXT_Y+1, 0x80, 0,#param);
-
 
94
			WriteText(TEXT_X-1,TEXT_Y+1, 0x80, 0,#param);
-
 
95
			WriteText(TEXT_X+1,TEXT_Y-1, 0x80, 0,#param);
-
 
96
			
-
 
97
			WriteText(TEXT_X,TEXT_Y, 0x80, 0xFFFfff,#param);
-
 
98
			break;
-
 
99
		default:
-
 
100
			ExitProcess();
-
 
101
      }
-
 
102
   }
-
 
103
}
-
 
104
 
-
 
105
 
-
 
106
 
-
 
107
:void draw_grid()
112
			PutText(TEXT_X+1,TEXT_Y-1);