Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 "SkColorSpace.h" | 8 #include "SkColorSpace.h" |
| 9 #include "SkColorSpace_Base.h" | 9 #include "SkColorSpace_Base.h" |
| 10 #include "SkColorSpacePriv.h" | 10 #include "SkColorSpacePriv.h" |
| (...skipping 298 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 309 uint32_t profileSize = *((uint32_t*) data); | 309 uint32_t profileSize = *((uint32_t*) data); |
| 310 data = SkTAddOffset<const void>(data, sizeof(uint32_t)); | 310 data = SkTAddOffset<const void>(data, sizeof(uint32_t)); |
| 311 length -= sizeof(uint32_t); | 311 length -= sizeof(uint32_t); |
| 312 if (length < profileSize) { | 312 if (length < profileSize) { |
| 313 return nullptr; | 313 return nullptr; |
| 314 } | 314 } |
| 315 | 315 |
| 316 return NewICC(data, profileSize); | 316 return NewICC(data, profileSize); |
| 317 } | 317 } |
| 318 | 318 |
| 319 bool SkColorSpace::Equals(SkColorSpace* src, SkColorSpace* dst) { | |
| 320 if (src == dst) { | |
| 321 return true; | |
| 322 } | |
| 323 | |
| 324 if (!src || !dst) { | |
| 325 return false; | |
| 326 } | |
| 327 | |
| 328 switch (src->fNamed) { | |
| 329 case kSRGB_Named: | |
| 330 case kAdobeRGB_Named: | |
| 331 // No need to check for a match. sRGB and Adobe RGB are once ptrs - if they | |
| 332 // were a match, we would have already returned. | |
|
mtklein
2016/07/29 15:43:48
This seems fragile. Unless you've got a way to as
msarett
2016/07/29 16:16:01
True, that also seems nicer to read, sgtm.
| |
| 333 return false; | |
| 334 case kUnknown_Named: | |
| 335 if (kUnknown_Named != dst->fNamed) { | |
| 336 return false; | |
| 337 } | |
| 338 break; | |
| 339 } | |
| 340 | |
| 341 SkData* srcData = as_CSB(src)->fProfileData.get(); | |
| 342 SkData* dstData = as_CSB(dst)->fProfileData.get(); | |
| 343 if (srcData || dstData) { | |
| 344 if (srcData && dstData) { | |
| 345 if (srcData->size() != dstData->size()) { | |
|
mtklein
2016/07/29 15:43:48
Maybe,
return srcData->size() == dstData->size()
msarett
2016/07/29 16:16:01
Done.
| |
| 346 return false; | |
| 347 } | |
| 348 | |
| 349 return !memcmp(srcData->data(), dstData->data(), srcData->size()); | |
| 350 } | |
| 351 | |
| 352 return false; | |
| 353 } | |
| 354 | |
| 355 switch (src->fGammaNamed) { | |
| 356 case kSRGB_GammaNamed: | |
| 357 case k2Dot2Curve_GammaNamed: | |
| 358 case kLinear_GammaNamed: | |
| 359 return (src->fGammaNamed == dst->fGammaNamed) && (src->fToXYZD50 == dst->fToXYZD50); | |
| 360 default: | |
| 361 // If |src| does not have a named gamma, fProfileData should be non- null. | |
|
mtklein
2016/07/29 15:43:48
Does it make sense to just move this before the fP
msarett
2016/07/29 16:16:01
Can't do that because a kNonStandard_GammaNamed is
| |
| 362 SkASSERT(false); | |
| 363 return false; | |
| 364 } | |
| 365 } | |
| 366 | |
| 319 bool SkColorSpace::gammasAreMatching() const { | 367 bool SkColorSpace::gammasAreMatching() const { |
| 320 const SkGammas* gammas = as_CSB(this)->gammas(); | 368 const SkGammas* gammas = as_CSB(this)->gammas(); |
| 321 SkASSERT(gammas); | 369 SkASSERT(gammas); |
| 322 return gammas->fRedType == gammas->fGreenType && gammas->fGreenType == gamma s->fBlueType && | 370 return gammas->fRedType == gammas->fGreenType && gammas->fGreenType == gamma s->fBlueType && |
| 323 gammas->fRedData == gammas->fGreenData && gammas->fGreenData == gamma s->fBlueData; | 371 gammas->fRedData == gammas->fGreenData && gammas->fGreenData == gamma s->fBlueData; |
| 324 } | 372 } |
| 325 | 373 |
| 326 bool SkColorSpace::gammasAreNamed() const { | 374 bool SkColorSpace::gammasAreNamed() const { |
| 327 const SkGammas* gammas = as_CSB(this)->gammas(); | 375 const SkGammas* gammas = as_CSB(this)->gammas(); |
| 328 SkASSERT(gammas); | 376 SkASSERT(gammas); |
| (...skipping 18 matching lines...) Expand all Loading... | |
| 347 gammas->fBlueType == SkGammas::Type::kTable_Type; | 395 gammas->fBlueType == SkGammas::Type::kTable_Type; |
| 348 } | 396 } |
| 349 | 397 |
| 350 bool SkColorSpace::gammasAreParams() const { | 398 bool SkColorSpace::gammasAreParams() const { |
| 351 const SkGammas* gammas = as_CSB(this)->gammas(); | 399 const SkGammas* gammas = as_CSB(this)->gammas(); |
| 352 SkASSERT(gammas); | 400 SkASSERT(gammas); |
| 353 return gammas->fRedType == SkGammas::Type::kParam_Type && | 401 return gammas->fRedType == SkGammas::Type::kParam_Type && |
| 354 gammas->fGreenType == SkGammas::Type::kParam_Type && | 402 gammas->fGreenType == SkGammas::Type::kParam_Type && |
| 355 gammas->fBlueType == SkGammas::Type::kParam_Type; | 403 gammas->fBlueType == SkGammas::Type::kParam_Type; |
| 356 } | 404 } |
| OLD | NEW |