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

Unified Diff: include/core/SkDevice.h

Issue 920513003: Make filters use SkImage instead of SkBitmap Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 5 years, 10 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
Index: include/core/SkDevice.h
diff --git a/include/core/SkDevice.h b/include/core/SkDevice.h
index 9f3ac580080590c36989f4a657040e6a79092317..012a3674cf058477813b8d235fb07cd221c67cbe 100644
--- a/include/core/SkDevice.h
+++ b/include/core/SkDevice.h
@@ -17,11 +17,14 @@
class SkClipStack;
class SkDraw;
struct SkIRect;
+class SkImage;
class SkMatrix;
class SkMetaData;
class SkRegion;
struct SkDeviceProperties;
class GrRenderTarget;
+class SkSurface_Base;
+
class SK_API SkBaseDevice : public SkRefCnt {
public:
@@ -199,6 +202,8 @@ protected:
const SkMatrix& matrix, const SkPaint& paint) = 0;
virtual void drawSprite(const SkDraw&, const SkBitmap& bitmap,
int x, int y, const SkPaint& paint) = 0;
+ virtual void drawImage(const SkDraw&, const SkImage& image,
+ int x, int y, const SkPaint& paint);
/**
* The default impl. will create a bitmap-shader from the bitmap,
@@ -273,14 +278,14 @@ protected:
/**
* Related (but not required) to canHandleImageFilter, this method returns
- * true if the device could apply the filter to the src bitmap and return
+ * true if the device could apply the filter to the src image and return
* the result (and updates offset as needed).
* If the device does not recognize or support this filter,
* it just returns false and leaves result and offset unchanged.
*/
- virtual bool filterImage(const SkImageFilter*, const SkBitmap&,
+ virtual bool filterImage(const SkImageFilter*, SkImage&,
const SkImageFilter::Context&,
- SkBitmap* /*result*/, SkIPoint* /*offset*/) {
+ SkAutoTUnref<SkImage>& /*result*/, SkIPoint* /*offset*/) {
return false;
}
@@ -350,6 +355,10 @@ protected:
const SkPixelGeometry fPixelGeometry;
};
+ virtual SkSurface* onCreateCompatibleSurface(const CreateInfo&) {
+ return NULL;
+ }
+ // TODO: left to compile pdf et al.
virtual SkBaseDevice* onCreateCompatibleDevice(const CreateInfo&) {
return NULL;
}
@@ -366,8 +375,17 @@ private:
friend class SkDeferredDevice; // for newSurface
friend class SkNoPixelsBitmapDevice;
+ friend class SkSurface;
+ friend class SkSurface_Gpu;
friend class SkSurface_Raster;
+ // TODO: remove when GrRenderTarget is-a SkSurface.
bsalomon 2015/02/13 14:24:35 Do you mean to make GrRenderTarget be a subclass o
+ SkSurface_Base* getSurfaceBase() const { return fSurfaceBase; }
+ void setSurfaceBase(SkSurface_Base* sb) {
+ SkASSERT(fSurfaceBase == NULL || sb == NULL);
+ fSurfaceBase = sb;
+ }
+
// used to change the backend's pixels (and possibly config/rowbytes)
// but cannot change the width/height, so there should be no change to
// any clip information.
@@ -389,6 +407,8 @@ private:
SkMetaData* fMetaData;
SkDeviceProperties* fLeakyProperties; // will always exist.
+ SkSurface_Base* fSurfaceBase;
+
#ifdef SK_DEBUG
bool fAttachedToCanvas;
#endif
« no previous file with comments | « gyp/effects.gyp ('k') | include/core/SkImage.h » ('j') | include/core/SkImage.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698