Rev 3499 | Rev 7735 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3499 | Rev 3503 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | ;;================================================================================================;; |
1 | ;;================================================================================================;; |
2 | ;;//// tiff.asm //// (c) dunkaist, 2011-2012 /////////////////////////////////////////////////////;; |
2 | ;;//// tiff.asm //// (c) dunkaist, 2011-2013 /////////////////////////////////////////////////////;; |
3 | ;;================================================================================================;; |
3 | ;;================================================================================================;; |
4 | ;; ;; |
4 | ;; ;; |
5 | ;; This file is part of Common development libraries (Libs-Dev). ;; |
5 | ;; This file is part of Common development libraries (Libs-Dev). ;; |
6 | ;; ;; |
6 | ;; ;; |
7 | ;; Libs-Dev is free software: you can redistribute it and/or modify it under the terms of the GNU ;; |
7 | ;; Libs-Dev is free software: you can redistribute it and/or modify it under the terms of the GNU ;; |
Line 205... | Line 205... | ||
205 | je .bpp1 |
205 | je .bpp1 |
206 | cmp ecx, Image.bpp8g |
206 | cmp ecx, Image.bpp8g |
207 | je .bpp8g |
207 | je .bpp8g |
208 | cmp ecx, Image.bpp8a |
208 | cmp ecx, Image.bpp8a |
209 | je .bpp8a |
209 | je .bpp8a |
210 | ; cmp ecx, Image.bpp2 |
210 | cmp ecx, Image.bpp2i |
211 | ; je .bpp2 |
211 | je .bpp2i |
212 | ; cmp ecx, Image.bpp4 |
212 | cmp ecx, Image.bpp4i |
213 | ; je .bpp4 |
213 | je .bpp4i |
214 | jmp .quit |
214 | jmp .quit |
215 | ;error report!! |
215 | ;error report!! |
Line 216... | Line 216... | ||
216 | 216 | ||
217 | .bpp1: |
217 | .bpp1: |
218 | .bpp1.palette: |
218 | .bpp1.palette: |
219 | mov edi, [edx+Image.Palette] |
219 | mov edi, [edx+Image.Palette] |
220 | cmp [ebx + tiff_extra.photometric], TIFF.PHOTOMETRIC.BLACK_IS_ZERO |
220 | cmp [ebx + tiff_extra.photometric], TIFF.PHOTOMETRIC.BLACK_IS_ZERO |
221 | jne .bpp1.white_is_zero |
221 | jne .bpp1.white_is_zero |
222 | .bpp1.black_is_zero: |
222 | .bpp1.black_is_zero: |
223 | mov [edi], dword 0x00000000 |
223 | mov [edi], dword 0xff000000 |
224 | mov [edi + 4], dword 0x00ffffff |
224 | mov [edi + 4], dword 0xffffffff |
225 | jmp .common |
225 | jmp .common |
226 | .bpp1.white_is_zero: |
226 | .bpp1.white_is_zero: |
227 | mov [edi], dword 0x00ffffff |
227 | mov [edi], dword 0xffffffff |
228 | mov [edi + 4], dword 0x00000000 |
228 | mov [edi + 4], dword 0xff000000 |
Line 229... | Line 229... | ||
229 | jmp .common |
229 | jmp .common |
- | 230 | ||
230 | 231 | .bpp2i: |
|
Line 231... | Line 232... | ||
231 | .bpp2: |
232 | stdcall tiff._.get_palette, 1 SHL 2, [_endianness] |
- | 233 | jmp .common |
|
232 | jmp .common |
234 | |
Line 233... | Line 235... | ||
233 | 235 | .bpp4i: |
|
234 | .bpp4: |
236 | stdcall tiff._.get_palette, 1 SHL 4, [_endianness] |
235 | jmp .common |
- | |
236 | - | ||
237 | .bpp8i: |
- | |
238 | mov esi, [ebx + tiff_extra.palette] |
- | |
239 | mov ah, 2 |
- | |
240 | .bpp8.channel: |
- | |
241 | mov edi, eax |
- | |
242 | and edi, 0x0000ff00 |
- | |
243 | shr edi, 8 |
- | |
244 | add edi, [edx + Image.Palette] |
- | |
245 | mov ecx, 256 |
- | |
246 | @@: |
- | |
247 | lodsb |
- | |
248 | stosb |
- | |
249 | lodsb |
- | |
250 | add edi, 3 |
- | |
251 | dec ecx |
237 | jmp .common |
252 | jnz @b |
238 | |
253 | dec ah |
239 | .bpp8i: |
Line 254... | Line 240... | ||
254 | jns .bpp8.channel |
240 | stdcall tiff._.get_palette, 1 SHL 8, [_endianness] |
Line 632... | Line 618... | ||
632 | jne @f |
618 | jne @f |
633 | lodsd |
619 | lodsd |
634 | xor eax, eax |
620 | xor eax, eax |
635 | lodsw_ |
621 | lodsw_ |
636 | mov [ebx + tiff_extra.planar_configuration], eax |
622 | mov [ebx + tiff_extra.planar_configuration], eax |
637 | ;debug_print 'planar_configuration: ' |
- | |
638 | ;debug_print_dec eax |
- | |
639 | ;newline |
- | |
640 | lodsw |
623 | lodsw |
641 | @@: |
624 | @@: |
642 | jmp .quit |
625 | jmp .quit |
Line 674... | Line 657... | ||
674 | proc tiff._.define_image_type |
657 | proc tiff._.define_image_type |
Line 675... | Line 658... | ||
675 | 658 | ||
Line 676... | Line 659... | ||
676 | xor eax, eax |
659 | xor eax, eax |
677 | 660 | ||
678 | cmp [ebx + tiff_extra.photometric], TIFF.PHOTOMETRIC.RGB |
661 | cmp [ebx + tiff_extra.photometric], TIFF.PHOTOMETRIC.RGB |
679 | jne .not_full_color |
662 | jne .palette_bilevel_grayscale |
680 | mov eax, -3 |
663 | mov eax, -3 |
681 | add eax, [ebx + tiff_extra.samples_per_pixel] |
664 | add eax, [ebx + tiff_extra.samples_per_pixel] |
682 | mov [ebx + tiff_extra.extra_samples_number], eax |
665 | mov [ebx + tiff_extra.extra_samples_number], eax |
Line 689... | Line 672... | ||
689 | jns @f |
672 | jns @f |
690 | mov eax, Image.bpp32 |
673 | mov eax, Image.bpp32 |
691 | ; mov [ebx + tiff_extra.extra_samples_number], 0 |
674 | ; mov [ebx + tiff_extra.extra_samples_number], 0 |
692 | jmp .quit |
675 | jmp .quit |
693 | @@: |
676 | @@: |
694 | .not_full_color: ; grayscale, indexed, bilevel |
- | |
695 | cmp [ebx + tiff_extra.bits_per_sample], 1 |
- | |
696 | jg .not_bilevel |
- | |
697 | mov eax, Image.bpp1 |
- | |
698 | jmp .quit |
- | |
699 | .not_bilevel: ; grayscale, indexed |
677 | .palette_bilevel_grayscale: |
700 | cmp [ebx + tiff_extra.palette], 0 |
678 | cmp [ebx + tiff_extra.palette], 0 |
701 | je .without_palette |
679 | je .bilevel_grayscale |
- | 680 | cmp [ebx + tiff_extra.bits_per_sample], 2 |
|
- | 681 | jg @f |
|
- | 682 | mov eax, Image.bpp2i |
|
- | 683 | jmp .quit |
|
- | 684 | @@: |
|
702 | cmp [ebx + tiff_extra.bits_per_sample], 4 |
685 | cmp [ebx + tiff_extra.bits_per_sample], 4 |
703 | jne @f |
686 | jg @f |
704 | ; mov eax, Image.bpp4 |
687 | mov eax, Image.bpp4i |
705 | jmp .quit |
688 | jmp .quit |
706 | @@: |
689 | @@: |
707 | cmp [ebx + tiff_extra.bits_per_sample], 8 |
690 | cmp [ebx + tiff_extra.bits_per_sample], 8 |
708 | jne @f |
691 | jne @f |
709 | mov eax, Image.bpp8i |
692 | mov eax, Image.bpp8i |
710 | jmp .quit |
693 | jmp .quit |
711 | @@: |
694 | @@: |
712 | jmp .quit |
695 | jmp .quit |
713 | .without_palette: ; grayscale |
696 | .bilevel_grayscale: |
- | 697 | cmp [ebx + tiff_extra.bits_per_sample], 1 |
|
- | 698 | jg .grayscale |
|
714 | mov eax, -1 |
699 | mov eax, Image.bpp1 |
- | 700 | jmp .quit |
|
- | 701 | .grayscale: |
|
715 | add eax, [ebx + tiff_extra.samples_per_pixel] |
702 | cmp [ebx + tiff_extra.bits_per_sample], 8 |
- | 703 | jne .quit |
|
716 | mov [ebx + tiff_extra.extra_samples_number], eax |
704 | cmp [ebx + tiff_extra.samples_per_pixel], 1 |
717 | dec eax |
- | |
718 | jns @f |
705 | jne @f |
719 | mov eax, Image.bpp8g |
706 | mov eax, Image.bpp8g |
720 | jmp .quit |
707 | jmp .quit |
721 | @@: |
708 | @@: |
722 | mov eax, Image.bpp8a |
709 | mov eax, Image.bpp8a |
723 | jmp .quit |
710 | jmp .quit |
Line 1258... | Line 1245... | ||
1258 | invoke mem.free, eax |
1245 | invoke mem.free, eax |
1259 | popad |
1246 | popad |
1260 | ret |
1247 | ret |
1261 | endp |
1248 | endp |
Line -... | Line 1249... | ||
- | 1249 | ||
- | 1250 | ||
- | 1251 | proc tiff._.get_palette _num_colors, _endianness |
|
- | 1252 | mov esi, [ebx + tiff_extra.palette] |
|
- | 1253 | push ebx |
|
- | 1254 | mov ebx, 2 |
|
- | 1255 | .bpp2.channel: |
|
- | 1256 | mov edi, ebx |
|
- | 1257 | add edi, [edx + Image.Palette] |
|
- | 1258 | mov ecx, [_num_colors] |
|
- | 1259 | @@: |
|
- | 1260 | lodsw_ |
|
- | 1261 | shr eax, 8 |
|
- | 1262 | stosb |
|
- | 1263 | add edi, 3 |
|
- | 1264 | dec ecx |
|
- | 1265 | jnz @b |
|
- | 1266 | dec ebx |
|
- | 1267 | jns .bpp2.channel |
|
- | 1268 | pop ebx |
|
- | 1269 | ret |
|
- | 1270 | endp |
|
1262 | 1271 | ||
1263 | ;;================================================================================================;; |
1272 | ;;================================================================================================;; |
1264 | ;;////////////////////////////////////////////////////////////////////////////////////////////////;; |
1273 | ;;////////////////////////////////////////////////////////////////////////////////////////////////;; |
1265 | ;;================================================================================================;; |
1274 | ;;================================================================================================;; |
1266 | ;! Below is private data you should never use directly from your code ;; |
1275 | ;! Below is private data you should never use directly from your code ;; |