blob: 7db82d8369aef0f1be8c72f5e0fdf4e1e4ef2ec2 [file] [log] [blame]
rileya@google.com9f5898d2012-09-11 20:21:44 +00001
2/*
3 * Copyright 2012 Google Inc.
4 *
5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file.
7 */
8
9#ifndef SkRTreeCanvas_DEFINED
10#define SkRTreeCanvas_DEFINED
11
commit-bot@chromium.org4b32bd52013-03-15 15:06:03 +000012#include "SkBBoxHierarchy.h"
rileya@google.com9f5898d2012-09-11 20:21:44 +000013#include "SkBBoxRecord.h"
14
15/**
16 * This records bounding box information into an SkBBoxHierarchy, and clip/transform information
17 * into an SkPictureStateTree to allow for efficient culling and correct playback of draws.
18 */
commit-bot@chromium.org4b32bd52013-03-15 15:06:03 +000019class SkBBoxHierarchyRecord : public SkBBoxRecord, public SkBBoxHierarchyClient {
rileya@google.com9f5898d2012-09-11 20:21:44 +000020public:
21 /** This will take a ref of h */
robertphillips0bdbea72014-06-11 11:37:55 -070022 SkBBoxHierarchyRecord(const SkISize& size, uint32_t recordFlags, SkBBoxHierarchy* h);
tomhudsona8377402014-06-27 08:19:35 -070023 virtual ~SkBBoxHierarchyRecord() { };
rileya@google.com9f5898d2012-09-11 20:21:44 +000024
25 virtual void handleBBox(const SkRect& bounds) SK_OVERRIDE;
26
commit-bot@chromium.org4b32bd52013-03-15 15:06:03 +000027 // Implementation of the SkBBoxHierarchyClient interface
28 virtual bool shouldRewind(void* data) SK_OVERRIDE;
29
robertphillips@google.com8f90a892014-02-28 18:19:39 +000030protected:
Florin Malita5f6102d2014-06-30 10:13:28 -040031 virtual void willSave() SK_OVERRIDE;
commit-bot@chromium.orge54a23f2014-03-12 20:21:48 +000032 virtual SaveLayerStrategy willSaveLayer(const SkRect*, const SkPaint*, SaveFlags) SK_OVERRIDE;
33 virtual void willRestore() SK_OVERRIDE;
34
commit-bot@chromium.org44c48d02014-03-13 20:03:58 +000035 virtual void didConcat(const SkMatrix&) SK_OVERRIDE;
36 virtual void didSetMatrix(const SkMatrix&) SK_OVERRIDE;
37
robertphillips@google.com8f90a892014-02-28 18:19:39 +000038 virtual void onClipRect(const SkRect&, SkRegion::Op, ClipEdgeStyle) SK_OVERRIDE;
39 virtual void onClipRRect(const SkRRect&, SkRegion::Op, ClipEdgeStyle) SK_OVERRIDE;
40 virtual void onClipPath(const SkPath&, SkRegion::Op, ClipEdgeStyle) SK_OVERRIDE;
41 virtual void onClipRegion(const SkRegion&, SkRegion::Op) SK_OVERRIDE;
42
rileya@google.com9f5898d2012-09-11 20:21:44 +000043private:
44 typedef SkBBoxRecord INHERITED;
45};
46
47#endif