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

Unified Diff: src/core/SkPictureStateTree.h

Issue 617953002: Strip old backend recording down to essentials (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: debug-only Created 6 years, 3 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/core/SkPictureRecorder.cpp ('k') | src/core/SkPictureStateTree.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/core/SkPictureStateTree.h
diff --git a/src/core/SkPictureStateTree.h b/src/core/SkPictureStateTree.h
deleted file mode 100644
index 15bb02f354860f4ef871712d2d19789b3c7f65d3..0000000000000000000000000000000000000000
--- a/src/core/SkPictureStateTree.h
+++ /dev/null
@@ -1,162 +0,0 @@
-
-/*
- * 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 SkPictureStateTree_DEFINED
-#define SkPictureStateTree_DEFINED
-
-#include "SkTDArray.h"
-#include "SkChunkAlloc.h"
-#include "SkDeque.h"
-#include "SkMatrix.h"
-#include "SkRefCnt.h"
-
-class SkCanvas;
-
-/**
- * Provides an interface that, given a sequence of draws into an SkPicture with corresponding
- * offsets, allows for playback of an arbitrary subset of the draws (note that Z-order is only
- * guaranteed if the draws are explicitly sorted).
- */
-class SkPictureStateTree : public SkRefCnt {
-private:
- struct Node;
-public:
- SK_DECLARE_INST_COUNT(SkPictureStateTree)
-
- /**
- * A draw call, stores offset into command buffer, a pointer to the matrix, and a pointer to
- * the node in the tree that corresponds to its clip/layer state
- */
- struct Draw {
- SkMatrix* fMatrix;
- Node* fNode;
- uint32_t fOffset;
- bool operator<(const Draw& other) const { return fOffset < other.fOffset; }
- };
-
- class Iterator;
-
- SkPictureStateTree();
- ~SkPictureStateTree();
-
- /**
- * Creates and returns a struct representing a draw at the given offset.
- */
- Draw* appendDraw(size_t offset);
-
- /**
- * Given a list of draws, and a canvas, initialize an iterator that produces the correct
- * sequence of offsets into the command buffer to carry out those calls with correct
- * matrix/clip state. This handles saves/restores, and does all necessary matrix setup.
- */
- void initIterator(SkPictureStateTree::Iterator* iter,
- const SkTDArray<void*>& draws,
- SkCanvas* canvas);
-
- void appendSave();
- void appendSaveLayer(size_t offset);
- void appendRestore();
- void appendTransform(const SkMatrix& trans);
- void appendClip(size_t offset);
-
- /**
- * Call this immediately after an appendRestore call that is associated
- * a save or saveLayer that was removed from the command stream
- * due to a command pattern optimization in SkPicture.
- */
- void saveCollapsed();
-
- /**
- * Playback helper
- */
- class Iterator {
- public:
- /** Returns the next op offset needed to create the drawing state
- required by the queued up draw operation or the offset of the queued
- up draw operation itself. In the latter case, the next draw operation
- will move into the queued up slot.
- It retuns kDrawComplete when done.
- TODO: this might be better named nextOp
- */
- uint32_t nextDraw();
- static const uint32_t kDrawComplete = SK_MaxU32;
- Iterator() : fValid(false) { }
- bool isValid() const { return fValid; }
-
- private:
- void init(const SkTDArray<void*>& draws, SkCanvas* canvas, Node* root);
-
- void setCurrentMatrix(const SkMatrix*);
-
- // The draws this iterator is associated with
- const SkTDArray<void*>* fDraws;
-
- // canvas this is playing into (so we can insert saves/restores as necessary)
- SkCanvas* fCanvas;
-
- // current state node
- Node* fCurrentNode;
-
- // List of nodes whose state we need to apply to reach TargetNode
- SkTDArray<Node*> fNodes;
-
- // The matrix of the canvas we're playing back into
- SkMatrix fPlaybackMatrix;
-
- // Cache of current matrix, so we can avoid redundantly setting it
- const SkMatrix* fCurrentMatrix;
-
- // current position in the array of draws
- int fPlaybackIndex;
- // Whether or not we need to do a save next iteration
- bool fSave;
-
- // Whether or not this is a valid iterator (the default public constructor sets this false)
- bool fValid;
-
- uint32_t finish();
-
- friend class SkPictureStateTree;
- };
-
-private:
-
- void appendNode(size_t offset);
-
- SkChunkAlloc fAlloc;
- // Needed by saveCollapsed() because nodes do not currently store
- // references to their children. If they did, we could just retrieve the
- // last added child.
- Node* fLastRestoredNode;
-
- // The currently active state
- Draw fCurrentState;
- // A stack of states for tracking save/restores
- SkDeque fStateStack;
-
- // Represents a notable piece of state that requires an offset into the command buffer,
- // corresponding to a clip/saveLayer/etc call, to apply.
- struct Node {
- Node* fParent;
- uint32_t fOffset;
- uint16_t fLevel;
- uint16_t fFlags;
- SkMatrix* fMatrix;
- enum Flags {
- kSave_Flag = 0x1,
- kSaveLayer_Flag = 0x2
- };
- };
-
- Node fRoot;
- SkMatrix fRootMatrix;
-
- typedef SkRefCnt INHERITED;
-};
-
-#endif
« no previous file with comments | « src/core/SkPictureRecorder.cpp ('k') | src/core/SkPictureStateTree.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698