Removed
Link Here
|
1 |
diff --git a/libtiff/tif_dir.c b/libtiff/tif_dir.c |
2 |
index 2ccaf44..cbf2b69 100644 |
3 |
--- libtiff/tif_dir.c |
4 |
+++ libtiff/tif_dir.c |
5 |
@@ -1067,6 +1067,9 @@ _TIFFVGetField(TIFF* tif, uint32 tag, va_list ap) |
6 |
if (td->td_samplesperpixel - td->td_extrasamples > 1) { |
7 |
*va_arg(ap, uint16**) = td->td_transferfunction[1]; |
8 |
*va_arg(ap, uint16**) = td->td_transferfunction[2]; |
9 |
+ } else { |
10 |
+ *va_arg(ap, uint16**) = NULL; |
11 |
+ *va_arg(ap, uint16**) = NULL; |
12 |
} |
13 |
break; |
14 |
case TIFFTAG_REFERENCEBLACKWHITE: |
15 |
diff --git a/tools/tiff2pdf.c b/tools/tiff2pdf.c |
16 |
index d1a9b09..484776c 100644 |
17 |
--- tools/tiff2pdf.c |
18 |
+++ tools/tiff2pdf.c |
19 |
@@ -237,7 +237,7 @@ typedef struct { |
20 |
float tiff_whitechromaticities[2]; |
21 |
float tiff_primarychromaticities[6]; |
22 |
float tiff_referenceblackwhite[2]; |
23 |
- float* tiff_transferfunction[3]; |
24 |
+ uint16* tiff_transferfunction[3]; |
25 |
int pdf_image_interpolate; /* 0 (default) : do not interpolate, |
26 |
1 : interpolate */ |
27 |
uint16 tiff_transferfunctioncount; |
28 |
@@ -1047,6 +1047,8 @@ void t2p_read_tiff_init(T2P* t2p, TIFF* input){ |
29 |
uint16 pagen=0; |
30 |
uint16 paged=0; |
31 |
uint16 xuint16=0; |
32 |
+ uint16 tiff_transferfunctioncount=0; |
33 |
+ uint16* tiff_transferfunction[3]; |
34 |
|
35 |
directorycount=TIFFNumberOfDirectories(input); |
36 |
t2p->tiff_pages = (T2P_PAGE*) _TIFFmalloc(TIFFSafeMultiply(tmsize_t,directorycount,sizeof(T2P_PAGE))); |
37 |
@@ -1147,26 +1149,48 @@ void t2p_read_tiff_init(T2P* t2p, TIFF* input){ |
38 |
} |
39 |
#endif |
40 |
if (TIFFGetField(input, TIFFTAG_TRANSFERFUNCTION, |
41 |
- &(t2p->tiff_transferfunction[0]), |
42 |
- &(t2p->tiff_transferfunction[1]), |
43 |
- &(t2p->tiff_transferfunction[2]))) { |
44 |
- if((t2p->tiff_transferfunction[1] != (float*) NULL) && |
45 |
- (t2p->tiff_transferfunction[2] != (float*) NULL) && |
46 |
- (t2p->tiff_transferfunction[1] != |
47 |
- t2p->tiff_transferfunction[0])) { |
48 |
- t2p->tiff_transferfunctioncount = 3; |
49 |
- t2p->tiff_pages[i].page_extra += 4; |
50 |
- t2p->pdf_xrefcount += 4; |
51 |
- } else { |
52 |
- t2p->tiff_transferfunctioncount = 1; |
53 |
- t2p->tiff_pages[i].page_extra += 2; |
54 |
- t2p->pdf_xrefcount += 2; |
55 |
- } |
56 |
- if(t2p->pdf_minorversion < 2) |
57 |
- t2p->pdf_minorversion = 2; |
58 |
+ &(tiff_transferfunction[0]), |
59 |
+ &(tiff_transferfunction[1]), |
60 |
+ &(tiff_transferfunction[2]))) { |
61 |
+ |
62 |
+ if((tiff_transferfunction[1] != (uint16*) NULL) && |
63 |
+ (tiff_transferfunction[2] != (uint16*) NULL) |
64 |
+ ) { |
65 |
+ tiff_transferfunctioncount=3; |
66 |
+ } else { |
67 |
+ tiff_transferfunctioncount=1; |
68 |
+ } |
69 |
} else { |
70 |
- t2p->tiff_transferfunctioncount=0; |
71 |
+ tiff_transferfunctioncount=0; |
72 |
} |
73 |
+ |
74 |
+ if (i > 0){ |
75 |
+ if (tiff_transferfunctioncount != t2p->tiff_transferfunctioncount){ |
76 |
+ TIFFError( |
77 |
+ TIFF2PDF_MODULE, |
78 |
+ "Different transfer function on page %d", |
79 |
+ i); |
80 |
+ t2p->t2p_error = T2P_ERR_ERROR; |
81 |
+ return; |
82 |
+ } |
83 |
+ } |
84 |
+ |
85 |
+ t2p->tiff_transferfunctioncount = tiff_transferfunctioncount; |
86 |
+ t2p->tiff_transferfunction[0] = tiff_transferfunction[0]; |
87 |
+ t2p->tiff_transferfunction[1] = tiff_transferfunction[1]; |
88 |
+ t2p->tiff_transferfunction[2] = tiff_transferfunction[2]; |
89 |
+ if(tiff_transferfunctioncount == 3){ |
90 |
+ t2p->tiff_pages[i].page_extra += 4; |
91 |
+ t2p->pdf_xrefcount += 4; |
92 |
+ if(t2p->pdf_minorversion < 2) |
93 |
+ t2p->pdf_minorversion = 2; |
94 |
+ } else if (tiff_transferfunctioncount == 1){ |
95 |
+ t2p->tiff_pages[i].page_extra += 2; |
96 |
+ t2p->pdf_xrefcount += 2; |
97 |
+ if(t2p->pdf_minorversion < 2) |
98 |
+ t2p->pdf_minorversion = 2; |
99 |
+ } |
100 |
+ |
101 |
if( TIFFGetField( |
102 |
input, |
103 |
TIFFTAG_ICCPROFILE, |
104 |
@@ -1827,10 +1851,9 @@ void t2p_read_tiff_data(T2P* t2p, TIFF* input){ |
105 |
&(t2p->tiff_transferfunction[0]), |
106 |
&(t2p->tiff_transferfunction[1]), |
107 |
&(t2p->tiff_transferfunction[2]))) { |
108 |
- if((t2p->tiff_transferfunction[1] != (float*) NULL) && |
109 |
- (t2p->tiff_transferfunction[2] != (float*) NULL) && |
110 |
- (t2p->tiff_transferfunction[1] != |
111 |
- t2p->tiff_transferfunction[0])) { |
112 |
+ if((t2p->tiff_transferfunction[1] != (uint16*) NULL) && |
113 |
+ (t2p->tiff_transferfunction[2] != (uint16*) NULL) |
114 |
+ ) { |
115 |
t2p->tiff_transferfunctioncount=3; |
116 |
} else { |
117 |
t2p->tiff_transferfunctioncount=1; |