]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/generic/plot.h
Chnaged includes to work without precompiled headers
[wxWidgets.git] / include / wx / generic / plot.h
index 7d36701c35f082d0352c78297f25202bd57af7ce..69db90d019697f5c215eb9c5bd5e003dcb048939 100644 (file)
@@ -22,6 +22,7 @@
 
 #include "wx/scrolwin.h"
 #include "wx/event.h"
 
 #include "wx/scrolwin.h"
 #include "wx/event.h"
+#include "wx/dynarray.h"
 
 //-----------------------------------------------------------------------------
 // classes
 
 //-----------------------------------------------------------------------------
 // classes
@@ -29,6 +30,7 @@
 
 class WXDLLEXPORT wxPlotEvent;
 class WXDLLEXPORT wxPlotCurve;
 
 class WXDLLEXPORT wxPlotEvent;
 class WXDLLEXPORT wxPlotCurve;
+class WXDLLEXPORT wxPlotValues;
 class WXDLLEXPORT wxPlotArea;
 class WXDLLEXPORT wxPlotXAxisArea;
 class WXDLLEXPORT wxPlotYAxisArea;
 class WXDLLEXPORT wxPlotArea;
 class WXDLLEXPORT wxPlotXAxisArea;
 class WXDLLEXPORT wxPlotYAxisArea;
@@ -103,15 +105,74 @@ public:
        { m_offsetY = offsetY; }
     int GetOffsetY()
        { return m_offsetY; }
        { m_offsetY = offsetY; }
     int GetOffsetY()
        { return m_offsetY; }
+       
+    void SetPenNormal( const wxPen &pen )
+       { m_penNormal = pen; }
+    void SetPenSelected( const wxPen &pen )
+       { m_penSelected = pen; }
 
 private:
     int     m_offsetY;
     double  m_startY;
     double  m_endY;
 
 private:
     int     m_offsetY;
     double  m_startY;
     double  m_endY;
+    wxPen   m_penNormal;
+    wxPen   m_penSelected;
 
     DECLARE_ABSTRACT_CLASS(wxPlotCurve)
 };
 
 
     DECLARE_ABSTRACT_CLASS(wxPlotCurve)
 };
 
+//-----------------------------------------------------------------------------
+// wxPlotOnOffCurve
+//-----------------------------------------------------------------------------
+
+class WXDLLEXPORT wxPlotOnOff
+{
+public:
+    wxPlotOnOff() { }
+
+    wxInt32   m_on;
+    wxInt32   m_off;
+    void     *m_clientData;
+};
+
+WX_DECLARE_EXPORTED_OBJARRAY(wxPlotOnOff, wxArrayPlotOnOff);
+
+class WXDLLEXPORT wxPlotOnOffCurve: public wxObject
+{
+public:
+    wxPlotOnOffCurve( int offsetY );
+
+    wxInt32 GetStartX()
+        { return m_minX; }
+    wxInt32 GetEndX()
+        { return m_maxX; }
+
+    void SetOffsetY( int offsetY )
+       { m_offsetY = offsetY; }
+    int GetOffsetY()
+       { return m_offsetY; }
+       
+    void Add( wxInt32 on, wxInt32 off, void *clientData = NULL );
+    size_t GetCount();
+    
+    wxInt32 GetOn( size_t index );
+    wxInt32 GetOff( size_t index );
+    void* GetClientData( size_t index );
+    wxPlotOnOff *GetAt( size_t index );
+
+    virtual void DrawOnLine( wxDC &dc, wxCoord y, wxCoord start, wxCoord end, void *clientData );
+    virtual void DrawOffLine( wxDC &dc, wxCoord y, wxCoord start, wxCoord end );
+
+private:
+    int               m_offsetY;
+    wxInt32           m_minX;
+    wxInt32           m_maxX;
+    
+    wxArrayPlotOnOff   m_marks;
+
+    DECLARE_CLASS(wxPlotOnOffCurve)
+};
+
 //-----------------------------------------------------------------------------
 // wxPlotArea
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 // wxPlotArea
 //-----------------------------------------------------------------------------
@@ -126,6 +187,7 @@ public:
     void OnMouse( wxMouseEvent &event );
 
     void DrawCurve( wxDC *dc, wxPlotCurve *curve, int from = -1, int to = -1 );
     void OnMouse( wxMouseEvent &event );
 
     void DrawCurve( wxDC *dc, wxPlotCurve *curve, int from = -1, int to = -1 );
+    void DrawOnOffCurve( wxDC *dc, wxPlotOnOffCurve *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 );
     void DeleteCurve( wxPlotCurve *curve, int from = -1, int to = -1 );
 
     virtual void ScrollWindow( int dx, int dy, const wxRect *rect );
@@ -193,13 +255,22 @@ public:
     // ---------------
 
     void Add( wxPlotCurve *curve );
     // ---------------
 
     void Add( wxPlotCurve *curve );
