[goffice] Fix bounds and distance for rectangle and paths in RTL mode. [#753963]



commit 10e4ce6cffc29efbf302322efd01e66f83995d98
Author: Jean Brefort <jean brefort normalesup org>
Date:   Mon Aug 24 10:51:23 2015 +0200

    Fix bounds and distance for rectangle and paths in RTL mode. [#753963]

 ChangeLog                      |    6 ++++++
 NEWS                           |    3 +++
 goffice/canvas/goc-path.c      |    7 +++----
 goffice/canvas/goc-rectangle.c |    3 ++-
 4 files changed, 14 insertions(+), 5 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 5a88c8f..b5bfc52 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2015-08-24  Jean Brefort  <jean brefort normalesup org>
+
+       * goffice/canvas/goc-path.c (goc_path_prepare_draw): fix bounds and distance
+       in RTL mode. [#753963]
+       * goffice/canvas/goc-rectangle.c (goc_rectangle_prepare_draw): ditto.
+
 2015-08-01  Morten Welinder  <terra gnome org>
 
        * goffice/utils/go-format.c (go_render_general): Also try the
diff --git a/NEWS b/NEWS
index dfdbe8c..9e63f71 100644
--- a/NEWS
+++ b/NEWS
@@ -1,5 +1,8 @@
 goffice 0.10.24:
 
+Jean:
+       * Fix bounds and distance for rectangle and paths in RTL mode. [#753963]
+
 --------------------------------------------------------------------------
 goffice 0.10.23:
 
diff --git a/goffice/canvas/goc-path.c b/goffice/canvas/goc-path.c
index 320ed6a..6529729 100644
--- a/goffice/canvas/goc-path.c
+++ b/goffice/canvas/goc-path.c
@@ -124,17 +124,16 @@ goc_path_prepare_draw (GocItem const *item, cairo_t *cr, gboolean flag)
 {
        GocPath *path = GOC_PATH (item);
        double sign = (goc_canvas_get_direction (item->canvas) == GOC_DIRECTION_RTL)? -1: 1;
-       double rsign = sign;
 
        _goc_item_transform (item, cr, flag);
        if (1 == flag) {
                goc_group_cairo_transform (item->parent, cr, path->x , path->y);
        } else {
-               cairo_translate (cr, path->x , path->y);
-               rsign = 1;
+               cairo_translate (cr, path->x, path->y);
+               sign = 1;
        }
        cairo_scale (cr, sign, 1.);
-       cairo_rotate (cr, path->rotation * rsign);
+       cairo_rotate (cr, path->rotation * sign);
        go_path_to_cairo (path->path, GO_PATH_DIRECTION_FORWARD, cr);
 
        return TRUE;
diff --git a/goffice/canvas/goc-rectangle.c b/goffice/canvas/goc-rectangle.c
index bc780e6..9549ea7 100644
--- a/goffice/canvas/goc-rectangle.c
+++ b/goffice/canvas/goc-rectangle.c
@@ -146,12 +146,13 @@ goc_rectangle_prepare_draw (GocItem const *item, cairo_t *cr, gboolean flag)
        _goc_item_transform (item, cr, flag);
        if (1 == flag) {
                goc_group_cairo_transform (item->parent, cr, rect->x, rect->y);
+               cairo_scale (cr, sign, 1.);
        } else {
                cairo_translate (cr, rect->x, rect->y);
        }
        cairo_rotate (cr, rect->rotation * sign);
        if (0 == rect->type || 0 == rect->rx || 0 == rect->ry) {
-               cairo_rectangle (cr, 0., 0., (int) rect->width * sign, (int) rect->height);
+               cairo_rectangle (cr, 0., 0., (int) rect->width, (int) rect->height);
        } else {
 
                if (rect->type & 1) {


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]