Subversion Repositories Kolibri OS

Rev

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

Rev 2434 Rev 2465
Line -... Line 1...
-
 
1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
 
2
;;                                                              ;;
-
 
3
;; Copyright (C) KolibriOS team 2011-2012. All rights reserved. ;;
-
 
4
;; Distributed under terms of the GNU General Public License    ;;
-
 
5
;;                                                              ;;
-
 
6
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Line 1... Line 7...
1
struct  BLITTER_BLOCK
7
 
2
        xmin            dd ?
8
struct  BLITTER_BLOCK
3
        ymin            dd ?
9
        xmin            dd ?
4
        xmax            dd ?
10
        ymin            dd ?
Line 338... Line 344...
338
 
344
        add     ecx, [esp+BLITTER.h]
Line 339... Line 345...
339
        mov     edi, ebp
345
 
Line 340... Line 346...
340
 
346
        mov     edi, ebp
341
        imul    edi, [_display.pitch]
347
 
-
 
348
        imul    edi, [_display.pitch]
-
 
349
;        imul    ebp, [_display.width]
342
        imul    ebp, [_display.width]
350
        mov     ebp, [d_width_calc_area + ebp*4]
343
        add     ebp, ebx
351
 
Line 344... Line 352...
344
        add     ebp, [_WinMapAddress]
352
        add     ebp, ebx
345
 
353
        add     ebp, [_WinMapAddress]
Line 371... Line 379...
371
 
379
        xor     ecx, ecx
Line 372... Line 380...
372
align 4
380
 
373
.inner32:
381
align 4
374
        cmp     [ebp+ecx], bl
382
.inner32:
375
        jne     @F
383
        cmp     [ebp+ecx], bl
376
;--------------------------------------
384
        jne     .skip
377
        push    eax
385
;--------------------------------------
378
        mov     eax, [esi+ecx*4]
386
        push    eax
Line -... Line 387...
-
 
387
        mov     eax, [esi+ecx*4]
-
 
388
 
-
 
389
; check for hardware cursor
-
 
390
        cmp     [_display.select_cursor], select_cursor
-
 
391
        je      @f
-
 
392
        cmp     [_display.select_cursor], 0
-
 
393
        jne     .no_mouseunder
-
 
394
;--------------------------------------
379
 
395
align 4
Line 380... Line 396...
380
        push    ecx
396
@@:
381
 
397
        push    ecx
382
        mov     ecx, [esp+4]
398
 
Line 387... Line 403...
387
 
403
        sub     ecx, [esp+BLITTER.h + 8]
Line 388... Line 404...
388
; check mouse area for putpixel
404
 
389
        call    [_display.check_mouse]
405
; check mouse area for putpixel
390
        pop     ecx
406
        call    [_display.check_mouse]
-
 
407
        pop     ecx
-
 
408
;--------------------------------------
-
 
409
align 4
391
; store to real LFB
410
.no_mouseunder:
392
        mov     [LFB_BASE+edi+ecx*4], eax
411
; store to real LFB
393
        pop     eax
412
        mov     [LFB_BASE+edi+ecx*4], eax
394
;--------------------------------------
413
        pop     eax
395
align 4
414
;--------------------------------------
396
@@:
415
align 4
397
        inc     ecx
416
.skip:
398
        dec     edx
417
        inc     ecx
399
        jnz     .inner32
418
        dec     edx
Line 400... Line 419...
400
 
419
        jnz     .inner32
Line 406... Line 425...
406
        dec     [esp+BLITTER.h]
425
        mov     edx, [esp+BLITTER.w]
407
        jnz     .outer32
426
        dec     [esp+BLITTER.h]
408
 
427
        jnz     .outer32
Line 409... Line 428...
409
.done:
428
 
410
        call    [draw_pointer]
429
.done:
-
 
430
;        call    [draw_pointer]
411
.L57:
431
        call    __sys_draw_pointer
412
        add     esp, 72
432
.L57:
413
        pop     ebx
433
        add     esp, 72
414
        pop     esi
434
        pop     ebx
415
        pop     edi
435
        pop     esi
Line 428... Line 448...
428
 
448
        xor     ecx, ecx
Line 429... Line 449...
429
align 4
449
 
430
.inner24:
450
align 4
431
        cmp     [ebp+ecx], bl
451
.inner24:
432
        jne     @F
452
        cmp     [ebp+ecx], bl
433
;--------------------------------------
453
        jne     .skip_1
434
        push    eax
454
;--------------------------------------
435
        mov     eax, [esi+ecx*4]
455
        push    eax
Line 436... Line 456...
436
 
456
        mov     eax, [esi+ecx*4]
Line -... Line 457...
-
 
457
 
-
 
458
        lea     edi, [edi+ecx*2]
-
 
459
 
-
 
460
; check for hardware cursor
-
 
461
        cmp     [_display.select_cursor], select_cursor
-
 
462
        je      @f
-
 
463
        cmp     [_display.select_cursor], 0
-
 
464
        jne     .no_mouseunder_1
437
        lea     edi, [edi+ecx*2]
465
;--------------------------------------
Line 438... Line 466...
438
 
466
align 4
439
        push    ecx
467
@@:
440
 
468
        push    ecx
Line 446... Line 474...
446
 
474
        sub     ecx, [esp+BLITTER.h + 8]
Line 447... Line 475...
447
; check mouse area for putpixel
475
 
448
        call    [_display.check_mouse]
476
; check mouse area for putpixel
449
        pop     ecx
477
        call    [_display.check_mouse]
-
 
478
        pop     ecx
450
 
479
;--------------------------------------
-
 
480
align 4
451
        mov     [edi+ecx], ax
481
.no_mouseunder_1:
452
        shr     eax, 16
482
        mov     [edi+ecx], ax
453
        mov     [edi+ecx+2], al
483
        shr     eax, 16
Line 454... Line 484...
454
 
484
        mov     [edi+ecx+2], al
455
        pop     eax
485
 
456
;--------------------------------------
486
        pop     eax
457
align 4
487
;--------------------------------------
458
@@:
488
align 4
459
        mov     edi, [esp+64]
489
.skip_1:
460
        inc     ecx
490
        mov     edi, [esp+64]
461
        dec     edx
491
        inc     ecx