Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(452)

Side by Side Diff: src/core/SkLayerInfo.h

Issue 1950523002: Remove GrLayerHoister (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Forgot to remove some files Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/core/SkDevice.cpp ('k') | src/core/SkMultiPictureDraw.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 /*
2 * Copyright 2014 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8 #ifndef SkLayerInfo_DEFINED
9 #define SkLayerInfo_DEFINED
10
11 #include "SkBigPicture.h"
12 #include "SkMatrix.h"
13 #include "SkPaint.h"
14 #include "SkTArray.h"
15
16 // This class stores information about the saveLayer/restore pairs found
17 // within an SkPicture. It is used by Ganesh to perform layer hoisting.
18 class SkLayerInfo : public SkBigPicture::AccelData {
19 public:
20 // Information about a given saveLayer/restore block in an SkPicture
21 class BlockInfo {
22 public:
23 BlockInfo() : fPicture(nullptr), fPaint(nullptr), fKey(nullptr), fKeySiz e(0) {}
24 ~BlockInfo() {
25 SkSafeUnref(fPicture);
26 delete fPaint;
27 delete[] fKey;
28 }
29
30 // The picture owning the layer. If the owning picture is the top-most
31 // one (i.e., the picture for which this SkLayerInfo was created) then
32 // this pointer is nullptr. If it is a nested picture then the pointer
33 // is non-nullptr and owns a ref on the picture.
34 const SkPicture* fPicture;
35 // The device space bounds of this layer.
36 SkRect fBounds;
37 // If not-empty, the optional bounds parameter passed in to the saveLaye r
38 // call.
39 SkRect fSrcBounds;
40 // The pre-matrix begins as the identity and accumulates the transforms
41 // of the containing SkPictures (if any). This matrix state has to be
42 // part of the initial matrix during replay so that it will be
43 // preserved across setMatrix calls.
44 SkMatrix fPreMat;
45 // The matrix state (in the leaf picture) in which this layer's draws
46 // must occur. It will/can be overridden by setMatrix calls in the
47 // layer itself. It does not include the translation needed to map the
48 // layer's top-left point to the origin (which must be part of the
49 // initial matrix).
50 SkMatrix fLocalMat;
51 // The paint to use on restore. Can be nullptr since it is optional.
52 const SkPaint* fPaint;
53 // The index of this saveLayer in the picture.
54 size_t fSaveLayerOpID;
55 // The index of the matching restore in the picture.
56 size_t fRestoreOpID;
57 // True if this saveLayer has at least one other saveLayer nested within it.
58 // False otherwise.
59 bool fHasNestedLayers;
60 // True if this saveLayer is nested within another. False otherwise.
61 bool fIsNested;
62 // The variable length key for this saveLayer block. It stores the
63 // thread of drawPicture and saveLayer operation indices that lead to th is
64 // saveLayer (including its own op index). The BlockInfo owns this memor y.
65 int* fKey;
66 int fKeySize; // # of ints
67 };
68
69 SkLayerInfo() {}
70
71 BlockInfo& addBlock() { return fBlocks.push_back(); }
72
73 int numBlocks() const { return fBlocks.count(); }
74
75 const BlockInfo& block(int index) const {
76 SkASSERT(index < fBlocks.count());
77
78 return fBlocks[index];
79 }
80
81 private:
82 SkTArray<BlockInfo, true> fBlocks;
83
84 typedef SkBigPicture::AccelData INHERITED;
85 };
86
87 #endif // SkLayerInfo_DEFINED
OLDNEW
« no previous file with comments | « src/core/SkDevice.cpp ('k') | src/core/SkMultiPictureDraw.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698