+    void Delete( wxPlotCurve* curve );
+
     size_t GetCount();
     wxPlotCurve *GetAt( size_t n );
 
     void SetCurrent( wxPlotCurve* current );
     wxPlotCurve *GetCurrent();
 
     size_t GetCount();
     wxPlotCurve *GetAt( size_t n );
 
     void SetCurrent( wxPlotCurve* current );
     wxPlotCurve *GetCurrent();
 
-    void Delete( wxPlotCurve* curve );
+    // mark list accessors
+    // -------------------
+
+    void Add( wxPlotOnOffCurve *curve );
+    void Delete( wxPlotOnOffCurve* curve );
+    
+    size_t GetOnOffCurveCount();
+    wxPlotOnOffCurve *GetOnOffCurveAt( size_t n );
 
     // vertical representation
     // -----------------------
 
     // vertical representation
     // -----------------------
@@ -262,6 +333,8 @@ private:
     double             m_xZoom;
 
     wxList             m_curves;
     double             m_xZoom;
 
     wxList             m_curves;
+    wxList             m_onOffCurves;
+    
     wxPlotArea        *m_area;
     wxPlotXAxisArea   *m_xaxis;
     wxPlotYAxisArea   *m_yaxis;
     wxPlotArea        *m_area;
     wxPlotXAxisArea   *m_xaxis;
     wxPlotYAxisArea   *m_yaxis;
@@ -275,30 +348,32 @@ private:
 };
 
 // ----------------------------------------------------------------------------
 };
 
 // ----------------------------------------------------------------------------
-// calendar events macros
+// plot event 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 },
+typedef void (wxEvtHandler::*wxPlotEventFunction)(wxPlotEvent&);
+
+#define EVT_PLOT(id, fn) { wxEVT_PLOT_DOUBLECLICKED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
+#define EVT_PLOT_SEL_CHANGING(id, fn) { wxEVT_PLOT_SEL_CHANGING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
+#define EVT_PLOT_SEL_CHANGED(id, fn) { wxEVT_PLOT_SEL_CHANGED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
+#define EVT_PLOT_CLICKED(id, fn) { wxEVT_PLOT_CLICKED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
+#define EVT_PLOT_DOUBLECLICKED(id, fn) { wxEVT_PLOT_DOUBLECLICKED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
+#define EVT_PLOT_ZOOM_IN(id, fn) { wxEVT_PLOT_ZOOM_IN, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
+#define EVT_PLOT_ZOOM_OUT(id, fn) { wxEVT_PLOT_ZOOM_OUT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
+#define EVT_PLOT_VALUE_SEL_CREATING(id, fn) { wxEVT_PLOT_VALUE_SEL_CREATING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
+#define EVT_PLOT_VALUE_SEL_CREATED(id, fn) { wxEVT_PLOT_VALUE_SEL_CREATED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
+#define EVT_PLOT_VALUE_SEL_CHANGING(id, fn) { wxEVT_PLOT_VALUE_SEL_CHANGING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
+#define EVT_PLOT_VALUE_SEL_CHANGED(id, fn) { wxEVT_PLOT_VALUE_SEL_CHANGED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
+#define EVT_PLOT_AREA_SEL_CREATING(id, fn) { wxEVT_PLOT_AREA_SEL_CREATING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
+#define EVT_PLOT_AREA_SEL_CREATED(id, fn) { wxEVT_PLOT_AREA_SEL_CREATED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
+#define EVT_PLOT_AREA_SEL_CHANGING(id, fn) { wxEVT_PLOT_AREA_SEL_CHANGING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
+#define EVT_PLOT_AREA_SEL_CHANGED(id, fn) { wxEVT_PLOT_AREA_SEL_CHANGED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
+#define EVT_PLOT_BEGIN_X_LABEL_EDIT(id, fn) { wxEVT_PLOT_BEGIN_X_LABEL_EDIT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
+#define EVT_PLOT_END_X_LABEL_EDIT(id, fn) { wxEVT_PLOT_END_X_LABEL_EDIT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
+#define EVT_PLOT_BEGIN_Y_LABEL_EDIT(id, fn) { wxEVT_PLOT_BEGIN_Y_LABEL_EDIT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
+#define EVT_PLOT_END_Y_LABEL_EDIT(id, fn) { wxEVT_PLOT_END_Y_LABEL_EDIT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
+#define EVT_PLOT_BEGIN_TITLE_EDIT(id, fn) { wxEVT_PLOT_BEGIN_TITLE_EDIT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
+#define EVT_PLOT_END_TITLE_EDIT(id, fn) { wxEVT_PLOT_END_TITLE_EDIT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
 
 #endif // wxUSE_PLOT
 
 
 #endif // wxUSE_PLOT