summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThorsten Behrens <Thorsten.Behrens@CIB.de>2015-08-13 17:17:22 +0200
committerMiklos Vajna <vmiklos@collabora.co.uk>2015-08-17 07:47:34 +0000
commita9b3f13abc4ba780ce5a48fa910de631644da236 (patch)
tree71a71031bf1cbd4fb7f46f75fbbb4d79f15678d6
parentfdc60b7497439e25a1b30d259f3407aeff8e3236 (diff)
tdf#44388: handle the NULL clip correctly for pdf output
With the rework to use basegfx polygon clipping (a334752), the case 'fully clipped away', aka NULL clip, aka nothing visible, stopped working. Manifests itself as an empty clip polygon, but with m_bClipRegion being true. Explicitely write out as zero-surface clip polygon. i#65128 is related. Change-Id: I57389fcd057d75dfa4e0de9ebb86794437c70b55 (cherry picked from commit 86b47f5138c0c5b882359a48052a796bc91a5afb) Reviewed-on: https://gerrit.libreoffice.org/17725 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
-rw-r--r--vcl/source/gdi/pdfwriter_impl.cxx9
1 files changed, 6 insertions, 3 deletions
diff --git a/vcl/source/gdi/pdfwriter_impl.cxx b/vcl/source/gdi/pdfwriter_impl.cxx
index cdfccbb41a37..db66f601c712 100644
--- a/vcl/source/gdi/pdfwriter_impl.cxx
+++ b/vcl/source/gdi/pdfwriter_impl.cxx
@@ -11982,14 +11982,14 @@ void PDFWriterImpl::updateGraphicsState(Mode const mode)
if( m_aCurrentPDFState.m_bClipRegion != rNewState.m_bClipRegion ||
( rNewState.m_bClipRegion && m_aCurrentPDFState.m_aClipRegion != rNewState.m_aClipRegion ) )
{
- if( m_aCurrentPDFState.m_bClipRegion && m_aCurrentPDFState.m_aClipRegion.count() )
+ if( m_aCurrentPDFState.m_bClipRegion )
{
aLine.append( "Q " );
// invalidate everything but the clip region
m_aCurrentPDFState = GraphicsState();
rNewState.m_nUpdateFlags = sal::static_int_cast<sal_uInt16>(~GraphicsState::updateClipRegion);
}
- if( rNewState.m_bClipRegion && rNewState.m_aClipRegion.count() )
+ if( rNewState.m_bClipRegion )
{
// clip region is always stored in private PDF mapmode
MapMode aNewMapMode = rNewState.m_aMapMode;
@@ -11998,7 +11998,10 @@ void PDFWriterImpl::updateGraphicsState(Mode const mode)
m_aCurrentPDFState.m_aMapMode = rNewState.m_aMapMode;
aLine.append( "q " );
- m_aPages.back().appendPolyPolygon( rNewState.m_aClipRegion, aLine );
+ if( rNewState.m_aClipRegion.count() )
+ m_aPages.back().appendPolyPolygon( rNewState.m_aClipRegion, aLine );
+ else
+ aLine.append( "0 0 m h " ); // NULL clip, i.e. nothing visible
aLine.append( "W* n\n" );
rNewState.m_aMapMode = aNewMapMode;
getReferenceDevice()->SetMapMode( rNewState.m_aMapMode );