summaryrefslogtreecommitdiff
path: root/vcl/source/gdi/pdfwriter_impl.hxx
diff options
context:
space:
mode:
authorMichael Stahl <mstahl@redhat.com>2014-04-02 11:09:46 +0200
committerMichael Stahl <mstahl@redhat.com>2014-04-02 12:33:34 +0200
commite8062623355fcf3e65beae7f8f5e4d46384141f2 (patch)
treebefab593f89d67c79229301902d0b4a42775d728 /vcl/source/gdi/pdfwriter_impl.hxx
parentd256f08c6a7279489440d081e31355f99bee88ae (diff)
fdo#63786 rhbz#1081968: fix PDF export of cropped SVG
When a META_FLOATTRANSPARENT_ACTION is exported, the beginTransparencyGroup()/endTransparencyGroup() will write something like "Q 0 0 0 rg" where the Q clears the previously set clipping region, which is then not restored. bdf75c7d9bce985ed10a9c41d03420f33ce82142 appears to be a fix for a previous related problem; this essentially reverts it since it introduced the current cropping problem. (Particularly funny is the comment "force reemitting clip region" since the commit does the opposite.) It does not really make sense to me to write something to the page content stream from beginRedirect()/endRedirect(), because that does not actually have any effect on the _content_ of the substream, because the referencing of the substream is only written _after_ endRedirect() returns, so basically what is written can in the best case cancel itself out and in the worst case introduce bugs; the state manipulations there are just to modify the m_aCurrentPDFState following the push()/pop() (it is necessary to clear the clip region before starting the substream to avoid spurious "Q" at the beginning of the stream). Change-Id: I4a5f57b784068bd7d3ba187115444574f7418195
Diffstat (limited to 'vcl/source/gdi/pdfwriter_impl.hxx')
-rw-r--r--vcl/source/gdi/pdfwriter_impl.hxx4
1 files changed, 3 insertions, 1 deletions
diff --git a/vcl/source/gdi/pdfwriter_impl.hxx b/vcl/source/gdi/pdfwriter_impl.hxx
index 4fe749ae9e71..b94e4f404608 100644
--- a/vcl/source/gdi/pdfwriter_impl.hxx
+++ b/vcl/source/gdi/pdfwriter_impl.hxx
@@ -840,10 +840,12 @@ i12626
void drawRelief( SalLayout& rLayout, const OUString& rText, bool bTextLines );
void drawShadow( SalLayout& rLayout, const OUString& rText, bool bTextLines );
+ enum Mode { DEFAULT, NOWRITE };
+
/* writes differences between graphics stack and current real PDF
* state to the file
*/
- void updateGraphicsState();
+ void updateGraphicsState(Mode mode = DEFAULT);
/* writes a transparency group object */
bool writeTransparentObject( TransparencyEmit& rObject );