| OLD | NEW |
| (Empty) |
| 1 /* | |
| 2 * Copyright 2012 The Android Open Source Project | |
| 3 * | |
| 4 * Use of this source code is governed by a BSD-style license that can be | |
| 5 * found in the LICENSE file. | |
| 6 */ | |
| 7 | |
| 8 #ifndef SkDeviceImageFilterProxy_DEFINED | |
| 9 #define SkDeviceImageFilterProxy_DEFINED | |
| 10 | |
| 11 #include "SkBitmapDevice.h" | |
| 12 #include "SkDevice.h" | |
| 13 #include "SkImageFilter.h" | |
| 14 #include "SkSurfaceProps.h" | |
| 15 | |
| 16 class SkDeviceImageFilterProxy : public SkImageFilter::Proxy { | |
| 17 public: | |
| 18 SkDeviceImageFilterProxy(SkBaseDevice* device, const SkSurfaceProps& props) | |
| 19 : fDevice(device) | |
| 20 , fProps(props.flags(), kUnknown_SkPixelGeometry) | |
| 21 {} | |
| 22 | |
| 23 SkBaseDevice* createDevice(int w, int h) override { | |
| 24 SkBaseDevice::CreateInfo cinfo(SkImageInfo::MakeN32Premul(w, h), | |
| 25 SkBaseDevice::kNever_TileUsage, | |
| 26 kUnknown_SkPixelGeometry, | |
| 27 true /*forImageFilter*/); | |
| 28 SkBaseDevice* dev = fDevice->onCreateDevice(cinfo, NULL); | |
| 29 if (NULL == dev) { | |
| 30 dev = SkBitmapDevice::Create(cinfo.fInfo); | |
| 31 } | |
| 32 return dev; | |
| 33 } | |
| 34 bool filterImage(const SkImageFilter* filter, const SkBitmap& src, | |
| 35 const SkImageFilter::Context& ctx, SkBitmap* res, SkIPoint*
offset) override { | |
| 36 return fDevice->filterImage(filter, src, ctx, res, offset); | |
| 37 } | |
| 38 const SkSurfaceProps* surfaceProps() const override { | |
| 39 return &fProps; | |
| 40 } | |
| 41 | |
| 42 private: | |
| 43 SkBaseDevice* fDevice; | |
| 44 const SkSurfaceProps fProps; | |
| 45 }; | |
| 46 | |
| 47 #endif | |
| OLD | NEW |