// Purpose: wxCursor implementation
// Author: Vaclav Slavik
// Created: 2006-08-08
-// RCS-ID: $Id$
// Copyright: (c) 2006 REA Elektronik GmbH
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
// wxCursorRefData
//-----------------------------------------------------------------------------
-class wxCursorRefData: public wxObjectRefData
+class wxCursorRefData : public wxGDIRefData
{
public:
wxCursorRefData(const wxBitmap& bmp = wxNullBitmap, int id = -1)
: m_id(id), m_bitmap(bmp) {}
+ virtual bool IsOk() const { return m_bitmap.IsOk(); }
+
+ // Create a deep copy of this object.
+ wxCursorRefData *Clone() const
+ {
+ wxBitmap bitmapCopy(m_bitmap);
+ bitmapCopy.UnShare();
+
+ return new wxCursorRefData(bitmapCopy, m_id);
+ }
+
int m_id;
wxBitmap m_bitmap;
};
IMPLEMENT_DYNAMIC_CLASS(wxCursor, wxObject)
-wxCursor::wxCursor(int cursorId)
+void wxCursor::InitFromStock(wxStockCursor cursorId)
{
#warning "FIXME -- implement the cursor as bitmaps (that's what DFB uses)"
}
-wxCursor::wxCursor(const char WXUNUSED(bits)[],
- int WXUNUSED(width),
- int WXUNUSED(height),
- int WXUNUSED(hotSpotX), int WXUNUSED(hotSpotY),
- const char WXUNUSED(maskBits)[],
- wxColour * WXUNUSED(fg), wxColour * WXUNUSED(bg) )
-{
-#warning "FIXME"
-}
-
wxCursor::wxCursor(const wxString& cursor_file,
- long flags,
+ wxBitmapType type,
int WXUNUSED(hotSpotX), int WXUNUSED(hotSpotY))
{
#warning "FIXME"
}
-bool wxCursor::IsOk() const
-{
- return m_refData && M_CURSOR->m_bitmap.Ok();
-}
-
-bool wxCursor::operator==(const wxCursor& cursor) const
-{
- if ( Ok() )
- {
- if ( !cursor.Ok() )
- return false;
- else if ( M_CURSOR->m_id != M_CURSOR_OF(cursor)->m_id )
- return false;
- else if ( M_CURSOR->m_id == -1 ) // non-stock cursor
- return (m_refData == cursor.m_refData);
- else
- return true; // IDs != -1 and are the same
- }
- else
- {
- return !cursor.Ok();
- }
-}
-
-wxObjectRefData *wxCursor::CreateRefData() const
+wxGDIRefData *wxCursor::CreateGDIRefData() const
{
return new wxCursorRefData;
}
-wxObjectRefData *wxCursor::CloneRefData(const wxObjectRefData *data) const
+wxGDIRefData *wxCursor::CloneGDIRefData(const wxGDIRefData *data) const
{
- return new wxCursorRefData(*(wxCursorRefData *)data);
+ return static_cast<const wxCursorRefData *>(data)->Clone();
}