+ wxColour fg = wxColour ( (unsigned char)(colMostFreq >> 16),
+ (unsigned char)(colMostFreq >> 8),
+ (unsigned char)(colMostFreq) );
+
+ wxColour bg = wxColour ( (unsigned char)(colNextMostFreq >> 16),
+ (unsigned char)(colNextMostFreq >> 8),
+ (unsigned char)(colNextMostFreq) );
+
+ int fg_intensity = fg.Red() + fg.Green() + fg.Blue();
+ int bg_intensity = bg.Red() + bg.Green() + bg.Blue();
+
+ if (bg_intensity > fg_intensity)
+ {
+ //swap fg and bg
+ wxColour tmp = fg;
+ fg = bg;
+ bg = tmp;
+ }
+
+ int hotSpotX;
+ int hotSpotY;
+
+ if (image.HasOption(wxIMAGE_OPTION_CUR_HOTSPOT_X))
+ hotSpotX = image.GetOptionInt(wxIMAGE_OPTION_CUR_HOTSPOT_X);
+ else
+ hotSpotX = 0;
+
+ if (image.HasOption(wxIMAGE_OPTION_CUR_HOTSPOT_Y))
+ hotSpotY = image.GetOptionInt(wxIMAGE_OPTION_CUR_HOTSPOT_Y);
+ else
+ hotSpotY = 0;
+
+ if (hotSpotX < 0 || hotSpotX >= w)
+ hotSpotX = 0;
+ if (hotSpotY < 0 || hotSpotY >= h)
+ hotSpotY = 0;
+
+ GdkBitmap *data = gdk_bitmap_create_from_data(wxGetRootWindow()->window,
+ (gchar *) bits, w, h);
+ GdkBitmap *mask = gdk_bitmap_create_from_data(wxGetRootWindow()->window,
+ (gchar *) maskBits, w, h);
+
+ m_refData = new wxCursorRefData;
+ M_CURSORDATA->m_cursor = gdk_cursor_new_from_pixmap
+ (
+ data,
+ mask,
+ fg.GetColor(), bg.GetColor(),
+ hotSpotX, hotSpotY
+ );
+
+ gdk_bitmap_unref( data );
+ gdk_bitmap_unref( mask );
+ delete [] bits;
+ delete [] maskBits;
+}
+
+#endif // wxUSE_IMAGE
+
+wxCursor::~wxCursor()
+{