ImageBufferCGBitmapBackend.h [plain text]
#pragma once
#if USE(CG)
#include "ImageBufferCGBackend.h"
#include <wtf/IsoMalloc.h>
namespace WebCore {
class ImageBufferCGBitmapBackend : public ImageBufferCGBackend {
WTF_MAKE_ISO_ALLOCATED(ImageBufferCGBitmapBackend);
WTF_MAKE_NONCOPYABLE(ImageBufferCGBitmapBackend);
public:
static std::unique_ptr<ImageBufferCGBitmapBackend> create(const Parameters&, CGColorSpaceRef, const HostWindow*);
static std::unique_ptr<ImageBufferCGBitmapBackend> create(const Parameters&, const HostWindow*);
static std::unique_ptr<ImageBufferCGBitmapBackend> create(const Parameters&, const GraphicsContext&);
GraphicsContext& context() const override;
IntSize backendSize() const override;
RefPtr<NativeImage> copyNativeImage(BackingStoreCopy = CopyBackingStore) const override;
Vector<uint8_t> toBGRAData() const override;
RefPtr<ImageData> getImageData(AlphaPremultiplication outputFormat, const IntRect&) const override;
void putImageData(AlphaPremultiplication inputFormat, const ImageData&, const IntRect& srcRect, const IntPoint& destPoint, AlphaPremultiplication destFormat) override;
static constexpr bool isOriginAtUpperLeftCorner = true;
private:
ImageBufferCGBitmapBackend(const Parameters&, void* data, RetainPtr<CGDataProviderRef>&&, std::unique_ptr<GraphicsContext>&&);
void* m_data;
RetainPtr<CGDataProviderRef> m_dataProvider;
std::unique_ptr<GraphicsContext> m_context;
};
}
#endif // USE(CG)