OLD | NEW |
1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
6 | 6 |
7 #include "../../../include/fxcodec/fx_codec.h" | 7 #include "../../../include/fxcodec/fx_codec.h" |
8 #include "codec_int.h" | 8 #include "codec_int.h" |
9 #include "../fx_libopenjpeg/libopenjpeg20/openjpeg.h" | 9 #include "../fx_libopenjpeg/libopenjpeg20/openjpeg.h" |
10 #include "../lcms2/include/fx_lcms2.h" | 10 #include "../lcms2/include/fx_lcms2.h" |
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
159 upb = (1 << i) - 1; | 159 upb = (1 << i) - 1; |
160 maxw = (int)img->comps[0].w; | 160 maxw = (int)img->comps[0].w; |
161 maxh = (int)img->comps[0].h; | 161 maxh = (int)img->comps[0].h; |
162 max = maxw * maxh; | 162 max = maxw * maxh; |
163 y = img->comps[0].data; | 163 y = img->comps[0].data; |
164 cb = img->comps[1].data; | 164 cb = img->comps[1].data; |
165 cr = img->comps[2].data; | 165 cr = img->comps[2].data; |
166 d0 = r = FX_Alloc(int, (size_t)max); | 166 d0 = r = FX_Alloc(int, (size_t)max); |
167 d1 = g = FX_Alloc(int, (size_t)max); | 167 d1 = g = FX_Alloc(int, (size_t)max); |
168 d2 = b = FX_Alloc(int, (size_t)max); | 168 d2 = b = FX_Alloc(int, (size_t)max); |
169 for(i = 0; i < maxh; ++i) { | 169 for(i = 0; i < maxh; ++i) |
170 for (j = 0; j < maxw; ++j, ++y, ++r, ++g, ++b) { | 170 { |
| 171 for (j = 0; (OPJ_UINT32)j < (maxw & ~(OPJ_UINT32)1); j += 2) |
| 172 { |
171 sycc_to_rgb(offset, upb, *y, *cb, *cr, r, g, b); | 173 sycc_to_rgb(offset, upb, *y, *cb, *cr, r, g, b); |
172 if (j % 2){ | 174 ++y; ++r; ++g; ++b; |
173 ++cb; | 175 sycc_to_rgb(offset, upb, *y, *cb, *cr, r, g, b); |
174 ++cr; | 176 ++y; ++r; ++g; ++b; ++cb; ++cr; |
175 } | 177 } |
| 178 if (j < maxw) |
| 179 { |
| 180 sycc_to_rgb(offset, upb, *y, *cb, *cr, r, g, b); |
| 181 ++y; ++r; ++g; ++b; ++cb; ++cr; |
176 } | 182 } |
177 } | 183 } |
178 FX_Free(img->comps[0].data); | 184 FX_Free(img->comps[0].data); |
179 img->comps[0].data = d0; | 185 img->comps[0].data = d0; |
180 FX_Free(img->comps[1].data); | 186 FX_Free(img->comps[1].data); |
181 img->comps[1].data = d1; | 187 img->comps[1].data = d1; |
182 FX_Free(img->comps[2].data); | 188 FX_Free(img->comps[2].data); |
183 img->comps[2].data = d2; | 189 img->comps[2].data = d2; |
184 img->comps[1].w = maxw; | 190 img->comps[1].w = maxw; |
185 img->comps[1].h = maxh; | 191 img->comps[1].h = maxh; |
(...skipping 19 matching lines...) Expand all Loading... |
205 upb = (1 << i) - 1; | 211 upb = (1 << i) - 1; |
206 maxw = (int)img->comps[0].w; | 212 maxw = (int)img->comps[0].w; |
207 maxh = (int)img->comps[0].h; | 213 maxh = (int)img->comps[0].h; |
208 max = maxw * maxh; | 214 max = maxw * maxh; |
209 y = img->comps[0].data; | 215 y = img->comps[0].data; |
210 cb = img->comps[1].data; | 216 cb = img->comps[1].data; |
211 cr = img->comps[2].data; | 217 cr = img->comps[2].data; |
212 d0 = r = FX_Alloc(int, (size_t)max); | 218 d0 = r = FX_Alloc(int, (size_t)max); |
213 d1 = g = FX_Alloc(int, (size_t)max); | 219 d1 = g = FX_Alloc(int, (size_t)max); |
214 d2 = b = FX_Alloc(int, (size_t)max); | 220 d2 = b = FX_Alloc(int, (size_t)max); |
215 for(i = 0; i < maxh; i += 2) { | 221 for (i = 0; (OPJ_UINT32)i < (maxh & ~(OPJ_UINT32)1); i += 2) |
| 222 { |
216 ny = y + maxw; | 223 ny = y + maxw; |
217 nr = r + maxw; | 224 nr = r + maxw; |
218 ng = g + maxw; | 225 ng = g + maxw; |
219 nb = b + maxw; | 226 nb = b + maxw; |
220 for(j = 0; j < maxw; j += 2) { | 227 for (j = 0; (OPJ_UINT32)j < (maxw & ~(OPJ_UINT32)1); j += 2) |
| 228 { |
221 sycc_to_rgb(offset, upb, *y, *cb, *cr, r, g, b); | 229 sycc_to_rgb(offset, upb, *y, *cb, *cr, r, g, b); |
222 ++y; | 230 ++y; ++r; ++g; ++b; |
223 ++r; | |
224 ++g; | |
225 ++b; | |
226 sycc_to_rgb(offset, upb, *y, *cb, *cr, r, g, b); | 231 sycc_to_rgb(offset, upb, *y, *cb, *cr, r, g, b); |
227 ++y; | 232 ++y; ++r; ++g; ++b; |
228 ++r; | |
229 ++g; | |
230 ++b; | |
231 sycc_to_rgb(offset, upb, *ny, *cb, *cr, nr, ng, nb); | 233 sycc_to_rgb(offset, upb, *ny, *cb, *cr, nr, ng, nb); |
232 ++ny; | 234 ++ny; ++nr; ++ng; ++nb; |
233 ++nr; | |
234 ++ng; | |
235 ++nb; | |
236 sycc_to_rgb(offset, upb, *ny, *cb, *cr, nr, ng, nb); | 235 sycc_to_rgb(offset, upb, *ny, *cb, *cr, nr, ng, nb); |
237 ++ny; | 236 ++ny; ++nr; ++ng; ++nb; ++cb; ++cr; |
238 ++nr; | |
239 ++ng; | |
240 ++nb; | |
241 ++cb; | |
242 ++cr; | |
243 } | 237 } |
244 y += maxw; | 238 if (j < maxw) |
245 r += maxw; | 239 { |
246 g += maxw; | 240 sycc_to_rgb(offset, upb, *y, *cb, *cr, r, g, b); |
247 b += maxw; | 241 ++y; ++r; ++g; ++b; |
| 242 sycc_to_rgb(offset, upb, *ny, *cb, *cr, nr, ng, nb); |
| 243 ++ny; ++nr; ++ng; ++nb; ++cb; ++cr; |
| 244 } |
| 245 y += maxw; r += maxw; g += maxw; b += maxw; |
248 } | 246 } |
| 247 if (i < maxh) |
| 248 { |
| 249 for (j = 0; (OPJ_UINT32)j < (maxw & ~(OPJ_UINT32)1); j += 2) |
| 250 { |
| 251 sycc_to_rgb(offset, upb, *y, *cb, *cr, r, g, b); |
| 252 ++y; ++r; ++g; ++b; |
| 253 sycc_to_rgb(offset, upb, *y, *cb, *cr, r, g, b); |
| 254 ++y; ++r; ++g; ++b; ++cb; ++cr; |
| 255 } |
| 256 if (j < maxw) |
| 257 { |
| 258 sycc_to_rgb(offset, upb, *y, *cb, *cr, r, g, b); |
| 259 } |
| 260 } |
| 261 |
249 FX_Free(img->comps[0].data); | 262 FX_Free(img->comps[0].data); |
250 img->comps[0].data = d0; | 263 img->comps[0].data = d0; |
251 FX_Free(img->comps[1].data); | 264 FX_Free(img->comps[1].data); |
252 img->comps[1].data = d1; | 265 img->comps[1].data = d1; |
253 FX_Free(img->comps[2].data); | 266 FX_Free(img->comps[2].data); |
254 img->comps[2].data = d2; | 267 img->comps[2].data = d2; |
255 img->comps[1].w = maxw; | 268 img->comps[1].w = maxw; |
256 img->comps[1].h = maxh; | 269 img->comps[1].h = maxh; |
257 img->comps[2].w = maxw; | 270 img->comps[2].w = maxw; |
258 img->comps[2].h = maxh; | 271 img->comps[2].h = maxh; |
(...skipping 513 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
772 FX_BOOL CCodec_JpxModule::Decode(void* ctx, FX_LPBYTE dest_data, int pitch, FX_B
OOL bTranslateColor, FX_LPBYTE offsets) | 785 FX_BOOL CCodec_JpxModule::Decode(void* ctx, FX_LPBYTE dest_data, int pitch, FX_B
OOL bTranslateColor, FX_LPBYTE offsets) |
773 { | 786 { |
774 CJPX_Decoder* pDecoder = (CJPX_Decoder*)ctx; | 787 CJPX_Decoder* pDecoder = (CJPX_Decoder*)ctx; |
775 return pDecoder->Decode(dest_data, pitch, bTranslateColor, offsets); | 788 return pDecoder->Decode(dest_data, pitch, bTranslateColor, offsets); |
776 } | 789 } |
777 void CCodec_JpxModule::DestroyDecoder(void* ctx) | 790 void CCodec_JpxModule::DestroyDecoder(void* ctx) |
778 { | 791 { |
779 CJPX_Decoder* pDecoder = (CJPX_Decoder*)ctx; | 792 CJPX_Decoder* pDecoder = (CJPX_Decoder*)ctx; |
780 delete pDecoder; | 793 delete pDecoder; |
781 } | 794 } |
OLD | NEW |