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

Unified Diff: include/utils/SkDeferredCanvas.h

Issue 1269093002: remove SkDeferredCanvas (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 5 years, 4 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 | « include/core/SkDevice.h ('k') | samplecode/SampleApp.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: include/utils/SkDeferredCanvas.h
diff --git a/include/utils/SkDeferredCanvas.h b/include/utils/SkDeferredCanvas.h
deleted file mode 100644
index 9b50caf89bf4261f0a56fa89f19c15e6eadee325..0000000000000000000000000000000000000000
--- a/include/utils/SkDeferredCanvas.h
+++ /dev/null
@@ -1,261 +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 SkDeferredCanvas_DEFINED
-#define SkDeferredCanvas_DEFINED
-
-#include "SkCanvas.h"
-#include "SkPixelRef.h"
-
-class SkDeferredDevice;
-class SkImage;
-class SkSurface;
-
-/** \class SkDeferredCanvas
- Subclass of SkCanvas that encapsulates an SkPicture or SkGPipe for deferred
- drawing. The main difference between this class and SkPictureRecord (the
- canvas provided by SkPicture) is that this is a full drop-in replacement
- for SkCanvas, while SkPictureRecord only supports draw operations.
- SkDeferredCanvas will transparently trigger the flushing of deferred
- draw operations when an attempt is made to access the pixel data.
-*/
-class SK_API SkDeferredCanvas : public SkCanvas {
-public:
- class SK_API NotificationClient;
-
- /** Construct a canvas with the specified surface to draw into.
- This factory must be used for newImageSnapshot to work.
- @param surface Specifies a surface for the canvas to draw into.
- */
- static SkDeferredCanvas* Create(SkSurface* surface);
-
- virtual ~SkDeferredCanvas();
-
- /**
- * Specify the surface to be used by this canvas. Calling setSurface will
- * release the previously set surface or device. Takes a reference on the
- * surface.
- *
- * @param surface The surface that the canvas will raw into
- * @return The surface argument, for convenience.
- */
- SkSurface* setSurface(SkSurface* surface);
-
- /**
- * Specify a NotificationClient to be used by this canvas. Calling
- * setNotificationClient will release the previously set
- * NotificationClient, if any. SkDeferredCanvas does not take ownership
- * of the notification client. Therefore user code is resposible
- * for its destruction. The notification client must be unregistered
- * by calling setNotificationClient(NULL) if it is destroyed before
- * this canvas.
- * Note: Must be called after the device is set with setDevice.
- *
- * @param notificationClient interface for dispatching notifications
- * @return The notificationClient argument, for convenience.
- */
- NotificationClient* setNotificationClient(NotificationClient* notificationClient);
-
- /**
- * Enable or disable deferred drawing. When deferral is disabled,
- * pending draw operations are immediately flushed and from then on,
- * the SkDeferredCanvas behaves just like a regular SkCanvas.
- * This method must not be called while the save/restore stack is in use.
- * @param deferred true/false
- */
- void setDeferredDrawing(bool deferred);
-
- /**
- * Returns true if deferred drawing is currenlty enabled.
- */
- bool isDeferredDrawing() const;
-
- /**
- * Returns true if the canvas contains a fresh frame. A frame is
- * considered fresh when its content do not depend on the contents
- * of the previous frame. For example, if a canvas is cleared before
- * drawing each frame, the frames will all be considered fresh.
- * A frame is defined as the graphics image produced by as a result
- * of all the canvas draws operation executed between two successive
- * calls to isFreshFrame. The result of isFreshFrame is computed
- * conservatively, so it may report false negatives.
- */
- bool isFreshFrame() const;
-
- /**
- * Returns canvas's size.
- */
- SkISize getCanvasSize() const;
-
- /**
- * Returns true if the canvas has recorded draw commands that have
- * not yet been played back.
- */
- bool hasPendingCommands() const;
-
- /**
- * Flushes pending draw commands, if any, and returns an image of the
- * current state of the surface pixels up to this point. Subsequent
- * changes to the surface (by drawing into its canvas) will not be
- * reflected in this image. Will return NULL if the deferred canvas
- * was not constructed from an SkSurface.
- */
- SkImage* newImageSnapshot();
-
- /**
- * Specify the maximum number of bytes to be allocated for the purpose
- * of recording draw commands to this canvas. The default limit, is
- * 64MB.
- * @param maxStorage The maximum number of bytes to be allocated.
- */
- void setMaxRecordingStorage(size_t maxStorage);
-
- /**
- * Returns the number of bytes currently allocated for the purpose of
- * recording draw commands.
- */
- size_t storageAllocatedForRecording() const;
-
- /**
- * Attempt to reduce the storage allocated for recording by evicting
- * cache resources.
- * @param bytesToFree minimum number of bytes that should be attempted to
- * be freed.
- * @return number of bytes actually freed.
- */
- size_t freeMemoryIfPossible(size_t bytesToFree);
-
- /**
- * Specifies the maximum size (in bytes) allowed for a given image to be
- * rendered using the deferred canvas.
- */
- void setBitmapSizeThreshold(size_t sizeThreshold);
- size_t getBitmapSizeThreshold() const { return fBitmapSizeThreshold; }
-
- /**
- * Executes all pending commands without drawing
- */
- void silentFlush();
-
- SkDrawFilter* setDrawFilter(SkDrawFilter* filter) override;
-
-protected:
- void willSave() override;
- SaveLayerStrategy willSaveLayer(const SkRect*, const SkPaint*, SaveFlags) override;
- void willRestore() override;
-
- void didConcat(const SkMatrix&) override;
- void didSetMatrix(const SkMatrix&) override;
-
- void onDrawDRRect(const SkRRect&, const SkRRect&, const SkPaint&) override;
- virtual void onDrawText(const void* text, size_t byteLength, SkScalar x, SkScalar y,
- const SkPaint&) override;
- virtual void onDrawPosText(const void* text, size_t byteLength, const SkPoint pos[],
- const SkPaint&) override;
- virtual void onDrawPosTextH(const void* text, size_t byteLength, const SkScalar xpos[],
- SkScalar constY, const SkPaint&) override;
- virtual void onDrawTextOnPath(const void* text, size_t byteLength, const SkPath& path,
- const SkMatrix* matrix, const SkPaint&) override;
- virtual void onDrawTextBlob(const SkTextBlob* blob, SkScalar x, SkScalar y,
- const SkPaint& paint) override;
- virtual void onDrawPatch(const SkPoint cubics[12], const SkColor colors[4],
- const SkPoint texCoords[4], SkXfermode* xmode,
- const SkPaint& paint) override;
-
- void onDrawPaint(const SkPaint&) override;
- void onDrawPoints(PointMode, size_t count, const SkPoint pts[], const SkPaint&) override;
- void onDrawRect(const SkRect&, const SkPaint&) override;
- void onDrawOval(const SkRect&, const SkPaint&) override;
- void onDrawRRect(const SkRRect&, const SkPaint&) override;
- void onDrawPath(const SkPath&, const SkPaint&) override;
- void onDrawBitmap(const SkBitmap&, SkScalar left, SkScalar top, const SkPaint*) override;
- void onDrawBitmapRect(const SkBitmap&, const SkRect* src, const SkRect& dst, const SkPaint*,
- SrcRectConstraint) override;
- void onDrawImage(const SkImage*, SkScalar left, SkScalar top, const SkPaint*) override;
- void onDrawImageRect(const SkImage*, const SkRect* src, const SkRect& dst,
- const SkPaint*, SrcRectConstraint) override;
- void onDrawImageNine(const SkImage*, const SkIRect& center, const SkRect& dst,
- const SkPaint*) override;
- void onDrawBitmapNine(const SkBitmap&, const SkIRect& center, const SkRect& dst,
- const SkPaint*) override;
- void onDrawSprite(const SkBitmap&, int left, int top, const SkPaint*) override;
- void onDrawVertices(VertexMode vmode, int vertexCount,
- const SkPoint vertices[], const SkPoint texs[],
- const SkColor colors[], SkXfermode* xmode,
- const uint16_t indices[], int indexCount,
- const SkPaint&) override;
- void onDrawAtlas(const SkImage*, const SkRSXform[], const SkRect[], const SkColor[], int count,
- SkXfermode::Mode, const SkRect* cullRect, const SkPaint*) override;
-
- void onClipRect(const SkRect&, SkRegion::Op, ClipEdgeStyle) override;
- void onClipRRect(const SkRRect&, SkRegion::Op, ClipEdgeStyle) override;
- void onClipPath(const SkPath&, SkRegion::Op, ClipEdgeStyle) override;
- void onClipRegion(const SkRegion&, SkRegion::Op) override;
-
- void onDrawPicture(const SkPicture*, const SkMatrix*, const SkPaint*) override;
-
-public:
- class NotificationClient {
- public:
- virtual ~NotificationClient() {}
-
- /**
- * Called before executing one or several draw commands, which means
- * once per flush when deferred rendering is enabled.
- */
- virtual void prepareForDraw() {}
-
- /**
- * Called after a recording a draw command if additional memory
- * had to be allocated for recording.
- * @param newAllocatedStorage same value as would be returned by
- * storageAllocatedForRecording(), for convenience.
- */
- virtual void storageAllocatedForRecordingChanged(size_t /*newAllocatedStorage*/) {}
-
- /**
- * Called after pending draw commands have been flushed
- */
- virtual void flushedDrawCommands() {}
-
- /**
- * Called after pending draw commands have been skipped, meaning
- * that they were optimized-out because the canvas is cleared
- * or completely overwritten by the command currently being recorded.
- */
- virtual void skippedPendingDrawCommands() {}
- };
-
-protected:
- SkCanvas* canvasForDrawIter() override;
- SkDeferredDevice* getDeferredDevice() const;
-
-private:
- SkDeferredCanvas(SkDeferredDevice*);
-
- void recordedDrawCommand();
- SkCanvas* drawingCanvas() const;
- SkCanvas* immediateCanvas() const;
- bool isFullFrame(const SkRect*, const SkPaint*) const;
- void validate() const;
- void init();
-
-
- int fSaveLevel;
- int fFirstSaveLayerIndex;
- size_t fBitmapSizeThreshold;
- bool fDeferredDrawing;
-
- mutable SkISize fCachedCanvasSize;
- mutable bool fCachedCanvasSizeDirty;
-
- friend class SkDeferredCanvasTester; // for unit testing
- typedef SkCanvas INHERITED;
-};
-
-
-#endif
« no previous file with comments | « include/core/SkDevice.h ('k') | samplecode/SampleApp.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698