Subversion Repositories Kolibri OS

Rev

Rev 2818 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2818 Rev 2825
Line 139... Line 139...
139
{
139
{
140
	$mov eax, 5
140
	$mov eax, 5
141
	$int 0x40
141
	$int 0x40
142
}
142
}
Line 143... Line -...
143
 
-
 
144
//------------------------------------------------------------------------------
-
 
145
 
143
 
146
inline fastcall word GetButtonID()
144
inline fastcall word GetButtonID()
147
{
145
{
148
	$mov eax,17
146
	$mov eax,17
149
	$int  0x40
147
	$int  0x40
Line 169... Line 167...
169
{
167
{
170
	$mov eax,9;
168
	$mov eax,9;
171
	$int  0x40
169
	$int  0x40
172
}
170
}
Line 173... Line 171...
173
 
171
 
174
int GetProcessSlot( ECX) //ECX = process ID
172
inline fastcall int GetProcessSlot( ECX)
175
{
173
{
176
	EAX = 18;
174
	EAX = 18;
177
	EBX = 21;
175
	EBX = 21;
178
	$int 0x40;	
176
	$int 0x40
Line 179... Line 177...
179
}
177
}
180
 
178
 
181
inline fastcall int ActiveProcess()
179
inline fastcall int GetActiveProcess()
182
{
180
{
183
	EAX = 18;
181
	EAX = 18;
184
	EBX = 7;
182
	EBX = 7;
Line 207... Line 205...
207
	EAX = 26;
205
	EAX = 26;
208
	EBX = 5;
206
	EBX = 5;
209
	$int 0x40
207
	$int 0x40
210
}
208
}
Line 211... Line -...
211
 
-
 
212
inline fastcall void DrawTitle( ECX)
-
 
213
{
-
 
214
	EAX = 71;
-
 
215
	EBX = 1;
-
 
216
	$int 0x40;
-
 
217
}
-
 
218
 
209
 
219
inline fastcall dword GetSkinWidth()
210
inline fastcall dword GetSkinWidth()
220
{
211
{
221
	$push ebx
212
	$push ebx
222
	$mov  eax,48
213
	$mov  eax,48
223
	$mov  ebx,4
214
	$mov  ebx,4
224
	$int 0x40
215
	$int 0x40
225
	$pop  ebx
216
	$pop  ebx
Line 226... Line 217...
226
}
217
}
-
 
218
 
227
 
219
inline fastcall void SetSystemSkin( ECX)
228
inline fastcall void SetSystemSkin(ECX){
220
{
229
	EAX = 48;
221
	EAX = 48;
230
	EBX = 8;
222
	EBX = 8;
Line 238... Line 230...
238
	$int 0x40
230
	$int 0x40
239
	$shr eax, 16
231
	$shr eax, 16
240
	$and eax,0x0000FFFF
232
	$and eax,0x0000FFFF
241
}
233
}
Line 242... Line -...
242
 
-
 
243
inline fastcall MoveSize( EBX,ECX,EDX,ESI)
-
 
244
{
-
 
245
	EAX = 67;
-
 
246
	$int 0x40
-
 
247
}
-
 
248
 
234
 
249
inline fastcall dword LoadLibrary( ECX)
235
inline fastcall dword LoadLibrary( ECX)
250
{
236
{
251
	$mov eax, 68 
237
	$mov eax, 68 
252
	$mov ebx, 19
238
	$mov ebx, 19
253
	$int  0x40
239
	$int  0x40
Line 254... Line -...
254
}
-
 
255
 
-
 
256
//------------------------------------------------------------------------------
-
 
257
inline fastcall dword strlen( EDI)
-
 
258
{
-
 
259
	EAX=0;
-
 
260
	ECX=-1;
-
 
261
	$REPNE $SCASB
-
 
262
	EAX-=2+ECX;
-
 
263
}
-
 
264
 
-
 
265
 
-
 
266
inline fastcall strcpy( EDI, ESI)
-
 
267
{
-
 
268
	$cld
-
 
269
l2:
-
 
270
	$lodsb
-
 
271
	$stosb
-
 
272
	$test al,al
-
 
273
	$jnz l2
-
 
274
}
-
 
275
 
-
 
276
inline fastcall strcat( EDI, ESI)
-
 
277
{
-
 
278
  asm {
-
 
279
    MOV EBX, EDI
-
 
280
    XOR ECX, ECX
-
 
281
    XOR EAX, EAX
-
 
282
    DEC ECX
-
 
283
    REPNE SCASB
-
 
284
    DEC EDI
-
 
285
    MOV EDX, EDI
-
 
286
    MOV EDI, ESI
-
 
287
    XOR ECX, ECX
-
 
288
    XOR EAX, EAX
-
 
289
    DEC ECX
-
 
290
    REPNE SCASB
-
 
291
    XOR ECX, 0FFFFFFFFH
-
 
292
    MOV EDI, EDX
-
 
293
    MOV EDX, ECX
-
 
294
    MOV EAX, EDI
-
 
295
    SHR ECX, 2
-
 
296
    REP MOVSD
-
 
297
    MOV ECX, EDX
-
 
298
    AND ECX, 3
-
 
299
    REP MOVSB
-
 
300
    MOV EAX, EBX
-
 
301
	}
-
 
302
}
-
 
303
 
-
 
304
char buffer[11]="";
-
 
305
inline fastcall dword IntToStr( ESI)
-
 
306
{
-
 
307
     $mov     edi, #buffer
-
 
308
     $mov     ecx, 10
-
 
309
     $test     esi, esi
-
 
310
     $jns     f1
-
 
311
     $mov     al, '-'
-
 
312
     $stosb
-
 
313
     $neg     esi
-
 
314
f1:
-
 
315
     $mov     eax, esi
-
 
316
     $push     -'0'
-
 
317
f2:
-
 
318
     $xor     edx, edx
-
 
319
     $div     ecx
-
 
320
     $push     edx
-
 
321
     $test     eax, eax
-
 
322
     $jnz     f2
-
 
323
f3:
-
 
324
     $pop     eax
-
 
325
     $add     al, '0'
-
 
326
     $stosb
-
 
327
     $jnz     f3
-
 
328
     $mov     eax, #buffer
-
 
329
     $ret
-
 
330
} 
-
 
331
 
-
 
332
 
-
 
333
inline fastcall dword StrToInt()
-
 
334
{
-
 
335
	ESI=EDI=EAX;
-
 
336
	IF(DSBYTE[ESI]=='-')ESI++;
-
 
337
	EAX=0;
-
 
338
	BH=AL;
-
 
339
	do{
-
 
340
		BL=DSBYTE[ESI]-'0';
-
 
341
		EAX=EAX*10+EBX;
-
 
342
		ESI++;
-
 
343
	}while(DSBYTE[ESI]>0);
-
 
344
	IF(DSBYTE[EDI]=='-') -EAX;
-
 
345
}
-
 
346
 
-
 
347
 
-
 
348
inline fastcall int strcmp( ESI, EDI)
-
 
349
{
-
 
350
	loop()
-
 
351
	{
-
 
352
		IF (DSBYTE[ESI]
-
 
353
		IF (DSBYTE[ESI]>DSBYTE[EDI]) RETURN 1;
-
 
354
		IF (DSBYTE[ESI]=='\0') RETURN 0;
-
 
355
		ESI++;
-
 
356
		EDI++;
-
 
357
	}
-
 
358
}
-
 
359
 
-
 
360
inline fastcall unsigned int find_symbol( ESI,BL)
-
 
361
{
-
 
362
	int jj=0, last=-1;
-
 
363
	do{
-
 
364
		jj++;
-
 
365
		$lodsb
-
 
366
		IF(AL==BL) last=jj;
-
 
367
	} while(AL!=0);
-
 
368
	return last;
-
 
369
}
-
 
370
 
-
 
371
 
-
 
372
inline fastcall dword upcase( ESI)
-
 
373
{
-
 
374
	do{
-
 
375
		AL=DSBYTE[ESI];
-
 
376
		IF(AL>='a')IF(AL<='z')DSBYTE[ESI]=AL&0x5f;
-
 
377
 		ESI++;
-
 
378
	}while(AL!=0);
-
 
379
}
-
 
380
 
-
 
381
inline fastcall lowcase( ESI)
-
 
382
{
-
 
383
	do{
-
 
384
		$LODSB
-
 
385
		IF(AL>='A')&&(AL<='Z'){
-
 
386
			AL+=0x20;
-
 
387
			DSBYTE[ESI-1]=AL;
-
 
388
			CONTINUE;
-
 
389
		}
-
 
390
	}while(AL!=0);
-
 
391
}
240
}
392
 
241
 
393
byte fastcall TestBit( EAX, CL)
242
byte fastcall TestBit( EAX, CL)
394
{
243
{
395
	$shr eax,cl
244
	$shr eax,cl
Line 396... Line -...
396
	$and eax,1
-
 
397
}
-
 
Line -... Line 245...
-
 
245
	$and eax,1
Line 398... Line 246...
398
 
246
}
399
//------------------------------------------------------------------------------
247
 
400
 
248
 
401
 
249
//------------------------------------------------------------------------------
Line 416... Line 264...
416
	EAX = 12;              // function 12:tell os about windowdraw
264
	EAX = 12;              // function 12:tell os about windowdraw
417
	EBX = 2;
265
	EBX = 2;
418
	$int 0x40
266
	$int 0x40
419
}
267
}
Line 420... Line -...
420
 
-
 
421
 
268
 
422
inline fastcall int CreateThread( ECX,EDX)
269
inline fastcall MoveSize( EBX,ECX,EDX,ESI)
423
{
270
{
424
	EAX = 51;
-
 
425
	EBX = 1;
271
	EAX = 67;
426
	$int 0x40
272
	$int 0x40
Line 427... Line 273...
427
}
273
}
428
 
274
 
429
inline fastcall int GetSlot( ECX)
275
inline fastcall void DrawTitle( ECX)
430
{
276
{
431
	EAX = 18;
277
	EAX = 71;
432
	EBX = 21;
278
	EBX = 1;
Line 433... Line 279...
433
	$int 0x40
279
	$int 0x40;
434
}
280
}
435
 
281
 
436
inline fastcall int GetActiveProcess()
282
inline fastcall int CreateThread( ECX,EDX)
437
{
283
{
438
	EAX = 18;
284
	EAX = 51;
Line 439... Line -...
439
	EBX = 7;
-
 
440
	$int 0x40
285
	EBX = 1;
441
}
286
	$int 0x40
442
 
287
}
443
 
288
 
444
void WriteText(dword x,y,byte fontType, dword color, EDX, ESI)
289
void WriteText(dword x,y,byte fontType, dword color, EDX, ESI)
Line 501... Line 346...
501
	EAX = 8;
346
	EAX = 8;
502
	EDX += BT_DEL;
347
	EDX += BT_DEL;
503
	$int 0x40;
348
	$int 0x40;
504
}
349
}
Line -... Line 350...
-
 
