1aa54bf669
There should be no changes in behavior caused by this cl, it just adds the ctm matrix to filterImageGPU so that it may be used for scaling on all platforms when it is implemented on the blink side. BUG= R=senorblanco@google.com, senorblanco@chromium.org Author: sugoi@chromium.org Review URL: https://chromiumcodereview.appspot.com/22209002 git-svn-id: http://skia.googlecode.com/svn/trunk@10536 2bbb7eff-a529-9590-31e7-b0007b416f81
59 lines
1.9 KiB
C++
59 lines
1.9 KiB
C++
/*
|
|
* Copyright 2013 Google Inc.
|
|
*
|
|
* Use of this source code is governed by a BSD-style license that can be
|
|
* found in the LICENSE file.
|
|
*/
|
|
|
|
#ifndef SkDisplacementMapEffect_DEFINED
|
|
#define SkDisplacementMapEffect_DEFINED
|
|
|
|
#include "SkImageFilter.h"
|
|
#include "SkBitmap.h"
|
|
|
|
class SK_API SkDisplacementMapEffect : public SkImageFilter {
|
|
public:
|
|
enum ChannelSelectorType {
|
|
kUnknown_ChannelSelectorType,
|
|
kR_ChannelSelectorType,
|
|
kG_ChannelSelectorType,
|
|
kB_ChannelSelectorType,
|
|
kA_ChannelSelectorType,
|
|
kKeyBits = 3 // Max value is 4, so 3 bits are required at most
|
|
};
|
|
|
|
SkDisplacementMapEffect(ChannelSelectorType xChannelSelector,
|
|
ChannelSelectorType yChannelSelector,
|
|
SkScalar scale, SkImageFilter* displacement,
|
|
SkImageFilter* color = NULL);
|
|
|
|
~SkDisplacementMapEffect();
|
|
|
|
SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkDisplacementMapEffect)
|
|
|
|
virtual bool onFilterImage(Proxy* proxy,
|
|
const SkBitmap& src,
|
|
const SkMatrix& ctm,
|
|
SkBitmap* dst,
|
|
SkIPoint* offset) SK_OVERRIDE;
|
|
#if SK_SUPPORT_GPU
|
|
virtual bool canFilterImageGPU() const SK_OVERRIDE { return true; }
|
|
virtual bool filterImageGPU(Proxy* proxy, const SkBitmap& src, const SkMatrix& ctm,
|
|
SkBitmap* result, SkIPoint* offset) SK_OVERRIDE;
|
|
#endif
|
|
|
|
protected:
|
|
explicit SkDisplacementMapEffect(SkFlattenableReadBuffer& buffer);
|
|
virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE;
|
|
|
|
private:
|
|
ChannelSelectorType fXChannelSelector;
|
|
ChannelSelectorType fYChannelSelector;
|
|
SkScalar fScale;
|
|
typedef SkImageFilter INHERITED;
|
|
SkImageFilter* getDisplacementInput() { return getInput(0); }
|
|
SkImageFilter* getColorInput() { return getInput(1); }
|
|
};
|
|
|
|
#endif
|