#ifndef PinchViewport_h
#define PinchViewport_h
#include "platform/geometry/IntSize.h"
#include "platform/graphics/GraphicsLayerClient.h"
#include "platform/scroll/ScrollableArea.h"
#include "public/platform/WebScrollbar.h"
#include "public/platform/WebSize.h"
#include "wtf/OwnPtr.h"
#include "wtf/PassOwnPtr.h"
namespace blink {
class WebLayerTreeView;
class WebScrollbarLayer;
}
namespace WebCore {
class FrameHost;
class GraphicsContext;
class GraphicsLayer;
class GraphicsLayerFactory;
class IntRect;
class IntSize;
class PinchViewport FINAL : public GraphicsLayerClient, public ScrollableArea {
public:
PinchViewport(FrameHost&);
virtual ~PinchViewport();
void attachToLayerTree(GraphicsLayer*, GraphicsLayerFactory*);
GraphicsLayer* rootGraphicsLayer()
{
return m_innerViewportContainerLayer.get();
}
void setLocation(const IntPoint&);
void setSize(const IntSize&);
void registerLayersWithTreeView(blink::WebLayerTreeView*) const;
void clearLayersForTreeView(blink::WebLayerTreeView*) const;
IntRect visibleRect() const { return m_visibleRect; }
private:
virtual bool isActive() const OVERRIDE { return false; }
virtual int scrollSize(ScrollbarOrientation) const OVERRIDE;
virtual bool isScrollCornerVisible() const OVERRIDE { return false; }
virtual IntRect scrollCornerRect() const OVERRIDE { return IntRect(); }
virtual IntPoint scrollPosition() const OVERRIDE { return visibleRect().location(); }
virtual IntPoint minimumScrollPosition() const OVERRIDE;
virtual IntPoint maximumScrollPosition() const OVERRIDE;
virtual int visibleHeight() const OVERRIDE { return visibleRect().height(); };
virtual int visibleWidth() const OVERRIDE { return visibleRect().width(); };
virtual IntSize contentsSize() const OVERRIDE;
virtual bool scrollbarsCanBeActive() const OVERRIDE { return false; }
virtual IntRect scrollableAreaBoundingBox() const OVERRIDE;
virtual bool userInputScrollable(ScrollbarOrientation) const OVERRIDE { return true; }
virtual bool shouldPlaceVerticalScrollbarOnLeft() const OVERRIDE { return false; }
virtual void invalidateScrollbarRect(Scrollbar*, const IntRect&) OVERRIDE;
virtual void invalidateScrollCornerRect(const IntRect&) OVERRIDE { }
virtual void setScrollOffset(const IntPoint&) OVERRIDE;
virtual GraphicsLayer* layerForContainer() const OVERRIDE;
virtual GraphicsLayer* layerForScrolling() const OVERRIDE;
virtual GraphicsLayer* layerForHorizontalScrollbar() const OVERRIDE;
virtual GraphicsLayer* layerForVerticalScrollbar() const OVERRIDE;
virtual void notifyAnimationStarted(const GraphicsLayer*, double monotonicTime) OVERRIDE;
virtual void paintContents(const GraphicsLayer*, GraphicsContext&, GraphicsLayerPaintingPhase, const IntRect& inClip) OVERRIDE;
virtual String debugName(const GraphicsLayer*) OVERRIDE;
void setupScrollbar(blink::WebScrollbar::Orientation);
FrameHost& m_frameHost;
OwnPtr<GraphicsLayer> m_innerViewportContainerLayer;
OwnPtr<GraphicsLayer> m_pageScaleLayer;
OwnPtr<GraphicsLayer> m_innerViewportScrollLayer;
OwnPtr<GraphicsLayer> m_overlayScrollbarHorizontal;
OwnPtr<GraphicsLayer> m_overlayScrollbarVertical;
OwnPtr<blink::WebScrollbarLayer> m_webOverlayScrollbarHorizontal;
OwnPtr<blink::WebScrollbarLayer> m_webOverlayScrollbarVertical;
IntRect m_visibleRect;
};
}
#endif