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