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. |
| 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()) { |
| 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. |
| 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 |