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); |