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