Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / third_party / skia / src / effects / SkComposeImageFilter.cpp
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