#include "wx/listctrl.h"
#include "wx/log.h"
+#if defined(wxMAC_USE_CORE_GRAPHICS) && wxMAC_USE_CORE_GRAPHICS
+#include "wx/dc.h"
+#endif
+
/*
To use this class, create a wxDragImage when you start dragging, for example:
// For efficiency, tell wxGenericDragImage to use a bitmap that's already
// created (e.g. from last drag)
- void SetBackingBitmap(wxBitmap* bitmap) { m_pBackingBitmap = bitmap; }
+ void SetBackingBitmap(wxBitmap* bitmap) {
+#if defined(wxMAC_USE_CORE_GRAPHICS) && wxMAC_USE_CORE_GRAPHICS
+#else
+ m_pBackingBitmap = bitmap;
+#endif
+ }
// Operations
////////////////////////////////////////////////////////////////////////////
wxWindow* m_window;
wxDC* m_windowDC;
+#if defined(wxMAC_USE_CORE_GRAPHICS) && wxMAC_USE_CORE_GRAPHICS
+ wxOverlay m_overlay;
+ wxDCOverlay* m_dcOverlay;
+#else
// Stores the window contents while we're dragging the image around
wxBitmap m_backingBitmap;
wxBitmap* m_pBackingBitmap; // Pointer to existing backing bitmap
// (pass to wxGenericDragImage as an efficiency measure)
// A temporary bitmap for repairing/redrawing
wxBitmap m_repairBitmap;
+#endif
wxRect m_boundingRect;
bool m_fullScreen;
m_windowDC = (wxDC*) NULL;
m_window = (wxWindow*) NULL;
m_fullScreen = false;
+#if defined(wxMAC_USE_CORE_GRAPHICS) && wxMAC_USE_CORE_GRAPHICS
+ m_dcOverlay = NULL;
+#else
m_pBackingBitmap = (wxBitmap*) NULL;
+#endif
}
#if WXWIN_COMPATIBILITY_2_6
}
}
+#if defined(wxMAC_USE_CORE_GRAPHICS) && wxMAC_USE_CORE_GRAPHICS
+ // nothing to setup here
+#else
wxBitmap* backing = (m_pBackingBitmap ? m_pBackingBitmap : (wxBitmap*) & m_backingBitmap);
if (!backing->Ok() || (backing->GetWidth() < clientSize.x || backing->GetHeight() < clientSize.y))
(*backing) = wxBitmap(clientSize.x, clientSize.y);
+#endif
if (!m_fullScreen)
{
if (m_windowDC)
{
+#if defined(wxMAC_USE_CORE_GRAPHICS) && wxMAC_USE_CORE_GRAPHICS
+ m_overlay.Reset();
+#else
m_windowDC->DestroyClippingRegion();
+#endif
delete m_windowDC;
m_windowDC = (wxDC*) NULL;
}
+#if defined(wxMAC_USE_CORE_GRAPHICS) && wxMAC_USE_CORE_GRAPHICS
+ // nothing to do for overlays
+#else
m_repairBitmap = wxNullBitmap;
+#endif
return true;
}
// This is where we restore the backing bitmap, in case
// something has changed on the window.
+#if defined(wxMAC_USE_CORE_GRAPHICS) && wxMAC_USE_CORE_GRAPHICS
+ // overlay will be set up in the drawing routine
+#else
wxBitmap* backing = (m_pBackingBitmap ? m_pBackingBitmap : (wxBitmap*) & m_backingBitmap);
wxMemoryDC memDC;
memDC.SelectObject(* backing);
//memDC.Blit(0, 0, m_boundingRect.width, m_boundingRect.height, m_windowDC, m_boundingRect.x, m_boundingRect.y);
memDC.SelectObject(wxNullBitmap);
+#endif
RedrawImage(m_position - m_offset, m_position - m_offset, false, true);
}
if (!m_windowDC)
return false;
+#if defined(wxMAC_USE_CORE_GRAPHICS) && wxMAC_USE_CORE_GRAPHICS
+ wxDCOverlay dcoverlay( m_overlay, (wxWindowDC*) m_windowDC ) ;
+ if ( eraseOld )
+ dcoverlay.Clear() ;
+ if (drawNew)
+ DoDrawImage(*m_windowDC, newPos);
+#else
wxBitmap* backing = (m_pBackingBitmap ? m_pBackingBitmap : (wxBitmap*) & m_backingBitmap);
if (!backing->Ok())
return false;
memDCTemp.SelectObject(wxNullBitmap);
memDC.SelectObject(wxNullBitmap);
-
+#endif
return true;
}