]> git.saurik.com Git - wxWidgets.git/commitdiff
Correct creation of the mask for wxImage cursors in wxGTK.
authorVadim Zeitlin <vadim@wxwidgets.org>
Sun, 25 Jul 2010 18:39:10 +0000 (18:39 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sun, 25 Jul 2010 18:39:10 +0000 (18:39 +0000)
The code created the monochrome bitmap used by wxCursor(wxImage) ctor
incorrectly resulting in bad cursor appearance. Use the right values for
foreground and background pixels (which are inversed compared to naive
expectations) to fix this.

Closes #11989.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65107 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/gtk/cursor.cpp

index 6da4ba4d9627544192afd7de209c0ad1532fe994..17e0243a23ecb53f8772d6b0f569adb8b2464e28 100644 (file)
@@ -257,20 +257,17 @@ void wxCursor::InitFromImage( const wxImage & image )
 
     // modify image so wxBitmap can be used to convert to pixmap
     image_copy.SetMask(false);
 
     // modify image so wxBitmap can be used to convert to pixmap
     image_copy.SetMask(false);
-    int i, j;
     wxByte* data = image_copy.GetData();
     wxByte* data = image_copy.GetData();
-    for (j = 0; j < h; j++)
+    for (int j = 0; j < h; j++)
     {
     {
-        for (i = 0; i < w; i++, data += 3)
+        for (int i = 0; i < w; i++, data += 3)
         {
         {
-            //if average value is > mid grey
-            if (int(data[0]) + data[1] + data[2] >= 3 * 128)
-            {
-                // wxBitmap only converts (255,255,255) to white
-                data[0] = 255;
-                data[1] = 255;
-                data[2] = 255;
-            }
+            // if average value of the pixel is > mid grey, convert it to
+            // background (0), otherwise to foreground (255, using wxBitmap
+            // convention)
+            data[0] =
+            data[1] =
+            data[2] = int(data[0]) + data[1] + data[2] >= 3 * 128 ? 0 : 255;
         }
     }
     wxBitmap bitmap(image_copy, 1);
         }
     }
     wxBitmap bitmap(image_copy, 1);