IMPLEMENT_DYNAMIC_CLASS(wxCursor, wxBitmap)
#endif
+class WXDLLEXPORT wxCursorRefData: public wxBitmapRefData
+{
+ DECLARE_NO_COPY_CLASS(wxCursorRefData)
+
+ friend class WXDLLEXPORT wxBitmap;
+ friend class WXDLLEXPORT wxCursor;
+public:
+ wxCursorRefData();
+ ~wxCursorRefData();
+
+protected:
+ WXHCURSOR m_hCursor;
+ bool m_disposeHandle;
+ bool m_releaseHandle;
+ bool m_isColorCursor ;
+ long m_themeCursor ;
+};
+
+#define M_CURSORDATA ((wxCursorRefData *)m_refData)
+#define M_CURSORHANDLERDATA ((wxCursorRefData *)bitmap->m_refData)
+
const short kwxCursorBullseye = 0 ;
const short kwxCursorBlank = 1 ;
const short kwxCursorPencil = 2 ;
wxCursorRefData::wxCursorRefData()
{
- m_width = 16;
- m_height = 16;
+ SetWidth( 16 );
+ SetHeight( 16 );
m_hCursor = NULL ;
m_disposeHandle = false ;
m_releaseHandle = false ;
bool wxCursor::CreateFromXpm(const char **bits)
{
+#if wxUSE_IMAGE
wxCHECK_MSG( bits != NULL, FALSE, wxT("invalid cursor data") )
wxXPMDecoder decoder;
wxImage img = decoder.ReadData(bits);
wxCHECK_MSG( img.Ok(), FALSE, wxT("invalid cursor data") )
CreateFromImage( img ) ;
return TRUE;
+#else
+ return FALSE;
+#endif
+}
+
+WXHCURSOR wxCursor::GetHCURSOR() const
+{
+ return (M_CURSORDATA ? M_CURSORDATA->m_hCursor : 0);
+}
+
+bool wxCursor::Ok() const
+{
+ return (m_refData != NULL && ( M_CURSORDATA->m_hCursor != NULL || M_CURSORDATA->m_themeCursor != -1 ) ) ;
}
short GetCTabIndex( CTabHandle colors , RGBColor *col )
return retval ;
}
+#if wxUSE_IMAGE
+
void wxCursor::CreateFromImage(const wxImage & image)
{
m_refData = new wxCursorRefData;
(**ch).crsrHotSpot.h = hotSpotX ;
(**ch).crsrHotSpot.v = hotSpotY ;
- (**ch).crsrXTable = NULL ;
+ (**ch).crsrXTable = 0 ;
(**ch).crsrID = GetCTSeed() ;
memset( (**ch).crsr1Data , 0 , sizeof( Bits16 ) ) ;
M_CURSORDATA->m_isColorCursor = true ;
}
+#endif //wxUSE_IMAGE
+
wxCursor::wxCursor(const wxString& cursor_file, long flags, int hotSpotX, int hotSpotY)
{
m_refData = new wxCursorRefData;
}
else
{
+#if wxUSE_IMAGE
wxImage image ;
image.LoadFile( cursor_file , flags ) ;
if( image.Ok() )
delete m_refData ;
CreateFromImage(image) ;
}
+#endif
}
}