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

Side by Side Diff: include/utils/SkDeferredCanvas.h

Issue 14178002: Adding SkSurface support to SkDeferredCanvas (Closed) Base URL: http://skia.googlecode.com/svn/trunk/
Patch Set: Created 7 years, 8 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | src/utils/SkDeferredCanvas.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2012 Google Inc. 2 * Copyright 2012 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #ifndef SkDeferredCanvas_DEFINED 8 #ifndef SkDeferredCanvas_DEFINED
9 #define SkDeferredCanvas_DEFINED 9 #define SkDeferredCanvas_DEFINED
10 10
11 #include "SkCanvas.h" 11 #include "SkCanvas.h"
12 #include "SkPixelRef.h" 12 #include "SkPixelRef.h"
13 13
14 class DeferredDevice; 14 class DeferredDevice;
15 class SkImage;
16 class SkSurface;
15 17
16 /** \class SkDeferredCanvas 18 /** \class SkDeferredCanvas
17 Subclass of SkCanvas that encapsulates an SkPicture or SkGPipe for deferred 19 Subclass of SkCanvas that encapsulates an SkPicture or SkGPipe for deferred
18 drawing. The main difference between this class and SkPictureRecord (the 20 drawing. The main difference between this class and SkPictureRecord (the
19 canvas provided by SkPicture) is that this is a full drop-in replacement 21 canvas provided by SkPicture) is that this is a full drop-in replacement
20 for SkCanvas, while SkPictureRecord only supports draw operations. 22 for SkCanvas, while SkPictureRecord only supports draw operations.
21 SkDeferredCanvas will transparently trigger the flushing of deferred 23 SkDeferredCanvas will transparently trigger the flushing of deferred
22 draw operations when an attempt is made to access the pixel data. 24 draw operations when an attempt is made to access the pixel data.
23 */ 25 */
24 class SK_API SkDeferredCanvas : public SkCanvas { 26 class SK_API SkDeferredCanvas : public SkCanvas {
25 public: 27 public:
26 class NotificationClient; 28 class NotificationClient;
27 29
28 SkDeferredCanvas(); 30 SkDeferredCanvas();
29 31
30 /** Construct a canvas with the specified device to draw into. 32 /** Construct a canvas with the specified device to draw into.
31 Equivalent to calling default constructor, then setDevice. 33 Equivalent to calling default constructor, then setDevice.
32 @param device Specifies a device for the canvas to draw into. 34 @param device Specifies a device for the canvas to draw into.
33 */ 35 */
34 explicit SkDeferredCanvas(SkDevice* device); 36 explicit SkDeferredCanvas(SkDevice* device);
35 37
38 /** Construct a canvas with the specified surface to draw into.
39 This constructor must be used for newImageSnapshot to work.
40 @param surface Specifies a surface for the canvas to draw into.
41 */
42 explicit SkDeferredCanvas(SkSurface* surface);
43
36 virtual ~SkDeferredCanvas(); 44 virtual ~SkDeferredCanvas();
37 45
38 /** 46 /**
39 * Specify a device to be used by this canvas. Calling setDevice will 47 * Specify a device to be used by this canvas. Calling setDevice will
40 * release the previously set device, if any. Takes a reference on the 48 * release the previously set device, if any. Takes a reference on the
41 * device. 49 * device.
42 * 50 *
43 * @param device The device that the canvas will raw into 51 * @param device The device that the canvas will raw into
44 * @return The device argument, for convenience. 52 * @return The device argument, for convenience.
45 */ 53 */
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 */ 94 */
87 bool isFreshFrame() const; 95 bool isFreshFrame() const;
88 96
89 /** 97 /**
90 * Returns true if the canvas has recorded draw commands that have 98 * Returns true if the canvas has recorded draw commands that have
91 * not yet been played back. 99 * not yet been played back.
92 */ 100 */
93 bool hasPendingCommands() const; 101 bool hasPendingCommands() const;
94 102
95 /** 103 /**
104 * Flushes pending draw commands, if any, and returns an image of the
105 * current state of the surface pixels up to this point. Subsequent
106 * changes to the surface (by drawing into its canvas) will not be
107 * reflected in this image. Will return NULL if the deferred canvas
108 * was not constructed from an SkSurface.
109 */
110 SkImage* newImageShapshot();
111
112 /**
96 * Specify the maximum number of bytes to be allocated for the purpose 113 * Specify the maximum number of bytes to be allocated for the purpose
97 * of recording draw commands to this canvas. The default limit, is 114 * of recording draw commands to this canvas. The default limit, is
98 * 64MB. 115 * 64MB.
99 * @param maxStorage The maximum number of bytes to be allocated. 116 * @param maxStorage The maximum number of bytes to be allocated.
100 */ 117 */
101 void setMaxRecordingStorage(size_t maxStorage); 118 void setMaxRecordingStorage(size_t maxStorage);
102 119
103 /** 120 /**
104 * Returns the number of bytes currently allocated for the purpose of 121 * Returns the number of bytes currently allocated for the purpose of
105 * recording draw commands. 122 * recording draw commands.
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
234 void validate() const; 251 void validate() const;
235 void init(); 252 void init();
236 bool fDeferredDrawing; 253 bool fDeferredDrawing;
237 254
238 friend class SkDeferredCanvasTester; // for unit testing 255 friend class SkDeferredCanvasTester; // for unit testing
239 typedef SkCanvas INHERITED; 256 typedef SkCanvas INHERITED;
240 }; 257 };
241 258
242 259
243 #endif 260 #endif
OLDNEW
« no previous file with comments | « no previous file | src/utils/SkDeferredCanvas.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698