15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Copyright 2012 The Android Open Source Project 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Use of this source code is governed by a BSD-style license that can be 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * found in the LICENSE file. 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef SkOffsetImageFilter_DEFINED 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define SkOffsetImageFilter_DEFINED 107d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 11ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include "SkImageFilter.h" 125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "SkPoint.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SK_API SkOffsetImageFilter : public SkImageFilter { 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef SkImageFilter INHERITED; 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)public: 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static SkOffsetImageFilter* Create(SkScalar dx, SkScalar dy, SkImageFilter* input = NULL, 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const CropRect* cropRect = NULL, 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint32_t uniqueID = 0) { 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!SkScalarIsFinite(dx) || !SkScalarIsFinite(dy)) { 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return NULL; 235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return SkNEW_ARGS(SkOffsetImageFilter, (dx, dy, input, cropRect, uniqueID)); 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void computeFastBounds(const SkRect& src, SkRect* dst) const SK_OVERRIDE; 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkOffsetImageFilter) 28eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)protected: 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SkOffsetImageFilter(SkScalar dx, SkScalar dy, SkImageFilter* input, const CropRect* cropRect, uint32_t uniqueID); 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef SK_SUPPORT_LEGACY_DEEPFLATTENING 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) explicit SkOffsetImageFilter(SkReadBuffer& buffer); 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool onFilterImage(Proxy*, const SkBitmap& src, const Context&, 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SkBitmap* result, SkIPoint* loc) const SK_OVERRIDE; 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool onFilterBounds(const SkIRect&, const SkMatrix&, SkIRect*) const SK_OVERRIDE; 39eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)private: 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SkVector fOffset; 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)