11cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger/*
21cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Copyright 2011 The Android Open Source Project
31cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger *
41cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Use of this source code is governed by a BSD-style license that can be
51cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * found in the LICENSE file.
61cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger */
71cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
81cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
91cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#ifndef SkBlurImageFilter_DEFINED
101cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#define SkBlurImageFilter_DEFINED
111cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
121cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#include "SkImageFilter.h"
131cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
141cab2921ab279367f8206cdadc9259d12e603548Derek Sollenbergerclass SK_API SkBlurImageFilter : public SkImageFilter {
151cab2921ab279367f8206cdadc9259d12e603548Derek Sollenbergerpublic:
161cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger    SkBlurImageFilter(SkScalar sigmaX, SkScalar sigmaY);
171cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
181cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger    virtual bool asABlur(SkSize* sigma) const SK_OVERRIDE;
191cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
201cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger    static SkFlattenable* CreateProc(SkFlattenableReadBuffer& buffer) {
211cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger        return SkNEW_ARGS(SkBlurImageFilter, (buffer));
221cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger    }
231cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
241cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger    SK_DECLARE_FLATTENABLE_REGISTRAR()
251cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
261cab2921ab279367f8206cdadc9259d12e603548Derek Sollenbergerprotected:
271cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger    explicit SkBlurImageFilter(SkFlattenableReadBuffer& buffer);
281cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
291cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger    virtual bool onFilterImage(Proxy*, const SkBitmap& src, const SkMatrix&,
301cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger                               SkBitmap* result, SkIPoint* offset) SK_OVERRIDE;
311cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger    virtual void flatten(SkFlattenableWriteBuffer& buffer) SK_OVERRIDE;
321cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger    virtual Factory getFactory() SK_OVERRIDE { return CreateProc; }
331cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
341cab2921ab279367f8206cdadc9259d12e603548Derek Sollenbergerprivate:
351cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger    SkSize   fSigma;
361cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger    typedef SkImageFilter INHERITED;
371cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger};
381cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
391cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#endif
401cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
41