350
 
-
 
351
 
-
 
352
//------------------------------------------------------------------------------
505
 
353
 
506
:void DrawRegion(dword x,y,width,height,color1)
354
void DrawRegion(dword x,y,width,height,color1)
507
{
355
{
508
	DrawBar(x,y,width,1,color1); //¯®«®á  £®à ᢥàåã
356
	DrawBar(x,y,width,1,color1); //¯®«®á  £®à ᢥàåã
509
	DrawBar(x,y+height,width,1,color1); //¯®«®á  £®à á­¨§ã
357
	DrawBar(x,y+height,width,1,color1); //¯®«®á  £®à á­¨§ã
510
	DrawBar(x,y,1,height,color1); //¯®«®á  ¢¥àåã á«¥¢ 
358
	DrawBar(x,y,1,height,color1); //¯®«®á  ¢¥àåã á«¥¢ 
511
	DrawBar(x+width,y,1,height+1,color1); //¯®«®á  ¢¥àåã á¯à ¢ 
359
	DrawBar(x+width,y,1,height+1,color1); //¯®«®á  ¢¥àåã á¯à ¢ 
Line 512... Line 360...
512
}
360
}
513
 
361
 
514
:void DrawRegion_3D(dword x,y,width,height,color1,color2)
362
void DrawRegion_3D(dword x,y,width,height,color1,color2)
515
{
363
{
516
	DrawBar(x,y,width+1,1,color1); //¯®«®á  £®à ᢥàåã
364
	DrawBar(x,y,width+1,1,color1); //¯®«®á  £®à ᢥàåã
517
	DrawBar(x,y+1,1,height-1,color1); //¯®«®á  á«¥¢ 
365
	DrawBar(x,y+1,1,height-1,color1); //¯®«®á  á«¥¢ 
Line 523... Line 371...
523
{
371
{
524
	DrawRegion_3D(x,y,width,height,0x94AECE,0x94AECE);
372
	DrawRegion_3D(x,y,width,height,0x94AECE,0x94AECE);
525
	DrawRegion_3D(x+1,y+1,width-2,height-2,0xFFFFFF,0xC7C7C7);
373
	DrawRegion_3D(x+1,y+1,width-2,height-2,0xFFFFFF,0xC7C7C7);
526
	DrawBar(x+2,y+2,width-3,height-3,color); //§ «¨¢ª 
374
	DrawBar(x+2,y+2,width-3,height-3,color); //§ «¨¢ª 
527
	IF (id<>0)	DefineButton(x,y,width,height,id+BT_HIDE,0xEFEBEF); //ª­®¯ª 
375
	IF (id<>0)	DefineButton(x,y,width,height,id+BT_HIDE,0xEFEBEF); //ª­®¯ª 
528
	WriteText(-strlen(text)*6+width/2+x+1,height/2-3+y,0x80,0,text,0);
376
	//WriteText(-strlen(text)*6+width/2+x+1,height/2-3+y,0x80,0,text,0);
-
 
377
	WriteText(width/2+x+1,height/2-3+y,0x80,0,text,0);
529
}
378
}
Line 530... Line 379...
530
 
379
 
531
:void DrawCircle(int x, y, r)
380
void DrawCircle(int x, y, r)
-
 
381
{
532
{
382
	int i;
533
	int i; float px=0, py=r, ii = r * 3.1415926 * 2;
383
	float px=0, py=r, ii = r * 3.1415926 * 2;
534
	FOR (i = 0; i < ii; i++)
384
	FOR (i = 0; i < ii; i++)
535
	{
385
	{
536
        PutPixel(px + x, y - py, 0);
386
        PutPixel(px + x, y - py, 0);
537
        px = py / r + px;
387
        px = py / r + px;