summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2017-03-15 13:58:18 +0000
committerCaolán McNamara <caolanm@redhat.com>2017-03-16 08:55:31 +0000
commitceb53ad9f34ae05d09f61845d581546eac0c6d60 (patch)
tree1fc754e985577db5fcd827706da01aafbe558f68 /vcl
parent6cba562d96a29a72d88f094f5258a1f9979df9b6 (diff)
can set the out_color_space after jpeg_start_decompress
Change-Id: I8432f5147a3e73f0a4eafefceab7fbf715f58acf Reviewed-on: https://gerrit.libreoffice.org/35228 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'vcl')
-rw-r--r--vcl/source/filter/jpeg/jpegc.cxx29
1 files changed, 15 insertions, 14 deletions
diff --git a/vcl/source/filter/jpeg/jpegc.cxx b/vcl/source/filter/jpeg/jpegc.cxx
index 1eb290f3d2ff..8b5b483cf946 100644
--- a/vcl/source/filter/jpeg/jpegc.cxx
+++ b/vcl/source/filter/jpeg/jpegc.cxx
@@ -93,20 +93,6 @@ void ReadJPEG( JPEGReader* pJPEGReader, void* pInputStream, long* pLines,
cinfo.output_gamma = 1.0;
cinfo.raw_data_out = FALSE;
cinfo.quantize_colors = FALSE;
- ScanlineFormat eScanlineFormat = ScanlineFormat::N24BitTcRgb;
- int nPixelSize = 3;
- if ( cinfo.jpeg_color_space == JCS_YCbCr )
- cinfo.out_color_space = JCS_RGB;
- else if ( cinfo.jpeg_color_space == JCS_YCCK )
- cinfo.out_color_space = JCS_CMYK;
-
- if (cinfo.out_color_space != JCS_CMYK &&
- cinfo.out_color_space != JCS_GRAYSCALE &&
- cinfo.out_color_space != JCS_RGB)
- {
- SAL_WARN("vcl.filter", "jpg with unknown out color space, forcing to rgb");
- cinfo.out_color_space = JCS_RGB;
- }
/* change scale for preview import */
long nPreviewWidth = previewSize.Width();
@@ -171,6 +157,21 @@ void ReadJPEG( JPEGReader* pJPEGReader, void* pInputStream, long* pLines,
if (pAccess)
{
+ ScanlineFormat eScanlineFormat = ScanlineFormat::N24BitTcRgb;
+ int nPixelSize = 3;
+ if ( cinfo.jpeg_color_space == JCS_YCbCr )
+ cinfo.out_color_space = JCS_RGB;
+ else if ( cinfo.jpeg_color_space == JCS_YCCK )
+ cinfo.out_color_space = JCS_CMYK;
+
+ if (cinfo.out_color_space != JCS_CMYK &&
+ cinfo.out_color_space != JCS_GRAYSCALE &&
+ cinfo.out_color_space != JCS_RGB)
+ {
+ SAL_WARN("vcl.filter", "jpg with unknown out color space, forcing to rgb");
+ cinfo.out_color_space = JCS_RGB;
+ }
+
JSAMPLE* aRangeLimit = cinfo.sample_range_limit;
std::vector<sal_uInt8> pScanLineBuffer(nWidth * (bGray ? 1 : nPixelSize));