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