| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2008 The Android Open Source Project | 2 * Copyright 2008 The Android Open Source Project |
| 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 "SkAtomics.h" | 8 #include "SkAtomics.h" |
| 9 #include "SkBitmap.h" | 9 #include "SkBitmap.h" |
| 10 #include "SkColorPriv.h" | 10 #include "SkColorPriv.h" |
| (...skipping 545 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 556 break; | 556 break; |
| 557 default: | 557 default: |
| 558 SkDEBUGFAIL("Can't return addr for config"); | 558 SkDEBUGFAIL("Can't return addr for config"); |
| 559 base = nullptr; | 559 base = nullptr; |
| 560 break; | 560 break; |
| 561 } | 561 } |
| 562 } | 562 } |
| 563 return base; | 563 return base; |
| 564 } | 564 } |
| 565 | 565 |
| 566 #include "SkHalf.h" |
| 567 |
| 566 SkColor SkBitmap::getColor(int x, int y) const { | 568 SkColor SkBitmap::getColor(int x, int y) const { |
| 567 SkASSERT((unsigned)x < (unsigned)this->width()); | 569 SkASSERT((unsigned)x < (unsigned)this->width()); |
| 568 SkASSERT((unsigned)y < (unsigned)this->height()); | 570 SkASSERT((unsigned)y < (unsigned)this->height()); |
| 569 | 571 |
| 570 switch (this->colorType()) { | 572 switch (this->colorType()) { |
| 571 case kGray_8_SkColorType: { | 573 case kGray_8_SkColorType: { |
| 572 uint8_t* addr = this->getAddr8(x, y); | 574 uint8_t* addr = this->getAddr8(x, y); |
| 573 return SkColorSetRGB(*addr, *addr, *addr); | 575 return SkColorSetRGB(*addr, *addr, *addr); |
| 574 } | 576 } |
| 575 case kAlpha_8_SkColorType: { | 577 case kAlpha_8_SkColorType: { |
| (...skipping 16 matching lines...) Expand all Loading... |
| 592 case kBGRA_8888_SkColorType: { | 594 case kBGRA_8888_SkColorType: { |
| 593 uint32_t* addr = this->getAddr32(x, y); | 595 uint32_t* addr = this->getAddr32(x, y); |
| 594 SkPMColor c = SkSwizzle_BGRA_to_PMColor(addr[0]); | 596 SkPMColor c = SkSwizzle_BGRA_to_PMColor(addr[0]); |
| 595 return SkUnPreMultiply::PMColorToColor(c); | 597 return SkUnPreMultiply::PMColorToColor(c); |
| 596 } | 598 } |
| 597 case kRGBA_8888_SkColorType: { | 599 case kRGBA_8888_SkColorType: { |
| 598 uint32_t* addr = this->getAddr32(x, y); | 600 uint32_t* addr = this->getAddr32(x, y); |
| 599 SkPMColor c = SkSwizzle_RGBA_to_PMColor(addr[0]); | 601 SkPMColor c = SkSwizzle_RGBA_to_PMColor(addr[0]); |
| 600 return SkUnPreMultiply::PMColorToColor(c); | 602 return SkUnPreMultiply::PMColorToColor(c); |
| 601 } | 603 } |
| 604 case kRGBA_F16_SkColorType: { |
| 605 const uint64_t* addr = (const uint64_t*)fPixels + y * (fRowBytes >>
3) + x; |
| 606 Sk4f p4 = SkHalfToFloat_01(addr[0]); |
| 607 if (p4[3]) { |
| 608 float inva = 1 / p4[3]; |
| 609 p4 = p4 * Sk4f(inva, inva, inva, 1); |
| 610 } |
| 611 SkColor c; |
| 612 SkNx_cast<uint8_t>(p4 * Sk4f(255) + Sk4f(0.5f)).store(&c); |
| 613 // p4 is RGBA, but we want BGRA, so we need to swap next |
| 614 return SkSwizzle_RB(c); |
| 615 } |
| 602 default: | 616 default: |
| 603 SkASSERT(false); | 617 SkASSERT(false); |
| 604 return 0; | 618 return 0; |
| 605 } | 619 } |
| 606 SkASSERT(false); // Not reached. | 620 SkASSERT(false); // Not reached. |
| 607 return 0; | 621 return 0; |
| 608 } | 622 } |
| 609 | 623 |
| 610 static bool compute_is_opaque(const SkPixmap& pmap) { | 624 static bool compute_is_opaque(const SkPixmap& pmap) { |
| 611 const int height = pmap.height(); | 625 const int height = pmap.height(); |
| (...skipping 725 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1337 /////////////////////////////////////////////////////////////////////////////// | 1351 /////////////////////////////////////////////////////////////////////////////// |
| 1338 | 1352 |
| 1339 #ifdef SK_DEBUG | 1353 #ifdef SK_DEBUG |
| 1340 void SkImageInfo::validate() const { | 1354 void SkImageInfo::validate() const { |
| 1341 SkASSERT(fWidth >= 0); | 1355 SkASSERT(fWidth >= 0); |
| 1342 SkASSERT(fHeight >= 0); | 1356 SkASSERT(fHeight >= 0); |
| 1343 SkASSERT(SkColorTypeIsValid(fColorType)); | 1357 SkASSERT(SkColorTypeIsValid(fColorType)); |
| 1344 SkASSERT(SkAlphaTypeIsValid(fAlphaType)); | 1358 SkASSERT(SkAlphaTypeIsValid(fAlphaType)); |
| 1345 } | 1359 } |
| 1346 #endif | 1360 #endif |
| OLD | NEW |