| Index: include/core/SkMultiPictureDraw.h
|
| diff --git a/include/core/SkMultiPictureDraw.h b/include/core/SkMultiPictureDraw.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..d8d9cb7ecdcaa0492ed665e2edd1f240d0a5573b
|
| --- /dev/null
|
| +++ b/include/core/SkMultiPictureDraw.h
|
| @@ -0,0 +1,68 @@
|
| +/*
|
| + * Copyright 2014 Google Inc.
|
| + *
|
| + * Use of this source code is governed by a BSD-style license that can be
|
| + * found in the LICENSE file.
|
| + */
|
| +
|
| +#ifndef SkMultiPictureDraw_DEFINED
|
| +#define SkMultiPictureDraw_DEFINED
|
| +
|
| +#include "SkMatrix.h"
|
| +#include "SkTDArray.h"
|
| +
|
| +class SkCanvas;
|
| +class SkPaint;
|
| +class SkPicture;
|
| +
|
| +/** \class SkMultiPictureDraw
|
| +
|
| + The MultiPictureDraw object accepts several picture/canvas pairs and
|
| + then attempts to optimally draw the pictures into the canvases, sharing
|
| + as many resources as possible.
|
| +*/
|
| +class SK_API SkMultiPictureDraw {
|
| +public:
|
| + /**
|
| + * Create an object to optimize the drawing of multiple pictures.
|
| + * @param reserve Hint for the number of add calls expected to be issued
|
| + */
|
| + SkMultiPictureDraw(int reserve = 0);
|
| + ~SkMultiPictureDraw() { this->reset(); }
|
| +
|
| + /**
|
| + * Add a canvas/picture pair for later rendering.
|
| + * @param canvas the canvas in which to draw picture
|
| + * @param picture the picture to draw into canvas
|
| + * @param matrix if non-NULL, applied to the CTM when drawing
|
| + * @param paint if non-NULL, draw picture to a temporary buffer
|
| + * and then apply the paint when the result is drawn
|
| + */
|
| + void add(SkCanvas* canvas,
|
| + const SkPicture* picture,
|
| + const SkMatrix* matrix = NULL,
|
| + const SkPaint* paint = NULL);
|
| +
|
| + /**
|
| + * Perform all the previously added draws. This will reset the state
|
| + * of this object.
|
| + */
|
| + void draw();
|
| +
|
| + /**
|
| + * Abandon all buffered draws and reset to the initial state.
|
| + */
|
| + void reset();
|
| +
|
| +private:
|
| + struct DrawData {
|
| + SkCanvas* canvas; // reffed
|
| + const SkPicture* picture; // reffed
|
| + SkMatrix matrix;
|
| + SkPaint* paint; // owned
|
| + };
|
| +
|
| + SkTDArray<DrawData> fDrawData;
|
| +};
|
| +
|
| +#endif
|
|
|