[Libreoffice-commits] core.git: Branch 'libreoffice-5-0' - canvas/source

Caolán McNamara caolanm at redhat.com
Tue Jan 12 08:16:10 PST 2016


 canvas/source/cairo/cairo_textlayout.cxx |   13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

New commits:
commit cfaf07f88332dfe0476d559787c508a1688b5956
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Mon Dec 21 21:21:20 2015 +0000

    Resolves: tdf#93703 0 scaling is CAIRO_STATUS_INVALID_MATRIX
    
    so more drawing to the surface fails
    
    prior to 4ac876084bb89b6460b31e090a666b395f66b1e8 we had
    a new cairo context each time to the error was thrown away
    along with the context and the new one would work
    
    Change-Id: I90ab1a943e8908e87f391bdfb8ccd5f3818e13d5
    (cherry picked from commit f22d153a07231f2d41c7be9ba0e6b7ce963a0762)
    Reviewed-on: https://gerrit.libreoffice.org/20852
    Reviewed-by: Michael Stahl <mstahl at redhat.com>
    Tested-by: Michael Stahl <mstahl at redhat.com>

diff --git a/canvas/source/cairo/cairo_textlayout.cxx b/canvas/source/cairo/cairo_textlayout.cxx
index 03d31947..414c29d 100644
--- a/canvas/source/cairo/cairo_textlayout.cxx
+++ b/canvas/source/cairo/cairo_textlayout.cxx
@@ -497,6 +497,14 @@ namespace cairocanvas
             if (cairo_glyphs.empty())
                 continue;
 
+            vcl::Font aFont = rOutDev.GetFont();
+            long nWidth = aFont.GetWidth();
+            long nHeight = aFont.GetHeight();
+            if (nWidth == 0)
+                nWidth = nHeight;
+            if (nWidth == 0 || nHeight == 0)
+                continue;
+
             /**
              * Setup font
              **/
@@ -548,17 +556,12 @@ namespace cairocanvas
 
             // Font rotation and scaling
             cairo_matrix_t m;
-            vcl::Font aFont = rOutDev.GetFont();
 
             cairo_matrix_init_identity(&m);
 
             if (aSysLayoutData.orientation)
                 cairo_matrix_rotate(&m, (3600 - aSysLayoutData.orientation) * M_PI / 1800.0);
 
-            long nWidth = aFont.GetWidth();
-            long nHeight = aFont.GetHeight();
-            if (nWidth == 0)
-                nWidth = nHeight;
             cairo_matrix_scale(&m, nWidth, nHeight);
 
             //faux italics


More information about the Libreoffice-commits mailing list