TextureMapperTiledBackingStore.h [plain text]
#ifndef TextureMapperTiledBackingStore_h
#define TextureMapperTiledBackingStore_h
#if USE(TEXTURE_MAPPER)
#include "FloatRect.h"
#include "Image.h"
#include "TextureMapperBackingStore.h"
#include "TextureMapperTile.h"
#include <wtf/RefPtr.h>
namespace WebCore {
class TextureMapper;
class TextureMapperTiledBackingStore : public TextureMapperBackingStore {
public:
static PassRefPtr<TextureMapperTiledBackingStore> create() { return adoptRef(new TextureMapperTiledBackingStore); }
virtual ~TextureMapperTiledBackingStore() { }
virtual PassRefPtr<BitmapTexture> texture() const override;
virtual void paintToTextureMapper(TextureMapper*, const FloatRect&, const TransformationMatrix&, float) override;
virtual void drawBorder(TextureMapper*, const Color&, float borderWidth, const FloatRect&, const TransformationMatrix&) override;
virtual void drawRepaintCounter(TextureMapper*, int repaintCount, const Color&, const FloatRect&, const TransformationMatrix&) override;
void updateContents(TextureMapper*, Image*, const FloatSize&, const IntRect&, BitmapTexture::UpdateContentsFlag);
void updateContents(TextureMapper*, GraphicsLayer*, const FloatSize&, const IntRect&, BitmapTexture::UpdateContentsFlag);
void setContentsToImage(Image* image) { m_image = image; }
private:
TextureMapperTiledBackingStore();
void createOrDestroyTilesIfNeeded(const FloatSize& backingStoreSize, const IntSize& tileSize, bool hasAlpha);
void updateContentsFromImageIfNeeded(TextureMapper*);
TransformationMatrix adjustedTransformForRect(const FloatRect&);
inline FloatRect rect() const { return FloatRect(FloatPoint::zero(), m_size); }
Vector<TextureMapperTile> m_tiles;
FloatSize m_size;
RefPtr<Image> m_image;
};
} #endif
#endif