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#include "SkBitmap.h" 91c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.org#include "SkComposeImageFilter.h" 108b0e8ac5f582de80356019406e2975079bf0829dcommit-bot@chromium.org#include "SkReadBuffer.h" 118b0e8ac5f582de80356019406e2975079bf0829dcommit-bot@chromium.org#include "SkWriteBuffer.h" 121c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.org 131c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.orgSkComposeImageFilter::~SkComposeImageFilter() { 141c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.org} 151c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.org 161c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.orgbool SkComposeImageFilter::onFilterImage(Proxy* proxy, 171c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.org const SkBitmap& src, 184cb543d6057b692e1099e9f115155f0bf323a0c8senorblanco@chromium.org const Context& ctx, 191c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.org SkBitmap* result, 20ae761f7545d8ebf181d220169afac2056b057b8ccommit-bot@chromium.org SkIPoint* offset) const { 211c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.org SkImageFilter* outer = getInput(0); 221c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.org SkImageFilter* inner = getInput(1); 231c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.org 241c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.org if (!outer && !inner) { 251c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.org return false; 261c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.org } 271c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.org 281c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.org if (!outer || !inner) { 294cb543d6057b692e1099e9f115155f0bf323a0c8senorblanco@chromium.org return (outer ? outer : inner)->filterImage(proxy, src, ctx, result, offset); 301c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.org } 311c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.org 321c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.org SkBitmap tmp; 334cb543d6057b692e1099e9f115155f0bf323a0c8senorblanco@chromium.org return inner->filterImage(proxy, src, ctx, &tmp, offset) && 344cb543d6057b692e1099e9f115155f0bf323a0c8senorblanco@chromium.org outer->filterImage(proxy, tmp, ctx, result, offset); 351c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.org} 361c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.org 371c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.orgbool SkComposeImageFilter::onFilterBounds(const SkIRect& src, 381c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.org const SkMatrix& ctm, 39c4b12f19a46946e1c02f3525e0ea4902b09feac5senorblanco@chromium.org SkIRect* dst) const { 401c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.org SkImageFilter* outer = getInput(0); 411c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.org SkImageFilter* inner = getInput(1); 421c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.org 431c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.org if (!outer && !inner) { 441c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.org return false; 451c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.org } 461c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.org 471c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.org if (!outer || !inner) { 481c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.org return (outer ? outer : inner)->filterBounds(src, ctm, dst); 491c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.org } 501c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.org 511c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.org SkIRect tmp; 521c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.org return inner->filterBounds(src, ctm, &tmp) && 531c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.org outer->filterBounds(tmp, ctm, dst); 541c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.org} 551c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.org 568b0e8ac5f582de80356019406e2975079bf0829dcommit-bot@chromium.orgSkComposeImageFilter::SkComposeImageFilter(SkReadBuffer& buffer) 57ce33d60187718e7bb01944ee130c9f5d9fb335eccommit-bot@chromium.org : INHERITED(2, buffer) { 581c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.org} 59