: fInputChannels(inputChannels) {
SkASSERT(inputChannels >= 1 && inputChannels <= kMaxColorChannels);
memcpy(fGridPoints, gridPoints, fInputChannels * sizeof(uint8_t));
+
+ for (int i = 0; i < inputChannels; i++) {
+ SkASSERT(fGridPoints[i] > 1);
+ }
}
/**
uint32_t numEntries = SkColorLookUpTable::kOutputChannels;
for (uint32_t i = 0; i < inputChannels; i++) {
- if (0 == gridPoints[i]) {
- SkColorSpacePrintf("Each input channel must have at least one grid point.");
+ if (1 >= gridPoints[i]) {
+ SkColorSpacePrintf("Each input channel must have at least two grid points.");
return false;
}
DEF_TEST(ColorSpace_InvalidICC, r) {
// This color space has a matrix that is not D50.
- sk_sp<SkData> data = SkData::MakeFromFileName(
- GetResourcePath("icc_profiles/SM2333SW.icc").c_str());
+ sk_sp<SkData> data = GetResourceAsData("icc_profiles/SM2333SW.icc");
+ if (!data) {
+ return;
+ }
sk_sp<SkColorSpace> cs = SkColorSpace::MakeICC(data->data(), data->size());
REPORTER_ASSERT(r, !cs);
+
+ // The color space has a color lut with only one entry in each dimension.
+ data = GetResourceAsData("icc_profiles/invalid_color_lut.icc");
+ if (!data) {
+ return;
+ }
+
+ cs = SkColorSpace::MakeICC(data->data(), data->size());
+ REPORTER_ASSERT(r, !cs);
}
DEF_TEST(ColorSpace_MatrixHash, r) {