[Libreoffice-commits] core.git: include/vcl vcl/source
Tomaž Vajngerl
quikee at gmail.com
Sun May 12 13:05:48 PDT 2013
include/vcl/bitmap.hxx | 9 ---
vcl/source/gdi/bitmap3.cxx | 103 ---------------------------------------------
2 files changed, 112 deletions(-)
New commits:
commit 71cca07fc18149b37fb22956257dd0b8f5df89a1
Author: Tomaž Vajngerl <quikee at gmail.com>
Date: Sun May 12 22:00:22 2013 +0200
Remove old scale convolution methods from Bitmap.
Change-Id: I0265a4b4c7b2fda267eb56ef719fd6a53d49d460
diff --git a/include/vcl/bitmap.hxx b/include/vcl/bitmap.hxx
index 7cf248c..292c3fb 100644
--- a/include/vcl/bitmap.hxx
+++ b/include/vcl/bitmap.hxx
@@ -345,15 +345,6 @@ public:
SAL_DLLPRIVATE sal_Bool ImplScaleInterpolate( const double& rScaleX, const double& rScaleY );
SAL_DLLPRIVATE sal_Bool ImplScaleSuper( const double& rScaleX, const double& rScaleY );
SAL_DLLPRIVATE sal_Bool ImplScaleConvolution( const double& rScaleX, const double& rScaleY, const Kernel& aKernel);
- SAL_DLLPRIVATE bool ImplScaleConvolution( const double& rScaleX, const double& rScaleY, Kernel& aKernel);
- SAL_DLLPRIVATE bool ImplTransformAveraging( const double& rScaleX, const double& rScaleY,
- const Rectangle& rRotatedRectangle, const long nAngle10, const Color& rFillColor );
- SAL_DLLPRIVATE bool ImplTransformBilinearFiltering( const double& rScaleX, const double& rScaleY,
- const Rectangle& rRotatedRectangle, const long nAngle10, const Color& rFillColor );
-
- SAL_DLLPRIVATE static void ImplCalculateContributions( const int aSourceSize, const int aDestinationSize,
- int& aNumberOfContributions, double*& pWeights, int*& pPixels, int*& pCount,
- Kernel& aKernel );
SAL_DLLPRIVATE bool ImplConvolutionPass( Bitmap& aNewBitmap, const int nNewSize, BitmapReadAccess* pReadAcc,
int aNumberOfContributions, double* pWeights, int* pPixels, int* pCount );
diff --git a/vcl/source/gdi/bitmap3.cxx b/vcl/source/gdi/bitmap3.cxx
index 6816bb9..e639b36 100644
--- a/vcl/source/gdi/bitmap3.cxx
+++ b/vcl/source/gdi/bitmap3.cxx
@@ -3396,109 +3396,6 @@ sal_Bool Bitmap::Adjust( short nLuminancePercent, short nContrastPercent,
return bRet;
}
-bool Bitmap::ImplScaleConvolution( const double& rScaleX, const double& rScaleY, Kernel& aKernel )
-{
- const long nWidth = GetSizePixel().Width();
- const long nHeight = GetSizePixel().Height();
- const long nNewWidth = FRound( nWidth * rScaleX );
- const long nNewHeight = FRound( nHeight * rScaleY );
-
- bool bResult;
- BitmapReadAccess* pReadAcc;
- Bitmap aNewBitmap;
-
- int aNumberOfContributions;
- double* pWeights;
- int* pPixels;
- int* pCount;
-
- // Handle negative scales safely cf. other ImplScale methods
- if( ( nNewWidth < 1L ) || ( nNewHeight < 1L ) )
- return false;
-
- // Do horizontal filtering
- ImplCalculateContributions( nWidth, nNewWidth, aNumberOfContributions, pWeights, pPixels, pCount, aKernel );
- pReadAcc = AcquireReadAccess();
- aNewBitmap = Bitmap( Size( nHeight, nNewWidth ), 24);
- bResult = ImplConvolutionPass( aNewBitmap, nNewWidth, pReadAcc, aNumberOfContributions, pWeights, pPixels, pCount );
-
- ReleaseAccess( pReadAcc );
- delete[] pWeights;
- delete[] pCount;
- delete[] pPixels;
-
- if ( !bResult )
- return bResult;
-
- // Swap Bitmaps
- ImplAssignWithSize( aNewBitmap );
-
- // Do vertical filtering
- ImplCalculateContributions( nHeight, nNewHeight, aNumberOfContributions, pWeights, pPixels, pCount, aKernel );
- pReadAcc = AcquireReadAccess();
- aNewBitmap = Bitmap( Size( nNewWidth, nNewHeight ), 24);
- bResult = ImplConvolutionPass( aNewBitmap, nNewHeight, pReadAcc, aNumberOfContributions, pWeights, pPixels, pCount );
-
- ReleaseAccess( pReadAcc );
- delete[] pWeights;
- delete[] pCount;
- delete[] pPixels;
-
- if ( !bResult )
- return bResult;
-
- ImplAssignWithSize( aNewBitmap );
-
- return true;
-}
-
-void Bitmap::ImplCalculateContributions( const int aSourceSize, const int aDestinationSize, int& aNumberOfContributions,
- double*& pWeights, int*& pPixels, int*& pCount, Kernel& aKernel)
-{
- const double aSamplingRadius = aKernel.GetWidth();
- const double aScale = aDestinationSize / (double) aSourceSize;
- const double aScaledRadius = (aScale < 1.0) ? aSamplingRadius / aScale : aSamplingRadius;
- const double aFilterFactor = (aScale < 1.0) ? aScale : 1.0;
-
- aNumberOfContributions = (int) ( 2 * ceil(aScaledRadius) + 1 );
-
- pWeights = new double[ aDestinationSize*aNumberOfContributions ];
- pPixels = new int[ aDestinationSize*aNumberOfContributions ];
- pCount = new int[ aDestinationSize ];
-
- double aWeight, aCenter;
- int aIndex, aLeft, aRight;
- int aPixelIndex, aCurrentCount;
-
- for ( int i = 0; i < aDestinationSize; i++ )
- {
- aIndex = i * aNumberOfContributions;
- aCurrentCount = 0;
- aCenter = i / aScale;
-
- aLeft = (int) floor(aCenter - aScaledRadius);
- aRight = (int) ceil (aCenter + aScaledRadius);
-
- for ( int j = aLeft; j <= aRight; j++ )
- {
- aWeight = aKernel.Calculate( aFilterFactor * ( aCenter - (double) j ) );
-
- // Reduce calculations with ignoring weights of 0.0
- if (fabs(aWeight) < 0.0001)
- continue;
-
- // Handling on edges
- aPixelIndex = MinMax( j, 0, aSourceSize - 1);
-
- pWeights[ aIndex + aCurrentCount ] = aWeight;
- pPixels[ aIndex + aCurrentCount ] = aPixelIndex;
-
- aCurrentCount++;
- }
- pCount[ i ] = aCurrentCount;
- }
-}
-
bool Bitmap::ImplConvolutionPass(Bitmap& aNewBitmap, const int nNewSize, BitmapReadAccess* pReadAcc, int aNumberOfContributions, double* pWeights, int* pPixels, int* pCount)
{
BitmapWriteAccess* pWriteAcc = aNewBitmap.AcquireWriteAccess();
More information about the Libreoffice-commits
mailing list