#ifndef TiledBacking_h
#define TiledBacking_h
#if PLATFORM(MAC)
OBJC_CLASS CALayer;
#endif
namespace WebCore {
class IntRect;
enum ScrollingModeIndication {
MainThreadScrollingBecauseOfStyleIndication,
MainThreadScrollingBecauseOfEventHandlersIndication,
ThreadedScrollingIndication
};
class TiledBacking {
public:
virtual ~TiledBacking() { }
virtual void setVisibleRect(const FloatRect&) = 0;
virtual FloatRect visibleRect() const = 0;
virtual bool tilesWouldChangeForVisibleRect(const FloatRect&) const = 0;
virtual void setExposedRect(const FloatRect&) = 0;
virtual void setClipsToExposedRect(bool) = 0;
virtual bool clipsToExposedRect() = 0;
virtual void prepopulateRect(const FloatRect&) = 0;
virtual void setIsInWindow(bool) = 0;
enum {
CoverageForVisibleArea = 0,
CoverageForVerticalScrolling = 1 << 0,
CoverageForHorizontalScrolling = 1 << 1,
CoverageForSlowScrolling = 1 << 2, CoverageForScrolling = CoverageForVerticalScrolling | CoverageForHorizontalScrolling
};
typedef unsigned TileCoverage;
virtual void setTileCoverage(TileCoverage) = 0;
virtual TileCoverage tileCoverage() const = 0;
virtual IntSize tileSize() const = 0;
virtual void forceRepaint() = 0;
virtual void setScrollingPerformanceLoggingEnabled(bool) = 0;
virtual bool scrollingPerformanceLoggingEnabled() const = 0;
virtual void setAggressivelyRetainsTiles(bool) = 0;
virtual bool aggressivelyRetainsTiles() const = 0;
virtual void setUnparentsOffscreenTiles(bool) = 0;
virtual bool unparentsOffscreenTiles() const = 0;
virtual double retainedTileBackingStoreMemory() const = 0;
virtual IntRect tileCoverageRect() const = 0;
virtual IntRect tileGridExtent() const = 0;
virtual void setScrollingModeIndication(ScrollingModeIndication) = 0;
#if PLATFORM(MAC)
virtual CALayer *tiledScrollingIndicatorLayer() = 0;
#endif
};
}
#endif // TiledBacking_h