Whole lotta stuff for wxPlotWindow,
repaired image sample. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@5956 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -17,14 +17,61 @@
|
||||
#endif
|
||||
|
||||
#include "wx/scrolwin.h"
|
||||
#include "wx/event.h"
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// classes
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
class wxPlotCurve;
|
||||
class wxPlotArea;
|
||||
class wxPlotWindow;
|
||||
class WXDLLEXPORT wxPlotEvent;
|
||||
class WXDLLEXPORT wxPlotCurve;
|
||||
class WXDLLEXPORT wxPlotArea;
|
||||
class WXDLLEXPORT wxPlotXAxisArea;
|
||||
class WXDLLEXPORT wxPlotYAxisArea;
|
||||
class WXDLLEXPORT wxPlotWindow;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// consts
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
#define wxPLOT_X_AXIS 0x0004
|
||||
#define wxPLOT_Y_AXIS 0x0008
|
||||
#define wxPLOT_BUTTON_MOVE 0x0010
|
||||
#define wxPLOT_BUTTON_ZOOM 0x0020
|
||||
#define wxPLOT_BUTTON_ENLARGE 0x0040
|
||||
|
||||
#define wxPLOT_BUTTON_ALL (wxPLOT_BUTTON_MOVE|wxPLOT_BUTTON_ZOOM|wxPLOT_BUTTON_ENLARGE)
|
||||
#define wxPLOT_DEFAULT (wxPLOT_X_AXIS|wxPLOT_Y_AXIS | wxPLOT_BUTTON_ALL)
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// wxPlotEvent
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
class WXDLLEXPORT wxPlotEvent: public wxNotifyEvent
|
||||
{
|
||||
public:
|
||||
wxPlotEvent( wxEventType commandType = wxEVT_NULL, int id = 0 );
|
||||
|
||||
wxPlotCurve *GetCurve()
|
||||
{ return m_curve; }
|
||||
void SetCurve( wxPlotCurve *curve )
|
||||
{ m_curve = curve; }
|
||||
|
||||
double GetZoom()
|
||||
{ return m_zoom; }
|
||||
void SetZoom( double zoom )
|
||||
{ m_zoom = zoom; }
|
||||
|
||||
wxInt32 GetPosition()
|
||||
{ return m_position; }
|
||||
void SetPosition( wxInt32 pos )
|
||||
{ m_position = pos; }
|
||||
|
||||
private:
|
||||
wxPlotCurve *m_curve;
|
||||
double m_zoom;
|
||||
wxInt32 m_position;
|
||||
};
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// wxPlotCurve
|
||||
@@ -77,10 +124,53 @@ public:
|
||||
void DrawCurve( wxDC *dc, wxPlotCurve *curve, int from = -1, int to = -1 );
|
||||
void DeleteCurve( wxPlotCurve *curve, int from = -1, int to = -1 );
|
||||
|
||||
virtual void ScrollWindow( int dx, int dy, const wxRect *rect );
|
||||
|
||||
private:
|
||||
wxPlotWindow *m_owner;
|
||||
bool m_zooming;
|
||||
|
||||
DECLARE_CLASS(wxPlotArea)
|
||||
DECLARE_EVENT_TABLE()
|
||||
};
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// wxPlotXAxisArea
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
class WXDLLEXPORT wxPlotXAxisArea: public wxWindow
|
||||
{
|
||||
public:
|
||||
wxPlotXAxisArea() {}
|
||||
wxPlotXAxisArea( wxPlotWindow *parent );
|
||||
|
||||
void OnPaint( wxPaintEvent &event );
|
||||
void OnMouse( wxMouseEvent &event );
|
||||
|
||||
private:
|
||||
wxPlotWindow *m_owner;
|
||||
|
||||
DECLARE_CLASS(wxPlotArea)
|
||||
DECLARE_CLASS(wxPlotXAxisArea)
|
||||
DECLARE_EVENT_TABLE()
|
||||
};
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// wxPlotYAxisArea
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
class WXDLLEXPORT wxPlotYAxisArea: public wxWindow
|
||||
{
|
||||
public:
|
||||
wxPlotYAxisArea() {}
|
||||
wxPlotYAxisArea( wxPlotWindow *parent );
|
||||
|
||||
void OnPaint( wxPaintEvent &event );
|
||||
void OnMouse( wxMouseEvent &event );
|
||||
|
||||
private:
|
||||
wxPlotWindow *m_owner;
|
||||
|
||||
DECLARE_CLASS(wxPlotYAxisArea)
|
||||
DECLARE_EVENT_TABLE()
|
||||
};
|
||||
|
||||
@@ -92,9 +182,12 @@ class WXDLLEXPORT wxPlotWindow: public wxScrolledWindow
|
||||
{
|
||||
public:
|
||||
wxPlotWindow() {}
|
||||
wxPlotWindow( wxWindow *parent, wxWindowID id, const wxPoint &pos, const wxSize &size, int flags );
|
||||
wxPlotWindow( wxWindow *parent, wxWindowID id, const wxPoint &pos, const wxSize &size, int flags = wxPLOT_DEFAULT );
|
||||
~wxPlotWindow();
|
||||
|
||||
// curve accessors
|
||||
// ---------------
|
||||
|
||||
void Add( wxPlotCurve *curve );
|
||||
size_t GetCount();
|
||||
wxPlotCurve *GetAt( size_t n );
|
||||
@@ -102,31 +195,88 @@ public:
|
||||
void SetCurrent( wxPlotCurve* current );
|
||||
wxPlotCurve *GetCurrent();
|
||||
|
||||
// vertical representation
|
||||
// -----------------------
|
||||
|
||||
void Move( wxPlotCurve* curve, int pixels_up );
|
||||
void Enlarge( wxPlotCurve *curve, double factor );
|
||||
|
||||
// horizontal representation
|
||||
// -------------------------
|
||||
|
||||
void SetUnitsPerValue( double upv );
|
||||
double GetUnitsPerValue()
|
||||
{ return m_xUnitsPerValue; }
|
||||
|
||||
void SetZoom( double zoom );
|
||||
double GetZoom()
|
||||
{ return m_xZoom; }
|
||||
|
||||
// events (may be overridden)
|
||||
// --------------------------
|
||||
|
||||
void OnMoveUp( wxCommandEvent& event );
|
||||
void OnMoveDown( wxCommandEvent& event );
|
||||
|
||||
void OnEnlarge100( wxCommandEvent& event );
|
||||
void OnEnlarge50( wxCommandEvent& event );
|
||||
void OnShrink50( wxCommandEvent& event );
|
||||
void OnShrink33( wxCommandEvent& event );
|
||||
void OnEnlarge( wxCommandEvent& event );
|
||||
void OnShrink( wxCommandEvent& event );
|
||||
void OnZoomIn( wxCommandEvent& event );
|
||||
void OnZoomOut( wxCommandEvent& event );
|
||||
|
||||
void OnPaint( wxPaintEvent &event );
|
||||
|
||||
void OnScroll2( wxScrollWinEvent& event );
|
||||
|
||||
// utilities
|
||||
// ---------
|
||||
|
||||
void RedrawEverything();
|
||||
void RedrawXAxis();
|
||||
void RedrawYAxis();
|
||||
|
||||
void ResetScrollbar();
|
||||
|
||||
private:
|
||||
friend wxPlotArea;
|
||||
friend wxPlotXAxisArea;
|
||||
friend wxPlotYAxisArea;
|
||||
|
||||
wxList m_curves;
|
||||
wxPlotArea *m_area;
|
||||
wxPlotCurve *m_current;
|
||||
double m_xUnitsPerValue;
|
||||
double m_xZoom;
|
||||
|
||||
wxList m_curves;
|
||||
wxPlotArea *m_area;
|
||||
wxPlotXAxisArea *m_xaxis;
|
||||
wxPlotYAxisArea *m_yaxis;
|
||||
wxPlotCurve *m_current;
|
||||
|
||||
DECLARE_CLASS(wxPlotWindow)
|
||||
DECLARE_EVENT_TABLE()
|
||||
};
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// calendar events macros
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
#define EVT_PLOT(id, fn) { wxEVT_PLOT_DOUBLECLICKED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL },
|
||||
#define EVT_PLOT_SEL_CHANGING(id, fn) { wxEVT_PLOT_SEL_CHANGING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL },
|
||||
#define EVT_PLOT_SEL_CHANGED(id, fn) { wxEVT_PLOT_SEL_CHANGED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL },
|
||||
#define EVT_PLOT_CLICKED(id, fn) { wxEVT_PLOT_CLICKED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL },
|
||||
#define EVT_PLOT_DOUBLECLICKED(id, fn) { wxEVT_PLOT_DOUBLECLICKED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL },
|
||||
#define EVT_PLOT_ZOOM_IN(id, fn) { wxEVT_PLOT_ZOOM_IN, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL },
|
||||
#define EVT_PLOT_ZOOM_OUT(id, fn) { wxEVT_PLOT_ZOOM_OUT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL },
|
||||
#define EVT_PLOT_VALUE_SEL_CREATING(id, fn) { wxEVT_PLOT_VALUE_SEL_CREATING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL },
|
||||
#define EVT_PLOT_VALUE_SEL_CREATED(id, fn) { wxEVT_PLOT_VALUE_SEL_CREATED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL },
|
||||
#define EVT_PLOT_VALUE_SEL_CHANGING(id, fn) { wxEVT_PLOT_VALUE_SEL_CHANGING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL },
|
||||
#define EVT_PLOT_VALUE_SEL_CHANGED(id, fn) { wxEVT_PLOT_VALUE_SEL_CHANGED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL },
|
||||
#define EVT_PLOT_AREA_SEL_CREATING(id, fn) { wxEVT_PLOT_AREA_SEL_CREATING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL },
|
||||
#define EVT_PLOT_AREA_SEL_CREATED(id, fn) { wxEVT_PLOT_AREA_SEL_CREATED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL },
|
||||
#define EVT_PLOT_AREA_SEL_CHANGING(id, fn) { wxEVT_PLOT_AREA_SEL_CHANGING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL },
|
||||
#define EVT_PLOT_AREA_SEL_CHANGED(id, fn) { wxEVT_PLOT_AREA_SEL_CHANGED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL },
|
||||
#define EVT_PLOT_BEGIN_X_LABEL_EDIT(id, fn) { wxEVT_PLOT_BEGIN_X_LABEL_EDIT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL },
|
||||
#define EVT_PLOT_END_X_LABEL_EDIT(id, fn) { wxEVT_PLOT_END_X_LABEL_EDIT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL },
|
||||
#define EVT_PLOT_BEGIN_Y_LABEL_EDIT(id, fn) { wxEVT_PLOT_BEGIN_Y_LABEL_EDIT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL },
|
||||
#define EVT_PLOT_END_Y_LABEL_EDIT(id, fn) { wxEVT_PLOT_END_Y_LABEL_EDIT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL },
|
||||
#define EVT_PLOT_BEGIN_TITLE_EDIT(id, fn) { wxEVT_PLOT_BEGIN_TITLE_EDIT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL },
|
||||
#define EVT_PLOT_END_TITLE_EDIT(id, fn) { wxEVT_PLOT_END_TITLE_EDIT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL },
|
||||
|
||||
#endif
|
||||
// _WX_PLOT_H_
|
||||
|
Reference in New Issue
Block a user