11c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.org/*
21c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.org * Copyright 2013 Google Inc.
31c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.org *
41c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.org * Use of this source code is governed by a BSD-style license that can be
51c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.org * found in the LICENSE file.
61c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.org */
71c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.org
81c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.org#ifndef SkComposeImageFilter_DEFINED
91c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.org#define SkComposeImageFilter_DEFINED
101c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.org
111c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.org#include "SkImageFilter.h"
121c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.org
131c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.orgclass SK_API SkComposeImageFilter : public SkImageFilter {
141c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.orgpublic:
151c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.org    virtual ~SkComposeImageFilter();
161c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.org
179fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed    static SkImageFilter* Create(SkImageFilter* outer, SkImageFilter* inner) {
189fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed        if (NULL == outer) {
199fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed            return SkSafeRef(inner);
209fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed        }
219fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed        if (NULL == inner) {
229fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed            return SkRef(outer);
239fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed        }
249ea3d57fde28a5fe4487a111dc3dd49418235e5esenorblanco        SkImageFilter* inputs[2] = { outer, inner };
259ea3d57fde28a5fe4487a111dc3dd49418235e5esenorblanco        return SkNEW_ARGS(SkComposeImageFilter, (inputs));
26cac5fd597f6e2495f50aaa6bcbe3dadc56f0b977commit-bot@chromium.org    }
2736352bf5e38f45a70ee4f4fc132a38048d38206dmtklein    void computeFastBounds(const SkRect& src, SkRect* dst) const override;
28cac5fd597f6e2495f50aaa6bcbe3dadc56f0b977commit-bot@chromium.org
29f3f5bad7ded35265c0b5d042cc4174386b197a33robertphillips    SK_TO_STRING_OVERRIDE()
301c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.org    SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkComposeImageFilter)
311c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.org
321c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.orgprotected:
339fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed    explicit SkComposeImageFilter(SkImageFilter* inputs[2]) : INHERITED(2, inputs) {
349fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed        SkASSERT(inputs[0]);
359fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed        SkASSERT(inputs[1]);
369fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed    }
374cb543d6057b692e1099e9f115155f0bf323a0c8senorblanco@chromium.org    virtual bool onFilterImage(Proxy*, const SkBitmap& src, const Context&,
3836352bf5e38f45a70ee4f4fc132a38048d38206dmtklein                               SkBitmap* result, SkIPoint* loc) const override;
3936352bf5e38f45a70ee4f4fc132a38048d38206dmtklein    bool onFilterBounds(const SkIRect&, const SkMatrix&, SkIRect*) const override;
401c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.org
411c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.orgprivate:
421c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.org    typedef SkImageFilter INHERITED;
431c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.org};
441c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.org
451c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.org#endif
46