SkDeviceImageFilterProxy.h revision f7076a13e2d4269903b34ef2780e1c84723e4477
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 "SkDevice.h" 12#include "SkImageFilter.h" 13#include "SkSurfaceProps.h" 14 15class SkDeviceImageFilterProxy : public SkImageFilter::Proxy { 16public: 17 SkDeviceImageFilterProxy(SkBaseDevice* device, const SkSurfaceProps& props) 18 : fDevice(device) 19 , fProps(props.flags(), 20 SkBaseDevice::CreateInfo::AdjustGeometry(SkImageInfo(), 21 SkBaseDevice::kPossible_TileUsage, 22 props.pixelGeometry())) 23 {} 24 25 SkBaseDevice* createDevice(int w, int h) SK_OVERRIDE { 26 SkBaseDevice::CreateInfo cinfo(SkImageInfo::MakeN32Premul(w, h), 27 SkBaseDevice::kPossible_TileUsage, 28 kUnknown_SkPixelGeometry); 29 return fDevice->onCreateDevice(cinfo, NULL); 30 } 31 bool canHandleImageFilter(const SkImageFilter* filter) SK_OVERRIDE { 32 return fDevice->canHandleImageFilter(filter); 33 } 34 virtual bool filterImage(const SkImageFilter* filter, const SkBitmap& src, 35 const SkImageFilter::Context& ctx, 36 SkBitmap* result, SkIPoint* offset) SK_OVERRIDE { 37 return fDevice->filterImage(filter, src, ctx, result, offset); 38 } 39 40 const SkSurfaceProps* surfaceProps() const SK_OVERRIDE { 41 return &fProps; 42 } 43 44private: 45 SkBaseDevice* fDevice; 46 const SkSurfaceProps fProps; 47}; 48 49#endif 50