]> git.saurik.com Git - wxWidgets.git/blame_incremental - contrib/include/wx/plot/plot.h
Modified Files:
[wxWidgets.git] / contrib / include / wx / plot / plot.h
... / ...
CommitLineData
1/////////////////////////////////////////////////////////////////////////////
2// Name: plot.h
3// Purpose: wxPlotWindow
4// Author: Robert Roebling
5// Modified by:
6// Created: 12/1/2000
7// Copyright: (c) Robert Roebling
8// RCS-ID: $Id$
9// Licence: wxWindows licence
10/////////////////////////////////////////////////////////////////////////////
11
12#ifndef _WX_PLOT_H_
13#define _WX_PLOT_H_
14
15#ifdef __GNUG__
16#pragma interface "plot.h"
17#endif
18
19#include "wx/defs.h"
20
21#include "wx/scrolwin.h"
22#include "wx/event.h"
23#include "wx/dynarray.h"
24
25//-----------------------------------------------------------------------------
26// classes
27//-----------------------------------------------------------------------------
28
29class WXDLLEXPORT wxPlotEvent;
30class WXDLLEXPORT wxPlotCurve;
31class WXDLLEXPORT wxPlotValues;
32class WXDLLEXPORT wxPlotArea;
33class WXDLLEXPORT wxPlotXAxisArea;
34class WXDLLEXPORT wxPlotYAxisArea;
35class WXDLLEXPORT wxPlotWindow;
36
37//-----------------------------------------------------------------------------
38// consts
39//-----------------------------------------------------------------------------
40
41extern const int wxEVT_PLOT_SEL_CHANGING;
42extern const int wxEVT_PLOT_SEL_CHANGED;
43extern const int wxEVT_PLOT_CLICKED;
44extern const int wxEVT_PLOT_DOUBLECLICKED;
45extern const int wxEVT_PLOT_ZOOM_IN;
46extern const int wxEVT_PLOT_ZOOM_OUT;
47extern const int wxEVT_PLOT_VALUE_SEL_CREATING;
48extern const int wxEVT_PLOT_VALUE_SEL_CREATED;
49extern const int wxEVT_PLOT_VALUE_SEL_CHANGING;
50extern const int wxEVT_PLOT_VALUE_SEL_CHANGED;
51extern const int wxEVT_PLOT_AREA_SEL_CREATING;
52extern const int wxEVT_PLOT_AREA_SEL_CREATED;
53extern const int wxEVT_PLOT_AREA_SEL_CHANGING;
54extern const int wxEVT_PLOT_AREA_SEL_CHANGED;
55extern const int wxEVT_PLOT_BEGIN_X_LABEL_EDIT;
56extern const int wxEVT_PLOT_END_X_LABEL_EDIT;
57extern const int wxEVT_PLOT_BEGIN_Y_LABEL_EDIT;
58extern const int wxEVT_PLOT_END_Y_LABEL_EDIT;
59extern const int wxEVT_PLOT_BEGIN_TITLE_EDIT;
60extern const int wxEVT_PLOT_END_TITLE_EDIT;
61extern const int wxEVT_PLOT_AREA_CREATE;
62
63
64#define wxPLOT_X_AXIS 0x0004
65#define wxPLOT_Y_AXIS 0x0008
66#define wxPLOT_BUTTON_MOVE 0x0010
67#define wxPLOT_BUTTON_ZOOM 0x0020
68#define wxPLOT_BUTTON_ENLARGE 0x0040
69
70#define wxPLOT_BUTTON_ALL (wxPLOT_BUTTON_MOVE|wxPLOT_BUTTON_ZOOM|wxPLOT_BUTTON_ENLARGE)
71#define wxPLOT_DEFAULT (wxPLOT_X_AXIS|wxPLOT_Y_AXIS | wxPLOT_BUTTON_ALL)
72
73//-----------------------------------------------------------------------------
74// wxPlotEvent
75//-----------------------------------------------------------------------------
76
77class WXDLLEXPORT wxPlotEvent: public wxNotifyEvent
78{
79public:
80 wxPlotEvent( wxEventType commandType = wxEVT_NULL, int id = 0 );
81
82 wxPlotCurve *GetCurve()
83 { return m_curve; }
84 void SetCurve( wxPlotCurve *curve )
85 { m_curve = curve; }
86
87 double GetZoom()
88 { return m_zoom; }
89 void SetZoom( double zoom )
90 { m_zoom = zoom; }
91
92 wxInt32 GetPosition()
93 { return m_position; }
94 void SetPosition( wxInt32 pos )
95 { m_position = pos; }
96
97private:
98 wxPlotCurve *m_curve;
99 double m_zoom;
100 wxInt32 m_position;
101};
102
103//-----------------------------------------------------------------------------
104// wxPlotCurve
105//-----------------------------------------------------------------------------
106
107class WXDLLEXPORT wxPlotCurve: public wxObject
108{
109public:
110 wxPlotCurve( int offsetY, double startY, double endY );
111
112 virtual wxInt32 GetStartX() = 0;
113 virtual wxInt32 GetEndX() = 0;
114
115 virtual double GetY( wxInt32 x ) = 0;
116
117 void SetStartY( double startY )
118 { m_startY = startY; }
119 double GetStartY()
120 { return m_startY; }
121 void SetEndY( double endY )
122 { m_endY = endY; }
123 double GetEndY()
124 { return m_endY; }
125 void SetOffsetY( int offsetY )
126 { m_offsetY = offsetY; }
127 int GetOffsetY()
128 { return m_offsetY; }
129
130 void SetPenNormal( const wxPen &pen )
131 { m_penNormal = pen; }
132 void SetPenSelected( const wxPen &pen )
133 { m_penSelected = pen; }
134
135private:
136 int m_offsetY;
137 double m_startY;
138 double m_endY;
139 wxPen m_penNormal;
140 wxPen m_penSelected;
141
142 DECLARE_ABSTRACT_CLASS(wxPlotCurve)
143};
144
145//-----------------------------------------------------------------------------
146// wxPlotOnOffCurve
147//-----------------------------------------------------------------------------
148
149class WXDLLEXPORT wxPlotOnOff
150{
151public:
152 wxPlotOnOff() { }
153
154 wxInt32 m_on;
155 wxInt32 m_off;
156 void *m_clientData;
157};
158
159WX_DECLARE_EXPORTED_OBJARRAY(wxPlotOnOff, wxArrayPlotOnOff);
160
161class WXDLLEXPORT wxPlotOnOffCurve: public wxObject
162{
163public:
164 wxPlotOnOffCurve( int offsetY );
165
166 wxInt32 GetStartX()
167 { return m_minX; }
168 wxInt32 GetEndX()
169 { return m_maxX; }
170
171 void SetOffsetY( int offsetY )
172 { m_offsetY = offsetY; }
173 int GetOffsetY()
174 { return m_offsetY; }
175
176 void Add( wxInt32 on, wxInt32 off, void *clientData = NULL );
177 size_t GetCount();
178
179 wxInt32 GetOn( size_t index );
180 wxInt32 GetOff( size_t index );
181 void* GetClientData( size_t index );
182 wxPlotOnOff *GetAt( size_t index );
183
184 virtual void DrawOnLine( wxDC &dc, wxCoord y, wxCoord start, wxCoord end, void *clientData );
185 virtual void DrawOffLine( wxDC &dc, wxCoord y, wxCoord start, wxCoord end );
186
187private:
188 int m_offsetY;
189 wxInt32 m_minX;
190 wxInt32 m_maxX;
191
192 wxArrayPlotOnOff m_marks;
193
194 DECLARE_CLASS(wxPlotOnOffCurve)
195};
196
197//-----------------------------------------------------------------------------
198// wxPlotArea
199//-----------------------------------------------------------------------------
200
201class WXDLLEXPORT wxPlotArea: public wxWindow
202{
203public:
204 wxPlotArea() {}
205 wxPlotArea( wxPlotWindow *parent );
206
207 void OnPaint( wxPaintEvent &event );
208 void OnMouse( wxMouseEvent &event );
209
210 void DrawCurve( wxDC *dc, wxPlotCurve *curve, int from = -1, int to = -1 );
211 void DrawOnOffCurve( wxDC *dc, wxPlotOnOffCurve *curve, int from = -1, int to = -1 );
212 void DeleteCurve( wxPlotCurve *curve, int from = -1, int to = -1 );
213
214 virtual void ScrollWindow( int dx, int dy, const wxRect *rect );
215
216private:
217 wxPlotWindow *m_owner;
218 bool m_zooming;
219
220 DECLARE_CLASS(wxPlotArea)
221 DECLARE_EVENT_TABLE()
222};
223
224//-----------------------------------------------------------------------------
225// wxPlotXAxisArea
226//-----------------------------------------------------------------------------
227
228class WXDLLEXPORT wxPlotXAxisArea: public wxWindow
229{
230public:
231 wxPlotXAxisArea() {}
232 wxPlotXAxisArea( wxPlotWindow *parent );
233
234 void OnPaint( wxPaintEvent &event );
235 void OnMouse( wxMouseEvent &event );
236
237private:
238 wxPlotWindow *m_owner;
239
240 DECLARE_CLASS(wxPlotXAxisArea)
241 DECLARE_EVENT_TABLE()
242};
243
244//-----------------------------------------------------------------------------
245// wxPlotYAxisArea
246//-----------------------------------------------------------------------------
247
248class WXDLLEXPORT wxPlotYAxisArea: public wxWindow
249{
250public:
251 wxPlotYAxisArea() {}
252 wxPlotYAxisArea( wxPlotWindow *parent );
253
254 void OnPaint( wxPaintEvent &event );
255 void OnMouse( wxMouseEvent &event );
256
257private:
258 wxPlotWindow *m_owner;
259
260 DECLARE_CLASS(wxPlotYAxisArea)
261 DECLARE_EVENT_TABLE()
262};
263
264//-----------------------------------------------------------------------------
265// wxPlotWindow
266//-----------------------------------------------------------------------------
267
268class WXDLLEXPORT wxPlotWindow: public wxScrolledWindow
269{
270public:
271 wxPlotWindow() {}
272 wxPlotWindow( wxWindow *parent, wxWindowID id, const wxPoint &pos, const wxSize &size, int flags = wxPLOT_DEFAULT );
273 ~wxPlotWindow();
274
275 // curve accessors
276 // ---------------
277
278 void Add( wxPlotCurve *curve );
279 void Delete( wxPlotCurve* curve );
280
281 size_t GetCount();
282 wxPlotCurve *GetAt( size_t n );
283
284 void SetCurrent( wxPlotCurve* current );
285 wxPlotCurve *GetCurrent();
286
287 // mark list accessors
288 // -------------------
289
290 void Add( wxPlotOnOffCurve *curve );
291 void Delete( wxPlotOnOffCurve* curve );
292
293 size_t GetOnOffCurveCount();
294 wxPlotOnOffCurve *GetOnOffCurveAt( size_t n );
295
296 // vertical representation
297 // -----------------------
298
299 void Move( wxPlotCurve* curve, int pixels_up );
300 void Enlarge( wxPlotCurve *curve, double factor );
301
302 // horizontal representation
303 // -------------------------
304
305 void SetUnitsPerValue( double upv );
306 double GetUnitsPerValue()
307 { return m_xUnitsPerValue; }
308
309 void SetZoom( double zoom );
310 double GetZoom()
311 { return m_xZoom; }
312
313 // options
314 // -------
315
316 void SetScrollOnThumbRelease( bool scrollOnThumbRelease = TRUE )
317 { m_scrollOnThumbRelease = scrollOnThumbRelease; }
318 bool GetScrollOnThumbRelease()
319 { return m_scrollOnThumbRelease; }
320
321 void SetEnlargeAroundWindowCentre( bool enlargeAroundWindowCentre = TRUE )
322 { m_enlargeAroundWindowCentre = enlargeAroundWindowCentre; }
323 bool GetEnlargeAroundWindowCentre()
324 { return m_enlargeAroundWindowCentre; }
325
326 // events (may be overridden)
327 // --------------------------
328
329 void OnMoveUp( wxCommandEvent& event );
330 void OnMoveDown( wxCommandEvent& event );
331
332 void OnEnlarge( wxCommandEvent& event );
333 void OnShrink( wxCommandEvent& event );
334 void OnZoomIn( wxCommandEvent& event );
335 void OnZoomOut( wxCommandEvent& event );
336
337 void OnScroll2( wxScrollWinEvent& event );
338
339 // utilities
340 // ---------
341
342 void RedrawEverything();
343 void RedrawXAxis();
344 void RedrawYAxis();
345
346 void ResetScrollbar();
347
348private:
349 friend class wxPlotArea;
350 friend class wxPlotXAxisArea;
351 friend class wxPlotYAxisArea;
352
353 double m_xUnitsPerValue;
354 double m_xZoom;
355
356 wxList m_curves;
357 wxList m_onOffCurves;
358
359 wxPlotArea *m_area;
360 wxPlotXAxisArea *m_xaxis;
361 wxPlotYAxisArea *m_yaxis;
362 wxPlotCurve *m_current;
363
364 bool m_scrollOnThumbRelease;
365 bool m_enlargeAroundWindowCentre;
366
367 DECLARE_CLASS(wxPlotWindow)
368 DECLARE_EVENT_TABLE()
369};
370
371// ----------------------------------------------------------------------------
372// plot event macros
373// ----------------------------------------------------------------------------
374
375typedef void (wxEvtHandler::*wxPlotEventFunction)(wxPlotEvent&);
376
377#if WXWIN_COMPATIBILITY_EVENT_TYPES
378
379#define EVT_PLOT(id, fn) { wxEVT_PLOT_DOUBLECLICKED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
380#define EVT_PLOT_SEL_CHANGING(id, fn) { wxEVT_PLOT_SEL_CHANGING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
381#define EVT_PLOT_SEL_CHANGED(id, fn) { wxEVT_PLOT_SEL_CHANGED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
382#define EVT_PLOT_CLICKED(id, fn) { wxEVT_PLOT_CLICKED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
383#define EVT_PLOT_DOUBLECLICKED(id, fn) { wxEVT_PLOT_DOUBLECLICKED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
384#define EVT_PLOT_ZOOM_IN(id, fn) { wxEVT_PLOT_ZOOM_IN, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
385#define EVT_PLOT_ZOOM_OUT(id, fn) { wxEVT_PLOT_ZOOM_OUT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
386#define EVT_PLOT_VALUE_SEL_CREATING(id, fn) { wxEVT_PLOT_VALUE_SEL_CREATING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
387#define EVT_PLOT_VALUE_SEL_CREATED(id, fn) { wxEVT_PLOT_VALUE_SEL_CREATED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
388#define EVT_PLOT_VALUE_SEL_CHANGING(id, fn) { wxEVT_PLOT_VALUE_SEL_CHANGING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
389#define EVT_PLOT_VALUE_SEL_CHANGED(id, fn) { wxEVT_PLOT_VALUE_SEL_CHANGED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
390#define EVT_PLOT_AREA_SEL_CREATING(id, fn) { wxEVT_PLOT_AREA_SEL_CREATING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
391#define EVT_PLOT_AREA_SEL_CREATED(id, fn) { wxEVT_PLOT_AREA_SEL_CREATED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
392#define EVT_PLOT_AREA_SEL_CHANGING(id, fn) { wxEVT_PLOT_AREA_SEL_CHANGING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
393#define EVT_PLOT_AREA_SEL_CHANGED(id, fn) { wxEVT_PLOT_AREA_SEL_CHANGED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
394#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 },
395#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 },
396#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 },
397#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 },
398#define EVT_PLOT_BEGIN_TITLE_EDIT(id, fn) { wxEVT_PLOT_BEGIN_TITLE_EDIT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
399#define EVT_PLOT_END_TITLE_EDIT(id, fn) { wxEVT_PLOT_END_TITLE_EDIT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL },
400
401#else
402
403#define EVT_PLOT(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_DOUBLECLICKED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL ),
404#define EVT_PLOT_SEL_CHANGING(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_SEL_CHANGING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL ),
405#define EVT_PLOT_SEL_CHANGED(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_SEL_CHANGED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL ),
406#define EVT_PLOT_CLICKED(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_CLICKED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL ),
407#define EVT_PLOT_DOUBLECLICKED(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_DOUBLECLICKED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL ),
408#define EVT_PLOT_ZOOM_IN(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_ZOOM_IN, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL ),
409#define EVT_PLOT_ZOOM_OUT(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_ZOOM_OUT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL ),
410#define EVT_PLOT_VALUE_SEL_CREATING(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_VALUE_SEL_CREATING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL ),
411#define EVT_PLOT_VALUE_SEL_CREATED(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_VALUE_SEL_CREATED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL ),
412#define EVT_PLOT_VALUE_SEL_CHANGING(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_VALUE_SEL_CHANGING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL ),
413#define EVT_PLOT_VALUE_SEL_CHANGED(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_VALUE_SEL_CHANGED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL ),
414#define EVT_PLOT_AREA_SEL_CREATING(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_AREA_SEL_CREATING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL ),
415#define EVT_PLOT_AREA_SEL_CREATED(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_AREA_SEL_CREATED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL ),
416#define EVT_PLOT_AREA_SEL_CHANGING(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_AREA_SEL_CHANGING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL ),
417#define EVT_PLOT_AREA_SEL_CHANGED(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_AREA_SEL_CHANGED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL ),
418#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) (wxPlotEventFunction) & fn, (wxObject *) NULL ),
419#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) (wxPlotEventFunction) & fn, (wxObject *) NULL ),
420#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) (wxPlotEventFunction) & fn, (wxObject *) NULL ),
421#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) (wxPlotEventFunction) & fn, (wxObject *) NULL ),
422#define EVT_PLOT_BEGIN_TITLE_EDIT(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_BEGIN_TITLE_EDIT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL ),
423#define EVT_PLOT_END_TITLE_EDIT(id, fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_PLOT_END_TITLE_EDIT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNotifyEventFunction) (wxPlotEventFunction) & fn, (wxObject *) NULL ),
424
425#endif
426
427#endif
428 // _WX_PLOT_H_