diff options
author | 2012-09-27 21:57:45 +0000 | |
---|---|---|
committer | 2012-09-27 21:57:45 +0000 | |
commit | 9c39744a00573b7133fc765b0a9d50a0ceace7b8 (patch) | |
tree | f416a1bf3e821884974ec2cf4e0d383ad75d16e2 /src/core/SkDeviceImageFilterProxy.h | |
parent | 200e53fa5fe7dae717a73224064a2fc37302e003 (diff) |
Fix recursive GPU processing for SkImageFilter. Plumb through the
SkImageFilter::Proxy parameter to the GPU recursion path. Extract
DeviceImageFilterProxy from SkCanvas.cpp into its own .h, and rename it.
https://codereview.appspot.com/6575059/
git-svn-id: http://skia.googlecode.com/svn/trunk@5720 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src/core/SkDeviceImageFilterProxy.h')
-rw-r--r-- | src/core/SkDeviceImageFilterProxy.h | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/core/SkDeviceImageFilterProxy.h b/src/core/SkDeviceImageFilterProxy.h new file mode 100644 index 0000000000..98a120cd0d --- /dev/null +++ b/src/core/SkDeviceImageFilterProxy.h @@ -0,0 +1,34 @@ +/* + * Copyright 2012 The Android Open Source Project + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkDeviceImageFilterProxy_DEFINED +#define SkDeviceImageFilterProxy_DEFINED + +#include "SkImageFilter.h" + +class SkDeviceImageFilterProxy : public SkImageFilter::Proxy { +public: + SkDeviceImageFilterProxy(SkDevice* device) : fDevice(device) {} + + virtual SkDevice* createDevice(int w, int h) SK_OVERRIDE { + return fDevice->createCompatibleDevice(SkBitmap::kARGB_8888_Config, + w, h, false); + } + virtual bool canHandleImageFilter(SkImageFilter* filter) SK_OVERRIDE { + return fDevice->canHandleImageFilter(filter); + } + virtual bool filterImage(SkImageFilter* filter, const SkBitmap& src, + const SkMatrix& ctm, + SkBitmap* result, SkIPoint* offset) SK_OVERRIDE { + return fDevice->filterImage(filter, src, ctm, result, offset); + } + +private: + SkDevice* fDevice; +}; + +#endif |