1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: wxPlotWindow
4 // Author: Robert Roebling
7 // Copyright: (c) Robert Roebling
9 // Licence: wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
15 #if defined(__GNUG__) && !defined(__APPLE__)
16 #pragma interface "plot.h"
21 #include "wx/scrolwin.h"
23 #include "wx/dynarray.h"
25 #ifdef WXMAKINGDLL_PLOT
26 #define WXDLLIMPEXP_PLOT WXEXPORT
27 #define WXDLLIMPEXP_DATA_PLOT(type) WXEXPORT type
28 #elif defined(WXUSINGDLL)
29 #define WXDLLIMPEXP_PLOT WXIMPORT
30 #define WXDLLIMPEXP_DATA_PLOT(type) WXIMPORT type
31 #else // not making nor using DLL
32 #define WXDLLIMPEXP_PLOT
33 #define WXDLLIMPEXP_DATA_PLOT(type) type
36 //-----------------------------------------------------------------------------
38 //-----------------------------------------------------------------------------
40 class WXDLLIMPEXP_PLOT wxPlotEvent
;
41 class WXDLLIMPEXP_PLOT wxPlotCurve
;
42 class WXDLLIMPEXP_PLOT wxPlotValues
;
43 class WXDLLIMPEXP_PLOT wxPlotArea
;
44 class WXDLLIMPEXP_PLOT wxPlotXAxisArea
;
45 class WXDLLIMPEXP_PLOT wxPlotYAxisArea
;
46 class WXDLLIMPEXP_PLOT wxPlotWindow
;
48 //-----------------------------------------------------------------------------
50 //-----------------------------------------------------------------------------
52 extern const int wxEVT_PLOT_SEL_CHANGING
;
53 extern const int wxEVT_PLOT_SEL_CHANGED
;
54 extern const int wxEVT_PLOT_CLICKED
;
55 extern const int wxEVT_PLOT_DOUBLECLICKED
;
56 extern const int wxEVT_PLOT_ZOOM_IN
;
57 extern const int wxEVT_PLOT_ZOOM_OUT
;
58 extern const int wxEVT_PLOT_VALUE_SEL_CREATING
;
59 extern const int wxEVT_PLOT_VALUE_SEL_CREATED
;
60 extern const int wxEVT_PLOT_VALUE_SEL_CHANGING
;
61 extern const int wxEVT_PLOT_VALUE_SEL_CHANGED
;
62 extern const int wxEVT_PLOT_AREA_SEL_CREATING
;
63 extern const int wxEVT_PLOT_AREA_SEL_CREATED
;
64 extern const int wxEVT_PLOT_AREA_SEL_CHANGING
;
65 extern const int wxEVT_PLOT_AREA_SEL_CHANGED
;
66 extern const int wxEVT_PLOT_BEGIN_X_LABEL_EDIT
;
67 extern const int wxEVT_PLOT_END_X_LABEL_EDIT
;
68 extern const int wxEVT_PLOT_BEGIN_Y_LABEL_EDIT
;
69 extern const int wxEVT_PLOT_END_Y_LABEL_EDIT
;
70 extern const int wxEVT_PLOT_BEGIN_TITLE_EDIT
;
71 extern const int wxEVT_PLOT_END_TITLE_EDIT
;
72 extern const int wxEVT_PLOT_AREA_CREATE
;
75 #define wxPLOT_X_AXIS 0x0004
76 #define wxPLOT_Y_AXIS 0x0008
77 #define wxPLOT_BUTTON_MOVE 0x0010
78 #define wxPLOT_BUTTON_ZOOM 0x0020
79 #define wxPLOT_BUTTON_ENLARGE 0x0040
81 #define wxPLOT_BUTTON_ALL (wxPLOT_BUTTON_MOVE|wxPLOT_BUTTON_ZOOM|wxPLOT_BUTTON_ENLARGE)
82 #define wxPLOT_DEFAULT (wxPLOT_X_AXIS|wxPLOT_Y_AXIS | wxPLOT_BUTTON_ALL)
84 //-----------------------------------------------------------------------------
86 //-----------------------------------------------------------------------------
88 class WXDLLIMPEXP_PLOT wxPlotEvent
: public wxNotifyEvent
91 wxPlotEvent( wxEventType commandType
= wxEVT_NULL
, int id
= 0 );
93 wxPlotCurve
*GetCurve()
95 void SetCurve( wxPlotCurve
*curve
)
100 void SetZoom( double zoom
)
103 wxInt32
GetPosition()
104 { return m_position
; }
105 void SetPosition( wxInt32 pos
)
106 { m_position
= pos
; }
109 wxPlotCurve
*m_curve
;
114 //-----------------------------------------------------------------------------
116 //-----------------------------------------------------------------------------
118 class WXDLLIMPEXP_PLOT wxPlotCurve
: public wxObject
121 wxPlotCurve( int offsetY
, double startY
, double endY
);
123 virtual wxInt32
GetStartX() = 0;
124 virtual wxInt32
GetEndX() = 0;
126 virtual double GetY( wxInt32 x
) = 0;
128 void SetStartY( double startY
)
129 { m_startY
= startY
; }
132 void SetEndY( double endY
)
136 void SetOffsetY( int offsetY
)
137 { m_offsetY
= offsetY
; }
139 { return m_offsetY
; }
141 void SetPenNormal( const wxPen
&pen
)
142 { m_penNormal
= pen
; }
143 void SetPenSelected( const wxPen
&pen
)
144 { m_penSelected
= pen
; }
153 DECLARE_ABSTRACT_CLASS(wxPlotCurve
)
156 //-----------------------------------------------------------------------------
158 //-----------------------------------------------------------------------------
160 class WXDLLIMPEXP_PLOT wxPlotOnOff
170 WX_DECLARE_OBJARRAY_WITH_DECL(wxPlotOnOff
, wxArrayPlotOnOff
,
171 class WXDLLIMPEXP_PLOT
);
173 class WXDLLIMPEXP_PLOT wxPlotOnOffCurve
: public wxObject
176 wxPlotOnOffCurve( int offsetY
);
183 void SetOffsetY( int offsetY
)
184 { m_offsetY
= offsetY
; }
186 { return m_offsetY
; }
188 void Add( wxInt32 on
, wxInt32 off
, void *clientData
= NULL
);
191 wxInt32
GetOn( size_t index
);
192 wxInt32
GetOff( size_t index
);
193 void* GetClientData( size_t index
);
194 wxPlotOnOff
*GetAt( size_t index
);
196 virtual void DrawOnLine( wxDC
&dc
, wxCoord y
, wxCoord start
, wxCoord end
, void *clientData
);
197 virtual void DrawOffLine( wxDC
&dc
, wxCoord y
, wxCoord start
, wxCoord end
);
204 wxArrayPlotOnOff m_marks
;
206 DECLARE_CLASS(wxPlotOnOffCurve
)
209 //-----------------------------------------------------------------------------
211 //-----------------------------------------------------------------------------
213 class WXDLLIMPEXP_PLOT wxPlotArea
: public wxWindow
217 wxPlotArea( wxPlotWindow
*parent
);
219 void OnPaint( wxPaintEvent
&event
);
220 void OnMouse( wxMouseEvent
&event
);
222 void DrawCurve( wxDC
*dc
, wxPlotCurve
*curve
, int from
= -1, int to
= -1 );
223 void DrawOnOffCurve( wxDC
*dc
, wxPlotOnOffCurve
*curve
, int from
= -1, int to
= -1 );
224 void DeleteCurve( wxPlotCurve
*curve
, int from
= -1, int to
= -1 );
226 virtual void ScrollWindow( int dx
, int dy
, const wxRect
*rect
);
229 wxPlotWindow
*m_owner
;
232 DECLARE_CLASS(wxPlotArea
)
233 DECLARE_EVENT_TABLE()
236 //-----------------------------------------------------------------------------
238 //-----------------------------------------------------------------------------
240 class WXDLLIMPEXP_PLOT wxPlotXAxisArea
: public wxWindow
244 wxPlotXAxisArea( wxPlotWindow
*parent
);
246 void OnPaint( wxPaintEvent
&event
);
247 void OnMouse( wxMouseEvent
&event
);
250 wxPlotWindow
*m_owner
;
252 DECLARE_CLASS(wxPlotXAxisArea
)
253 DECLARE_EVENT_TABLE()
256 //-----------------------------------------------------------------------------
258 //-----------------------------------------------------------------------------
260 class WXDLLIMPEXP_PLOT wxPlotYAxisArea
: public wxWindow
264 wxPlotYAxisArea( wxPlotWindow
*parent
);
266 void OnPaint( wxPaintEvent
&event
);
267 void OnMouse( wxMouseEvent
&event
);
270 wxPlotWindow
*m_owner
;
272 DECLARE_CLASS(wxPlotYAxisArea
)
273 DECLARE_EVENT_TABLE()
276 //-----------------------------------------------------------------------------
278 //-----------------------------------------------------------------------------
280 class WXDLLIMPEXP_PLOT wxPlotWindow
: public wxScrolledWindow
284 wxPlotWindow( wxWindow
*parent
, wxWindowID id
, const wxPoint
&pos
, const wxSize
&size
, int flags
= wxPLOT_DEFAULT
);
290 void Add( wxPlotCurve
*curve
);
291 void Delete( wxPlotCurve
* curve
);
294 wxPlotCurve
*GetAt( size_t n
);
296 void SetCurrentCurve( wxPlotCurve
* current
);
297 wxPlotCurve
*GetCurrentCurve();
299 // mark list accessors
300 // -------------------
302 void Add( wxPlotOnOffCurve
*curve
);
303 void Delete( wxPlotOnOffCurve
* curve
);
305 size_t GetOnOffCurveCount();
306 wxPlotOnOffCurve
*GetOnOffCurveAt( size_t n
);
308 // vertical representation
309 // -----------------------
311 void Move( wxPlotCurve
* curve
, int pixels_up
);
312 void Enlarge( wxPlotCurve
*curve
, double factor
);
314 // horizontal representation
315 // -------------------------
317 void SetUnitsPerValue( double upv
);
318 double GetUnitsPerValue()
319 { return m_xUnitsPerValue
; }
321 void SetZoom( double zoom
);
328 void SetScrollOnThumbRelease( bool scrollOnThumbRelease
= TRUE
)
329 { m_scrollOnThumbRelease
= scrollOnThumbRelease
; }
330 bool GetScrollOnThumbRelease()
331 { return m_scrollOnThumbRelease
; }
333 void SetEnlargeAroundWindowCentre( bool enlargeAroundWindowCentre
= TRUE
)
334 { m_enlargeAroundWindowCentre
= enlargeAroundWindowCentre
; }
335 bool GetEnlargeAroundWindowCentre()
336 { return m_enlargeAroundWindowCentre
; }
338 // events (may be overridden)
339 // --------------------------
341 void OnMoveUp( wxCommandEvent
& event
);
342 void OnMoveDown( wxCommandEvent
& event
);
344 void OnEnlarge( wxCommandEvent
& event
);
345 void OnShrink( wxCommandEvent
& event
);
346 void OnZoomIn( wxCommandEvent
& event
);
347 void OnZoomOut( wxCommandEvent
& event
);
349 void OnScroll2( wxScrollWinEvent
& event
);
354 void RedrawEverything();
358 void ResetScrollbar();
361 friend class wxPlotArea
;
362 friend class wxPlotXAxisArea
;
363 friend class wxPlotYAxisArea
;
365 double m_xUnitsPerValue
;
369 wxList m_onOffCurves
;
372 wxPlotXAxisArea
*m_xaxis
;
373 wxPlotYAxisArea
*m_yaxis
;
374 wxPlotCurve
*m_current
;
376 bool m_scrollOnThumbRelease
;
377 bool m_enlargeAroundWindowCentre
;
379 DECLARE_CLASS(wxPlotWindow
)
380 DECLARE_EVENT_TABLE()
383 // ----------------------------------------------------------------------------
385 // ----------------------------------------------------------------------------
387 typedef void (wxEvtHandler::*wxPlotEventFunction
)(wxPlotEvent
&);
389 #if WXWIN_COMPATIBILITY_EVENT_TYPES
391 #define EVT_PLOT(id, fn) { wxEVT_PLOT_DOUBLECLICKED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
392 #define EVT_PLOT_SEL_CHANGING(id, fn) { wxEVT_PLOT_SEL_CHANGING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
393 #define EVT_PLOT_SEL_CHANGED(id, fn) { wxEVT_PLOT_SEL_CHANGED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
394 #define EVT_PLOT_CLICKED(id, fn) { wxEVT_PLOT_CLICKED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
395 #define EVT_PLOT_DOUBLECLICKED(id, fn) { wxEVT_PLOT_DOUBLECLICKED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
396 #define EVT_PLOT_ZOOM_IN(id, fn) { wxEVT_PLOT_ZOOM_IN, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
397 #define EVT_PLOT_ZOOM_OUT(id, fn) { wxEVT_PLOT_ZOOM_OUT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
398 #define EVT_PLOT_VALUE_SEL_CREATING(id, fn) { wxEVT_PLOT_VALUE_SEL_CREATING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
399 #define EVT_PLOT_VALUE_SEL_CREATED(id, fn) { wxEVT_PLOT_VALUE_SEL_CREATED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
400 #define EVT_PLOT_VALUE_SEL_CHANGING(id, fn) { wxEVT_PLOT_VALUE_SEL_CHANGING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
401 #define EVT_PLOT_VALUE_SEL_CHANGED(id, fn) { wxEVT_PLOT_VALUE_SEL_CHANGED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
402 #define EVT_PLOT_AREA_SEL_CREATING(id, fn) { wxEVT_PLOT_AREA_SEL_CREATING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
403 #define EVT_PLOT_AREA_SEL_CREATED(id, fn) { wxEVT_PLOT_AREA_SEL_CREATED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
404 #define EVT_PLOT_AREA_SEL_CHANGING(id, fn) { wxEVT_PLOT_AREA_SEL_CHANGING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
405 #define EVT_PLOT_AREA_SEL_CHANGED(id, fn) { wxEVT_PLOT_AREA_SEL_CHANGED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
406 #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 },
407 #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 },
408 #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 },
409 #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 },
410 #define EVT_PLOT_BEGIN_TITLE_EDIT(id, fn) { wxEVT_PLOT_BEGIN_TITLE_EDIT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
411 #define EVT_PLOT_END_TITLE_EDIT(id, fn) { wxEVT_PLOT_END_TITLE_EDIT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
415 #define EVT_PLOT(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_DOUBLECLICKED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) wxStaticCastEvent( wxPlotEventFunction, & fn ), (wxObject *) NULL ),
416 #define EVT_PLOT_SEL_CHANGING(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_SEL_CHANGING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) wxStaticCastEvent( wxPlotEventFunction, & fn ), (wxObject *) NULL ),
417 #define EVT_PLOT_SEL_CHANGED(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_SEL_CHANGED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) wxStaticCastEvent( wxPlotEventFunction, & fn ), (wxObject *) NULL ),
418 #define EVT_PLOT_CLICKED(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_CLICKED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) wxStaticCastEvent( wxPlotEventFunction, & fn ), (wxObject *) NULL ),
419 #define EVT_PLOT_DOUBLECLICKED(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_DOUBLECLICKED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) wxStaticCastEvent( wxPlotEventFunction, & fn ), (wxObject *) NULL ),
420 #define EVT_PLOT_ZOOM_IN(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_ZOOM_IN, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) wxStaticCastEvent( wxPlotEventFunction, & fn ), (wxObject *) NULL ),
421 #define EVT_PLOT_ZOOM_OUT(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_ZOOM_OUT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) wxStaticCastEvent( wxPlotEventFunction, & fn ), (wxObject *) NULL ),
422 #define EVT_PLOT_VALUE_SEL_CREATING(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_VALUE_SEL_CREATING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) wxStaticCastEvent( wxPlotEventFunction, & fn ), (wxObject *) NULL ),
423 #define EVT_PLOT_VALUE_SEL_CREATED(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_VALUE_SEL_CREATED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) wxStaticCastEvent( wxPlotEventFunction, & fn ), (wxObject *) NULL ),
424 #define EVT_PLOT_VALUE_SEL_CHANGING(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_VALUE_SEL_CHANGING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) wxStaticCastEvent( wxPlotEventFunction, & fn ), (wxObject *) NULL ),
425 #define EVT_PLOT_VALUE_SEL_CHANGED(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_VALUE_SEL_CHANGED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) wxStaticCastEvent( wxPlotEventFunction, & fn ), (wxObject *) NULL ),
426 #define EVT_PLOT_AREA_SEL_CREATING(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_AREA_SEL_CREATING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) wxStaticCastEvent( wxPlotEventFunction, & fn ), (wxObject *) NULL ),
427 #define EVT_PLOT_AREA_SEL_CREATED(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_AREA_SEL_CREATED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) wxStaticCastEvent( wxPlotEventFunction, & fn ), (wxObject *) NULL ),
428 #define EVT_PLOT_AREA_SEL_CHANGING(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_AREA_SEL_CHANGING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) wxStaticCastEvent( wxPlotEventFunction, & fn ), (wxObject *) NULL ),
429 #define EVT_PLOT_AREA_SEL_CHANGED(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_AREA_SEL_CHANGED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) wxStaticCastEvent( wxPlotEventFunction, & fn ), (wxObject *) NULL ),
430 #define EVT_PLOT_BEGIN_X_LABEL_EDIT(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_BEGIN_X_LABEL_EDIT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) wxStaticCastEvent( wxPlotEventFunction, & fn ), (wxObject *) NULL ),
431 #define EVT_PLOT_END_X_LABEL_EDIT(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_END_X_LABEL_EDIT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) wxStaticCastEvent( wxPlotEventFunction, & fn ), (wxObject *) NULL ),
432 #define EVT_PLOT_BEGIN_Y_LABEL_EDIT(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_BEGIN_Y_LABEL_EDIT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) wxStaticCastEvent( wxPlotEventFunction, & fn ), (wxObject *) NULL ),
433 #define EVT_PLOT_END_Y_LABEL_EDIT(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_END_Y_LABEL_EDIT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) wxStaticCastEvent( wxPlotEventFunction, & fn ), (wxObject *) NULL ),
434 #define EVT_PLOT_BEGIN_TITLE_EDIT(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_BEGIN_TITLE_EDIT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) wxStaticCastEvent( wxPlotEventFunction, & fn ), (wxObject *) NULL ),
435 #define EVT_PLOT_END_TITLE_EDIT(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_END_TITLE_EDIT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) wxStaticCastEvent( wxPlotEventFunction, & fn ), (wxObject *) NULL ),