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 |