diff options
author | Chris Sherlock <chris.sherlock79@gmail.com> | 2018-04-20 22:22:44 +1000 |
---|---|---|
committer | Tomaž Vajngerl <quikee@gmail.com> | 2018-05-09 05:17:42 +0200 |
commit | b781a6b6b2fc0a6688a6335a9408143fb120aa6e (patch) | |
tree | b3c3eb433001aac650de3ef00e889a901a7ff1ee /vcl | |
parent | 2af7daa18467cc7c3f4f435c58cd19ee682f754f (diff) |
vcl: get rid of Bitmap{Ex}::Filter() and Animation::Filter()
Change-Id: I510d7b286df732712aa9206b0a7c7910af34c83f
Reviewed-on: https://gerrit.libreoffice.org/53206
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
Diffstat (limited to 'vcl')
-rw-r--r-- | vcl/Library_vcl.mk | 1 | ||||
-rw-r--r-- | vcl/source/bitmap/bitmapfilter.cxx | 35 | ||||
-rw-r--r-- | vcl/source/gdi/animate.cxx | 21 | ||||
-rw-r--r-- | vcl/source/gdi/bitmap4.cxx | 137 | ||||
-rw-r--r-- | vcl/source/gdi/bitmapex.cxx | 5 | ||||
-rw-r--r-- | vcl/source/graphic/UnoGraphicTransformer.cxx | 9 | ||||
-rw-r--r-- | vcl/workben/outdevgrind.cxx | 7 | ||||
-rw-r--r-- | vcl/workben/vcldemo.cxx | 6 |
8 files changed, 48 insertions, 173 deletions
diff --git a/vcl/Library_vcl.mk b/vcl/Library_vcl.mk index 3da03f8acfbb..123d8e80fd7d 100644 --- a/vcl/Library_vcl.mk +++ b/vcl/Library_vcl.mk @@ -248,7 +248,6 @@ $(eval $(call gb_Library_add_exception_objects,vcl,\ vcl/source/gdi/animate \ vcl/source/gdi/base14 \ vcl/source/gdi/bitmap3 \ - vcl/source/gdi/bitmap4 \ vcl/source/gdi/bitmapex \ vcl/source/gdi/bmpacc2 \ vcl/source/gdi/bmpacc3 \ diff --git a/vcl/source/bitmap/bitmapfilter.cxx b/vcl/source/bitmap/bitmapfilter.cxx index 4f4ae5ae0961..4c20a83f0d40 100644 --- a/vcl/source/bitmap/bitmapfilter.cxx +++ b/vcl/source/bitmap/bitmapfilter.cxx @@ -9,14 +9,15 @@ */ #include <vcl/BitmapFilter.hxx> +#include <vcl/animate.hxx> -BitmapFilter::BitmapFilter() -{} +#include <algorithm> -BitmapFilter::~BitmapFilter() -{} +BitmapFilter::BitmapFilter() {} -bool BitmapFilter::Filter(BitmapEx &rBmpEx, BitmapFilter &&rFilter) +BitmapFilter::~BitmapFilter() {} + +bool BitmapFilter::Filter(BitmapEx& rBmpEx, BitmapFilter&& rFilter) { BitmapEx aTmpBmpEx(rFilter.execute(rBmpEx)); @@ -30,4 +31,28 @@ bool BitmapFilter::Filter(BitmapEx &rBmpEx, BitmapFilter &&rFilter) return true; } +bool BitmapFilter::Filter(Animation& rAnimation, BitmapFilter&& rFilter) +{ + SAL_WARN_IF(rAnimation.IsInAnimation(), "vcl", "Animation modified while it is animated"); + + bool bRet = false; + + if (!rAnimation.IsInAnimation() && !rAnimation.Count()) + { + bRet = true; + + std::vector<std::unique_ptr<AnimationBitmap>>& aList = rAnimation.GetAnimationFrames(); + for (size_t i = 0, n = aList.size(); (i < n) && bRet; ++i) + { + bRet = BitmapFilter::Filter(aList[i]->aBmpEx, std::move(rFilter)); + } + + BitmapEx aBmpEx(rAnimation.GetBitmapEx()); + BitmapFilter::Filter(aBmpEx, std::move(rFilter)); + rAnimation.SetBitmapEx(aBmpEx); + } + + return bRet; +} + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/vcl/source/gdi/animate.cxx b/vcl/source/gdi/animate.cxx index 5adfc6ca5736..71028e5b41c5 100644 --- a/vcl/source/gdi/animate.cxx +++ b/vcl/source/gdi/animate.cxx @@ -625,27 +625,6 @@ void Animation::Adjust( short nLuminancePercent, short nContrastPercent, } } -bool Animation::Filter( BmpFilter eFilter, const BmpFilterParam* pFilterParam ) -{ - SAL_WARN_IF( IsInAnimation(), "vcl", "Animation modified while it is animated" ); - - bool bRet; - - if( !IsInAnimation() && !maList.empty() ) - { - bRet = true; - - for( size_t i = 0, n = maList.size(); ( i < n ) && bRet; ++i ) - bRet = maList[ i ]->aBmpEx.Filter( eFilter, pFilterParam ); - - (void)maBitmapEx.Filter(eFilter, pFilterParam); - } - else - bRet = false; - - return bRet; -} - SvStream& WriteAnimation( SvStream& rOStm, const Animation& rAnimation ) { const sal_uInt16 nCount = rAnimation.Count(); diff --git a/vcl/source/gdi/bitmap4.cxx b/vcl/source/gdi/bitmap4.cxx deleted file mode 100644 index df1c39613dc9..000000000000 --- a/vcl/source/gdi/bitmap4.cxx +++ /dev/null @@ -1,137 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * This file incorporates work covered by the following license notice: - * - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed - * with this work for additional information regarding copyright - * ownership. The ASF licenses this file to you under the Apache - * License, Version 2.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.apache.org/licenses/LICENSE-2.0 . - */ - -#include <osl/diagnose.h> -#include <vcl/bitmapaccess.hxx> -#include <vcl/bitmap.hxx> -#include <vcl/BitmapSmoothenFilter.hxx> -#include <vcl/BitmapSharpenFilter.hxx> -#include <vcl/BitmapMedianFilter.hxx> -#include <vcl/BitmapSobelGreyFilter.hxx> -#include <vcl/BitmapSolarizeFilter.hxx> -#include <vcl/BitmapSepiaFilter.hxx> -#include <vcl/BitmapMosaicFilter.hxx> -#include <vcl/BitmapEmbossGreyFilter.hxx> -#include <vcl/BitmapPopArtFilter.hxx> -#include <vcl/BitmapDuoToneFilter.hxx> - -#include <bitmapwriteaccess.hxx> - -#include <memory> -#include <stdlib.h> - -bool Bitmap::Filter( BmpFilter eFilter, const BmpFilterParam* pFilterParam ) -{ - bool bRet = false; - - switch( eFilter ) - { - case BmpFilter::Smooth: - { - BitmapEx aBmpEx(*this); - bRet = BitmapFilter::Filter(aBmpEx, BitmapSmoothenFilter(pFilterParam->mnRadius)); - *this = aBmpEx.GetBitmap(); - } - break; - - case BmpFilter::Sharpen: - { - BitmapEx aBmpEx(*this); - bRet = BitmapFilter::Filter(aBmpEx, BitmapSharpenFilter()); - *this = aBmpEx.GetBitmap(); - } - break; - - case BmpFilter::RemoveNoise: - { - BitmapEx aBmpEx(*this); - bRet = BitmapFilter::Filter(aBmpEx, BitmapMedianFilter()); - *this = aBmpEx.GetBitmap(); - } - break; - - case BmpFilter::SobelGrey: - { - BitmapEx aBmpEx(*this); - bRet = BitmapFilter::Filter(aBmpEx, BitmapSobelGreyFilter()); - *this = aBmpEx.GetBitmap(); - } - break; - - case BmpFilter::Solarize: - { - BitmapEx aBmpEx(*this); - bRet = BitmapFilter::Filter(aBmpEx, BitmapSolarizeFilter(pFilterParam->mcSolarGreyThreshold)); - *this = aBmpEx.GetBitmap(); - } - break; - - case BmpFilter::Sepia: - { - BitmapEx aBmpEx(*this); - bRet = BitmapFilter::Filter(aBmpEx, BitmapSepiaFilter(pFilterParam->mnSepiaPercent)); - *this = aBmpEx.GetBitmap(); - } - break; - - case BmpFilter::Mosaic: - { - BitmapEx aBmpEx(*this); - bRet = BitmapFilter::Filter(aBmpEx, BitmapMosaicFilter(pFilterParam->maMosaicTileSize.mnTileWidth, - pFilterParam->maMosaicTileSize.mnTileHeight)); - *this = aBmpEx.GetBitmap(); - } - - break; - - case BmpFilter::EmbossGrey: - { - BitmapEx aBmpEx(*this); - bRet = BitmapFilter::Filter(aBmpEx, BitmapEmbossGreyFilter(pFilterParam->maEmbossAngles.mnAzimuthAngle100, - pFilterParam->maEmbossAngles.mnElevationAngle100)); - *this = aBmpEx.GetBitmap(); - } - break; - - case BmpFilter::PopArt: - { - BitmapEx aBmpEx(*this); - bRet = BitmapFilter::Filter(aBmpEx, BitmapPopArtFilter()); - *this = aBmpEx.GetBitmap(); - } - break; - - case BmpFilter::DuoTone: - { - BitmapEx aBmpEx(*this); - bRet = BitmapFilter::Filter(aBmpEx, BitmapDuoToneFilter(pFilterParam->mnProgressStart, - pFilterParam->mnProgressEnd)); - *this = aBmpEx.GetBitmap(); - } - break; - - default: - OSL_FAIL( "Bitmap::Convert(): Unsupported filter" ); - break; - } - - return bRet; -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/vcl/source/gdi/bitmapex.cxx b/vcl/source/gdi/bitmapex.cxx index 35ae111aa955..2301646974a6 100644 --- a/vcl/source/gdi/bitmapex.cxx +++ b/vcl/source/gdi/bitmapex.cxx @@ -604,11 +604,6 @@ bool BitmapEx::Adjust( short nLuminancePercent, short nContrastPercent, fGamma, bInvert, msoBrightness ); } -bool BitmapEx::Filter( BmpFilter eFilter, const BmpFilterParam* pFilterParam ) -{ - return !!maBitmap && maBitmap.Filter( eFilter, pFilterParam ); -} - void BitmapEx::Draw( OutputDevice* pOutDev, const Point& rDestPt ) const { pOutDev->DrawBitmapEx( rDestPt, *this ); diff --git a/vcl/source/graphic/UnoGraphicTransformer.cxx b/vcl/source/graphic/UnoGraphicTransformer.cxx index 05a1f436247b..2fba69d01c93 100644 --- a/vcl/source/graphic/UnoGraphicTransformer.cxx +++ b/vcl/source/graphic/UnoGraphicTransformer.cxx @@ -27,6 +27,8 @@ #include <vcl/salbtype.hxx> #include <vcl/virdev.hxx> #include <vcl/bitmapaccess.hxx> +#include <vcl/BitmapDuoToneFilter.hxx> + #include <com/sun/star/text/GraphicCrop.hpp> using namespace com::sun::star; @@ -118,8 +120,11 @@ uno::Reference< graphic::XGraphic > SAL_CALL GraphicTransformer::applyDuotone( BitmapEx aBitmapEx( aGraphic.GetBitmapEx() ); AlphaMask aMask( aBitmapEx.GetAlpha() ); Bitmap aBitmap( aBitmapEx.GetBitmap() ); - BmpFilterParam aFilter( static_cast<sal_uLong>(nColorOne), static_cast<sal_uLong>(nColorTwo) ); - aBitmap.Filter( BmpFilter::DuoTone, &aFilter ); + + BitmapEx aTmpBmpEx(aBitmap); + BitmapFilter::Filter(aTmpBmpEx, BitmapDuoToneFilter(static_cast<sal_uLong>(nColorOne), static_cast<sal_uLong>(nColorTwo))); + aBitmap = aTmpBmpEx.GetBitmap(); + aReturnGraphic = ::Graphic( BitmapEx( aBitmap, aMask ) ); aReturnGraphic.setOriginURL(aGraphic.getOriginURL()); return aReturnGraphic.GetXGraphic(); diff --git a/vcl/workben/outdevgrind.cxx b/vcl/workben/outdevgrind.cxx index 341b509905ba..04889307c8ce 100644 --- a/vcl/workben/outdevgrind.cxx +++ b/vcl/workben/outdevgrind.cxx @@ -32,6 +32,7 @@ #include <vcl/virdev.hxx> #include <vcl/hatch.hxx> #include <vcl/bitmap.hxx> +#include <vcl/BitmapEmbossGreyFilter.hxx> #include <vcl/wall.hxx> #include <vcl/image.hxx> #include <vcl/gdimtf.hxx> @@ -127,7 +128,11 @@ void setupMethodStubs( functor_vector_type& res ) const Bitmap aBitmap( aIntro.GetBitmap() ); Bitmap aBitmapBW( aBitmap ); - aBitmapBW.Filter( BmpFilter::EmbossGrey ); + + BitmapEx aTmpBmpEx(aBitmapBW); + BitmapFilter::Filter(aTmpBmpEx, BitmapEmbossGreyFilter(0, 0)); + aBitmapBW = aTmpBmpEx.GetBitmap(); + Bitmap aBitmapAlien( Size( 100, 100 ), 8 ); aBitmapAlien.Erase( COL_RED ); #endif diff --git a/vcl/workben/vcldemo.cxx b/vcl/workben/vcldemo.cxx index 841cc2103cd8..d2349ed33cfe 100644 --- a/vcl/workben/vcldemo.cxx +++ b/vcl/workben/vcldemo.cxx @@ -45,6 +45,7 @@ #include <vcl/help.hxx> #include <vcl/menu.hxx> #include <vcl/ImageTree.hxx> +#include <vcl/BitmapEmbossGreyFilter.hxx> #include <bitmapwriteaccess.hxx> #include <basegfx/numeric/ftools.hxx> @@ -144,7 +145,10 @@ public: Application::Abort("Failed to load intro image"); maIntroBW = maIntro.GetBitmap(); - maIntroBW.Filter(BmpFilter::EmbossGrey); + + BitmapEx aTmpBmpEx(maIntroBW); + BitmapFilter::Filter(aTmpBmpEx, BitmapEmbossGreyFilter(0, 0)); + maIntroBW = aTmpBmpEx.GetBitmap(); InitRenderers(); mnSegmentsY = rtl::math::round(std::sqrt(maRenderers.size()), 0, |