michael@0: michael@0: /* michael@0: * Copyright 2012 Google Inc. michael@0: * michael@0: * Use of this source code is governed by a BSD-style license that can be michael@0: * found in the LICENSE file. michael@0: */ michael@0: michael@0: #ifndef SkRTreeCanvas_DEFINED michael@0: #define SkRTreeCanvas_DEFINED michael@0: michael@0: #include "SkBBoxHierarchy.h" michael@0: #include "SkBBoxRecord.h" michael@0: michael@0: /** michael@0: * This records bounding box information into an SkBBoxHierarchy, and clip/transform information michael@0: * into an SkPictureStateTree to allow for efficient culling and correct playback of draws. michael@0: */ michael@0: class SkBBoxHierarchyRecord : public SkBBoxRecord, public SkBBoxHierarchyClient { michael@0: public: michael@0: /** This will take a ref of h */ michael@0: SkBBoxHierarchyRecord(const SkISize& size, uint32_t recordFlags, SkBBoxHierarchy* h); michael@0: michael@0: virtual void handleBBox(const SkRect& bounds) SK_OVERRIDE; michael@0: michael@0: // Implementation of the SkBBoxHierarchyClient interface michael@0: virtual bool shouldRewind(void* data) SK_OVERRIDE; michael@0: michael@0: protected: michael@0: virtual void willSave(SaveFlags) SK_OVERRIDE; michael@0: virtual SaveLayerStrategy willSaveLayer(const SkRect*, const SkPaint*, SaveFlags) SK_OVERRIDE; michael@0: virtual void willRestore() SK_OVERRIDE; michael@0: michael@0: virtual void didTranslate(SkScalar, SkScalar) SK_OVERRIDE; michael@0: virtual void didScale(SkScalar, SkScalar) SK_OVERRIDE; michael@0: virtual void didRotate(SkScalar) SK_OVERRIDE; michael@0: virtual void didSkew(SkScalar, SkScalar) SK_OVERRIDE; michael@0: virtual void didConcat(const SkMatrix&) SK_OVERRIDE; michael@0: virtual void didSetMatrix(const SkMatrix&) SK_OVERRIDE; michael@0: michael@0: virtual void onClipRect(const SkRect&, SkRegion::Op, ClipEdgeStyle) SK_OVERRIDE; michael@0: virtual void onClipRRect(const SkRRect&, SkRegion::Op, ClipEdgeStyle) SK_OVERRIDE; michael@0: virtual void onClipPath(const SkPath&, SkRegion::Op, ClipEdgeStyle) SK_OVERRIDE; michael@0: virtual void onClipRegion(const SkRegion&, SkRegion::Op) SK_OVERRIDE; michael@0: michael@0: private: michael@0: typedef SkBBoxRecord INHERITED; michael@0: }; michael@0: michael@0: #endif