]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk1/cursor.cpp
Various changes to make pop up menus work
[wxWidgets.git] / src / gtk1 / cursor.cpp
index ab0d7294a26a7abdac49c07d4d8aa53c5f1649e0..adf882b13352c550475270b61ad803b36a2b81a7 100644 (file)
@@ -205,42 +205,42 @@ wxCursor::wxCursor( const wxImage & image )
     //it seems a waste of effort to copy the image
     //but otherwise we need to remove the const modifier ??
     wxImage tmpImage = image.Copy();
-    wxHashTable hTable;
+    wxImageHistogram histogram;
 
     //colors as rrggbb
     unsigned long key;
+    unsigned long value;
     unsigned long keyMaskColor = 0;
-    if (bHasMask) keyMaskColor = (r << 16) | (g << 8) | b;
+    if (bHasMask) 
+        keyMaskColor = (r << 16) | (g << 8) | b;
 
-    tmpImage.ComputeHistogram( hTable );
+    tmpImage.ComputeHistogram(histogram);
 
-    long MostFreqCol = 0 ; long nMost = 0;
-    long NextFreqCol = 0 ; long nNext = 0;
-    long value ;
-    hTable.BeginFind();
-    wxNode *node = NULL;
-    while ((node = hTable.Next()) != NULL)
+    long MostFreqCol = 0;
+    unsigned long nMost = 0;
+    long NextFreqCol = 0;
+    unsigned long nNext = 0;
+    wxImageHistogram::iterator entry = histogram.begin();
+
+    while ( entry != histogram.end() )
     {
-        wxHNode *hnode = (wxHNode*) node->GetData();
-        value = hnode->value;
-        key = node->GetKeyInteger() ;
-        if (!bHasMask || (key != keyMaskColor) )
+        value = entry->second.value;
+        key = entry->first;
+        if ( !bHasMask || (key != keyMaskColor) )
         {
-        if (value > nMost)
+            if (value > nMost)
             {
-            nMost = value;
-            MostFreqCol = key;
+                nMost = value;
+                MostFreqCol = key;
             }
-        else
-            if (value > nNext)
+            else if (value > nNext)
             {
-            nNext = value ;
-            NextFreqCol = key;
+                nNext = value;
+                NextFreqCol = key;
             }
         }
     }
 
-
     wxColour fg = wxColour ( (unsigned char)(MostFreqCol >> 16),
                              (unsigned char)(MostFreqCol >> 8),
                              (unsigned char)(MostFreqCol) ) ;
@@ -249,20 +249,18 @@ wxCursor::wxCursor( const wxImage & image )
                              (unsigned char)(NextFreqCol >> 8),
                              (unsigned char)(NextFreqCol) ) ;
 
-
-
     int hotSpotX=0; 
     int hotSpotY=0;
 
     if (image.HasOption(wxCUR_HOTSPOT_X))
-       hotSpotX = image.GetOptionInt(wxCUR_HOTSPOT_X);
+        hotSpotX = image.GetOptionInt(wxCUR_HOTSPOT_X);
     if (image.HasOption(wxCUR_HOTSPOT_Y))
-       hotSpotY = image.GetOptionInt(wxCUR_HOTSPOT_Y);
+        hotSpotY = image.GetOptionInt(wxCUR_HOTSPOT_Y);
    
     if (hotSpotX < 0 || hotSpotX >= w)
-            hotSpotX = 0;
+        hotSpotX = 0;
     if (hotSpotY < 0 || hotSpotY >= h)
-            hotSpotY = 0;
+        hotSpotY = 0;
 
     GdkBitmap *data = gdk_bitmap_create_from_data( wxGetRootWindow()->window, (gchar *) bits,
         w, h );
@@ -278,7 +276,6 @@ wxCursor::wxCursor( const wxImage & image )
     gdk_bitmap_unref( mask );
     delete [] bits ;
     delete [] maskBits;
-
 }
 #endif