Subversion Repositories Kolibri OS

Rev

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

Rev 221 Rev 224
Line 2... Line 2...
2
LOAD_FROM_MEM   equ 1
2
LOAD_FROM_MEM   equ 1
3
LOAD_INDIRECT   equ 2
3
LOAD_INDIRECT   equ 2
4
LOAD_SYSTEM     equ 3
4
LOAD_SYSTEM     equ 3
5
 
5
 
Line -... Line 6...
-
 
6
struc BITMAPINFOHEADER {
-
 
7
  .biSize          dd ? ; DWORD
-
 
8
  .biWidth         dd ? ; LONG
-
 
9
  .biHeight        dd ? ; LONG
-
 
10
  .biPlanes        dw ? ; WORD
-
 
11
  .biBitCount      dw ? ; WORD
-
 
12
  .biCompression   dd ? ; DWORD
-
 
13
  .biSizeImage     dd ? ; DWORD
-
 
14
  .biXPelsPerMeter dd ? ; LONG
-
 
15
  .biYPelsPerMeter dd ? ; LONG
-
 
16
  .biClrUsed       dd ? ; DWORD
-
 
17
  .biClrImportant  dd ? ; DWORD
-
 
18
}
-
 
19
 
-
 
20
virtual at 0
-
 
21
  BI BITMAPINFOHEADER
-
 
22
end virtual
-
 
23
 
6
align 4
24
align 4
7
proc vesa_init_cursor stdcall, dst:dword, src:dword
25
proc vesa_init_cursor stdcall, dst:dword, src:dword
8
           locals
26
           locals
9
             rBase    dd ?
27
             rBase    dd ?
10
             pQuad    dd ?
28
             pQuad    dd ?
Line 15... Line 33...
15
             counter  dd ?
33
             counter  dd ?
16
           endl
34
           endl
17
 
35
 
Line 18... Line 36...
18
           mov esi, [src]
36
           mov esi, [src]
19
           add esi,[esi+18d]
37
           add esi,[esi+18]
20
 
-
 
21
           mov eax,esi
38
           mov eax,esi
-
 
39
 
-
 
40
           cmp [esi+BI.biBitCount], 24
-
 
41
           je .img_24
-
 
42
.img_4:
22
           add eax, [esi]
43
           add eax, [esi]
23
           mov [pQuad],eax
44
           mov [pQuad],eax
24
           add eax,64
45
           add eax,64
25
           mov [pBits],eax
46
           mov [pBits],eax
26
           add eax, 0x200
47
           add eax, 0x200
Line 83... Line 104...
83
           mov [rBase],edi
104
           mov [rBase],edi
84
           sub [height],1
105
           sub [height],1
85
           jnz .l1
106
           jnz .l1
86
           ret
107
           ret
87
endp
108
.img_24:
-
 
109
           add eax, [esi]
-
 
110
           mov [pQuad],eax
-
 
111
           add eax, 0xC00
-
 
112
           mov [pAnd],eax
-
 
113
           mov eax,[esi+BI.biWidth]
-
 
114
           mov [width],eax
-
 
115
           mov ebx,[esi+BI.biHeight]
-
 
116
           shr ebx,1
-
 
117
           mov [height],ebx
-
 
118
 
-
 
119
           mov edi, [dst]
-
 
120
           add edi, 32*31*4
-
 
121
           mov [rBase],edi
-
 
122
 
-
 
123
           mov esi,[pAnd]
-
 
124
           mov ebx, [pQuad]
-
 
125
.row_24:
-
 
126
           mov eax, [esi]
-
 
127
           bswap eax
-
 
128
           mov [counter], 32
-
 
129
@@:
-
 
130
           xor edx, edx
-
 
131
           shl eax,1
-
 
132
           setc dl
-
 
133
           dec edx
-
 
134
 
-
 
135
           mov ecx, [ebx]
-
 
136
           and ecx, 0x00FFFFFF
-
 
137
           and ecx, edx
-
 
138
           and edx, 0xFF000000
-
 
139
           or edx, ecx
-
 
140
           mov [edi], edx
-
 
141
           add ebx, 3
-
 
142
           add edi, 4
-
 
143
           dec [counter]
-
 
144
           jnz @B
-
 
145
 
-
 
146
           add esi, 4
-
 
147
           mov edi,[rBase]
-
 
148
           sub edi,128
-
 
149
           mov [rBase],edi
-
 
150
           sub [height],1
-
 
151
           jnz .row_24
-
 
152
           ret
-
 
153
 
-
 
154
endp
88
 
155
 
Line 89... Line 156...
89
align 4
156
align 4
90
proc alloc_cursor
157
proc alloc_cursor
Line 377... Line 444...
377
           mov eax, 32
444
           mov eax, 32
378
 
445
 
Line 379... Line 446...
379
           sub edi, ecx
446
           sub edi, ecx
380
           cmp edi, eax
447
           cmp edi, eax
381
           cmovg edi, eax
448
           ;cmovg edi, eax
-
 
449
           jng @F
-
 
450
           mov edi, eax
-
 
451
@@:
382
           sub edi, [_dx]
452
           sub edi, [_dx]
Line 383... Line 453...
383
 
453
 
384
           sub edx, [y]
454
           sub edx, [y]
385
           cmp edx, eax
455
           cmp edx, eax
-
 
456
           ;cmovg edx, eax
-
 
457
           jng @F
-
 
458
           mov edx, eax
386
           cmovg edx, eax
459
@@:
Line 387... Line 460...
387
           sub edx, [_dy]
460
           sub edx, [_dy]
388
 
461
 
389
           mov [w], edi
462
           mov [w], edi
390
           mov [h], edx
463
           mov [h], edx
Line 391... Line 464...
391
           mov [cur_saved_w], edi
464
           mov [cur_saved_w], edi
392
           mov [cur_saved_h], edx
465
           mov [cur_saved_h], edx
393
 
466
 
394
           sub eax, edi
467
           sub eax, edi
395
           lea eax, [eax+eax*2]
468
           shl eax, 2       ;lea eax, [eax+eax*2]
Line 396... Line 469...
396
           lea edi, [edi+edi*2]
469
           lea edi, [edi+edi*2]
Line 484... Line 557...
484
           mov eax, 32
557
           mov eax, 32
485
 
558
 
Line 486... Line 559...
486
           sub edi, ecx
559
           sub edi, ecx
487
           cmp edi, eax
560
           cmp edi, eax
488
           cmovg edi, eax
561
;           cmovg edi, eax
-
 
562
           jng @F
-
 
563
           mov edi, eax
-
 
564
@@:
489
           sub edi, [_dx]
565
           sub edi, [_dx]
Line 490... Line 566...
490
 
566
 
491
           sub edx, [y]
567
           sub edx, [y]
492
           cmp edx, eax
568
           cmp edx, eax
-
 
569
;           cmovg edx, eax
-
 
570
           jng @F
-
 
571
           mov edx, eax
493
           cmovg edx, eax
572
@@:
Line 494... Line 573...
494
           sub edx, [_dy]
573
           sub edx, [_dy]
495
 
574
 
496
           mov [w], edi
575
           mov [w], edi