fix a regression in path coordinate handling

This commit is contained in:
Matthias Clasen 2012-09-16 17:47:47 -04:00
parent dba9aa016e
commit 8d1b881d54
2 changed files with 81 additions and 1 deletions

73
cairo-path-coords.patch Normal file
View File

@ -0,0 +1,73 @@
From f34b87f6d76cbea93acd4a8c73c8c6a6b412a302 Mon Sep 17 00:00:00 2001
From: Chris Wilson <chris@chris-wilson.co.uk>
Date: Mon, 10 Sep 2012 14:09:18 +0000
Subject: path: Convert from backend coordinates back into user coordinates
Fixes regression from commit 83bfd85a1378e61b8bdc3f554f5e07900311f61f
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date: Fri Apr 23 19:45:26 2010 +0100
Implement cairo_backend_t
As there exists no public API to perform the operation we needed, and we
failed to create one, the constructed path failed to correctly remove
the device offset.
Fixes copy-path under device translation.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=54732
Reported-by: Benjamin Berg <benjamin@sipsolutions.net>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
---
diff --git a/src/cairo-path.c b/src/cairo-path.c
index 5c48373..43cd175 100644
--- a/src/cairo-path.c
+++ b/src/cairo-path.c
@@ -37,6 +37,7 @@
#include "cairoint.h"
#include "cairo-private.h"
+#include "cairo-backend-private.h"
#include "cairo-error-private.h"
#include "cairo-path-private.h"
#include "cairo-path-fixed-private.h"
@@ -152,7 +153,7 @@ _cpp_move_to (void *closure,
x = _cairo_fixed_to_double (point->x);
y = _cairo_fixed_to_double (point->y);
- cairo_device_to_user (cpp->cr, &x, &y);
+ _cairo_backend_to_user (cpp->cr, &x, &y);
data->header.type = CAIRO_PATH_MOVE_TO;
data->header.length = 2;
@@ -177,7 +178,7 @@ _cpp_line_to (void *closure,
x = _cairo_fixed_to_double (point->x);
y = _cairo_fixed_to_double (point->y);
- cairo_device_to_user (cpp->cr, &x, &y);
+ _cairo_backend_to_user (cpp->cr, &x, &y);
data->header.type = CAIRO_PATH_LINE_TO;
data->header.length = 2;
@@ -205,15 +206,15 @@ _cpp_curve_to (void *closure,
x1 = _cairo_fixed_to_double (p1->x);
y1 = _cairo_fixed_to_double (p1->y);
- cairo_device_to_user (cpp->cr, &x1, &y1);
+ _cairo_backend_to_user (cpp->cr, &x1, &y1);
x2 = _cairo_fixed_to_double (p2->x);
y2 = _cairo_fixed_to_double (p2->y);
- cairo_device_to_user (cpp->cr, &x2, &y2);
+ _cairo_backend_to_user (cpp->cr, &x2, &y2);
x3 = _cairo_fixed_to_double (p3->x);
y3 = _cairo_fixed_to_double (p3->y);
- cairo_device_to_user (cpp->cr, &x3, &y3);
+ _cairo_backend_to_user (cpp->cr, &x3, &y3);
data->header.type = CAIRO_PATH_CURVE_TO;
data->header.length = 4;
--
cgit v0.9.0.2-2-gbebe

View File

@ -5,7 +5,7 @@
Summary: A 2D graphics library
Name: cairo
Version: 1.12.2
Release: 3%{?dist}
Release: 4%{?dist}
URL: http://cairographics.org
#VCS: git:git://git.freedesktop.org/git/cairo
#Source0: http://cairographics.org/snapshots/%{name}-%{version}.tar.xz
@ -13,6 +13,9 @@ Source0: http://cairographics.org/releases/%{name}-%{version}.tar.xz
License: LGPLv2 or MPLv1.1
Group: System Environment/Libraries
# upstream regression fix
Patch0: cairo-path-coords.patch
BuildRequires: pkgconfig
BuildRequires: libXrender-devel
BuildRequires: libX11-devel
@ -91,6 +94,7 @@ This package contains tools for working with the cairo graphics library.
%prep
%setup -q
%patch0 -p1
%build
%configure --disable-static \
@ -185,6 +189,9 @@ rm -rf $RPM_BUILD_ROOT
%{_libdir}/cairo/
%changelog
* Sun Sep 16 2012 Matthias Clasen <mclasen@redhat.com> - 1.12.2-4
- Fix a regression in patch coordinate handling
* Wed Jul 18 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.12.2-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild