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