#pragma once
#include "AcceleratedDrawingArea.h"
#include <WebCore/Region.h>
namespace WebCore {
class GraphicsContext;
}
namespace WebKit {
class ShareableBitmap;
class UpdateInfo;
class DrawingAreaImpl final : public AcceleratedDrawingArea {
public:
DrawingAreaImpl(WebPage&, const WebPageCreationParameters&);
virtual ~DrawingAreaImpl();
private:
void setNeedsDisplay() override;
void setNeedsDisplayInRect(const WebCore::IntRect&) override;
void scroll(const WebCore::IntRect& scrollRect, const WebCore::IntSize& scrollDelta) override;
void forceRepaint() override;
void mainFrameContentSizeChanged(const WebCore::IntSize&) override;
void updatePreferences(const WebPreferencesStore&) override;
void setRootCompositingLayer(WebCore::GraphicsLayer*) override;
void updateBackingStoreState(uint64_t backingStoreStateID, bool respondImmediately, float deviceScaleFactor, const WebCore::IntSize&, const WebCore::IntSize& scrollOffset) override;
void didUpdate() override;
void suspendPainting() override;
void sendDidUpdateBackingStoreState() override;
void didUpdateBackingStoreState() override;
void enterAcceleratedCompositingMode(WebCore::GraphicsLayer*) override;
void exitAcceleratedCompositingMode() override;
void scheduleDisplay();
void displayTimerFired();
void display();
void display(UpdateInfo&);
WebCore::Region m_dirtyRegion;
WebCore::IntRect m_scrollRect;
WebCore::IntSize m_scrollOffset;
bool m_isWaitingForDidUpdate { false };
bool m_alwaysUseCompositing {false };
bool m_forceRepaintAfterBackingStoreStateUpdate { false };
RunLoop::Timer<DrawingAreaImpl> m_displayTimer;
};
}