OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) Research In Motion Limited 2009-2010. All rights reserved. | 2 * Copyright (C) Research In Motion Limited 2009-2010. All rights reserved. |
3 * | 3 * |
4 * This library is free software; you can redistribute it and/or | 4 * This library is free software; you can redistribute it and/or |
5 * modify it under the terms of the GNU Library General Public | 5 * modify it under the terms of the GNU Library General Public |
6 * License as published by the Free Software Foundation; either | 6 * License as published by the Free Software Foundation; either |
7 * version 2 of the License, or (at your option) any later version. | 7 * version 2 of the License, or (at your option) any later version. |
8 * | 8 * |
9 * This library is distributed in the hope that it will be useful, | 9 * This library is distributed in the hope that it will be useful, |
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
12 * Library General Public License for more details. | 12 * Library General Public License for more details. |
13 * | 13 * |
14 * You should have received a copy of the GNU Library General Public License | 14 * You should have received a copy of the GNU Library General Public License |
15 * along with this library; see the file COPYING.LIB. If not, write to | 15 * along with this library; see the file COPYING.LIB. If not, write to |
16 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | 16 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
17 * Boston, MA 02110-1301, USA. | 17 * Boston, MA 02110-1301, USA. |
18 * | 18 * |
19 */ | 19 */ |
20 | 20 |
21 #include "platform/image-decoders/ImageDecoder.h" | 21 #include "platform/image-decoders/ImageDecoder.h" |
22 | 22 |
23 #include "platform/PlatformInstrumentation.h" | 23 #include "platform/PlatformInstrumentation.h" |
| 24 #include "platform/RuntimeEnabledFeatures.h" |
24 #include "platform/graphics/BitmapImageMetrics.h" | 25 #include "platform/graphics/BitmapImageMetrics.h" |
25 #include "platform/image-decoders/bmp/BMPImageDecoder.h" | 26 #include "platform/image-decoders/bmp/BMPImageDecoder.h" |
26 #include "platform/image-decoders/gif/GIFImageDecoder.h" | 27 #include "platform/image-decoders/gif/GIFImageDecoder.h" |
27 #include "platform/image-decoders/ico/ICOImageDecoder.h" | 28 #include "platform/image-decoders/ico/ICOImageDecoder.h" |
28 #include "platform/image-decoders/jpeg/JPEGImageDecoder.h" | 29 #include "platform/image-decoders/jpeg/JPEGImageDecoder.h" |
29 #include "platform/image-decoders/png/PNGImageDecoder.h" | 30 #include "platform/image-decoders/png/PNGImageDecoder.h" |
30 #include "platform/image-decoders/webp/WEBPImageDecoder.h" | 31 #include "platform/image-decoders/webp/WEBPImageDecoder.h" |
31 #include "wtf/PtrUtil.h" | 32 #include "wtf/PtrUtil.h" |
32 #include <memory> | 33 #include <memory> |
33 | 34 |
(...skipping 323 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
357 } | 358 } |
358 | 359 |
359 void ImageDecoder::setColorProfileAndComputeTransform(const char* iccData, unsig
ned iccLength, bool hasAlpha, bool useSRGB) | 360 void ImageDecoder::setColorProfileAndComputeTransform(const char* iccData, unsig
ned iccLength, bool hasAlpha, bool useSRGB) |
360 { | 361 { |
361 // Sub-classes should not call this if they were instructed to ignore embedd
ed color profiles. | 362 // Sub-classes should not call this if they were instructed to ignore embedd
ed color profiles. |
362 DCHECK(!m_ignoreGammaAndColorProfile); | 363 DCHECK(!m_ignoreGammaAndColorProfile); |
363 | 364 |
364 m_colorProfile.assign(iccData, iccLength); | 365 m_colorProfile.assign(iccData, iccLength); |
365 m_hasColorProfile = true; | 366 m_hasColorProfile = true; |
366 | 367 |
| 368 // With color correct rendering, we use Skia instead of QCMS to color correc
t images. |
| 369 if (RuntimeEnabledFeatures::colorCorrectRenderingEnabled()) |
| 370 return; |
| 371 |
367 #if USE(QCMSLIB) | 372 #if USE(QCMSLIB) |
368 m_sourceToOutputDeviceColorTransform.reset(); | 373 m_sourceToOutputDeviceColorTransform.reset(); |
369 | 374 |
370 // Create the input profile | 375 // Create the input profile |
371 QCMSProfileUniquePtr inputProfile; | 376 QCMSProfileUniquePtr inputProfile; |
372 if (useSRGB) { | 377 if (useSRGB) { |
373 inputProfile.reset(qcms_profile_sRGB()); | 378 inputProfile.reset(qcms_profile_sRGB()); |
374 } else { | 379 } else { |
375 // Only accept RGB color profiles from input class devices. | 380 // Only accept RGB color profiles from input class devices. |
376 if (iccLength < kIccColorProfileHeaderLength) | 381 if (iccLength < kIccColorProfileHeaderLength) |
(...skipping 23 matching lines...) Expand all Loading... |
400 return; | 405 return; |
401 | 406 |
402 qcms_data_type dataFormat = hasAlpha ? QCMS_DATA_RGBA_8 : QCMS_DATA_RGB_8; | 407 qcms_data_type dataFormat = hasAlpha ? QCMS_DATA_RGBA_8 : QCMS_DATA_RGB_8; |
403 | 408 |
404 // FIXME: Don't force perceptual intent if the image profile contains an int
ent. | 409 // FIXME: Don't force perceptual intent if the image profile contains an int
ent. |
405 m_sourceToOutputDeviceColorTransform.reset(qcms_transform_create(inputProfil
e.get(), dataFormat, gTargetColorProfile, QCMS_DATA_RGBA_8, QCMS_INTENT_PERCEPTU
AL)); | 410 m_sourceToOutputDeviceColorTransform.reset(qcms_transform_create(inputProfil
e.get(), dataFormat, gTargetColorProfile, QCMS_DATA_RGBA_8, QCMS_INTENT_PERCEPTU
AL)); |
406 #endif // USE(QCMSLIB) | 411 #endif // USE(QCMSLIB) |
407 } | 412 } |
408 | 413 |
409 } // namespace blink | 414 } // namespace blink |
OLD | NEW |