0,0 → 1,56 |
;----------------------------------------------------------- |
;-------analizing picture to palette------------------------ |
;----------------------------------------------------------- |
analizing_picture_to_palette: |
|
mov eax,[Picture_SizeX] |
mov ebx,[Picture_SizeY] |
imul eax,ebx |
mov ecx,eax |
mov edx,[PointerToPicture] |
mov esi,1 ;counter colors in palette |
|
;put firs color of picture how one color in palette |
mov ebp,[PointerToPalette] |
mov eax,[edx] |
and eax,0xffffff |
mov [ebp],eax |
|
analizing_to_palette: |
mov eax,[edx] |
and eax,0xffffff |
|
mov edi,esi |
mov ebp,[PointerToPalette] |
next_color_in_palette: |
mov ebx,[ebp] |
and ebx,0xffffff |
cmp ebx,eax ;this is color have in palette |
je exit_loop_palette |
add ebp,4 |
dec edi |
jnz next_color_in_palette |
|
inc esi |
cmp esi,256 ;256 colors |
ja more_than_256_colors |
mov ebp,[PointerToPalette] |
mov ebx,esi |
dec ebx |
shl ebx,2 |
add ebp,ebx |
mov [ebp],ax |
shr eax,16 |
mov [ebp+2],al |
|
exit_loop_palette: |
|
add edx,3 |
dec ecx |
jnz analizing_to_palette |
|
|
more_than_256_colors: |
mov eax,esi |
|
ret |