Rev 5575 | Rev 5582 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 5575 | Rev 5576 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | //CODED by Veliant, Leency, Nable. GNU GPL licence. |
1 | //CODED by Veliant, Leency, Nable. GNU GPL licence. |
Line -... | Line 2... | ||
- | 2 | ||
- | 3 | #define LIB_KOLIBRI_H |
|
2 | 4 | ||
3 | #startaddress 0 |
5 | #startaddress 0 |
Line 4... | Line 6... | ||
4 | #code32 TRUE |
6 | #code32 TRUE |
5 | 7 | ||
Line 21... | Line 23... | ||
21 | 23 | ||
22 | //Events |
24 | //Events |
23 | #define evReDraw 1 |
25 | #define evReDraw 1 |
24 | #define evKey 2 |
26 | #define evKey 2 |
- | 27 | #define evButton 3 |
|
25 | #define evButton 3 |
28 | #define evDesktop 5 |
- | 29 | #define evMouse 6 |
|
26 | #define evMouse 6 |
30 | #define evIPC 7 |
27 | #define evNetwork 8 |
- | |
- | 31 | #define evNetwork 8 |
|
Line 28... | Line 32... | ||
28 | 32 | #define evDebug 9 |
|
29 | 33 | ||
30 | //Button options |
34 | //Button options |
31 | #define BT_DEL 0x80000000 |
35 | #define BT_DEL 0x80000000 |
Line 32... | Line 36... | ||
32 | #define BT_HIDE 0x40000000 |
36 | #define BT_HIDE 0x40000000 |
33 | #define BT_NOFRAME 0x20000000 |
37 | #define BT_NOFRAME 0x20000000 |
34 | 38 | ||
- | 39 | //Button mouse |
|
35 | //Button mouse |
40 | #define MOUSE_LEFT 001b |
Line 36... | Line 41... | ||
36 | #define MOUSE_LEFT 001b |
41 | #define MOUSE_RIGHT 010b |
37 | #define MOUSE_RIGHT 010b |
42 | #define MOUSE_LR 011b |
38 | #define MOUSE_CENTER 100b |
43 | #define MOUSE_CENTER 100b |
Line 53... | Line 58... | ||
53 | #define ASCII_KEY_HOME 180 |
58 | #define ASCII_KEY_HOME 180 |
54 | #define ASCII_KEY_END 181 |
59 | #define ASCII_KEY_END 181 |
55 | #define ASCII_KEY_PGDN 183 |
60 | #define ASCII_KEY_PGDN 183 |
56 | #define ASCII_KEY_PGUP 184 |
61 | #define ASCII_KEY_PGUP 184 |
Line -... | Line 62... | ||
- | 62 | ||
- | 63 | //allow event mask |
|
- | 64 | #define EVENT_MASK_REDRAW 000000001b |
|
- | 65 | #define EVENT_MASK_KEYBOARD 000000010b |
|
- | 66 | #define EVENT_MASK_BUTTONS 000000100b |
|
- | 67 | #define EVENT_MASK_DESKTOP 000010000b |
|
- | 68 | #define EVENT_MASK_MOUSE 000100000b |
|
- | 69 | #define EVENT_MASK_IPC 001000000b |
|
- | 70 | #define EVENT_MASK_NETWORK 010000000b |
|
Line -... | Line 71... | ||
- | 71 | #define EVENT_MASK_DEBUG 100000000b |
|
- | 72 | ||
57 | 73 | //ARGS FUNCTION |
|
Line 58... | Line 74... | ||
58 | 74 | #define END_ARGS 0xFF00FF |
|
59 | //------------------------------------------------------------------------- |
75 | //------------------------------------------------------------------------- |
60 | 76 | ||
Line 80... | Line 96... | ||
80 | */ |
96 | */ |
Line 81... | Line 97... | ||
81 | 97 | ||
82 | dword __TMP_TIME,MOUSE_TIME; |
98 | dword __TMP_TIME,MOUSE_TIME; |
83 | :struct mouse |
99 | :struct mouse |
84 | { |
100 | { |
- | 101 | signed x,y,xx,yy,lkm,mkm,pkm,key,tmp,tmp_time,hor,vert,down,up,move,click,dblclick,left,top; |
|
- | 102 | dword handle,_; |
|
- | 103 | byte cmd; |
|
85 | signed x,y,xx,yy,lkm,mkm,pkm,key,tmp,tmp_time,hor,vert,down,up,move,click,dblclick; |
104 | void clearTime(); |
- | 105 | void get(); |
|
- | 106 | void set(); |
|
- | 107 | void center(); |
|
- | 108 | dword hide(); |
|
- | 109 | void slider(); |
|
86 | void get(); |
110 | void show(); |
- | 111 | }; |
|
- | 112 | :void mouse::clearTime() |
|
- | 113 | { |
|
- | 114 | tmp_time = GetStartTime()+MOUSE_TIME; |
|
- | 115 | } |
|
- | 116 | :void mouse::show() |
|
- | 117 | { |
|
- | 118 | if(!handle)return; |
|
- | 119 | ECX = handle; |
|
- | 120 | EAX = 37; |
|
- | 121 | EBX = 5; |
|
- | 122 | $int 0x40; |
|
- | 123 | } |
|
- | 124 | :dword mouse::hide() |
|
- | 125 | { |
|
- | 126 | if(!_) |
|
- | 127 | { |
|
- | 128 | EAX = 68; |
|
- | 129 | EBX = 12; |
|
- | 130 | ECX = 32*32*4; |
|
- | 131 | $int 0x40 |
|
- | 132 | ECX = EAX; |
|
- | 133 | _ = EAX; |
|
- | 134 | } else ECX = _; |
|
- | 135 | EAX = 37; |
|
- | 136 | EBX = 4; |
|
- | 137 | DX = 2; |
|
- | 138 | $int 0x40; |
|
- | 139 | handle = EAX; |
|
- | 140 | ECX = EAX; |
|
- | 141 | EAX = 37; |
|
- | 142 | EBX = 5; |
|
- | 143 | $int 0x40; |
|
- | 144 | handle = EAX; |
|
- | 145 | } |
|
- | 146 | ||
- | 147 | //set new attributes mouse |
|
- | 148 | :void mouse::set() |
|
- | 149 | { |
|
- | 150 | if((xx!=x)||(yy!=y)) |
|
- | 151 | { |
|
- | 152 | EAX = 18; |
|
- | 153 | EBX = 19; |
|
- | 154 | ECX = 4; |
|
- | 155 | EDX = (x<<16)+y; |
|
- | 156 | $int 0x40 |
|
- | 157 | //move = true; |
|
- | 158 | } |
|
- | 159 | if((key)||(lkm|mkm|pkm))&&(down|up|click|dblclick|move) |
|
- | 160 | { |
|
- | 161 | if(lkm|mkm|pkm)key=(lkm)|(pkm<<1)|(2< |
|
- | 162 | EAX = 18; |
|
- | 163 | EBX = 19; |
|
- | 164 | ECX = key; |
|
- | 165 | EDX = (x<<16)+y; |
|
- | 166 | $int 0x40 |
|
- | 167 | } |
|
- | 168 | } |
|
- | 169 | ||
- | 170 | :void mouse::center() |
|
- | 171 | { |
|
- | 172 | EAX = 18; |
|
- | 173 | EBX = 15; |
|
- | 174 | $int 0x40 |
|
Line 87... | Line 175... | ||
87 | }; |
175 | } |
88 | 176 | ||
89 | //get new attributes mouse |
177 | //get new attributes mouse |
90 | :void mouse::get() |
178 | :void mouse::get() |
Line 113... | Line 201... | ||
113 | lkm = EAX; |
201 | lkm = EAX; |
114 | pkm = EBX; |
202 | pkm = EBX; |
115 | mkm = ECX; |
203 | mkm = ECX; |
Line 116... | Line 204... | ||
116 | 204 | ||
- | 205 | //when you release the mouse button |
|
117 | //when you release the mouse button |
206 | // Mouse Up Event |
118 | if((down)&&!(key)){ |
207 | if((cmd)&&!(key)){ |
119 | up = true; |
208 | up = true; |
120 | down = false; |
209 | down = false; |
- | 210 | if(!move) click = true; |
|
121 | if(!move) click = true; |
211 | move = false; |
122 | __TMP_TIME = GetStartTime(); |
212 | __TMP_TIME = GetStartTime(); |
123 | if(__TMP_TIME-tmp_time<=MOUSE_TIME) dblclick = true; |
213 | if(__TMP_TIME-tmp_time<=MOUSE_TIME){ dblclick = true;click = false; } |
124 | tmp_time = __TMP_TIME; |
214 | tmp_time = __TMP_TIME; |
125 | //returns the key code |
215 | //returns the key code |
126 | key = tmp; |
216 | key = tmp; |
127 | lkm = 1&tmp; |
217 | lkm = 1&tmp; |
128 | pkm = 2&tmp; |
218 | pkm = 2&tmp; |
129 | pkm >>= 1; |
219 | pkm >>= 1; |
130 | mkm = 4&tmp; |
220 | mkm = 4&tmp; |
- | 221 | mkm >>= 2; |
|
131 | mkm >>= 2; |
222 | cmd = false; |
Line 132... | Line 223... | ||
132 | } |
223 | } |
- | 224 | ||
133 | 225 | //when you press the mouse button |
|
134 | //when you press the mouse button |
226 | // Mouse Down Event/Move Event |
135 | else { |
227 | else { |
136 | up = false; |
228 | up = false; |
- | 229 | click = false; |
|
- | 230 | dblclick = false; |
|
137 | click = false; |
231 | down = false; |
138 | dblclick = false; |
232 | // Mouse Move Event |
139 | if(key) |
- | |
140 | { |
- | |
141 | down = true; |
- | |
142 | tmp = key; |
- | |
143 | } |
- | |
144 | else down = false; |
233 | if((xx!=x)||(yy!=y)) |
145 | if((xx!=x)||(yy!=y)){ |
234 | { |
146 | move = true; |
235 | move = true; |
147 | xx = x; |
236 | xx = x; |
148 | yy = y; |
237 | yy = y; |
- | 238 | } |
|
149 | } |
239 | else move = false; |
Line 150... | Line 240... | ||
150 | else move = false; |
240 | if(key)if(!cmd) {down = true;cmd = true;tmp=key;} |
151 | } |
241 | } |
152 | 242 | ||
Line 159... | Line 249... | ||
159 | $and ebx,0x0000FFFF |
249 | $and ebx,0x0000FFFF |
160 | //hor = EAX; |
250 | //hor = EAX; |
161 | vert = EBX; |
251 | vert = EBX; |
162 | } |
252 | } |
Line -... | Line 253... | ||
- | 253 | ||
- | 254 | :void mouse::slider() |
|
- | 255 | { |
|
- | 256 | signed _x,_y; |
|
- | 257 | if(!handle)hide(); |
|
- | 258 | get(); |
|
- | 259 | _x = x;_y = y; |
|
- | 260 | pause(5); |
|
- | 261 | get(); |
|
- | 262 | left = _x - x; |
|
- | 263 | top = _y - y; |
|
- | 264 | center(); |
|
- | 265 | get(); |
|
- | 266 | _x = x;_y = y; |
|
- | 267 | pause(5); |
|
- | 268 | } |
|
- | 269 | ||
- | 270 | :struct keyboard |
|
- | 271 | { |
|
- | 272 | signed key; |
|
- | 273 | byte down,up,press; |
|
- | 274 | void get(void); |
|
- | 275 | }; |
|
- | 276 | ||
- | 277 | :void keyboard::get(void) |
|
- | 278 | { |
|
- | 279 | ||
Line 163... | Line 280... | ||
163 | 280 | } |
|
164 | 281 | ||
165 | :struct system_colors |
282 | :struct system_colors |
166 | { |
283 | { |
Line 177... | Line 294... | ||
177 | EDX = 40; |
294 | EDX = 40; |
178 | $int 0x40 |
295 | $int 0x40 |
179 | } |
296 | } |
Line 180... | Line 297... | ||
180 | 297 | ||
181 | //------------------------------------------------------------------------------ |
- | |
- | 298 | //------------------------------------------------------------------------------ |
|
182 | 299 | dword wait_event_code; |
|
183 | inline fastcall dword WaitEvent() |
300 | inline fastcall dword WaitEvent() |
184 | { |
301 | { |
185 | $mov eax,10 |
302 | $mov eax,10 |
- | 303 | $int 0x40 |
|
186 | $int 0x40 |
304 | wait_event_code = EAX; |
Line 187... | Line 305... | ||
187 | } |
305 | } |
188 | 306 | ||
189 | inline fastcall dword CheckEvent() |
307 | inline fastcall dword CheckEvent() |
Line 520... | Line 638... | ||
520 | { |
638 | { |
521 | EAX = 12; // function 12:tell os about windowdraw |
639 | EAX = 12; // function 12:tell os about windowdraw |
522 | EBX = 1; |
640 | EBX = 1; |
523 | $int 0x40 |
641 | $int 0x40 |
Line 524... | Line 642... | ||
524 | 642 | ||
525 | EAX = 0; |
643 | $xor EAX,EAX |
526 | EBX = x << 16 + size_w; |
644 | EBX = x << 16 + size_w; |
- | 645 | ECX = y << 16 + size_h; |
|
527 | ECX = y << 16 + size_h; |
646 | |
528 | EDX = WindowType << 24 | WindowAreaColor; |
647 | EDX = WindowType << 24 | WindowAreaColor; |
Line 529... | Line 648... | ||
529 | $int 0x40 |
648 | $int 0x40 |
530 | 649 | ||
Line 662... | Line 781... | ||
662 | $mov eax,26 |
781 | $mov eax,26 |
663 | $mov ebx,9 |
782 | $mov ebx,9 |
664 | $int 0x40 |
783 | $int 0x40 |
665 | } |
784 | } |
Line -... | Line 785... | ||
- | 785 | ||
- | 786 | :dword ALERT_TEXT; |
|
- | 787 | :void dialog_alert() |
|
- | 788 | { |
|
- | 789 | byte id; |
|
- | 790 | loop()switch(WaitEvent()) |
|
- | 791 | { |
|
- | 792 | case evReDraw: |
|
- | 793 | DefineAndDrawWindow(215,100,250,200,0x34,0xFFFFFF,"Alert"); |
|
- | 794 | WriteTextB(5,5,0x90,0x0,ALERT_TEXT); |
|
- | 795 | break; |
|
- | 796 | case evButton: |
|
- | 797 | id=GetButtonID(); |
|
- | 798 | if (id==1) ExitProcess(); |
|
- | 799 | break; |
|
- | 800 | } |
|
- | 801 | } |
|
- | 802 | ||
- | 803 | :dword alert(dword text) |
|
- | 804 | { |
|
- | 805 | dword mem = malloc(4096); |
|
- | 806 | ALERT_TEXT = text; |
|
- | 807 | CreateThread(#dialog_alert,mem+4092); |
|
- | 808 | return mem; |
|
- | 809 | } |
|
666 | 810 | ||
Line -... | Line 811... | ||
- | 811 | dword __generator; // random number generator - äëÿ ãåíåðàöèè ñëó÷àéíûõ ÷èñåë |
|
- | 812 | ||
667 | dword __generator; // random number generator - äëÿ ãåíåðàöèè ñëó÷àéíûõ ÷èñåë |
813 | dword program_path_length; |
668 | 814 | ||
669 | //The initialization of the initial data before running |
815 | //The initialization of the initial data before running |
- | 816 | void load_init_main() |
|
670 | void load_init_main() |
817 | { |
671 | { |
818 | //program_path_length = strlen(program_path); |
672 | MOUSE_TIME = 50; //Default 50 ms. |
819 | MOUSE_TIME = 50; //Default 500 ms. |
673 | __generator = GetStartTime(); |
820 | __generator = GetStartTime(); |
674 | main(); |
821 | main(); |