| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2015 Google Inc. | 2 * Copyright 2015 Google Inc. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 #include "DMSrcSink.h" | 8 #include "DMSrcSink.h" |
| 9 #include "Resources.h" | 9 #include "Resources.h" |
| 10 #include "SkAndroidCodec.h" | 10 #include "SkAndroidCodec.h" |
| (...skipping 903 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 914 SkAutoTCallVProc<qcms_profile, qcms_profile_release> | 914 SkAutoTCallVProc<qcms_profile, qcms_profile_release> |
| 915 srcSpace(qcms_profile_from_memory(srcData->data(), srcData->
size())); | 915 srcSpace(qcms_profile_from_memory(srcData->data(), srcData->
size())); |
| 916 if (!srcSpace) { | 916 if (!srcSpace) { |
| 917 return Error::Nonfatal(SkStringPrintf("QCMS cannot create profil
e for %s.\n", | 917 return Error::Nonfatal(SkStringPrintf("QCMS cannot create profil
e for %s.\n", |
| 918 fPath.c_str())); | 918 fPath.c_str())); |
| 919 } | 919 } |
| 920 | 920 |
| 921 SkAutoTCallVProc<qcms_profile, qcms_profile_release> | 921 SkAutoTCallVProc<qcms_profile, qcms_profile_release> |
| 922 dstSpace(qcms_profile_from_memory(dstData->data(), dstData->
size())); | 922 dstSpace(qcms_profile_from_memory(dstData->data(), dstData->
size())); |
| 923 SkASSERT(dstSpace); | 923 SkASSERT(dstSpace); |
| 924 |
| 925 // Optimizes conversion by precomputing the inverse transformation t
o dst. Also |
| 926 // causes QCMS to use a completely different codepath. This is how
Chrome uses QCMS. |
| 927 qcms_profile_precache_output_transform(dstSpace); |
| 924 SkAutoTCallVProc<qcms_transform, qcms_transform_release> | 928 SkAutoTCallVProc<qcms_transform, qcms_transform_release> |
| 925 transform (qcms_transform_create(srcSpace, QCMS_DATA_RGBA_8,
dstSpace, | 929 transform (qcms_transform_create(srcSpace, QCMS_DATA_RGBA_8,
dstSpace, |
| 926 QCMS_DATA_RGBA_8, QCMS_INTE
NT_PERCEPTUAL)); | 930 QCMS_DATA_RGBA_8, QCMS_INTE
NT_PERCEPTUAL)); |
| 927 if (!transform) { | 931 if (!transform) { |
| 928 return SkStringPrintf("QCMS cannot create transform for %s.\n",
fPath.c_str()); | 932 return SkStringPrintf("QCMS cannot create transform for %s.\n",
fPath.c_str()); |
| 929 } | 933 } |
| 930 | 934 |
| 931 #ifdef SK_PMCOLOR_IS_RGBA | 935 #ifdef SK_PMCOLOR_IS_RGBA |
| 932 qcms_output_type outType = QCMS_OUTPUT_RGBX; | 936 qcms_output_type outType = QCMS_OUTPUT_RGBX; |
| 933 #else | 937 #else |
| (...skipping 605 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1539 skr.visit(i, drawsAsSingletonPictures); | 1543 skr.visit(i, drawsAsSingletonPictures); |
| 1540 } | 1544 } |
| 1541 sk_sp<SkPicture> macroPic(macroRec.finishRecordingAsPicture()); | 1545 sk_sp<SkPicture> macroPic(macroRec.finishRecordingAsPicture()); |
| 1542 | 1546 |
| 1543 canvas->drawPicture(macroPic); | 1547 canvas->drawPicture(macroPic); |
| 1544 return check_against_reference(bitmap, src, fSink); | 1548 return check_against_reference(bitmap, src, fSink); |
| 1545 }); | 1549 }); |
| 1546 } | 1550 } |
| 1547 | 1551 |
| 1548 } // namespace DM | 1552 } // namespace DM |
| OLD | NEW |