diff options
author | senorblanco@chromium.org <senorblanco@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2012-08-20 19:23:24 +0000 |
---|---|---|
committer | senorblanco@chromium.org <senorblanco@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2012-08-20 19:23:24 +0000 |
commit | 44888c66d4bf03da58eb9fbd3db92eb477141aab (patch) | |
tree | 26e7b52b5a114cb83446b3e8906a8cd80510799f /src/effects | |
parent | 0342a85091fd430c90a142d155dc9642aa729d9e (diff) |
Move SkColorFilterImageFilter into its own file.
Review URL: https://codereview.appspot.com/6463072/
git-svn-id: http://skia.googlecode.com/svn/trunk@5197 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src/effects')
-rwxr-xr-x | src/effects/SkColorFilterImageFilter.cpp | 57 | ||||
-rwxr-xr-x | src/effects/SkTestImageFilters.cpp | 45 |
2 files changed, 57 insertions, 45 deletions
diff --git a/src/effects/SkColorFilterImageFilter.cpp b/src/effects/SkColorFilterImageFilter.cpp new file mode 100755 index 0000000000..474a4e6978 --- /dev/null +++ b/src/effects/SkColorFilterImageFilter.cpp @@ -0,0 +1,57 @@ +/* + * Copyright 2012 The Android Open Source Project + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "SkColorFilterImageFilter.h" +#include "SkBitmap.h" +#include "SkCanvas.h" +#include "SkDevice.h" +#include "SkColorFilter.h" +#include "SkFlattenableBuffers.h" + +SkColorFilterImageFilter::SkColorFilterImageFilter(SkColorFilter* cf, SkImageFilter* input) : INHERITED(input), fColorFilter(cf) { + SkSafeRef(cf); +} + +SkColorFilterImageFilter::SkColorFilterImageFilter(SkFlattenableReadBuffer& buffer) : INHERITED(buffer) { + fColorFilter = buffer.readFlattenableT<SkColorFilter>(); +} + +void SkColorFilterImageFilter::flatten(SkFlattenableWriteBuffer& buffer) const { + this->INHERITED::flatten(buffer); + + buffer.writeFlattenable(fColorFilter); +} + +SkColorFilterImageFilter::~SkColorFilterImageFilter() { + SkSafeUnref(fColorFilter); +} + +bool SkColorFilterImageFilter::onFilterImage(Proxy* proxy, const SkBitmap& source, + const SkMatrix& matrix, + SkBitmap* result, + SkIPoint* loc) { + SkBitmap src = this->getInputResult(proxy, source, matrix, loc); + SkColorFilter* cf = fColorFilter; + if (NULL == cf) { + *result = src; + return true; + } + + SkAutoTUnref<SkDevice> device(proxy->createDevice(src.width(), src.height())); + SkCanvas canvas(device.get()); + SkPaint paint; + + paint.setXfermodeMode(SkXfermode::kSrc_Mode); + paint.setColorFilter(fColorFilter); + canvas.drawSprite(src, 0, 0, &paint); + + *result = device.get()->accessBitmap(false); + return true; +} + +SK_DEFINE_FLATTENABLE_REGISTRAR(SkColorFilterImageFilter) + diff --git a/src/effects/SkTestImageFilters.cpp b/src/effects/SkTestImageFilters.cpp index 0fbc293468..e67976d4bd 100755 --- a/src/effects/SkTestImageFilters.cpp +++ b/src/effects/SkTestImageFilters.cpp @@ -284,50 +284,6 @@ SkMergeImageFilter::SkMergeImageFilter(SkFlattenableReadBuffer& buffer) : INHERI /////////////////////////////////////////////////////////////////////////////// -#include "SkColorFilter.h" - -SkColorFilterImageFilter::~SkColorFilterImageFilter() { - SkSafeUnref(fColorFilter); -} - -bool SkColorFilterImageFilter::onFilterImage(Proxy* proxy, const SkBitmap& source, - const SkMatrix& matrix, - SkBitmap* result, - SkIPoint* loc) { - SkBitmap src = this->getInputResult(proxy, source, matrix, loc); - SkColorFilter* cf = fColorFilter; - if (NULL == cf) { - *result = src; - return true; - } - - SkDevice* dev = proxy->createDevice(src.width(), src.height()); - if (NULL == dev) { - return false; - } - OwnDeviceCanvas canvas(dev); - SkPaint paint; - - paint.setXfermodeMode(SkXfermode::kSrc_Mode); - paint.setColorFilter(fColorFilter); - canvas.drawSprite(src, 0, 0, &paint); - - *result = dev->accessBitmap(false); - return true; -} - -void SkColorFilterImageFilter::flatten(SkFlattenableWriteBuffer& buffer) const { - this->INHERITED::flatten(buffer); - - buffer.writeFlattenable(fColorFilter); -} - -SkColorFilterImageFilter::SkColorFilterImageFilter(SkFlattenableReadBuffer& buffer) : INHERITED(buffer) { - fColorFilter = buffer.readFlattenableT<SkColorFilter>(); -} - -/////////////////////////////////////////////////////////////////////////////// - bool SkDownSampleImageFilter::onFilterImage(Proxy* proxy, const SkBitmap& src, const SkMatrix& matrix, SkBitmap* result, SkIPoint*) { @@ -391,5 +347,4 @@ SkDownSampleImageFilter::SkDownSampleImageFilter(SkFlattenableReadBuffer& buffer SK_DEFINE_FLATTENABLE_REGISTRAR(SkOffsetImageFilter) SK_DEFINE_FLATTENABLE_REGISTRAR(SkComposeImageFilter) SK_DEFINE_FLATTENABLE_REGISTRAR(SkMergeImageFilter) -SK_DEFINE_FLATTENABLE_REGISTRAR(SkColorFilterImageFilter) SK_DEFINE_FLATTENABLE_REGISTRAR(SkDownSampleImageFilter) |