<pre style='margin:0'>
Christopher Nielsen (mascguy) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/55c4b9be1aa45b693d75c2afd1acd97174a0627a">https://github.com/macports/macports-ports/commit/55c4b9be1aa45b693d75c2afd1acd97174a0627a</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'>     new 55c4b9be1aa gtk2-devel: add experimental variant '1bit', for quartz 1-bit image support See: https://trac.macports.org/ticket/65974
</span>55c4b9be1aa is described below

<span style='display:block; white-space:pre;color:#808000;'>commit 55c4b9be1aa45b693d75c2afd1acd97174a0627a
</span>Author: Christopher Nielsen <mascguy@github.com>
AuthorDate: Mon May 15 19:37:30 2023 -0400

<span style='display:block; white-space:pre;color:#404040;'>    gtk2-devel: add experimental variant '1bit', for quartz 1-bit image support
</span><span style='display:block; white-space:pre;color:#404040;'>    See: https://trac.macports.org/ticket/65974
</span>---
 gnome/gtk2-devel/Portfile                          |   7 +
 .../files/patch-gtk2-bit_depth-gdkimage.diff       | 167 +++++++++++++++++++++
 2 files changed, 174 insertions(+)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/gnome/gtk2-devel/Portfile b/gnome/gtk2-devel/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 651c08732d9..c6b6a49aaaf 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/gnome/gtk2-devel/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/gnome/gtk2-devel/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -260,6 +260,13 @@ variant bundle requires quartz description {Support including into a bundle} {
</span>     notes "You have enabled 'bundle' variant which breaks GTK2 when used outside of application bundle!"
 }
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+variant 1bit requires quartz description {Enable experimental 1-bit image support} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # Experimental upstream patch for 1-bit image support
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # https://gitlab.gnome.org/GNOME/gtk/-/issues/580
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # https://gitlab.gnome.org/GNOME/gtk/uploads/2a194d81de8e8346a81816870264b3bf/gdkimage.patch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    patchfiles-append       patch-gtk2-bit_depth-gdkimage.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> livecheck.type  regex
 livecheck.url   https://download.gnome.org/sources/${proj_name}/${branch}/
 livecheck.regex {LATEST-IS-(\d+(?:\.\d+)*)}
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/gnome/gtk2-devel/files/patch-gtk2-bit_depth-gdkimage.diff b/gnome/gtk2-devel/files/patch-gtk2-bit_depth-gdkimage.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..48dcf7d7449
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/gnome/gtk2-devel/files/patch-gtk2-bit_depth-gdkimage.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,167 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#==================================================================================================
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# From 98a5cf03578b8bb81e5222549851cd865754f658 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# From: Emmanuel Stapf <manuseiffel@users.noreply.github.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Date: Mon, 11 Jul 2016 07:42:11 +0900
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Subject: [PATCH 1/1] Add support for 1-bpp images
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://gitlab.gnome.org/GNOME/gtk/-/issues/580
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://gitlab.gnome.org/GNOME/gtk/uploads/2a194d81de8e8346a81816870264b3bf/gdkimage.patch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#==================================================================================================
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ gdk/quartz/gdkimage-quartz.c | 66 +++++++++++++++++++++++++++++---------------
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 43 insertions(+), 23 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/gdk/quartz/gdkimage-quartz.c b/gdk/quartz/gdkimage-quartz.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 493efba..d96b70c 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- gdk/quartz/gdkimage-quartz.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ gdk/quartz/gdkimage-quartz.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -37,15 +37,16 @@ _gdk_quartz_image_copy_to_image (GdkDrawable *drawable,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            gint         height)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   GdkScreen *screen;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  int depth;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   g_return_val_if_fail (GDK_IS_DRAWABLE_IMPL_QUARTZ (drawable), NULL);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   g_return_val_if_fail (image != NULL || (dest_x == 0 && dest_y == 0), NULL);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   screen = gdk_drawable_get_screen (drawable);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  depth = gdk_drawable_get_depth (drawable);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if (!image)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     image = _gdk_image_new_for_depth (screen, GDK_IMAGE_FASTEST, NULL, 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                                width, height,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                                gdk_drawable_get_depth (drawable));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                                width, height, depth);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if (GDK_IS_PIXMAP_IMPL_QUARTZ (drawable))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -63,7 +64,7 @@ _gdk_quartz_image_copy_to_image (GdkDrawable *drawable,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           return image;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      switch (gdk_drawable_get_depth (drawable))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      switch (depth)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         case 24:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           bytes_per_row = pix_impl->width * 4;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -112,7 +113,7 @@ _gdk_quartz_image_copy_to_image (GdkDrawable *drawable,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+               for (x = 0; x < width; x++)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                   gint32 pixel;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                   /* 8 bits */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                   pixel = src[0];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                   src++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -123,7 +124,7 @@ _gdk_quartz_image_copy_to_image (GdkDrawable *drawable,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         default:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-          g_warning ("Unsupported bit depth %d\n", gdk_drawable_get_depth (drawable));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          g_warning ("Unsupported bit depth %d\n", depth);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           return image;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -146,7 +147,7 @@ _gdk_quartz_image_copy_to_image (GdkDrawable *drawable,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       if (GDK_WINDOW_IMPL_QUARTZ (drawable) == GDK_WINDOW_IMPL_QUARTZ (GDK_WINDOW_OBJECT (_gdk_root)->impl))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           /* Special case for the root window. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    CGRect rect = CGRectMake (src_x, src_y, width, height);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          CGRect rect = CGRectMake (src_x, src_y, width, height);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           CGImageRef root_image_ref = CGWindowListCreateImage (rect,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                                                kCGWindowListOptionOnScreenOnly,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                                                kCGNullWindowID,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -173,7 +174,7 @@ _gdk_quartz_image_copy_to_image (GdkDrawable *drawable,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    NSRect rect = NSMakeRect (src_x, src_y, width, height);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          NSRect rect = NSMakeRect (src_x, src_y, width, height);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           view = GDK_WINDOW_IMPL_QUARTZ (drawable)->view;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           /* We return the image even if we can't copy to it. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -322,7 +323,7 @@ _gdk_image_new_for_depth (GdkScreen    *screen,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if (visual)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     depth = visual->depth;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  g_assert (depth == 24 || depth == 32);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  g_assert((depth == 1) || (depth == 24) || (depth == 32));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   image = g_object_new (gdk_image_get_type (), NULL);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   image->type = type;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -333,11 +334,16 @@ _gdk_image_new_for_depth (GdkScreen    *screen,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   image->byte_order = (G_BYTE_ORDER == G_LITTLE_ENDIAN) ? GDK_LSB_FIRST : GDK_MSB_FIRST;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  /* We only support images with bpp 4 */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  image->bpp = 4;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  image->bpl = image->width * image->bpp;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  image->bits_per_pixel = image->bpp * 8;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  if (depth == 1) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    image->bpp = 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    image->bpl = (image->width >> 3) + 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    image->bits_per_pixel = 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      image->bpp = 4;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      image->bpl = image->width * image->bpp;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      image->bits_per_pixel = image->bpp * 8;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   image->mem = g_malloc (image->bpl * image->height);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   memset (image->mem, 0x00, image->bpl * image->height);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -355,9 +361,14 @@ gdk_image_get_pixel (GdkImage *image,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   g_return_val_if_fail (x >= 0 && x < image->width, 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   g_return_val_if_fail (y >= 0 && y < image->height, 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  ptr = image->mem + y * image->bpl + x * image->bpp;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  return *(guint32 *)ptr;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  ptr = image->mem + y * image->bpl;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  if (image->depth == 1) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    guchar data = (image->byte_order == GDK_MSB_FIRST ? (0x80 >> (x & 7)) : (1 << (x & 7)));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    return (ptr[x >> 3] & data) ? 0x1 : 0x0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    ptr += x * image->bpp;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    return *(guint32 *)ptr;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -366,18 +377,27 @@ gdk_image_put_pixel (GdkImage *image,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                gint y,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                guint32 pixel)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  guchar *ptr;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  ptr = image->mem + y * image->bpl + x * image->bpp;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  *(guint32 *)ptr = pixel;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  guchar *ptr = image->mem + y * image->bpl;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  if (image->depth == 1) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    guchar data = (image->byte_order == GDK_MSB_FIRST ? (0x80 >> (x & 7)) : (1 << (x & 7)));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if (pixel) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        ptr[x >> 3] |= data;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        ptr[x >> 3] &= ~data;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    ptr += x * image->bpp;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    *(guint32 *)ptr = pixel;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ gint
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ _gdk_windowing_get_bits_for_depth (GdkDisplay *display,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                             gint        depth)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                                  gint        depth)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  if (depth == 24 || depth == 32)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  if (depth == 1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  return 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  else if (depth == 24 || depth == 32)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     return 32;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     g_assert_not_reached ();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-- 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+2.9.0.windows.1
</span></pre><pre style='margin:0'>

</pre>