Subversion Repositories Kolibri OS

Rev

Rev 3363 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
3067 leency 1
//notify 0.5
2
 
3286 leency 3
#define MEMSIZE 0x3E80
3067 leency 4
#include "..\lib\kolibri.h"
5
#include "..\lib\strings.h"
3363 leency 6
#include "..\lib\mem.h"
7
#include "..\lib\figures.h"
3067 leency 8
 
9
int SCREEN_SIZE_X,
10
    SCREEN_SIZE_Y;
11
 
12
int WIN_Y=0,
13
    WIN_SIZE_X=300,
14
    WIN_SIZE_Y=28;
15
 
16
 
17
void main()
18
{
19
	int TEXT_X=4,
20
	    TEXT_Y=12;
3363 leency 21
	dword shadow_buf, lighter_pixel1, lighter_pixel2;
3067 leency 22
 
3363 leency 23
	mem_Init();
3067 leency 24
	if (!param)
25
	{
26
		if (GetSystemLanguage()==4)
3107 leency 27
			strcpy(#param, "ќв  Їа®Ја ¬¬  Ї®Є §лў Ґв 㢥¤®¬«Ґ­Ёп.");
3067 leency 28
		else
29
			strcpy(#param, "This program shows notices. Open it with params.");
30
	}
31
 
32
	SCREEN_SIZE_X=GetScreenWidth()+1;
33
	if (strlen(#param)*6>WIN_SIZE_X) WIN_SIZE_X=strlen(#param)*6+8;
34
 
35
	TEXT_X=-6*strlen(#param)+WIN_SIZE_X/2;
36
	TEXT_Y=WIN_SIZE_Y/2-3;
37
 
38
	//изяяящный костыль, реализующий многопоточность :)
3363 leency 39
	while (GetPixelColor(SCREEN_SIZE_X-1, SCREEN_SIZE_X, WIN_Y)==0x333333) WIN_Y+=WIN_SIZE_Y+17;
3067 leency 40
 
3369 leency 41
	#if !defined(AUTOBUILD)
42
	{
43
		shadow_buf = malloc(WIN_SIZE_X*WIN_SIZE_Y*3);
44
		lighter_pixel1 = malloc(3);
45
		lighter_pixel2 = malloc(3);
46
		CopyScreen(shadow_buf, SCREEN_SIZE_X-WIN_SIZE_X-1, WIN_Y, WIN_SIZE_X, WIN_SIZE_Y);
47
		CopyScreen(lighter_pixel1, SCREEN_SIZE_X-WIN_SIZE_X-1, WIN_Y, 1, 1);
48
		CopyScreen(lighter_pixel2, SCREEN_SIZE_X-WIN_SIZE_X-1, WIN_Y+WIN_SIZE_Y, 1, 1);
49
		ShadowImage(shadow_buf, WIN_SIZE_X, WIN_SIZE_Y, 4);
50
		ShadowImage(lighter_pixel1, 1, 1, 1);
51
		ShadowImage(lighter_pixel2, 1, 1, 1);
52
	}
53
	#endif
3363 leency 54
 
3067 leency 55
	loop()
3369 leency 56
	{
3067 leency 57
		WaitEventTimeout(500);
58
		switch(EAX & 0xFF)
59
		{
60
		case evButton:
61
			if (GetButtonID()==1) ExitProcess();
62
			break;
63
 
64
		case evKey:
65
			break;
66
 
67
		case evReDraw:
3363 leency 68
			DefineAndDrawWindow(SCREEN_SIZE_X-WIN_SIZE_X,WIN_Y,WIN_SIZE_X, WIN_SIZE_Y-1, 0x01, 0, 0, 0x01fffFFF);
3067 leency 69
			DefineButton(0,0, WIN_SIZE_X, WIN_SIZE_Y, 1+BT_HIDE+BT_NOFRAME, 0);
3363 leency 70
			//draw_grid();
71
			//PutShadow(0,0,WIN_SIZE_X,WIN_SIZE_Y, 0, 4);
3369 leency 72
			#ifdef AUTOBUILD
73
				{ draw_grid(); }
74
			#else
75
				{ _PutImage(0,0,WIN_SIZE_X,WIN_SIZE_Y,shadow_buf);	}
76
			#endif
3363 leency 77
			PutPixel(0,0,ESDWORD[lighter_pixel1]);
78
			PutPixel(0,WIN_SIZE_Y-1,ESDWORD[lighter_pixel2]);
79
			DrawBar(WIN_SIZE_X,0, 1, WIN_SIZE_Y, 0x333333);
3107 leency 80
			WriteText(TEXT_X-1,TEXT_Y, 0x80, 0,#param); //тень
81
			WriteText(TEXT_X+1,TEXT_Y, 0x80, 0,#param);
82
			WriteText(TEXT_X,TEXT_Y-1, 0x80, 0,#param);
83
			WriteText(TEXT_X,TEXT_Y+1, 0x80, 0,#param);
84
			WriteText(TEXT_X-1,TEXT_Y-1, 0x80, 0,#param);
85
			WriteText(TEXT_X+1,TEXT_Y+1, 0x80, 0,#param);
86
			WriteText(TEXT_X-1,TEXT_Y+1, 0x80, 0,#param);
87
			WriteText(TEXT_X+1,TEXT_Y-1, 0x80, 0,#param);
3067 leency 88
 
3107 leency 89
			WriteText(TEXT_X,TEXT_Y, 0x80, 0xFFFfff,#param);
3067 leency 90
			break;
91
		default:
92
			ExitProcess();
93
      }
94
   }
95
}
96
 
97
 
98
 
3369 leency 99
:void draw_grid()
3067 leency 100
{
101
	int x, y;
102
 
103
	for (y=0; y<=WIN_SIZE_Y; y++)
104
	{
105
		for (x=0; x<=WIN_SIZE_X; x++)
106
		{
107
			if (! y&1) && (! x&1) PutPixel(x, y, 0);
108
			if (  y&1) && (  x&1) PutPixel(x, y, 0);
109
		}
110
	}
111
}
112
 
113
 
114
stop: