sysfunction 65 can now output 1bpp and 4bpp images
git-svn-id: svn://kolibrios.org@911 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
@@ -3402,8 +3402,8 @@ IPC
|
|||||||
* ebx = 㪠<><E3AAA0>⥫<EFBFBD> <20><> <20><><EFBFBD><EFBFBD>ࠦ<EFBFBD><E0A0A6><EFBFBD><EFBFBD>
|
* ebx = 㪠<><E3AAA0>⥫<EFBFBD> <20><> <20><><EFBFBD><EFBFBD>ࠦ<EFBFBD><E0A0A6><EFBFBD><EFBFBD>
|
||||||
* ecx = [ࠧ<><E0A0A7><EFBFBD> <20><> <20><><EFBFBD> x]*65536 + [ࠧ<><E0A0A7><EFBFBD> <20><> <20><><EFBFBD> y]
|
* ecx = [ࠧ<><E0A0A7><EFBFBD> <20><> <20><><EFBFBD> x]*65536 + [ࠧ<><E0A0A7><EFBFBD> <20><> <20><><EFBFBD> y]
|
||||||
* edx = [<5B><><EFBFBD>न<EFBFBD><E0A4A8><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> x]*65536 + [<5B><><EFBFBD>न<EFBFBD><E0A4A8><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> y]
|
* edx = [<5B><><EFBFBD>न<EFBFBD><E0A4A8><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> x]*65536 + [<5B><><EFBFBD>न<EFBFBD><E0A4A8><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> y]
|
||||||
* esi = <20><> <20><><EFBFBD> <20><> <20><><EFBFBD>ᥫ<EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> 8, 15, 16, 24 <20><><EFBFBD> 32
|
* esi = <20><> <20><><EFBFBD> <20><> <20><><EFBFBD>ᥫ<EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> 1, 4, 8, 15, 16, 24 <20><><EFBFBD> 32
|
||||||
* edi = 㪠<><E3AAA0>⥫<EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (256 梥⮢ 0x00RRGGBB);
|
* edi = 㪠<><E3AAA0>⥫<EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (2 <20> <20>⥯<EFBFBD><E2A5AF><EFBFBD> esi 梥⮢ 0x00RRGGBB);
|
||||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> esi > 8
|
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> esi > 8
|
||||||
* ebp = ᬥ饭<E1ACA5><E9A5AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <><E1ABA5><EFBFBD>饩 <20><>ப<EFBFBD> <20><><EFBFBD><EFBFBD>ࠦ<EFBFBD><E0A0A6><EFBFBD><EFBFBD>
|
* ebp = ᬥ饭<E1ACA5><E9A5AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <><E1ABA5><EFBFBD>饩 <20><>ப<EFBFBD> <20><><EFBFBD><EFBFBD>ࠦ<EFBFBD><E0A0A6><EFBFBD><EFBFBD>
|
||||||
<20>⭮<EFBFBD><E2ADAE>⥫쭮 <20>।<EFBFBD><E0A5A4><EFBFBD>饩
|
<20>⭮<EFBFBD><E2ADAE>⥫쭮 <20>।<EFBFBD><E0A5A4><EFBFBD>饩
|
||||||
@@ -3413,6 +3413,14 @@ IPC
|
|||||||
* <20><><EFBFBD>न<EFBFBD><E0A4A8><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ࠦ<EFBFBD><E0A0A6><EFBFBD><EFBFBD> - <20><><EFBFBD> <20><><EFBFBD>न<EFBFBD><E0A4A8><EFBFBD><EFBFBD> <20><><EFBFBD>孥<EFBFBD><E5ADA5> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 㣫<>
|
* <20><><EFBFBD>न<EFBFBD><E0A4A8><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ࠦ<EFBFBD><E0A0A6><EFBFBD><EFBFBD> - <20><><EFBFBD> <20><><EFBFBD>न<EFBFBD><E0A4A8><EFBFBD><EFBFBD> <20><><EFBFBD>孥<EFBFBD><E5ADA5> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 㣫<>
|
||||||
<20><><EFBFBD><EFBFBD>ࠦ<EFBFBD><E0A0A6><EFBFBD><EFBFBD> <20>⭮<EFBFBD><E2ADAE>⥫쭮 <20><><EFBFBD><EFBFBD>.
|
<20><><EFBFBD><EFBFBD>ࠦ<EFBFBD><E0A0A6><EFBFBD><EFBFBD> <20>⭮<EFBFBD><E2ADAE>⥫쭮 <20><><EFBFBD><EFBFBD>.
|
||||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ࠦ<EFBFBD><E0A0A6><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> xsize*ysize.
|
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ࠦ<EFBFBD><E0A0A6><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> xsize*ysize.
|
||||||
|
* <20><>ଠ<EFBFBD> <20><><EFBFBD><EFBFBD>ࠦ<EFBFBD><E0A0A6><EFBFBD><EFBFBD> <20> 1 <20><>⮬ <20><> <20><><EFBFBD>ᥫ<EFBFBD>: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ࠦ<EFBFBD><E0A0A6><EFBFBD><EFBFBD>,
|
||||||
|
<20><> <20>᪫<EFBFBD>祭<EFBFBD><E7A5AD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><E1ABA5><EFBFBD><EFBFBD> <20><><EFBFBD>⮢ <20><>ப, ᮤ<>ন<EFBFBD>
|
||||||
|
<20><><EFBFBD><EFBFBD>ଠ<EFBFBD><E0ACA0><EFBFBD> <20> 梥<><E6A2A5> 8 <20><><EFBFBD>ᥫ<EFBFBD><E1A5AB>, <20><><EFBFBD><EFBFBD>訩 <20><><EFBFBD> ᮮ⢥<E1AEAE><E2A2A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ࢮ<EFBFBD><E0A2AE>
|
||||||
|
<20><><EFBFBD>ᥫ<EFBFBD>.
|
||||||
|
* <20><>ଠ<EFBFBD> <20><><EFBFBD><EFBFBD>ࠦ<EFBFBD><E0A0A6><EFBFBD><EFBFBD> <20> 4 <20><>⠬<EFBFBD> <20><> <20><><EFBFBD>ᥫ<EFBFBD>: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ࠦ<EFBFBD><E0A0A6><EFBFBD><EFBFBD>,
|
||||||
|
<20><> <20>᪫<EFBFBD>祭<EFBFBD><E7A5AD><EFBFBD> <20><><EFBFBD><E1ABA5><EFBFBD><EFBFBD> <20><><EFBFBD>⮢ <20><>ப (<28> <20><>ਭ<EFBFBD> <20><><EFBFBD><EFBFBD>ࠦ<EFBFBD><E0A0A6><EFBFBD><EFBFBD>
|
||||||
|
<20><><EFBFBD><EFBFBD>⭠), ᮤ<>ন<EFBFBD> <20><><EFBFBD><EFBFBD>ଠ<EFBFBD><E0ACA0><EFBFBD> <20> 梥<><E6A2A5> 2 <20><><EFBFBD>ᥫ<EFBFBD><E1A5AB>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ࠤ<EFBFBD>
|
||||||
|
ᮮ⢥<E1AEAE><E2A2A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ࢮ<EFBFBD><E0A2AE> <20><><EFBFBD>ᥫ<EFBFBD>.
|
||||||
* <20><>ଠ<EFBFBD> <20><><EFBFBD><EFBFBD>ࠦ<EFBFBD><E0A0A6><EFBFBD><EFBFBD> <20> 8 <20><>⠬<EFBFBD> <20><> <20><><EFBFBD>ᥫ<EFBFBD>: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ࠦ<EFBFBD><E0A0A6><EFBFBD><EFBFBD>
|
* <20><>ଠ<EFBFBD> <20><><EFBFBD><EFBFBD>ࠦ<EFBFBD><E0A0A6><EFBFBD><EFBFBD> <20> 8 <20><>⠬<EFBFBD> <20><> <20><><EFBFBD>ᥫ<EFBFBD>: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ࠦ<EFBFBD><E0A0A6><EFBFBD><EFBFBD>
|
||||||
<20><><EFBFBD>ᬠ<EFBFBD>ਢ<EFBFBD><E0A8A2><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
<20><><EFBFBD>ᬠ<EFBFBD>ਢ<EFBFBD><E0A8A2><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||||
* <20> <20><><EFBFBD><EFBFBD>ࠦ<EFBFBD><E0A0A6><EFBFBD><EFBFBD> <20>ᯮ<EFBFBD><E1AFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> 256 梥⮢, <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
|
* <20> <20><><EFBFBD><EFBFBD>ࠦ<EFBFBD><E0A0A6><EFBFBD><EFBFBD> <20>ᯮ<EFBFBD><E1AFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> 256 梥⮢, <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
|
||||||
|
@@ -4209,6 +4209,30 @@ sys_putimage_palette:
|
|||||||
add dx, word [eax+SLOT_BASE+APPDATA.wnd_clientbox.left]
|
add dx, word [eax+SLOT_BASE+APPDATA.wnd_clientbox.left]
|
||||||
rol edx, 16
|
rol edx, 16
|
||||||
.forced:
|
.forced:
|
||||||
|
cmp esi, 1
|
||||||
|
jnz @f
|
||||||
|
push edi
|
||||||
|
mov eax, [edi+4]
|
||||||
|
sub eax, [edi]
|
||||||
|
push eax
|
||||||
|
push dword [edi]
|
||||||
|
push 0ffffff80h
|
||||||
|
mov edi, esp
|
||||||
|
call put_mono_image
|
||||||
|
add esp, 12
|
||||||
|
pop edi
|
||||||
|
ret
|
||||||
|
@@:
|
||||||
|
cmp esi, 4
|
||||||
|
jnz @f
|
||||||
|
push edi
|
||||||
|
push 0ffffff80h
|
||||||
|
mov edi, esp
|
||||||
|
call put_4bit_image
|
||||||
|
pop eax
|
||||||
|
pop edi
|
||||||
|
ret
|
||||||
|
@@:
|
||||||
push ebp esi ebp
|
push ebp esi ebp
|
||||||
cmp esi, 8
|
cmp esi, 8
|
||||||
jnz @f
|
jnz @f
|
||||||
@@ -4243,15 +4267,28 @@ sys_putimage_palette:
|
|||||||
pop ebp esi ebp
|
pop ebp esi ebp
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
put_mono_image:
|
||||||
|
push ebp esi ebp
|
||||||
|
mov ebp, putimage_get1bpp
|
||||||
|
mov esi, putimage_init1bpp
|
||||||
|
jmp sys_putimage_bpp
|
||||||
|
put_4bit_image:
|
||||||
|
push ebp esi ebp
|
||||||
|
mov ebp, putimage_get4bpp
|
||||||
|
mov esi, putimage_init4bpp
|
||||||
|
jmp sys_putimage_bpp
|
||||||
|
|
||||||
putimage_init24bpp:
|
putimage_init24bpp:
|
||||||
lea eax, [eax*3]
|
lea eax, [eax*3]
|
||||||
putimage_init8bpp:
|
putimage_init8bpp:
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
align 16
|
||||||
putimage_get24bpp:
|
putimage_get24bpp:
|
||||||
mov eax, [esi]
|
mov eax, [esi]
|
||||||
add esi, 3
|
add esi, 3
|
||||||
ret 4
|
ret 4
|
||||||
|
align 16
|
||||||
putimage_get8bpp:
|
putimage_get8bpp:
|
||||||
movzx eax, byte [esi]
|
movzx eax, byte [esi]
|
||||||
push edx
|
push edx
|
||||||
@@ -4261,16 +4298,78 @@ putimage_get8bpp:
|
|||||||
inc esi
|
inc esi
|
||||||
ret 4
|
ret 4
|
||||||
|
|
||||||
|
putimage_init1bpp:
|
||||||
|
add eax, ecx
|
||||||
|
push ecx
|
||||||
|
add eax, 7
|
||||||
|
add ecx, 7
|
||||||
|
shr eax, 3
|
||||||
|
shr ecx, 3
|
||||||
|
sub eax, ecx
|
||||||
|
pop ecx
|
||||||
|
ret
|
||||||
|
align 16
|
||||||
|
putimage_get1bpp:
|
||||||
|
push edx
|
||||||
|
mov edx, [esp+8]
|
||||||
|
mov al, [edx]
|
||||||
|
adc al, al
|
||||||
|
jnz @f
|
||||||
|
lodsb
|
||||||
|
adc al, al
|
||||||
|
@@:
|
||||||
|
mov [edx], al
|
||||||
|
sbb eax, eax
|
||||||
|
and eax, [edx+8]
|
||||||
|
add eax, [edx+4]
|
||||||
|
pop edx
|
||||||
|
ret 4
|
||||||
|
|
||||||
|
putimage_init4bpp:
|
||||||
|
add eax, ecx
|
||||||
|
push ecx
|
||||||
|
add ecx, 1
|
||||||
|
add eax, 1
|
||||||
|
shr ecx, 1
|
||||||
|
shr eax, 1
|
||||||
|
sub eax, ecx
|
||||||
|
pop ecx
|
||||||
|
ret
|
||||||
|
align 16
|
||||||
|
putimage_get4bpp:
|
||||||
|
push edx
|
||||||
|
mov edx, [esp+8]
|
||||||
|
add byte [edx], 80h
|
||||||
|
jc @f
|
||||||
|
movzx eax, byte [edx+1]
|
||||||
|
mov edx, [edx+4]
|
||||||
|
and eax, 0x0F
|
||||||
|
mov eax, [edx+eax*4]
|
||||||
|
pop edx
|
||||||
|
ret 4
|
||||||
|
@@:
|
||||||
|
movzx eax, byte [esi]
|
||||||
|
add esi, 1
|
||||||
|
mov [edx+1], al
|
||||||
|
shr eax, 4
|
||||||
|
mov edx, [edx+4]
|
||||||
|
mov eax, [edx+eax*4]
|
||||||
|
pop edx
|
||||||
|
ret 4
|
||||||
|
|
||||||
putimage_init32bpp:
|
putimage_init32bpp:
|
||||||
shl eax, 2
|
shl eax, 2
|
||||||
ret
|
ret
|
||||||
|
align 16
|
||||||
putimage_get32bpp:
|
putimage_get32bpp:
|
||||||
lodsd
|
lodsd
|
||||||
ret 4
|
ret 4
|
||||||
|
|
||||||
putimage_init15bpp:
|
putimage_init15bpp:
|
||||||
|
putimage_init16bpp:
|
||||||
add eax, eax
|
add eax, eax
|
||||||
ret
|
ret
|
||||||
|
align 16
|
||||||
putimage_get15bpp:
|
putimage_get15bpp:
|
||||||
; 0RRRRRGGGGGBBBBB -> 00000000RRRRR000GGGGG000BBBBB000
|
; 0RRRRRGGGGGBBBBB -> 00000000RRRRR000GGGGG000BBBBB000
|
||||||
push ecx edx
|
push ecx edx
|
||||||
@@ -4289,9 +4388,7 @@ putimage_get15bpp:
|
|||||||
pop edx ecx
|
pop edx ecx
|
||||||
ret 4
|
ret 4
|
||||||
|
|
||||||
putimage_init16bpp:
|
align 16
|
||||||
add eax, eax
|
|
||||||
ret
|
|
||||||
putimage_get16bpp:
|
putimage_get16bpp:
|
||||||
; RRRRRGGGGGGBBBBB -> 00000000RRRRR000GGGGGG00BBBBB000
|
; RRRRRGGGGGGBBBBB -> 00000000RRRRR000GGGGGG00BBBBB000
|
||||||
push ecx edx
|
push ecx edx
|
||||||
|
@@ -878,6 +878,14 @@ vesa12_putimage:
|
|||||||
|
|
||||||
add edi,[BytesPerScanLine]
|
add edi,[BytesPerScanLine]
|
||||||
add esi,[esp+32]
|
add esi,[esp+32]
|
||||||
|
cmp ebp,putimage_get1bpp
|
||||||
|
jz .correct
|
||||||
|
cmp ebp,putimage_get4bpp
|
||||||
|
jnz @f
|
||||||
|
.correct:
|
||||||
|
mov eax,[esp+20]
|
||||||
|
mov byte[eax],80h
|
||||||
|
@@:
|
||||||
dec ebx
|
dec ebx
|
||||||
jnz newpi12
|
jnz newpi12
|
||||||
|
|
||||||
@@ -943,6 +951,14 @@ vesa12_putimage:
|
|||||||
pop edi
|
pop edi
|
||||||
|
|
||||||
add edi,[BytesPerScanLine]
|
add edi,[BytesPerScanLine]
|
||||||
|
cmp ebp,putimage_get1bpp
|
||||||
|
jz .correct
|
||||||
|
cmp ebp,putimage_get4bpp
|
||||||
|
jnz @f
|
||||||
|
.correct:
|
||||||
|
mov eax,[esp+20]
|
||||||
|
mov byte[eax],80h
|
||||||
|
@@:
|
||||||
dec ebx
|
dec ebx
|
||||||
jnz newpi3212
|
jnz newpi3212
|
||||||
|
|
||||||
|
@@ -165,7 +165,8 @@ vesa20_putimage:
|
|||||||
mov [putimg.real_sy], ebx
|
mov [putimg.real_sy], ebx
|
||||||
; line increment
|
; line increment
|
||||||
mov eax, [putimg.image_sx]
|
mov eax, [putimg.image_sx]
|
||||||
sub eax, [putimg.real_sx]
|
mov ecx, [putimg.real_sx]
|
||||||
|
sub eax, ecx
|
||||||
;; imul eax, [putimg.source_bpp]
|
;; imul eax, [putimg.source_bpp]
|
||||||
; lea eax, [eax + eax * 2]
|
; lea eax, [eax + eax * 2]
|
||||||
call esi
|
call esi
|
||||||
@@ -178,7 +179,6 @@ vesa20_putimage:
|
|||||||
mov [putimg.winmap_newline], eax
|
mov [putimg.winmap_newline], eax
|
||||||
; screen new line increment
|
; screen new line increment
|
||||||
mov eax, [BytesPerScanLine]
|
mov eax, [BytesPerScanLine]
|
||||||
mov ecx, [putimg.real_sx]
|
|
||||||
movzx ebx, byte [ScreenBPP]
|
movzx ebx, byte [ScreenBPP]
|
||||||
shr ebx, 3
|
shr ebx, 3
|
||||||
imul ecx, ebx
|
imul ecx, ebx
|
||||||
@@ -234,6 +234,14 @@ align 4
|
|||||||
add edx, [putimg.screen_newline] ;[BytesPerScanLine]
|
add edx, [putimg.screen_newline] ;[BytesPerScanLine]
|
||||||
add ebp, [putimg.winmap_newline] ;[Screen_Max_X]
|
add ebp, [putimg.winmap_newline] ;[Screen_Max_X]
|
||||||
; inc ebp
|
; inc ebp
|
||||||
|
cmp [putimg.ebp], putimage_get1bpp
|
||||||
|
jz .correct
|
||||||
|
cmp [putimg.ebp], putimage_get4bpp
|
||||||
|
jnz @f
|
||||||
|
.correct:
|
||||||
|
mov eax, [putimg.edi]
|
||||||
|
mov byte [eax], 80h
|
||||||
|
@@:
|
||||||
dec edi
|
dec edi
|
||||||
jnz .new_line
|
jnz .new_line
|
||||||
.finish:
|
.finish:
|
||||||
@@ -267,6 +275,14 @@ align 4
|
|||||||
add edx, [putimg.screen_newline] ;[BytesPerScanLine]
|
add edx, [putimg.screen_newline] ;[BytesPerScanLine]
|
||||||
add ebp, [putimg.winmap_newline] ;[Screen_Max_X]
|
add ebp, [putimg.winmap_newline] ;[Screen_Max_X]
|
||||||
; inc ebp
|
; inc ebp
|
||||||
|
cmp [putimg.ebp], putimage_get1bpp
|
||||||
|
jz .correct
|
||||||
|
cmp [putimg.ebp], putimage_get4bpp
|
||||||
|
jnz @f
|
||||||
|
.correct:
|
||||||
|
mov eax, [putimg.edi]
|
||||||
|
mov byte [eax], 80h
|
||||||
|
@@:
|
||||||
dec edi
|
dec edi
|
||||||
jnz .new_line
|
jnz .new_line
|
||||||
.finish:
|
.finish:
|
||||||
|
Reference in New Issue
Block a user