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:
Robert Roebling
2000-02-10 18:43:33 +00:00
parent bbc3f89a82
commit 279ababf7b
16 changed files with 1068 additions and 186 deletions

View File

@@ -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_