summaryrefslogtreecommitdiffstats
path: root/vcl
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2018-02-20 21:18:04 +0000
committerAndras Timar <andras.timar@collabora.com>2018-02-21 15:06:17 +0100
commit7443c3c27bdc3b2eba1718351269e884f6c32ed7 (patch)
treedec93c505b7fb4087da15fe4fe79caa1ea3bf86a /vcl
parentforcepoint #2 (diff)
downloadcore-7443c3c27bdc3b2eba1718351269e884f6c32ed7.tar.gz
core-7443c3c27bdc3b2eba1718351269e884f6c32ed7.zip
forcepoint #4
Thanks to Antti Levomäki and Christian Jalio from Forcepoint. Change-Id: I569ca80267ad9b5a21da0029ba903d2a4c45a035
Diffstat (limited to 'vcl')
-rw-r--r--vcl/source/gdi/pdfwriter_impl2.cxx27
1 files changed, 21 insertions, 6 deletions
diff --git a/vcl/source/gdi/pdfwriter_impl2.cxx b/vcl/source/gdi/pdfwriter_impl2.cxx
index 1f40defbd425..c7fd2a4031df 100644
--- a/vcl/source/gdi/pdfwriter_impl2.cxx
+++ b/vcl/source/gdi/pdfwriter_impl2.cxx
@@ -1605,11 +1605,8 @@ inline bool isSet( const Scanline i_pLine, long i_nIndex )
return (i_pLine[ i_nIndex/8 ] & (0x80 >> (i_nIndex&7))) != 0;
}
-long findBitRun( const Scanline i_pLine, long i_nStartIndex, long i_nW, bool i_bSet )
+long findBitRunImpl( const Scanline i_pLine, long i_nStartIndex, long i_nW, bool i_bSet )
{
- if( i_nStartIndex < 0 )
- return i_nW;
-
long nIndex = i_nStartIndex;
if( nIndex < i_nW )
{
@@ -1671,6 +1668,24 @@ long findBitRun( const Scanline i_pLine, long i_nStartIndex, long i_nW, bool i_b
return nIndex < i_nW ? nIndex : i_nW;
}
+long findBitRun(const Scanline i_pLine, long i_nStartIndex, long i_nW, bool i_bSet)
+{
+ if (i_nStartIndex < 0)
+ return i_nW;
+
+ return findBitRunImpl(i_pLine, i_nStartIndex, i_nW, i_bSet);
+}
+
+long findBitRun(const Scanline i_pLine, long i_nStartIndex, long i_nW)
+{
+ if (i_nStartIndex < 0)
+ return i_nW;
+
+ const bool bSet = i_nStartIndex < i_nW && isSet(i_pLine, i_nStartIndex);
+
+ return findBitRunImpl(i_pLine, i_nStartIndex, i_nW, bSet);
+}
+
struct BitStreamState
{
sal_uInt8 mnBuffer;
@@ -1974,7 +1989,7 @@ void PDFWriterImpl::writeG4Stream( BitmapReadAccess* i_pBitmap )
long nRefIndex1 = bRefSet ? 0 : findBitRun( pRefLine, 0, nW, bRefSet );
for( ; nLineIndex < nW; )
{
- long nRefIndex2 = findBitRun( pRefLine, nRefIndex1, nW, isSet( pRefLine, nRefIndex1 ) );
+ long nRefIndex2 = findBitRun( pRefLine, nRefIndex1, nW );
if( nRefIndex2 >= nRunIndex1 )
{
long nDiff = nRefIndex1 - nRunIndex1;
@@ -2004,7 +2019,7 @@ void PDFWriterImpl::writeG4Stream( BitmapReadAccess* i_pBitmap )
{ // difference too large, horizontal coding
// emit horz code 001
putG4Bits( 3, 0x1, aBitState );
- long nRunIndex2 = findBitRun( pCurLine, nRunIndex1, nW, isSet( pCurLine, nRunIndex1 ) );
+ long nRunIndex2 = findBitRun( pCurLine, nRunIndex1, nW );
bool bWhiteFirst = ( nLineIndex + nRunIndex1 == 0 || ! isSet( pCurLine, nLineIndex ) );
putG4Span( nRunIndex1 - nLineIndex, bWhiteFirst, aBitState );
putG4Span( nRunIndex2 - nRunIndex1, ! bWhiteFirst, aBitState );