Subversion Repositories Kolibri OS

Rev

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