gtk+ r20870 - in trunk: . gdk/quartz
- From: herzi svn gnome org
- To: svn-commits-list gnome org
- Subject: gtk+ r20870 - in trunk: . gdk/quartz
- Date: Sun, 20 Jul 2008 19:22:37 +0000 (UTC)
Author: herzi
Date: Sun Jul 20 19:22:37 2008
New Revision: 20870
URL: http://svn.gnome.org/viewvc/gtk+?rev=20870&view=rev
Log:
2008-07-20 Sven Herzberg <sven imendio com>
reviewed by: Richard Hult
Fixes #543868: GdkPixmap is upside down on quartz
* gdk/quartz/gdkdrawable-quartz.c (gdk_quartz_draw_drawable): flip the
coordinate space from GTK+ orientation to CoreGraphics orientation
before calling CoreGraphics code
* gdk/quartz/gdkgc-quartz.c (gdk_quartz_draw_tiled_pattern): drop the
coordinate space flipping (we always get it right, now)
* gdk/quartz/gdkpixmap-quartz.c
(gdk_pixmap_impl_quartz_get_context): flip the coordinate space when
creating the CGContextRef
Modified:
trunk/ChangeLog
trunk/gdk/quartz/gdkdrawable-quartz.c
trunk/gdk/quartz/gdkgc-quartz.c
trunk/gdk/quartz/gdkpixmap-quartz.c
Modified: trunk/gdk/quartz/gdkdrawable-quartz.c
==============================================================================
--- trunk/gdk/quartz/gdkdrawable-quartz.c (original)
+++ trunk/gdk/quartz/gdkdrawable-quartz.c Sun Jul 20 19:22:37 2008
@@ -337,6 +337,7 @@
else if (dest_depth != 0 && src_depth == dest_depth)
{
CGContextRef context = gdk_quartz_drawable_get_context (drawable, FALSE);
+ gint width, height;
if (!context)
return;
@@ -344,6 +345,13 @@
_gdk_quartz_gc_update_cg_context (gc, drawable, context,
GDK_QUARTZ_CONTEXT_STROKE);
+ CGContextSaveGState (context);
+
+ /* convert coordinates from gtk+ to core graphics */
+ gdk_drawable_get_size (drawable, &width, &height);
+ CGContextTranslateCTM (context, 0, height);
+ CGContextScaleCTM (context, 1.0, -1.0);
+
CGContextClipToRect (context, CGRectMake (xdest, ydest, width, height));
CGContextTranslateCTM (context, xdest - xsrc, ydest - ysrc);
CGContextDrawImage (context,
@@ -352,6 +360,8 @@
GDK_PIXMAP_IMPL_QUARTZ (src_impl)->height),
GDK_PIXMAP_IMPL_QUARTZ (src_impl)->image);
+ CGContextRestoreGState (context);
+
gdk_quartz_drawable_release_context (drawable, context);
}
else
Modified: trunk/gdk/quartz/gdkgc-quartz.c
==============================================================================
--- trunk/gdk/quartz/gdkgc-quartz.c (original)
+++ trunk/gdk/quartz/gdkgc-quartz.c Sun Jul 20 19:22:37 2008
@@ -290,12 +290,6 @@
width = CGImageGetWidth (pattern_image);
height = CGImageGetHeight (pattern_image);
- if (private->is_window)
- {
- CGContextTranslateCTM (context, 0, height);
- CGContextScaleCTM (context, 1.0, -1.0);
- }
-
CGContextDrawImage (context,
CGRectMake (0, 0, width, height),
pattern_image);
Modified: trunk/gdk/quartz/gdkpixmap-quartz.c
==============================================================================
--- trunk/gdk/quartz/gdkpixmap-quartz.c (original)
+++ trunk/gdk/quartz/gdkpixmap-quartz.c Sun Jul 20 19:22:37 2008
@@ -47,6 +47,7 @@
{
GdkPixmapImplQuartz *impl = GDK_PIXMAP_IMPL_QUARTZ (drawable);
CGContextRef cg_context;
+ size_t height;
cg_context = CGBitmapContextCreate (impl->data,
CGImageGetWidth (impl->image),
@@ -57,6 +58,12 @@
CGImageGetBitmapInfo (impl->image));
CGContextSetAllowsAntialiasing (cg_context, antialias);
+ /* convert coordinates from core graphics to gtk+ */
+ height = CGImageGetHeight (impl->image);
+
+ CGContextTranslateCTM (cg_context, 0, height);
+ CGContextScaleCTM (cg_context, 1.0, -1.0);
+
return cg_context;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]