Home | History | Annotate | Download | only in effects
      1 /*
      2  * Copyright 2013 Google Inc.
      3  *
      4  * Use of this source code is governed by a BSD-style license that can be
      5  * found in the LICENSE file.
      6  */
      7 
      8 #include "SkBitmap.h"
      9 #include "SkComposeImageFilter.h"
     10 #include "SkReadBuffer.h"
     11 #include "SkWriteBuffer.h"
     12 
     13 SkComposeImageFilter::~SkComposeImageFilter() {
     14 }
     15 
     16 bool SkComposeImageFilter::onFilterImage(Proxy* proxy,
     17                                          const SkBitmap& src,
     18                                          const Context& ctx,
     19                                          SkBitmap* result,
     20                                          SkIPoint* offset) const {
     21     SkImageFilter* outer = getInput(0);
     22     SkImageFilter* inner = getInput(1);
     23 
     24     SkBitmap tmp;
     25     return inner->filterImage(proxy, src, ctx, &tmp, offset) &&
     26            outer->filterImage(proxy, tmp, ctx, result, offset);
     27 }
     28 
     29 bool SkComposeImageFilter::onFilterBounds(const SkIRect& src,
     30                                           const SkMatrix& ctm,
     31                                           SkIRect* dst) const {
     32     SkImageFilter* outer = getInput(0);
     33     SkImageFilter* inner = getInput(1);
     34 
     35     SkIRect tmp;
     36     return inner->filterBounds(src, ctm, &tmp) && outer->filterBounds(tmp, ctm, dst);
     37 }
     38 
     39 SkFlattenable* SkComposeImageFilter::CreateProc(SkReadBuffer& buffer) {
     40     SK_IMAGEFILTER_UNFLATTEN_COMMON(common, 2);
     41     return SkComposeImageFilter::Create(common.getInput(0), common.getInput(1));
     42 }
     43 
     44 #ifdef SK_SUPPORT_LEGACY_DEEPFLATTENING
     45 SkComposeImageFilter::SkComposeImageFilter(SkReadBuffer& buffer)
     46   : INHERITED(2, buffer) {
     47 }
     48 #endif
     49