/* * Copyright 2013 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #include "SkBitmap.h" #include "SkComposeImageFilter.h" #include "SkReadBuffer.h" #include "SkWriteBuffer.h" SkComposeImageFilter::~SkComposeImageFilter() { } bool SkComposeImageFilter::onFilterImage(Proxy* proxy, const SkBitmap& src, const Context& ctx, SkBitmap* result, SkIPoint* offset) const { SkImageFilter* outer = getInput(0); SkImageFilter* inner = getInput(1); if (!outer && !inner) { return false; } if (!outer || !inner) { return (outer ? outer : inner)->filterImage(proxy, src, ctx, result, offset); } SkBitmap tmp; return inner->filterImage(proxy, src, ctx, &tmp, offset) && outer->filterImage(proxy, tmp, ctx, result, offset); } bool SkComposeImageFilter::onFilterBounds(const SkIRect& src, const SkMatrix& ctm, SkIRect* dst) const { SkImageFilter* outer = getInput(0); SkImageFilter* inner = getInput(1); if (!outer && !inner) { return false; } if (!outer || !inner) { return (outer ? outer : inner)->filterBounds(src, ctm, dst); } SkIRect tmp; return inner->filterBounds(src, ctm, &tmp) && outer->filterBounds(tmp, ctm, dst); } SkComposeImageFilter::SkComposeImageFilter(SkReadBuffer& buffer) : INHERITED(2, buffer) { }