Subversion Repositories Kolibri OS

Rev

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                             ;;