| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2010, The Android Open Source Project | 2 * Copyright 2010, The Android Open Source Project |
| 3 * | 3 * |
| 4 * Licensed under the Apache License, Version 2.0 (the "License"); | 4 * Licensed under the Apache License, Version 2.0 (the "License"); |
| 5 * you may not use this file except in compliance with the License. | 5 * you may not use this file except in compliance with the License. |
| 6 * You may obtain a copy of the License at | 6 * You may obtain a copy of the License at |
| 7 * | 7 * |
| 8 * http://www.apache.org/licenses/LICENSE-2.0 | 8 * http://www.apache.org/licenses/LICENSE-2.0 |
| 9 * | 9 * |
| 10 * Unless required by applicable law or agreed to in writing, software | 10 * Unless required by applicable law or agreed to in writing, software |
| (...skipping 541 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 552 const uint8_t* SK_RESTRICT src = (const uint8_t*)in; | 552 const uint8_t* SK_RESTRICT src = (const uint8_t*)in; |
| 553 for (int i = 0; i < width; ++i) { | 553 for (int i = 0; i < width; ++i) { |
| 554 const uint32_t c = ctable[*src++]; | 554 const uint32_t c = ctable[*src++]; |
| 555 rgb[0] = SkGetPackedR32(c); | 555 rgb[0] = SkGetPackedR32(c); |
| 556 rgb[1] = SkGetPackedG32(c); | 556 rgb[1] = SkGetPackedG32(c); |
| 557 rgb[2] = SkGetPackedB32(c); | 557 rgb[2] = SkGetPackedB32(c); |
| 558 rgb += 3; | 558 rgb += 3; |
| 559 } | 559 } |
| 560 } | 560 } |
| 561 | 561 |
| 562 static void Alpha8_To_RGB(const uint8_t* in, uint8_t* rgb, int width, | |
| 563 const SkPMColor* SK_RESTRICT ctable) { | |
| 564 const uint8_t* SK_RESTRICT src = (const uint8_t*)in; | |
| 565 for (int i = 0; i < width; ++i) { | |
| 566 rgb[0] = rgb[1] = rgb[2] = *src++; | |
| 567 rgb += 3; | |
| 568 } | |
| 569 } | |
| 570 | |
| 571 static ScanlineImporter ChooseImporter(const SkBitmap::Config& config, | 562 static ScanlineImporter ChooseImporter(const SkBitmap::Config& config, |
| 572 bool hasAlpha, | 563 bool hasAlpha, |
| 573 int* bpp) { | 564 int* bpp) { |
| 574 switch (config) { | 565 switch (config) { |
| 575 case SkBitmap::kARGB_8888_Config: | 566 case SkBitmap::kARGB_8888_Config: |
| 576 if (hasAlpha) { | 567 if (hasAlpha) { |
| 577 *bpp = 4; | 568 *bpp = 4; |
| 578 return ARGB_8888_To_RGBA; | 569 return ARGB_8888_To_RGBA; |
| 579 } else { | 570 } else { |
| 580 *bpp = 3; | 571 *bpp = 3; |
| 581 return ARGB_8888_To_RGB; | 572 return ARGB_8888_To_RGB; |
| 582 } | 573 } |
| 583 case SkBitmap::kARGB_4444_Config: | 574 case SkBitmap::kARGB_4444_Config: |
| 584 if (hasAlpha) { | 575 if (hasAlpha) { |
| 585 *bpp = 4; | 576 *bpp = 4; |
| 586 return ARGB_4444_To_RGBA; | 577 return ARGB_4444_To_RGBA; |
| 587 } else { | 578 } else { |
| 588 *bpp = 3; | 579 *bpp = 3; |
| 589 return ARGB_4444_To_RGB; | 580 return ARGB_4444_To_RGB; |
| 590 } | 581 } |
| 591 case SkBitmap::kRGB_565_Config: | 582 case SkBitmap::kRGB_565_Config: |
| 592 *bpp = 3; | 583 *bpp = 3; |
| 593 return RGB_565_To_RGB; | 584 return RGB_565_To_RGB; |
| 594 case SkBitmap::kIndex8_Config: | 585 case SkBitmap::kIndex8_Config: |
| 595 *bpp = 3; | 586 *bpp = 3; |
| 596 return Index8_To_RGB; | 587 return Index8_To_RGB; |
| 597 case SkBitmap::kA8_Config: | |
| 598 *bpp = 3; | |
| 599 return Alpha8_To_RGB; | |
| 600 default: | 588 default: |
| 601 return NULL; | 589 return NULL; |
| 602 } | 590 } |
| 603 } | 591 } |
| 604 | 592 |
| 605 static int stream_writer(const uint8_t* data, size_t data_size, | 593 static int stream_writer(const uint8_t* data, size_t data_size, |
| 606 const WebPPicture* const picture) { | 594 const WebPPicture* const picture) { |
| 607 SkWStream* const stream = (SkWStream*)picture->custom_ptr; | 595 SkWStream* const stream = (SkWStream*)picture->custom_ptr; |
| 608 return stream->write(data, data_size) ? 1 : 0; | 596 return stream->write(data, data_size) ? 1 : 0; |
| 609 } | 597 } |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 698 return SkImageDecoder::kUnknown_Format; | 686 return SkImageDecoder::kUnknown_Format; |
| 699 } | 687 } |
| 700 | 688 |
| 701 static SkImageEncoder* sk_libwebp_efactory(SkImageEncoder::Type t) { | 689 static SkImageEncoder* sk_libwebp_efactory(SkImageEncoder::Type t) { |
| 702 return (SkImageEncoder::kWEBP_Type == t) ? SkNEW(SkWEBPImageEncoder) : NUL
L; | 690 return (SkImageEncoder::kWEBP_Type == t) ? SkNEW(SkWEBPImageEncoder) : NUL
L; |
| 703 } | 691 } |
| 704 | 692 |
| 705 static SkImageDecoder_DecodeReg gDReg(sk_libwebp_dfactory); | 693 static SkImageDecoder_DecodeReg gDReg(sk_libwebp_dfactory); |
| 706 static SkImageDecoder_FormatReg gFormatReg(get_format_webp); | 694 static SkImageDecoder_FormatReg gFormatReg(get_format_webp); |
| 707 static SkImageEncoder_EncodeReg gEReg(sk_libwebp_efactory); | 695 static SkImageEncoder_EncodeReg gEReg(sk_libwebp_efactory); |
| OLD | NEW |