Subversion Repositories Kolibri OS

Rev

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

Rev 2385 Rev 2540
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 322... Line 328...
322
        call    blit_clip
328
        mov     ecx, esp
323
        test    eax, eax
329
        call    blit_clip
324
        jne     .L57
330
        test    eax, eax
325
 
331
        jne     .L57
Line 326... Line -...
326
        inc     [mouse_pause]
-
 
327
        call    [_display.disable_mouse]
-
 
328
 
-
 
329
        mov     eax, [TASK_BASE]
332
 
Line 330... Line 333...
330
 
333
        mov     eax, [TASK_BASE]
331
        mov     ebx, [esp+BLITTER.dst_x]
334
 
332
        mov     ebp, [esp+BLITTER.dst_y]
335
        mov     ebx, [esp+BLITTER.dst_x]
333
        add     ebx, [eax-twdw + WDATA.box.left]
336
        mov     ebp, [esp+BLITTER.dst_y]
-
 
337
        add     ebx, [eax-twdw + WDATA.box.left]
-
 
338
        add     ebp, [eax-twdw + WDATA.box.top]
-
 
339
 
-
 
340
        mov     ecx, ebx
-
 
341
        add     ecx, [esp+BLITTER.w]
-
 
342
        shl     ecx, 16
-
 
343
        mov     cx, bp
334
        add     ebp, [eax-twdw + WDATA.box.top]
344
        add     ecx, [esp+BLITTER.h]
Line 335... Line 345...
335
        mov     edi, ebp
345
 
-
 
346
        mov     edi, ebp
336
 
347
 
-
 
348
;        imul    edi, [_display.pitch]
-
 
349
        mov     edi, [BPSLine_calc_area+edi*4]
337
        imul    edi, [_display.pitch]
350
;        imul    ebp, [_display.width]
338
        imul    ebp, [_display.width]
351
        mov     ebp, [d_width_calc_area+ebp*4]
Line 339... Line 352...
339
        add     ebp, ebx
352
 
340
        add     ebp, [_WinMapAddress]
353
        add     ebp, ebx
341
 
354
        add     ebp, [_WinMapAddress]
342
        mov     eax, [esp+BLITTER.src_y]
355
 
343
        imul    eax, [esp+BLITTER.stride]
356
        mov     eax, [esp+BLITTER.src_y]
Line -... Line 357...
-
 
357
        imul    eax, [esp+BLITTER.stride]
344
        mov     esi, [esp+BLITTER.src_x]
358
        mov     esi, [esp+BLITTER.src_x]
345
        lea     esi, [eax+esi*4]
359
        lea     esi, [eax+esi*4]
Line 346... Line 360...
346
        add     esi, [esp+BLITTER.bitmap]
360
        add     esi, [esp+BLITTER.bitmap]
347
 
361
 
Line 359... Line 373...
359
 
373
        jne     .core_24
Line 360... Line 374...
360
        lea     edi, [edi+ebx*4]
374
 
Line 361... Line 375...
361
 
375
        lea     edi, [edi+ebx*4]
362
        mov     ebx, [CURRENT_TASK]
-
 
363
 
376
 
364
align 4
377
        mov     ebx, [CURRENT_TASK]
365
.outer32:
378
align 4
Line 366... Line 379...
366
        xor     ecx, ecx
379
.outer32:
367
 
380
        xor     ecx, ecx
368
align 4
381
 
369
.inner32:
382
align 4
370
        cmp     [ebp+ecx], bl
-
 
-
 
383
.inner32:
-
 
384
        cmp     [ebp+ecx], bl
371
        jne     @F
385
        jne     .skip
-
 
386
;--------------------------------------
-
 
387
        push    eax
-
 
388
        mov     eax, [esi+ecx*4]
-
 
389
 
372
 
390
; check for hardware cursor
-
 
391
        cmp     [_display.select_cursor], select_cursor
-
 
392
        je      @f
-
 
393
        cmp     [_display.select_cursor], 0
