[gtk+] Bug #588388 - shape rendering is back



commit b72960f12dd9fcb19a3ccff6283c1c9ac0e43c68
Author: Hans Breuer <hans breuer org>
Date:   Sun Jul 12 18:58:59 2009 +0200

    Bug #588388 - shape rendering is back
    
    Just mapping exisiting implementations to new GdkWindow API.
    
    http://bugzilla.gnome.org/show_bug.cgi?id=588388

 gdk/win32/gdkwindow-win32.c |   31 ++++++++++++++++++++++++++-----
 1 files changed, 26 insertions(+), 5 deletions(-)
---
diff --git a/gdk/win32/gdkwindow-win32.c b/gdk/win32/gdkwindow-win32.c
index c72bc06..b43ab19 100644
--- a/gdk/win32/gdkwindow-win32.c
+++ b/gdk/win32/gdkwindow-win32.c
@@ -1,7 +1,7 @@
 /* GDK - The GIMP Drawing Kit
  * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
  * Copyright (C) 1998-2004 Tor Lillqvist
- * Copyright (C) 2001-2004 Hans Breuer
+ * Copyright (C) 2001-2009 Hans Breuer
  * Copyright (C) 2007-2009 Cody Russell
  *
  * This library is free software; you can redistribute it and/or
@@ -3556,8 +3556,13 @@ gdk_window_set_opacity (GdkWindow *window,
 GdkRegion *
 _gdk_windowing_get_shape_for_mask (GdkBitmap *mask)
 {
-	// XXX: TODO
-	return NULL;
+  GdkRegion *region;
+  HRGN hrgn = _gdk_win32_bitmap_to_hrgn (mask);
+
+  region = _gdk_win32_hrgn_to_region (hrgn);
+  DeleteObject (hrgn);
+
+  return region;
 }
 
 void
@@ -3568,13 +3573,25 @@ _gdk_windowing_window_set_composited (GdkWindow *window, gboolean composited)
 GdkRegion *
 _gdk_windowing_window_get_shape (GdkWindow *window)
 {
-	return NULL;
+  HRGN hrgn = CreateRectRgn (0, 0, 0, 0);
+  int  type = GetWindowRgn (GDK_WINDOW_HWND (window), hrgn);
+
+  if (type == SIMPLEREGION || type == COMPLEXREGION)
+    {
+      GdkRegion *region = _gdk_win32_hrgn_to_region (hrgn);
+
+      DeleteObject (hrgn);
+      return region;
+    }
+
+  return NULL;
 }
 
 GdkRegion *
 _gdk_windowing_window_get_input_shape (GdkWindow *window)
 {
-	return NULL;
+  /* CHECK: are these really supposed to be the same? */
+  return _gdk_windowing_window_get_shape (window);
 }
 
 static void
@@ -3617,6 +3634,10 @@ gdk_win32_input_shape_combine_region (GdkWindow *window,
 				      gint offset_x,
 				      gint offset_y)
 {
+  if (GDK_WINDOW_DESTROYED (window))
+    return;
+  /* CHECK: are these really supposed to be the same? */
+  return gdk_win32_window_shape_combine_region (window, shape_region, offset_x, offset_y);
 }
 
 void



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