summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorChris Sherlock <chris.sherlock79@gmail.com>2018-04-20 22:22:44 +1000
committerTomaž Vajngerl <quikee@gmail.com>2018-05-09 05:17:42 +0200
commitb781a6b6b2fc0a6688a6335a9408143fb120aa6e (patch)
treeb3c3eb433001aac650de3ef00e889a901a7ff1ee /vcl
parent2af7daa18467cc7c3f4f435c58cd19ee682f754f (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.mk1
-rw-r--r--vcl/source/bitmap/bitmapfilter.cxx35
-rw-r--r--vcl/source/gdi/animate.cxx21
-rw-r--r--vcl/source/gdi/bitmap4.cxx137
-rw-r--r--vcl/source/gdi/bitmapex.cxx5
-rw-r--r--vcl/source/graphic/UnoGraphicTransformer.cxx9
-rw-r--r--vcl/workben/outdevgrind.cxx7
-rw-r--r--vcl/workben/vcldemo.cxx6
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,