00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef __WXCURVEGROUP_H__
00017 #define __WXCURVEGROUP_H__
00018
00019 #ifndef WX_PRECOMP
00020 #include "wx/wx.h"
00021 #endif
00022
00023 #include "wx/curves/meta.h"
00024
00025 WX_DECLARE_STRING_HASH_MAP_WITH_DECL(a2dBoundingBox, _a2dBoundingBoxHash, class A2DCURVESDLLEXP);
00026
00027 class A2DCURVESDLLEXP a2dBboxHash : public _a2dBoundingBoxHash, public a2dObject
00028 {
00029 public:
00030 a2dBboxHash(void);
00031 a2dBboxHash(const a2dBboxHash& other, CloneOptions options);
00032 virtual a2dObject* Clone( CloneOptions options ) const;
00033 protected:
00034 #if wxART2D_USE_CVGIO
00035
00036 virtual void DoSave( wxObject* WXUNUSED(parent), a2dIOHandlerXmlSerOut &WXUNUSED(out), a2dXmlSer_flag WXUNUSED(xmlparts), a2dObjectList* WXUNUSED(towrite) ) {}
00037
00038 virtual void DoLoad( wxObject* WXUNUSED(parent), a2dIOHandlerXmlSerIn& WXUNUSED(parser), a2dXmlSer_flag WXUNUSED(xmlparts) ) {}
00039 #endif
00040 private:
00041 a2dBboxHash(const a2dBboxHash& other);
00042 };
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052 class A2DCURVESDLLEXP a2dCurvesArea : public a2dPolygonLClipper
00053 {
00054 friend class a2dCurvesAreaList;
00055 DECLARE_DYNAMIC_CLASS(a2dCurvesArea)
00056 public:
00057
00058
00059
00060
00061
00062
00063
00064 a2dCurvesArea(const wxString curvesAreaName = wxT(""));
00065
00066
00067 a2dCurvesArea(const a2dCurvesArea& other, CloneOptions options);
00068
00069 ~a2dCurvesArea();
00070
00071
00072 virtual a2dObject* Clone( CloneOptions options ) const;
00073
00074
00075 wxString GetAxisText() const;
00076
00077
00078 bool SetAxisText(const wxString& name);
00079
00080
00081 void SetBoundaries(const a2dBoundingBox& extbox);
00082
00083 bool IsRecursive() { return true; }
00084
00085
00086
00087
00088
00089
00090 void UpdateInternalBoundaries(const a2dBoundingBox& extbox);
00091
00092
00093 void SetInternalBoundaries(const a2dBoundingBox& extbox, const a2dBoundingBox& intbox)
00094 {
00095 m_intrect = intbox;
00096 UpdateInternalBoundaries(extbox);
00097 }
00098
00099
00100 void SetInternalBoundaries(const a2dBoundingBox& extbox, double ximin, double yimin, double ximax, double yimax)
00101 {
00102 SetInternalBoundaries(extbox, a2dBoundingBox(ximin, yimin, ximax, yimax));
00103 }
00104
00105
00106 const a2dBoundingBox& GetInternalBoundaries() const { return m_intrect; }
00107
00108
00109
00110 const a2dAffineMatrix& GetCurveAreaTransform() { return m_iworld; }
00111
00112
00113
00114
00115
00116
00117 void AddCurve(a2dCurve* curve, const wxString curvename = _T("") );
00118
00119
00120
00121
00122
00123 void AddMarker(a2dMarker* marker );
00124
00125
00126
00127
00128
00129 void RemoveMarker(a2dMarker* marker );
00130
00131
00132
00133
00134
00135
00136
00137 void InsertCurve( size_t before, a2dCurve* curve, const wxString curvename = _T("") );
00138
00139
00140 a2dCurve* GetCurve( const wxString curvename );
00141
00142
00143
00144
00145
00146 const a2dCanvasObjectList* GetCurves() const {
00147 return GetChildObjectList();
00148 }
00149
00150
00151
00152
00153 a2dCanvasObjectList* GetCurves() {
00154 return GetChildObjectList();
00155 }
00156
00157
00158 void World2Curve( double xw, double yw, double& xcurve, double& ycurve );
00159
00160
00161 void Curve2World( double xcurve, double ycurve, double& xw, double& yw );
00162
00163
00164 a2dBoundingBox GetCurvesBoundaries();
00165
00166
00167 a2dCurveAxis* GetAxisY() { return m_axisY; }
00168
00169
00170 void SetAxisY( a2dCurveAxis* axisY ) { m_axisY = axisY; }
00171
00172
00173 void SetShowYaxis(bool showyaxis);
00174
00175 bool GetShowYaxis(void) { return m_showyaxis; }
00176
00177
00178 void SetAxes(const a2dBoundingBox& extbox, double x, double y, double& zerox, double& zeroy, double& ixmin, double& ixmax);
00179
00180
00181 bool IsCurvesHighlighted() const;
00182
00183 void SetMarkerShow(a2dMarkerShow* showm);
00184 void SetMarkerShow2(a2dMarkerShow* showm);
00185 a2dMarkerShow* GetMarkerShow(void) const { return m_markerShow; }
00186 a2dMarkerShow* GetMarkerShow2(void) const { return m_markerShow2; }
00187
00188
00189 void SetColor(const wxColour& color) { m_colour = color; }
00190
00191 const wxColour& GetColor() const { return m_colour;}
00192
00193
00194
00195
00196
00197 a2dMarker* GetCursorMarker() const;
00198
00199
00200 a2dCanvasXYDisplayGroupAreas* GetGroup(void) { return m_group; }
00201
00202 void SetGroup(a2dCanvasXYDisplayGroupAreas* aGroup);
00203
00204 a2dBoundingBox& Expand(a2dBoundingBox& bbox);
00205 void DoAddPending( a2dIterC& ic );
00206 bool ProcessCanvasObjectEvent( a2dIterC& ic, a2dHitEvent& hitEvent );
00207 void DoWalker( wxObject* parent, a2dWalkerIOHandler& handler );
00208 a2dCanvasObject* IsHitCurvesWorld ( a2dIterC& ic, a2dHitEvent& hitEvent );
00209 void DependencyPending( a2dWalkerIOHandler* handler );
00210 bool Update( UpdateMode mode );
00211
00212 protected:
00213
00214 void DoUpdateViewDependentObjects( a2dIterC& ic );
00215 bool DoUpdate( UpdateMode mode, const a2dBoundingBox& childbox, const a2dBoundingBox& clipbox, const a2dBoundingBox& propbox );
00216 #if wxART2D_USE_CVGIO
00217
00218 virtual void DoSave( wxObject* WXUNUSED(parent), a2dIOHandlerXmlSerOut &WXUNUSED(out), a2dXmlSer_flag WXUNUSED(xmlparts), a2dObjectList* WXUNUSED(towrite) );
00219
00220 virtual void DoLoad( wxObject* WXUNUSED(parent), a2dIOHandlerXmlSerIn& WXUNUSED(parser), a2dXmlSer_flag WXUNUSED(xmlparts) ) ;
00221 #endif
00222
00223
00224 bool m_showyaxis;
00225
00226
00227 a2dSmrtPtr<a2dCurveAxis> m_axisY;
00228
00229
00230 a2dBoundingBox m_intrect;
00231
00232 a2dAffineMatrix m_iworld;
00233
00234 a2dSmrtPtr<a2dMarkerShow> m_markerShow;
00235 a2dSmrtPtr<a2dMarkerShow> m_markerShow2;
00236
00237
00238 wxColour m_colour;
00239
00240
00241 a2dCanvasXYDisplayGroupAreas* m_group;
00242
00243 public:
00244 static a2dPropertyIdCanvasObject* PROPID_curvesarea;
00245 static a2dPropertyIdString* PROPID_text;
00246
00247 DECLARE_PROPERTIES()
00248
00249 };
00250
00251 template class A2DCURVESDLLEXP a2dSmrtPtr<a2dCurvesArea>;
00252
00253 #include <wx/dynarray.h>
00254 WX_DECLARE_OBJARRAY_WITH_DECL( a2dSmrtPtr<a2dCurvesArea>, a2dCurvesAreaListBase, class A2DCURVESDLLEXP );
00255
00256
00257
00258
00259
00260 class A2DCURVESDLLEXP a2dCurvesAreaList : public a2dCurvesAreaListBase, public a2dObject
00261 {
00262 DECLARE_DYNAMIC_CLASS(a2dCurvesAreaList)
00263 public:
00264 a2dCurvesAreaList();
00265
00266 a2dCurvesAreaList( const a2dCurvesAreaList &other, a2dObject::CloneOptions options);
00267
00268 ~a2dCurvesAreaList();
00269
00270
00271
00272 virtual a2dObject* Clone(a2dObject::CloneOptions options) const;
00273
00274
00275 a2dCurvesArea* GetCurvesArea(const wxString& curvesAreaName);
00276
00277 a2dCurvesArea* GetCurvesArea(const wxString& curvesAreaName) const;
00278
00279
00280 bool IsRecursive() { return true; }
00281
00282
00283 void SetBoundaries(const a2dBoundingBox& extbox);
00284
00285
00286 void SetClippingFromBox(a2dBoundingBox& bbox = wxNonValidBbox);
00287
00288
00289
00290 int AppendInternalBoundaries(a2dBboxHash* irectHash);
00291
00292 int AppendCurvesBoundaries(a2dBboxHash* irectHash);
00293
00294 a2dBoundingBox& Expand(a2dBoundingBox& bbox) const;
00295
00296 void AddPending( a2dIterC& ic );
00297
00298 bool Update( a2dCanvasObject::UpdateMode mode );
00299
00300
00301 void SetAxes(const a2dBoundingBox& extbox, double x, double y, double& zerox, double& zeroy, double& ixmin, double& ixmax);
00302
00303
00304 double GetTicY() const {
00305 wxASSERT_MSG(m_leftAxisY != (a2dCurvesArea*)NULL, wxT("left axis was not defined"));
00306 return m_leftAxisY->m_axisY->GetTic();}
00307
00308
00309
00310
00311
00312
00313 a2dSmrtPtr<a2dCurvesArea> GetBaseCurvesArea() const {
00314 wxASSERT_MSG(m_leftAxisY != (a2dCurvesArea*)NULL, wxT("left axis was not defined"));
00315 return m_leftAxisY;
00316 }
00317
00318
00319 void RenderAxesY ( a2dIterC& ic, OVERLAP clipparent );
00320
00321 void Render ( a2dIterC& ic, OVERLAP clipparent );
00322
00323
00324 void SetShowLeftYaxis(const wxString& curveAreaName, bool showyaxis);
00325
00326
00327 void SetShowRightYaxis(const wxString& curveAreaName, bool showyaxis);
00328
00329 void SetTicY(int numLines);
00330
00331
00332
00333 void SetCursor(a2dCursor* cursor);
00334
00335 void DependencyPending( a2dWalkerIOHandler* handler );
00336 bool GetPending(void);
00337 void UpdateViewDependentObjects( a2dIterC& ic );
00338
00339
00340 bool GetHasSelectedObjectsBelow();
00341 bool GetHasToolObjectsBelow();
00342
00343 a2dCanvasXYDisplayGroupAreas* GetGroup(void) { return m_group; }
00344
00345 void SetGroup(a2dCanvasXYDisplayGroupAreas* aGroup);
00346
00347 void SetAutoShowYAxes(bool autoshowyaxes) { m_autoshowyaxes = autoshowyaxes; }
00348
00349 bool GetAutoShowYAxes(void) { return m_autoshowyaxes; }
00350
00351 bool ProcessCanvasObjectEvent( a2dIterC& ic, a2dHitEvent& hitEvent );
00352 void DoWalker( wxObject* parent, a2dWalkerIOHandler& handler );
00353 a2dCanvasObject* IsHitCurvesWorld ( a2dCurvesArea* &area, a2dIterC& ic, a2dHitEvent& hitEvent );
00354
00355
00356 a2dSmrtPtr<a2dCurvesArea> m_leftAxisY;
00357
00358 a2dSmrtPtr<a2dCurvesArea> m_rightAxisY;
00359
00360 protected:
00361 #if wxART2D_USE_CVGIO
00362
00363 virtual void DoSave( wxObject* parent, a2dIOHandlerXmlSerOut &out, a2dXmlSer_flag xmlparts, a2dObjectList* towrite );
00364
00365 virtual void DoLoad( wxObject* parent, a2dIOHandlerXmlSerIn& parser, a2dXmlSer_flag xmlparts ) ;
00366 #endif
00367
00368 bool m_autoshowyaxes;
00369
00370
00371 a2dCanvasXYDisplayGroupAreas* m_group;
00372 };
00373
00374 template class A2DCURVESDLLEXP a2dSmrtPtr<a2dCurvesAreaList>;
00375
00376 WX_DECLARE_STRING_HASH_MAP(a2dBoundingBox, a2dCurvesBboxes);
00377
00378
00379
00380
00381
00382
00383
00384
00385
00386
00387 class A2DCURVESDLLEXP a2dCanvasXYDisplayGroupAreas: public a2dCanvasObject
00388 {
00389 public:
00390
00391
00392
00393
00394
00395
00396 a2dCanvasXYDisplayGroupAreas( double x = 0 , double y = 0 );
00397
00398
00399 a2dCanvasXYDisplayGroupAreas( const a2dCanvasXYDisplayGroupAreas &other, CloneOptions options );
00400
00401
00402 const a2dCurvesAreaList& GetCurvesAreaList() const { return *m_axesarealist;}
00403
00404
00405 void SetCurvesAreaList(a2dCurvesAreaList* areaList)
00406 {
00407 m_axesarealist = areaList;
00408 m_axesarealist->SetGroup(this);
00409 }
00410
00411
00412
00413
00414
00415
00416
00417
00418
00419 void SetBoundaries(const a2dBoundingBox& extbox);
00420
00421 void SetBoundaries( double xmin, double ymin, double xmax, double ymax ) {
00422 SetBoundaries(a2dBoundingBox(xmin, ymin, xmax, ymax));}
00423
00424
00425
00426
00427
00428
00429
00430
00431
00432
00433
00434
00435
00436 void SetInternalBoundaries( double ximin, double yimin, double ximax, double yimax, const wxString& curveAreaName = wxEmptyString );
00437
00438
00439
00440
00441
00442 void SetInternalXBoundaries(double ximin, double ximax);
00443
00444
00445 a2dBoundingBox GetInternalBoundaries( const wxString& curveAreaName = wxEmptyString ) const;
00446
00447
00448 a2dBoundingBox GetPlotAreaBbox() const;
00449
00450
00451 int AppendInternalBoundaries(a2dBboxHash* irectHash);
00452
00453 int AppendCurvesBoundaries(a2dBboxHash* irectHash);
00454
00455 a2dAffineMatrix GetCurvesAreaTransform(const wxString& curveAreaName);
00456
00457 a2dCurvesArea* GetCurvesArea(const wxString& curveAreaName = wxEmptyString )
00458 { return m_axesarealist->GetCurvesArea(curveAreaName); }
00459
00460
00461 a2dCurvesArea* AddCurvesArea(const wxString& curveAreaName );
00462
00463
00464
00465
00466
00467
00468
00469 void AddCurveToArea(const wxString& curveAreaName, a2dCurve* curve, const wxString curvename = _T("") );
00470
00471
00472
00473
00474
00475
00476 void AddMarkerToArea(const wxString& curveAreaName, a2dMarker* marker );
00477
00478
00479
00480
00481
00482
00483 void RemoveMarkerFromArea(const wxString& curveAreaName, a2dMarker* marker );
00484
00485 void SetCursor(a2dCursor* cursor);
00486
00487 a2dCursor* GetCursor() {
00488 return m_cursor;}
00489
00490 void ChangeCursorPos(double step);
00491
00492
00493
00494
00495
00496
00497
00498
00499
00500 void InsertCurveToArea(const wxString& curveAreaName, size_t before, a2dCurve* curve, const wxString curvename = _T("") );
00501
00502
00503
00504
00505
00506
00507 a2dCurve* GetCurveFromArea(const wxString& curveAreaName, const wxString curvename );
00508
00509
00510
00511
00512
00513
00514
00515 a2dCanvasObjectList* GetCurvesFromArea(const wxString& curveAreaName);
00516
00517
00518
00519
00520
00521
00522 const a2dBoundingBox& GetPlotAreaRect() const { return m_plotrect; }
00523
00524
00525
00526
00527
00528 a2dBoundingBox GetCurvesBoundariesFromArea(const wxString& curveAreaName);
00529
00530
00531 virtual ~a2dCanvasXYDisplayGroupAreas();
00532
00533
00534 virtual a2dObject* Clone( CloneOptions options ) const;
00535
00536
00537 a2dCurveAxis* GetAxisX() const { return m_axisX; }
00538
00539
00540 void SetAxisX( a2dCurveAxis* axisX ) { m_axisX = axisX; SetPending(true); }
00541
00542
00543 a2dCurveAxis* GetAreaAxisY(const wxString& curveAreaName) const;
00544
00545
00546 void SetShowXaxis(bool showxaxis) { m_showxaxis = showxaxis; SetPending(true); }
00547
00548
00549 void SetShowYaxis(const wxString& curveAreaName, bool showyaxis) {
00550 SetShowLeftYaxis(curveAreaName, showyaxis);}
00551
00552
00553 void SetAreaAxisY( const wxString& curveAreaName, a2dCurveAxis* axisY );
00554
00555
00556 void SetShowLeftYaxis(const wxString& curveAreaName, bool showyaxis);
00557
00558 void SetShowRightYaxis(const wxString& curveAreaName, bool showyaxis);
00559
00560
00561 void SetAutoTicYPrecision(bool autoPrecision) { m_autoTicYPrecision = autoPrecision; SetPending(true);}
00562
00563
00564 bool IsAutoTicYPrecision() const { return m_autoTicYPrecision; }
00565
00566
00567 void SetShowGrid(bool showgrid) { m_showgrid = showgrid; SetPending(true); }
00568
00569
00570 void SetGridStroke( const a2dStroke& stroke);
00571
00572
00573 void SetAxisAreaFill( const a2dFill& fill );
00574
00575
00576 void SetAxisAreaStroke( const a2dStroke& fill );
00577
00578 virtual void DoWalker( wxObject* parent, a2dWalkerIOHandler& handler );
00579
00580 bool ProcessCanvasObjectEvent( a2dIterC& ic, a2dHitEvent& hitEvent );
00581
00582
00583 wxString GetLeftAxisText() const ;
00584
00585
00586 wxString GetRightAxisText() const ;
00587
00588
00589
00590
00591
00592
00593
00594 void SetAxisText(const wxString& curveAreaName, const wxString& text, const wxColour& color);
00595
00596 void ClearCurvesAreas();
00597
00598 void SetAreaMarkerShow(const wxString& curveAreaName, a2dMarkerShow* showm);
00599 void SetAreaMarkerShow2(const wxString& curveAreaName, a2dMarkerShow* showm);
00600
00601 a2dMarkerShow* GetAreaMarkerShow(const wxString& curveAreaName) const;
00602 a2dMarkerShow* GetAreaMarkerShow2(const wxString& curveAreaName) const;
00603
00604 void SetTicY(int numLines);
00605
00606 virtual int SetAxisTicPrecision(a2dCurveAxis* axisY, double newMinY, double newMaxY);
00607 virtual void SetCommonTicPrecision(int precision);
00608
00609 void SetAutoShowYAxes(bool autoshowyaxes) { m_axesarealist->SetAutoShowYAxes(autoshowyaxes); SetPending(true);}
00610
00611 void SetCursorOnlyByCurves(bool cursorOnlyByCurves) { m_cursorOnlyByCurves = cursorOnlyByCurves; SetPending(true);}
00612 bool GetCursorOnlyByCurves(void) { return m_cursorOnlyByCurves; }
00613
00614 void OnChar(wxKeyEvent& event);
00615
00616 DECLARE_DYNAMIC_CLASS(a2dCanvasXYDisplayGroupAreas)
00617
00618 A2D_DECLARE_EVENT_TABLE()
00619
00620 protected:
00621
00622 virtual void DrawGrid( a2dIterC& ic );
00623
00624 void DependencyPending( a2dWalkerIOHandler* WXUNUSED(handler) );
00625
00626 void DoUpdateViewDependentObjects( a2dIterC& ic );
00627
00628 bool DoStartEdit( wxUint16 editmode, wxEditStyle editstyle );
00629
00630 void OnCanvasObjectMouseEvent( a2dCanvasObjectMouseEvent& event );
00631
00632 bool DoIsHitWorld( a2dIterC& ic, a2dHitEvent& hitEvent );
00633
00634 #if wxART2D_USE_CVGIO
00635 virtual void DoSave( wxObject* parent, a2dIOHandlerXmlSerOut &out, a2dXmlSer_flag xmlparts , a2dObjectList* towrite );
00636
00637 void DoLoad( wxObject* parent, a2dIOHandlerXmlSerIn& parser, a2dXmlSer_flag xmlparts );
00638 #endif //wxART2D_USE_CVGIO
00639
00640 a2dBoundingBox DoGetUnTransformedBbox( a2dBboxFlags flags = a2dCANOBJ_BBOX_NON ) const;
00641
00642 void DoAddPending( a2dIterC& ic );
00643
00644 bool DoUpdate( UpdateMode mode, const a2dBoundingBox& childbox, const a2dBoundingBox& clipbox, const a2dBoundingBox& propbox );
00645
00646 void DoRender( a2dIterC& ic, OVERLAP clipparent );
00647
00648 bool m_showgrid;
00649 bool m_showxaxis;
00650 bool m_autoTicYPrecision;
00651
00652 a2dStroke m_strokegrid;
00653 a2dFill m_fillAxisArea;
00654 a2dStroke m_strokeAxisArea;
00655
00656
00657 a2dBoundingBox m_plotrect;
00658
00659
00660 a2dSmrtPtr<a2dCurvesAreaList> m_axesarealist;
00661
00662
00663 a2dSmrtPtr<a2dCurveAxis> m_axisX;
00664
00665
00666 a2dSmrtPtr<a2dCursor> m_cursor;
00667
00668 static const a2dPropertyIdRefObject PROPID_strokegrid;
00669 static const a2dPropertyIdRefObject PROPID_fillAxisArea;
00670
00671
00672
00673 bool m_cursorOnlyByCurves;
00674
00675 private:
00676
00677 a2dCanvasXYDisplayGroupAreas( const a2dCanvasXYDisplayGroupAreas &other );
00678 };
00679
00680 #if defined(WXART2D_USINGDLL)
00681 template class A2DCURVESDLLEXP a2dSmrtPtr<a2dCanvasXYDisplayGroupAreas>;
00682 #endif
00683
00684
00685 class A2DCURVESDLLEXP a2dCanvasXYDisplayGroup: public a2dCanvasXYDisplayGroupAreas
00686 {
00687 public:
00688
00689
00690
00691
00692
00693
00694 a2dCanvasXYDisplayGroup( double x = 0 , double y = 0 );
00695
00696 a2dCanvasXYDisplayGroup( const a2dCanvasXYDisplayGroup &other, CloneOptions options );
00697
00698
00699
00700
00701
00702
00703 void AddCurve(a2dCurve* curve, const wxString curvename = _T("") ) {
00704 AddCurveToArea((const wxString&)wxEmptyString, curve, curvename);}
00705
00706
00707
00708
00709
00710 void AddMarker(a2dMarker* marker ) {
00711 AddMarkerToArea((const wxString&)wxEmptyString, marker);}
00712
00713
00714
00715
00716
00717 void RemoveMarker(a2dMarker* marker ) {
00718 RemoveMarkerFromArea((const wxString&)wxEmptyString, marker); }
00719
00720
00721
00722
00723
00724
00725
00726 void InsertCurve(size_t before, a2dCurve* curve, const wxString curvename = _T("") ) {
00727 InsertCurveToArea((const wxString&)wxEmptyString, before, curve, curvename);}
00728
00729
00730 a2dCurve* GetCurve(const wxString curvename ) {
00731 return GetCurveFromArea((const wxString&)wxEmptyString, curvename);}
00732
00733
00734
00735
00736
00737 a2dCanvasObjectList* GetCurves(void) {
00738 return GetCurvesFromArea((const wxString&)wxEmptyString); }
00739
00740
00741
00742 a2dBoundingBox GetCurvesBbox(void) {
00743 return GetCurvesBoundariesFromArea((const wxString&)wxEmptyString);}
00744
00745
00746 virtual ~a2dCanvasXYDisplayGroup();
00747
00748 virtual a2dObject* Clone( CloneOptions options ) const;
00749
00750 a2dCurveAxis* GetAxisY(void) {
00751 return GetAreaAxisY((const wxString&)wxEmptyString);}
00752
00753 void SetAxisY( a2dCurveAxis* axisY ) {
00754 SetAreaAxisY((const wxString&)wxEmptyString, axisY);}
00755
00756
00757 void SetShowYaxis(bool showyaxis) {
00758 SetShowLeftYaxis(wxEmptyString, showyaxis);}
00759
00760 DECLARE_DYNAMIC_CLASS(a2dCanvasXYDisplayGroup)
00761
00762 protected:
00763
00764 #if wxART2D_USE_CVGIO
00765
00766
00767
00768 #endif //wxART2D_USE_CVGIO
00769
00770 private:
00771
00772 a2dCanvasXYDisplayGroup( const a2dCanvasXYDisplayGroup &other );
00773 };
00774
00775 #if defined(WXART2D_USINGDLL)
00776 template class A2DCURVESDLLEXP a2dSmrtPtr<a2dCanvasXYDisplayGroup>;
00777 #endif
00778
00779 extern A2DCURVESDLLEXP double a2dBoundsRound(double val);
00780 extern A2DCURVESDLLEXP double a2dTicsRound(double val);
00781
00782 #endif
00783