Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(36)

Side by Side Diff: tests/ColorSpaceXformTest.cpp

Issue 2409383002: Add SkColorSpaceTransferFn to SkColorSpace (Closed)
Patch Set: Add more comments Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « tests/ColorSpaceTest.cpp ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2016 Google Inc. 2 * Copyright 2016 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 "Resources.h" 8 #include "Resources.h"
9 #include "SkCodec.h" 9 #include "SkCodec.h"
10 #include "SkCodecPriv.h" 10 #include "SkCodecPriv.h"
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
79 table[5] = 0.35f; 79 table[5] = 0.35f;
80 table[6] = 0.45f; 80 table[6] = 0.45f;
81 table[7] = 0.60f; 81 table[7] = 0.60f;
82 table[8] = 0.75f; 82 table[8] = 0.75f;
83 table[9] = 1.00f; 83 table[9] = 1.00f;
84 test_identity_xform(r, gammas); 84 test_identity_xform(r, gammas);
85 } 85 }
86 86
87 DEF_TEST(ColorSpaceXform_ParametricGamma, r) { 87 DEF_TEST(ColorSpaceXform_ParametricGamma, r) {
88 // Parametric gamma curves 88 // Parametric gamma curves
89 void* memory = sk_malloc_throw(sizeof(SkGammas) + sizeof(SkGammas::Params)); 89 void* memory = sk_malloc_throw(sizeof(SkGammas) + sizeof(SkColorSpaceTransfe rFn));
90 sk_sp<SkGammas> gammas = sk_sp<SkGammas>(new (memory) SkGammas()); 90 sk_sp<SkGammas> gammas = sk_sp<SkGammas>(new (memory) SkGammas());
91 gammas->fRedType = gammas->fGreenType = gammas->fBlueType = SkGammas::Type:: kParam_Type; 91 gammas->fRedType = gammas->fGreenType = gammas->fBlueType = SkGammas::Type:: kParam_Type;
92 gammas->fRedData.fParamOffset = gammas->fGreenData.fParamOffset = 92 gammas->fRedData.fParamOffset = gammas->fGreenData.fParamOffset =
93 gammas->fBlueData.fParamOffset = 0; 93 gammas->fBlueData.fParamOffset = 0;
94 SkGammas::Params* params = SkTAddOffset<SkGammas::Params>(memory, sizeof(SkG ammas)); 94 SkColorSpaceTransferFn* params = SkTAddOffset<SkColorSpaceTransferFn>
95 (memory, sizeof(SkGammas));
95 96
96 // Interval, switch xforms at 0.0031308f 97 // Interval, switch xforms at 0.0031308f
97 params->fD = 0.04045f; 98 params->fD = 0.04045f;
98 99
99 // First equation: 100 // First equation:
100 params->fE = 1.0f / 12.92f; 101 params->fE = 1.0f / 12.92f;
101 params->fF = 0.0f; 102 params->fF = 0.0f;
102 103
103 // Second equation: 104 // Second equation:
104 // Note that the function is continuous (it's actually sRGB). 105 // Note that the function is continuous (it's actually sRGB).
(...skipping 17 matching lines...) Expand all
122 gammas->fRedType = gammas->fGreenType = gammas->fBlueType = SkGammas::Type:: kNamed_Type; 123 gammas->fRedType = gammas->fGreenType = gammas->fBlueType = SkGammas::Type:: kNamed_Type;
123 gammas->fRedData.fNamed = kSRGB_SkGammaNamed; 124 gammas->fRedData.fNamed = kSRGB_SkGammaNamed;
124 gammas->fGreenData.fNamed = k2Dot2Curve_SkGammaNamed; 125 gammas->fGreenData.fNamed = k2Dot2Curve_SkGammaNamed;
125 gammas->fBlueData.fNamed = kLinear_SkGammaNamed; 126 gammas->fBlueData.fNamed = kLinear_SkGammaNamed;
126 test_identity_xform(r, gammas); 127 test_identity_xform(r, gammas);
127 } 128 }
128 129
129 DEF_TEST(ColorSpaceXform_NonMatchingGamma, r) { 130 DEF_TEST(ColorSpaceXform_NonMatchingGamma, r) {
130 constexpr size_t tableSize = 10; 131 constexpr size_t tableSize = 10;
131 void* memory = sk_malloc_throw(sizeof(SkGammas) + sizeof(float) * tableSize + 132 void* memory = sk_malloc_throw(sizeof(SkGammas) + sizeof(float) * tableSize +
132 sizeof(SkGammas::Params)); 133 sizeof(SkColorSpaceTransferFn));
133 sk_sp<SkGammas> gammas = sk_sp<SkGammas>(new (memory) SkGammas()); 134 sk_sp<SkGammas> gammas = sk_sp<SkGammas>(new (memory) SkGammas());
134 135
135 float* table = SkTAddOffset<float>(memory, sizeof(SkGammas)); 136 float* table = SkTAddOffset<float>(memory, sizeof(SkGammas));
136 table[0] = 0.00f; 137 table[0] = 0.00f;
137 table[1] = 0.15f; 138 table[1] = 0.15f;
138 table[2] = 0.20f; 139 table[2] = 0.20f;
139 table[3] = 0.25f; 140 table[3] = 0.25f;
140 table[4] = 0.35f; 141 table[4] = 0.35f;
141 table[5] = 0.45f; 142 table[5] = 0.45f;
142 table[6] = 0.55f; 143 table[6] = 0.55f;
143 table[7] = 0.70f; 144 table[7] = 0.70f;
144 table[8] = 0.85f; 145 table[8] = 0.85f;
145 table[9] = 1.00f; 146 table[9] = 1.00f;
146 147
147 SkGammas::Params* params = SkTAddOffset<SkGammas::Params>(memory, sizeof(SkG ammas) + 148 SkColorSpaceTransferFn* params = SkTAddOffset<SkColorSpaceTransferFn>(memory ,
148 sizeof(float) * ta bleSize); 149 sizeof(SkGammas) + sizeof(float) * tableSize);
149 params->fA = 1.0f / 1.055f; 150 params->fA = 1.0f / 1.055f;
150 params->fB = 0.055f / 1.055f; 151 params->fB = 0.055f / 1.055f;
151 params->fC = 0.0f; 152 params->fC = 0.0f;
152 params->fD = 0.04045f; 153 params->fD = 0.04045f;
153 params->fE = 1.0f / 12.92f; 154 params->fE = 1.0f / 12.92f;
154 params->fF = 0.0f; 155 params->fF = 0.0f;
155 params->fG = 2.4f; 156 params->fG = 2.4f;
156 157
157 gammas->fRedType = SkGammas::Type::kValue_Type; 158 gammas->fRedType = SkGammas::Type::kValue_Type;
158 gammas->fRedData.fValue = 1.2f; 159 gammas->fRedData.fValue = 1.2f;
(...skipping 23 matching lines...) Expand all
182 sk_sp<SkData> iccData = SkData::MakeFromFileName(filename.c_str()); 183 sk_sp<SkData> iccData = SkData::MakeFromFileName(filename.c_str());
183 REPORTER_ASSERT_MESSAGE(r, iccData, "upperRight.icc profile required for tes t"); 184 REPORTER_ASSERT_MESSAGE(r, iccData, "upperRight.icc profile required for tes t");
184 sk_sp<SkColorSpace> srcSpace = SkColorSpace::NewICC(iccData->bytes(), iccDat a->size()); 185 sk_sp<SkColorSpace> srcSpace = SkColorSpace::NewICC(iccData->bytes(), iccDat a->size());
185 sk_sp<SkColorSpace> dstSpace = SkColorSpace::NewNamed(SkColorSpace::kSRGB_Na med); 186 sk_sp<SkColorSpace> dstSpace = SkColorSpace::NewNamed(SkColorSpace::kSRGB_Na med);
186 auto xform = SkColorSpaceXform::New(srcSpace.get(), dstSpace.get()); 187 auto xform = SkColorSpaceXform::New(srcSpace.get(), dstSpace.get());
187 bool result = xform->apply(SkColorSpaceXform::kRGBA_8888_ColorFormat, dst.ge t(), 188 bool result = xform->apply(SkColorSpaceXform::kRGBA_8888_ColorFormat, dst.ge t(),
188 SkColorSpaceXform::kRGBA_8888_ColorFormat, src.ge t(), len, 189 SkColorSpaceXform::kRGBA_8888_ColorFormat, src.ge t(), len,
189 kUnpremul_SkAlphaType); 190 kUnpremul_SkAlphaType);
190 REPORTER_ASSERT(r, result); 191 REPORTER_ASSERT(r, result);
191 } 192 }
OLDNEW
« no previous file with comments | « tests/ColorSpaceTest.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698