overlay implementation
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@41875 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
5fa150e233
commit
861410228d
@ -963,5 +963,66 @@ private:
|
||||
DECLARE_NO_COPY_CLASS(wxDCClipper)
|
||||
};
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// creates an overlay over an existing window, allowing for manipulations like
|
||||
// rubberbanding etc. this API is not stable yet, not to be used outside wx
|
||||
// internal code
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
class wxOverlayImpl ;
|
||||
class wxWindowDC ;
|
||||
|
||||
class WXDLLEXPORT wxOverlay
|
||||
{
|
||||
public :
|
||||
wxOverlay();
|
||||
~wxOverlay();
|
||||
|
||||
// clears the overlay without restoring the former state
|
||||
// to be done eg when the window content has been changed and repainted
|
||||
void Reset();
|
||||
|
||||
private :
|
||||
friend class WXDLLEXPORT wxDCOverlay;
|
||||
|
||||
// returns true if it has been setup
|
||||
bool IsOk();
|
||||
|
||||
void Init( wxWindowDC* dc, int x , int y , int width , int height );
|
||||
|
||||
void BeginDrawing( wxWindowDC* dc);
|
||||
|
||||
void EndDrawing( wxWindowDC* dc);
|
||||
|
||||
void Clear( wxWindowDC* dc);
|
||||
|
||||
wxOverlayImpl* m_impl;
|
||||
|
||||
bool m_inDrawing;
|
||||
} ;
|
||||
|
||||
class WXDLLEXPORT wxDCOverlay
|
||||
{
|
||||
public :
|
||||
// connects this overlay to the corresponding drawing dc, if the overlay is not initialized yet
|
||||
// this call will do so
|
||||
wxDCOverlay(wxOverlay &overlay, wxWindowDC *dc, int x , int y , int width , int height);
|
||||
|
||||
// convenience wrapper that behaves the same using the entire area of the dc
|
||||
wxDCOverlay(wxOverlay &overlay, wxWindowDC *dc);
|
||||
|
||||
// removes the connection between the overlay and the dc
|
||||
virtual ~wxDCOverlay();
|
||||
|
||||
// clears the layer, restoring the state at the last init
|
||||
void Clear();
|
||||
private :
|
||||
void Init(wxWindowDC *dc, int x , int y , int width , int height);
|
||||
|
||||
wxOverlay& m_overlay;
|
||||
|
||||
wxWindowDC* m_dc;
|
||||
} ;
|
||||
|
||||
#endif
|
||||
// _WX_DC_H_BASE_
|
||||
|
@ -26,6 +26,18 @@ private:
|
||||
wxCaret *m_caret;
|
||||
};
|
||||
|
||||
#ifndef wxUSE_OVERLAY
|
||||
#if defined(wxMAC_USE_CORE_GRAPHICS) && wxMAC_USE_CORE_GRAPHICS
|
||||
#define wxUSE_OVERLAY 1
|
||||
#else
|
||||
#define wxUSE_OVERLAY 0
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if wxUSE_OVERLAY
|
||||
#include "wx/dc.h"
|
||||
#endif
|
||||
|
||||
class WXDLLIMPEXP_CORE wxCaret : public wxCaretBase
|
||||
{
|
||||
public:
|
||||
@ -70,11 +82,16 @@ private:
|
||||
// GTK specific initialization
|
||||
void InitGeneric();
|
||||
|
||||
#if wxUSE_OVERLAY
|
||||
// the overlay for displaying the caret
|
||||
wxOverlay m_overlay;
|
||||
#else
|
||||
// the bitmap holding the part of window hidden by the caret when it was
|
||||
// at (m_xOld, m_yOld)
|
||||
wxBitmap m_bmpUnderCaret;
|
||||
int m_xOld,
|
||||
m_yOld;
|
||||
#endif
|
||||
|
||||
wxCaretTimer m_timer;
|
||||
bool m_blinkedOut, // true => caret hidden right now
|
||||
|
Loading…
Reference in New Issue
Block a user