| Index: third_party/WebKit/Source/platform/image-decoders/ImageFrame.h
|
| diff --git a/third_party/WebKit/Source/platform/image-decoders/ImageFrame.h b/third_party/WebKit/Source/platform/image-decoders/ImageFrame.h
|
| index fb7425755bd77887066531b171c6c8dc21c5b2d8..9566a6e4fe98ea4aac2349697cf8f034ec580fa3 100644
|
| --- a/third_party/WebKit/Source/platform/image-decoders/ImageFrame.h
|
| +++ b/third_party/WebKit/Source/platform/image-decoders/ImageFrame.h
|
| @@ -66,7 +66,14 @@ public:
|
| // overwrite the corresponding pixels).
|
| BlendAtopBgcolor,
|
| };
|
| +
|
| + enum ColorType {
|
| + RGBA8888 = kN32_SkColorType,
|
| + RGB565 = kRGB_565_SkColorType
|
| + };
|
| +
|
| typedef uint32_t PixelData;
|
| + typedef uint16_t PixelData16;
|
|
|
| ImageFrame();
|
|
|
| @@ -107,9 +114,13 @@ public:
|
| }
|
|
|
| // Allocates space for the pixel data. Must be called before any pixels
|
| - // are written. Must only be called once. Returns whether allocation
|
| - // succeeded.
|
| - bool setSize(int newWidth, int newHeight);
|
| + // are written. Returns whether allocation succeeded.
|
| + bool setSize(int newWidth, int newHeight, ColorType bitmapType = RGBA8888);
|
| + inline bool hasSize(const IntSize& size, ColorType bitmapType) const
|
| + {
|
| + // skip checking height, no stretching involved
|
| + return (m_bitmap.width() == size.width()) && (bitmapType == static_cast<ColorType>(m_bitmap.colorType()));
|
| + }
|
|
|
| // Returns a caller-owned pointer to the underlying native image data.
|
| // (Actual use: This pointer will be owned by BitmapImage and freed in
|
| @@ -146,6 +157,12 @@ public:
|
| return m_bitmap.getAddr32(x, y);
|
| }
|
|
|
| + template<class T>
|
| + inline T* getAddrT(int x, int y)
|
| + {
|
| + ASSERT_NOT_REACHED();
|
| + }
|
| +
|
| inline void setRGBA(int x, int y, unsigned r, unsigned g, unsigned b, unsigned a)
|
| {
|
| setRGBA(getAddr(x, y), r, g, b, a);
|
| @@ -178,6 +195,11 @@ public:
|
| *dest = SkPackARGB32NoCheck(a, r, g, b);
|
| }
|
|
|
| + static inline void setRGB565(PixelData16* dest, unsigned r, unsigned g, unsigned b)
|
| + {
|
| + *dest = SkDitherPack888ToRGB16(r, g, b);
|
| + }
|
| +
|
| // Notifies the SkBitmap if any pixels changed and resets the flag.
|
| inline void notifyBitmapIfPixelsChanged()
|
| {
|
| @@ -218,6 +240,18 @@ private:
|
| size_t m_requiredPreviousFrameIndex;
|
| };
|
|
|
| +template<>
|
| +inline ImageFrame::PixelData* ImageFrame::getAddrT<ImageFrame::PixelData>(int x, int y)
|
| +{
|
| + return m_bitmap.getAddr32(x, y);
|
| +}
|
| +
|
| +template<>
|
| +inline ImageFrame::PixelData16* ImageFrame::getAddrT<ImageFrame::PixelData16>(int x, int y)
|
| +{
|
| + return m_bitmap.getAddr16(x, y);
|
| +}
|
| +
|
| } // namespace blink
|
|
|
| #endif
|
|
|