Rev 3376 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
4004 | leency | 1 | //notify 0.7 |
3370 | leency | 2 | //SoUrcerer 2010, Leency 2012-2013, GNU GPLv2 |
3067 | leency | 3 | |
4004 | leency | 4 | #define MEMSIZE 0x2F00 |
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 | |
4004 | leency | 10 | ?define PADDING 12; |
11 | |||
3067 | leency | 12 | int SCREEN_SIZE_X, |
13 | SCREEN_SIZE_Y; |
||
14 | |||
4004 | leency | 15 | int WIN_X, |
16 | WIN_Y, |
||
17 | WIN_SIZE_X=256, |
||
3067 | leency | 18 | WIN_SIZE_Y=28; |
19 | |||
4004 | leency | 20 | int delay = 400; |
21 | |||
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 | |||
29 | void PutText(dword x, y) { |
||
30 | WriteText(x,y, 0x80, 0, #param); |
||
31 | } |
||
32 | |||
33 | inline fastcall int GetClientTop() |
||
34 | { |
||
35 | $mov eax, 48 |
||
36 | $mov ebx, 5 |
||
37 | $int 0x40 |
||
38 | $mov eax, ebx |
||
39 | $shr eax, 16 |
||
40 | } |
||
41 | |||
42 | dword shadow_buf, lighter_pixel1, lighter_pixel2; |
||
43 | void GetBackground() |
||
44 | { |
||
45 | CopyScreen(shadow_buf, WIN_X, WIN_Y, WIN_SIZE_X, WIN_SIZE_Y); |
||
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 | |||
53 | |||
3067 | leency | 54 | void main() |
55 | { |
||
56 | int TEXT_X=4, |
||
57 | TEXT_Y=12; |
||
4004 | leency | 58 | char drawn; |
3067 | leency | 59 | |
4004 | leency | 60 | if (!param) strcpy(#param, DEFAULT_TEXT); |
3376 | leency | 61 | if (strlen(#param)*6>WIN_SIZE_X) |
62 | { |
||
4004 | leency | 63 | WIN_SIZE_X=strlen(#param)*6+PADDING; |
3376 | leency | 64 | delay = strlen(#param)*10; |
65 | } |
||
4004 | leency | 66 | |
67 | SCREEN_SIZE_X=GetScreenWidth()+1; |
||
68 | WIN_X = SCREEN_SIZE_X-WIN_SIZE_X-1; |
||
69 | WIN_Y = GetClientTop(); |
||
70 | TEXT_X = -6*strlen(#param)+WIN_SIZE_X/2; |
||
71 | TEXT_Y = WIN_SIZE_Y/2-3; |
||
3067 | leency | 72 | |
4004 | leency | 73 | //emulate multithread :) |
3363 | leency | 74 | while (GetPixelColor(SCREEN_SIZE_X-1, SCREEN_SIZE_X, WIN_Y)==0x333333) WIN_Y+=WIN_SIZE_Y+17; |
3067 | leency | 75 | |
4004 | leency | 76 | mem_Init(); |
77 | shadow_buf = malloc(WIN_SIZE_X*WIN_SIZE_Y*3); |
||
78 | lighter_pixel1 = malloc(3); |
||
79 | lighter_pixel2 = malloc(3); |
||
80 | GetBackground(); |
||
3363 | leency | 81 | |
3067 | leency | 82 | loop() |
3369 | leency | 83 | { |
3376 | leency | 84 | WaitEventTimeout(delay); |
3067 | leency | 85 | switch(EAX & 0xFF) |
86 | { |
||
87 | case evButton: |
||
4004 | leency | 88 | ExitProcess(); |
3067 | leency | 89 | break; |
90 | |||
91 | case evReDraw: |
||
4004 | leency | 92 | DefineAndDrawWindow(WIN_X+1,WIN_Y,WIN_SIZE_X, WIN_SIZE_Y-1, 0x01, 0, 0, 0x01fffFFF); |
93 | if (drawn==1) |
||
94 | { |
||
95 | drawn=2; |
||
96 | MoveSize(0,0,-1,-1); |
||
97 | pause(3); |
||
98 | GetBackground(); |
||
99 | MoveSize(WIN_X,WIN_Y,-1,-1); |
||
100 | drawn=1; |
||
101 | } |
||
3067 | leency | 102 | DefineButton(0,0, WIN_SIZE_X, WIN_SIZE_Y, 1+BT_HIDE+BT_NOFRAME, 0); |
4004 | leency | 103 | |
104 | _PutImage(0,0,WIN_SIZE_X,WIN_SIZE_Y,shadow_buf); |
||
105 | PutPixel(0,0,ESDWORD[lighter_pixel1]); |
||
106 | PutPixel(0,WIN_SIZE_Y-1,ESDWORD[lighter_pixel2]); |
||
3363 | leency | 107 | DrawBar(WIN_SIZE_X,0, 1, WIN_SIZE_Y, 0x333333); |
4004 | leency | 108 | |
109 | PutText(TEXT_X-1,TEXT_Y+1); |
||
110 | PutText(TEXT_X-1,TEXT_Y-1); |
||
111 | PutText(TEXT_X-1,TEXT_Y ); |
||
112 | PutText(TEXT_X+1,TEXT_Y-1); |
||
113 | PutText(TEXT_X+1,TEXT_Y ); |
||
114 | PutText(TEXT_X+1,TEXT_Y+1); |
||
115 | PutText(TEXT_X, TEXT_Y+1); |
||
116 | PutText(TEXT_X, TEXT_Y-1); |
||
117 | WriteText(TEXT_X, TEXT_Y, 0x80, 0xFFFfff, #param); |
||
118 | if (drawn==0) drawn=1; |
||
3067 | leency | 119 | break; |
120 | default: |
||
121 | ExitProcess(); |
||
122 | } |
||
123 | } |
||
124 | } |
||
125 | |||
126 | |||
127 | stop: |