373
        mov     eax, [esi+ecx*4]
394
        jne     .no_mouseunder
-
 
395
;--------------------------------------
-
 
396
align 4
-
 
397
@@:
-
 
398
        push    ecx
-
 
399
 
-
 
400
        mov     ecx, [esp+4]
-
 
401
        ror     ecx, 16
-
 
402
        sub     ecx, edx
-
 
403
        rol     ecx, 16
-
 
404
        sub     ecx, [esp+BLITTER.h + 8]
-
 
405
 
-
 
406
; check mouse area for putpixel
-
 
407
        call    [_display.check_mouse]
-
 
408
        pop     ecx
-
 
409
;--------------------------------------
-
 
410
align 4
-
 
411
.no_mouseunder:
-
 
412
; store to real LFB
-
 
413
        mov     [LFB_BASE+edi+ecx*4], eax
-
 
414
        pop     eax
374
        mov     [LFB_BASE+edi+ecx*4], eax
415
;--------------------------------------
375
@@:
416
align 4
376
        inc     ecx
417
.skip:
Line 377... Line 418...
377
        dec     edx
418
        inc     ecx
Line 385... Line 426...
385
        dec     [esp+BLITTER.h]
426
        mov     edx, [esp+BLITTER.w]
386
        jnz     .outer32
427
        dec     [esp+BLITTER.h]
387
 
428
        jnz     .outer32
Line 388... Line 429...
388
.done:
429
 
389
        dec     [mouse_pause]
430
.done:
390
        call    [draw_pointer]
431
;        call    [draw_pointer]
391
.L57:
432
        call    __sys_draw_pointer
392
        add     esp, 72
433
.L57:
393
        pop     ebx
434
        add     esp, 72
394
        pop     esi
435
        pop     ebx
395
        pop     edi
436
        pop     esi
Line 408... Line 449...
408
 
449
        xor     ecx, ecx
Line 409... Line 450...
409
align 4
450
 
410
.inner24:
451
align 4
411
        cmp     [ebp+ecx], bl
452
.inner24:
412
        jne     @F
453
        cmp     [ebp+ecx], bl
413
 
-
 
-
 
454
        jne     .skip_1
-
 
455
;--------------------------------------
414
        mov     eax, [esi+ecx*4]
456
        push    eax
Line 415... Line 457...
415
 
457
        mov     eax, [esi+ecx*4]
-
 
458
 
-
 
459
        lea     edi, [edi+ecx*2]
-
 
460
 
-
 
461
; check for hardware cursor
-
 
462
        cmp     [_display.select_cursor], select_cursor
-
 
463
        je      @f
-
 
464
        cmp     [_display.select_cursor], 0
-
 
465
        jne     .no_mouseunder_1
-
 
466
;--------------------------------------
-
 
467
align 4
-
 
468
@@:
-
 
469
        push    ecx
-
 
470
 
-
 
471
        mov     ecx, [esp+4]
-
 
472
        ror     ecx, 16
-
 
473
        sub     ecx, edx
-
 
474
        rol     ecx, 16
-
 
475
        sub     ecx, [esp+BLITTER.h + 8]
-
 
476
 
-
 
477
; check mouse area for putpixel
-
 
478
        call    [_display.check_mouse]
-
 
479
        pop     ecx
-
 
480
;--------------------------------------
416
        lea     edi, [edi+ecx*2]
481
align 4
417
        mov     [edi+ecx], ax
482
.no_mouseunder_1:
418
        shr     eax, 16
483
        mov     [edi+ecx], ax
419
        mov     [edi+ecx+2], al
484
        shr     eax, 16
-
 
485
        mov     [edi+ecx+2], al
-
 
486
 
-
 
487
        pop     eax
-
 
488
;--------------------------------------
420
@@:
489
align 4
421
        mov     edi, [esp+64]
490
.skip_1:
422
        inc     ecx
491
        mov     edi, [esp+64]
423
        dec     edx
492
        inc     ecx