| Index: src/codec/SkCodecPriv.h
|
| diff --git a/src/codec/SkCodecPriv.h b/src/codec/SkCodecPriv.h
|
| index 2769cec1cd4025f15611d4c9e5d53e65cb2eb47b..0442625dd20b858ee7e9cd84877f3417124fcbd1 100644
|
| --- a/src/codec/SkCodecPriv.h
|
| +++ b/src/codec/SkCodecPriv.h
|
| @@ -8,6 +8,7 @@
|
| #ifndef SkCodecPriv_DEFINED
|
| #define SkCodecPriv_DEFINED
|
|
|
| +#include "SkColorPriv.h"
|
| #include "SkColorTable.h"
|
| #include "SkImageInfo.h"
|
| #include "SkSwizzler.h"
|
| @@ -34,7 +35,7 @@
|
| * returns a scaled dimension based on the original dimension and the sampleSize
|
| * NOTE: we round down here for scaled dimension to match the behavior of SkImageDecoder
|
| */
|
| -static int get_scaled_dimension(int srcDimension, int sampleSize) {
|
| +inline int get_scaled_dimension(int srcDimension, int sampleSize) {
|
| if (sampleSize > srcDimension) {
|
| return 1;
|
| }
|
| @@ -47,7 +48,7 @@ static int get_scaled_dimension(int srcDimension, int sampleSize) {
|
| *
|
| * This does not need to be called and is not called when sampleFactor == 1.
|
| */
|
| -static int get_start_coord(int sampleFactor) { return sampleFactor / 2; };
|
| +inline int get_start_coord(int sampleFactor) { return sampleFactor / 2; };
|
|
|
| /*
|
| * Given a coordinate in the original image, this returns the corresponding
|
| @@ -57,7 +58,7 @@ static int get_start_coord(int sampleFactor) { return sampleFactor / 2; };
|
| *
|
| * This does not need to be called and is not called when sampleFactor == 1.
|
| */
|
| -static int get_dst_coord(int srcCoord, int sampleFactor) { return srcCoord / sampleFactor; };
|
| +inline int get_dst_coord(int srcCoord, int sampleFactor) { return srcCoord / sampleFactor; };
|
|
|
| /*
|
| * When scaling, we will discard certain y-coordinates (rows) and
|
| @@ -67,7 +68,7 @@ static int get_dst_coord(int srcCoord, int sampleFactor) { return srcCoord / sam
|
| *
|
| * This does not need to be called and is not called when sampleFactor == 1.
|
| */
|
| -static bool is_coord_necessary(int srcCoord, int sampleFactor, int scaledDim) {
|
| +inline bool is_coord_necessary(int srcCoord, int sampleFactor, int scaledDim) {
|
| // Get the first coordinate that we want to keep
|
| int startCoord = get_start_coord(sampleFactor);
|
|
|
| @@ -80,7 +81,7 @@ static bool is_coord_necessary(int srcCoord, int sampleFactor, int scaledDim) {
|
| return ((srcCoord - startCoord) % sampleFactor) == 0;
|
| }
|
|
|
| -static inline bool valid_alpha(SkAlphaType dstAlpha, SkAlphaType srcAlpha) {
|
| +inline bool valid_alpha(SkAlphaType dstAlpha, SkAlphaType srcAlpha) {
|
| // Check for supported alpha types
|
| if (srcAlpha != dstAlpha) {
|
| if (kOpaque_SkAlphaType == srcAlpha) {
|
| @@ -110,7 +111,7 @@ static inline bool valid_alpha(SkAlphaType dstAlpha, SkAlphaType srcAlpha) {
|
| * - always support N32
|
| * - otherwise match the src color type
|
| */
|
| -static bool conversion_possible(const SkImageInfo& dst, const SkImageInfo& src) {
|
| +inline bool conversion_possible(const SkImageInfo& dst, const SkImageInfo& src) {
|
| if (dst.profileType() != src.profileType()) {
|
| return false;
|
| }
|
| @@ -134,15 +135,34 @@ static bool conversion_possible(const SkImageInfo& dst, const SkImageInfo& src)
|
| /*
|
| * If there is a color table, get a pointer to the colors, otherwise return nullptr
|
| */
|
| -static const SkPMColor* get_color_ptr(SkColorTable* colorTable) {
|
| +inline const SkPMColor* get_color_ptr(SkColorTable* colorTable) {
|
| return nullptr != colorTable ? colorTable->readColors() : nullptr;
|
| }
|
|
|
| /*
|
| + * Given that the encoded image uses a color table, return the fill value
|
| + */
|
| +inline uint32_t get_color_table_fill_value(SkColorType colorType, const SkPMColor* colorPtr,
|
| + uint8_t fillIndex) {
|
| + SkASSERT(nullptr != colorPtr);
|
| + switch (colorType) {
|
| + case kN32_SkColorType:
|
| + return colorPtr[fillIndex];
|
| + case kRGB_565_SkColorType:
|
| + return SkPixel32ToPixel16(colorPtr[fillIndex]);
|
| + case kIndex_8_SkColorType:
|
| + return fillIndex;
|
| + default:
|
| + SkASSERT(false);
|
| + return 0;
|
| + }
|
| +}
|
| +
|
| +/*
|
| *
|
| * Copy the codec color table back to the client when kIndex8 color type is requested
|
| */
|
| -static inline void copy_color_table(const SkImageInfo& dstInfo, SkColorTable* colorTable,
|
| +inline void copy_color_table(const SkImageInfo& dstInfo, SkColorTable* colorTable,
|
| SkPMColor* inputColorPtr, int* inputColorCount) {
|
| if (kIndex_8_SkColorType == dstInfo.colorType()) {
|
| SkASSERT(nullptr != inputColorPtr);
|
| @@ -155,21 +175,21 @@ static inline void copy_color_table(const SkImageInfo& dstInfo, SkColorTable* co
|
| /*
|
| * Compute row bytes for an image using pixels per byte
|
| */
|
| -static inline size_t compute_row_bytes_ppb(int width, uint32_t pixelsPerByte) {
|
| +inline size_t compute_row_bytes_ppb(int width, uint32_t pixelsPerByte) {
|
| return (width + pixelsPerByte - 1) / pixelsPerByte;
|
| }
|
|
|
| /*
|
| * Compute row bytes for an image using bytes per pixel
|
| */
|
| -static inline size_t compute_row_bytes_bpp(int width, uint32_t bytesPerPixel) {
|
| +inline size_t compute_row_bytes_bpp(int width, uint32_t bytesPerPixel) {
|
| return width * bytesPerPixel;
|
| }
|
|
|
| /*
|
| * Compute row bytes for an image
|
| */
|
| -static inline size_t compute_row_bytes(int width, uint32_t bitsPerPixel) {
|
| +inline size_t compute_row_bytes(int width, uint32_t bitsPerPixel) {
|
| if (bitsPerPixel < 16) {
|
| SkASSERT(0 == 8 % bitsPerPixel);
|
| const uint32_t pixelsPerByte = 8 / bitsPerPixel;
|
| @@ -182,27 +202,10 @@ static inline size_t compute_row_bytes(int width, uint32_t bitsPerPixel) {
|
| }
|
|
|
| /*
|
| - * On incomplete images, get the color to fill with
|
| - */
|
| -static inline SkPMColor get_fill_color_or_index(SkAlphaType alphaType) {
|
| - // This condition works properly for all supported output color types.
|
| - // kIndex8: The low 8-bits of both possible return values is 0, which is
|
| - // our desired default index.
|
| - // kGray8: The low 8-bits of both possible return values is 0, which is
|
| - // black, our desired fill value.
|
| - // kRGB565: The low 16-bits of both possible return values is 0, which is
|
| - // black, our desired fill value.
|
| - // kN32: Return black for opaque images and transparent for non-opaque
|
| - // images.
|
| - return kOpaque_SkAlphaType == alphaType ?
|
| - SK_ColorBLACK : SK_ColorTRANSPARENT;
|
| -}
|
| -
|
| -/*
|
| * Get a byte from a buffer
|
| * This method is unsafe, the caller is responsible for performing a check
|
| */
|
| -static inline uint8_t get_byte(uint8_t* buffer, uint32_t i) {
|
| +inline uint8_t get_byte(uint8_t* buffer, uint32_t i) {
|
| return buffer[i];
|
| }
|
|
|
| @@ -210,7 +213,7 @@ static inline uint8_t get_byte(uint8_t* buffer, uint32_t i) {
|
| * Get a short from a buffer
|
| * This method is unsafe, the caller is responsible for performing a check
|
| */
|
| -static inline uint16_t get_short(uint8_t* buffer, uint32_t i) {
|
| +inline uint16_t get_short(uint8_t* buffer, uint32_t i) {
|
| uint16_t result;
|
| memcpy(&result, &(buffer[i]), 2);
|
| #ifdef SK_CPU_BENDIAN
|
| @@ -224,7 +227,7 @@ static inline uint16_t get_short(uint8_t* buffer, uint32_t i) {
|
| * Get an int from a buffer
|
| * This method is unsafe, the caller is responsible for performing a check
|
| */
|
| -static inline uint32_t get_int(uint8_t* buffer, uint32_t i) {
|
| +inline uint32_t get_int(uint8_t* buffer, uint32_t i) {
|
| uint32_t result;
|
| memcpy(&result, &(buffer[i]), 4);
|
| #ifdef SK_CPU_BENDIAN
|
|
|