11cc208e532e825b8bb58c0330b88154e9370b50fbsalomon@google.com/*
21cc208e532e825b8bb58c0330b88154e9370b50fbsalomon@google.com * Copyright 2012 The Android Open Source Project
31cc208e532e825b8bb58c0330b88154e9370b50fbsalomon@google.com *
41cc208e532e825b8bb58c0330b88154e9370b50fbsalomon@google.com * Use of this source code is governed by a BSD-style license that can be
51cc208e532e825b8bb58c0330b88154e9370b50fbsalomon@google.com * found in the LICENSE file.
61cc208e532e825b8bb58c0330b88154e9370b50fbsalomon@google.com */
71cc208e532e825b8bb58c0330b88154e9370b50fbsalomon@google.com
81cc208e532e825b8bb58c0330b88154e9370b50fbsalomon@google.com
91cc208e532e825b8bb58c0330b88154e9370b50fbsalomon@google.com#ifndef SkMagnifierImageFilter_DEFINED
101cc208e532e825b8bb58c0330b88154e9370b50fbsalomon@google.com#define SkMagnifierImageFilter_DEFINED
111cc208e532e825b8bb58c0330b88154e9370b50fbsalomon@google.com
121cc208e532e825b8bb58c0330b88154e9370b50fbsalomon@google.com#include "SkRect.h"
131cc208e532e825b8bb58c0330b88154e9370b50fbsalomon@google.com#include "SkImageFilter.h"
141cc208e532e825b8bb58c0330b88154e9370b50fbsalomon@google.com
151cc208e532e825b8bb58c0330b88154e9370b50fbsalomon@google.comclass SK_API SkMagnifierImageFilter : public SkImageFilter {
161cc208e532e825b8bb58c0330b88154e9370b50fbsalomon@google.compublic:
171cc208e532e825b8bb58c0330b88154e9370b50fbsalomon@google.com    SkMagnifierImageFilter(SkRect srcRect, SkScalar inset);
181cc208e532e825b8bb58c0330b88154e9370b50fbsalomon@google.com
19a9759972ed2bd08983fea7b69ec2e791bae59a0csenorblanco@chromium.org#if SK_SUPPORT_GPU
20e84c14ae392a6a2f959a4c376dc783a8f28f42aesenorblanco@chromium.org    virtual bool asNewEffect(GrEffectRef** effect, GrTexture* texture, const SkIPoint& offset) const SK_OVERRIDE;
21a9759972ed2bd08983fea7b69ec2e791bae59a0csenorblanco@chromium.org#endif
221cc208e532e825b8bb58c0330b88154e9370b50fbsalomon@google.com
231cc208e532e825b8bb58c0330b88154e9370b50fbsalomon@google.com    SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkMagnifierImageFilter)
241cc208e532e825b8bb58c0330b88154e9370b50fbsalomon@google.com
251cc208e532e825b8bb58c0330b88154e9370b50fbsalomon@google.comprotected:
261cc208e532e825b8bb58c0330b88154e9370b50fbsalomon@google.com    explicit SkMagnifierImageFilter(SkFlattenableReadBuffer& buffer);
271cc208e532e825b8bb58c0330b88154e9370b50fbsalomon@google.com    virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE;
281cc208e532e825b8bb58c0330b88154e9370b50fbsalomon@google.com
291cc208e532e825b8bb58c0330b88154e9370b50fbsalomon@google.com    virtual bool onFilterImage(Proxy*, const SkBitmap& src, const SkMatrix&,
301cc208e532e825b8bb58c0330b88154e9370b50fbsalomon@google.com                               SkBitmap* result, SkIPoint* offset) SK_OVERRIDE;
311cc208e532e825b8bb58c0330b88154e9370b50fbsalomon@google.com
321cc208e532e825b8bb58c0330b88154e9370b50fbsalomon@google.comprivate:
331cc208e532e825b8bb58c0330b88154e9370b50fbsalomon@google.com    SkRect fSrcRect;
341cc208e532e825b8bb58c0330b88154e9370b50fbsalomon@google.com    SkScalar fInset;
351cc208e532e825b8bb58c0330b88154e9370b50fbsalomon@google.com    typedef SkImageFilter INHERITED;
361cc208e532e825b8bb58c0330b88154e9370b50fbsalomon@google.com};
371cc208e532e825b8bb58c0330b88154e9370b50fbsalomon@google.com
381cc208e532e825b8bb58c0330b88154e9370b50fbsalomon@google.com#endif
39