00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #ifndef __WXALGOS_H__
00014 #define __WXALGOS_H__
00015
00016 #ifndef WX_PRECOMP
00017 #include "wx/wx.h"
00018 #endif
00019
00020 #include <map>
00021 #include <set>
00022
00023 using namespace std;
00024
00025 #include "wx/canvas/canglob.h"
00026
00027
00028
00029
00030
00031
00032 class A2DCANVASDLLEXP a2dDumpWalker: public a2dWalkerIOHandler
00033 {
00034 public:
00035
00036 a2dDumpWalker();
00037
00038 ~a2dDumpWalker();
00039
00040 void Initialize();
00041
00042
00043 bool Start( a2dObject* object );
00044
00045
00046 bool WalkTask( wxObject* parent, wxObject* object, a2dWalkEvent event );
00047 };
00048
00049
00050
00051
00052
00053
00054 class A2DCANVASDLLEXP a2dWalker_CallMemberFunc: public a2dWalkerIOHandler
00055 {
00056 public:
00057
00058 a2dWalker_CallMemberFunc();
00059
00060 ~a2dWalker_CallMemberFunc();
00061
00062 typedef void (a2dCanvasObject::*a2dCanvasObjectFunc) ();
00063
00064
00065
00066
00067
00068 bool Start( a2dObject* object, a2dCanvasObjectFunc func );
00069
00070
00071 bool WalkTask( wxObject* parent, wxObject* object, a2dWalkEvent event );
00072
00073
00074 a2dCanvasObjectFunc m_func;
00075 };
00076
00077
00078
00079
00080
00081
00082 class A2DCANVASDLLEXP a2dWalker_CallMemberFuncW: public a2dWalkerIOHandler
00083 {
00084 public:
00085
00086 a2dWalker_CallMemberFuncW();
00087
00088 ~a2dWalker_CallMemberFuncW();
00089
00090 typedef void (a2dCanvasObject::*a2dCanvasObjectFuncW) ( a2dWalkerIOHandler* );
00091
00092
00093
00094
00095
00096
00097 bool Start( a2dObject* object, a2dCanvasObjectFuncW func );
00098
00099
00100 bool WalkTask( wxObject* parent, wxObject* object, a2dWalkEvent event );
00101
00102
00103 a2dCanvasObjectFuncW m_func;
00104 };
00105
00106
00107
00108
00109
00110
00111 class A2DCANVASDLLEXP a2dWalker_SetAvailable: public a2dWalkerIOHandler
00112 {
00113 public:
00114
00115 a2dWalker_SetAvailable( a2dLayers* layerSetup );
00116
00117 a2dWalker_SetAvailable( a2dCanvasView* view );
00118
00119 ~a2dWalker_SetAvailable();
00120
00121
00122
00123
00124
00125
00126 bool Start( a2dObject* object );
00127
00128
00129 bool WalkTask( wxObject* parent, wxObject* object, a2dWalkEvent event );
00130
00131 protected:
00132
00133
00134 a2dCanvasView* m_view;
00135
00136
00137 a2dLayers* m_layerSetup;
00138 };
00139
00140
00141
00142
00143
00144
00145
00146
00147
00148
00149 class A2DCANVASDLLEXP a2dWalker_RemoveProperty: public a2dWalkerIOHandler
00150 {
00151 public:
00152
00153
00154 a2dWalker_RemoveProperty( bool all = true );
00155
00156
00157 a2dWalker_RemoveProperty( const a2dPropertyId* id , bool all = true );
00158
00159
00160 a2dWalker_RemoveProperty( const a2dPropertyIdList& idList , bool all = true );
00161
00162 ~a2dWalker_RemoveProperty();
00163
00164
00165 void AddPropertyId( const a2dPropertyId* id );
00166
00167
00168
00169 bool Start( a2dObject* object );
00170
00171
00172 virtual bool WalkTask( wxObject* parent, wxObject* object, a2dWalkEvent event );
00173
00174
00175 bool m_all;
00176
00177
00178 a2dPropertyIdList m_propertyList;
00179 };
00180
00181
00182
00183
00184
00185 class A2DCANVASDLLEXP a2dWalker_RemovePropertyCandoc: public a2dWalkerIOHandler
00186 {
00187 public:
00188
00189
00190 a2dWalker_RemovePropertyCandoc( a2dCanvasObjectFlagsMask mask = a2dCanvasOFlags::ALL, bool all = true );
00191
00192
00193 a2dWalker_RemovePropertyCandoc( const a2dPropertyId* id , a2dCanvasObjectFlagsMask mask = a2dCanvasOFlags::ALL, bool all = true );
00194
00195
00196 a2dWalker_RemovePropertyCandoc( const a2dPropertyIdList& idList , a2dCanvasObjectFlagsMask mask = a2dCanvasOFlags::ALL, bool all = true );
00197
00198 ~a2dWalker_RemovePropertyCandoc();
00199
00200
00201 void AddPropertyId( const a2dPropertyId* id );
00202
00203
00204
00205 bool Start( a2dCanvasObject* object );
00206
00207
00208 virtual bool WalkTask( wxObject* parent, wxObject* object, a2dWalkEvent event );
00209
00210
00211 void SetMakePending( bool makePending ) { m_makePending = makePending; }
00212
00213
00214 bool m_all;
00215
00216
00217 a2dPropertyIdList m_propertyList;
00218
00219
00220 a2dCanvasObjectFlagsMask m_mask;
00221
00222
00223 int m_depth;
00224
00225
00226 bool m_makePending;
00227 };
00228
00229
00230
00231
00232
00233
00234
00235
00236 class A2DCANVASDLLEXP a2dWalker_FilterCanvasObjects: public a2dWalkerIOHandler
00237 {
00238 public:
00239
00240
00241 a2dWalker_FilterCanvasObjects( a2dCanvasObjectFlagsMask mask = a2dCanvasOFlags::ALL );
00242
00243
00244 a2dWalker_FilterCanvasObjects( const a2dPropertyId* id , a2dCanvasObjectFlagsMask mask = a2dCanvasOFlags::ALL );
00245
00246
00247 a2dWalker_FilterCanvasObjects( const a2dPropertyIdList& idList , a2dCanvasObjectFlagsMask mask = a2dCanvasOFlags::ALL );
00248
00249 ~a2dWalker_FilterCanvasObjects();
00250
00251
00252 void AddPropertyId( const a2dPropertyId* id );
00253
00254
00255 void Initialize();
00256
00257
00258
00259 bool Start( a2dCanvasObject* object );
00260
00261
00262 void AddClassName( wxString className );
00263
00264
00265 void RemoveClassName( wxString className );
00266
00267
00268
00269 void SetAllowClassList( bool allow ) { m_allowClassList = allow; }
00270
00271
00272
00273 bool GetAllowClassList() { return m_allowClassList; }
00274
00275
00276 void SetObjectName( const wxString& objectname = wxT("") ) { m_objectname = objectname; }
00277
00278
00279 void SetUniqueSerializationId( wxInt64 id ) { m_id = id; }
00280
00281
00282 void SetBoundingBox( const a2dBoundingBox& bbox ) { m_bbox = bbox; }
00283
00284
00285 void SetRecursionDepth( int depth = INT_MAX ) { m_depth = depth; }
00286
00287
00288 void SetCheckLayerVisible( bool check ) { m_layervisible = check; }
00289
00290
00291 void SetCheckLayerSelectable( bool check ) { m_layerselectable = check; }
00292
00293
00294 void SetSkipStart( bool skip ) { m_skipStartObject = skip; }
00295
00296
00297 a2dPropertyIdList m_propertyList;
00298
00299
00300 a2dCanvasObjectFlagsMask m_mask;
00301
00302
00303 set<wxString> m_classnameMap;
00304
00305
00306 wxString m_objectname;
00307
00308
00309 wxInt64 m_id;
00310
00311
00312 int m_depth;
00313
00314
00315 a2dBoundingBox m_bbox;
00316
00317
00318 bool m_layervisible;
00319
00320
00321 bool m_layerselectable;
00322
00323
00324 bool m_skipStartObject;
00325
00326
00327 bool m_allowClassList;
00328
00329 protected:
00330
00331
00332
00333
00334
00335 a2dCanvasObjectList* ConvertToPolygons( a2dCanvasObject* canvasobject, bool transform );
00336
00337
00338
00339
00340 a2dCanvasObjectList* ConvertToVpath( a2dCanvasObject* canvasobject, bool transform );
00341
00342
00343 bool ObjectOke( a2dCanvasObject* obj );
00344
00345
00346 bool ClassOfObjectOke( a2dCanvasObject* obj );
00347
00348 };
00349
00350
00351
00352
00353
00354 class A2DCANVASDLLEXP a2dWalker_CollectCanvasObjects: public a2dWalker_FilterCanvasObjects
00355 {
00356 public:
00357
00358
00359 a2dWalker_CollectCanvasObjects( a2dCanvasObjectFlagsMask mask = a2dCanvasOFlags::ALL );
00360
00361
00362 a2dWalker_CollectCanvasObjects( const a2dPropertyId* id , a2dCanvasObjectFlagsMask mask = a2dCanvasOFlags::ALL );
00363
00364
00365 a2dWalker_CollectCanvasObjects( const a2dPropertyIdList& idList , a2dCanvasObjectFlagsMask mask = a2dCanvasOFlags::ALL );
00366
00367 ~a2dWalker_CollectCanvasObjects();
00368
00369 void Initialize();
00370
00371
00372 virtual bool WalkTask( wxObject* parent, wxObject* object, a2dWalkEvent event );
00373
00374
00375 a2dCanvasObjectList m_found;
00376 };
00377
00378
00379
00380
00381
00382 class A2DCANVASDLLEXP a2dWalker_FindCanvasObject: public a2dWalkerIOHandler
00383 {
00384 public:
00385
00386
00387 a2dWalker_FindCanvasObject( a2dCanvasObject* toSearch );
00388
00389 ~a2dWalker_FindCanvasObject();
00390
00391 bool Start( a2dCanvasObject* object );
00392
00393 void Initialize();
00394
00395
00396 virtual bool WalkTask( wxObject* parent, wxObject* object, a2dWalkEvent event );
00397
00398
00399 a2dCanvasObjectPtr m_search;
00400 };
00401
00402
00403
00404
00405
00406 class A2DCANVASDLLEXP a2dWalker_SetSpecificFlagsCanvasObjects: public a2dWalker_FilterCanvasObjects
00407 {
00408 public:
00409
00410
00411 a2dWalker_SetSpecificFlagsCanvasObjects( a2dCanvasObjectFlagsMask which, a2dCanvasObjectFlagsMask mask = a2dCanvasOFlags::ALL );
00412
00413
00414 a2dWalker_SetSpecificFlagsCanvasObjects( a2dCanvasObjectFlagsMask which, const a2dPropertyId* id , a2dCanvasObjectFlagsMask mask = a2dCanvasOFlags::ALL );
00415
00416
00417 a2dWalker_SetSpecificFlagsCanvasObjects( a2dCanvasObjectFlagsMask which, const a2dPropertyIdList& idList , a2dCanvasObjectFlagsMask mask = a2dCanvasOFlags::ALL );
00418
00419 ~a2dWalker_SetSpecificFlagsCanvasObjects();
00420
00421 void Initialize();
00422
00423
00424 bool Start( a2dCanvasObject* object, bool setTo );
00425
00426
00427 virtual bool WalkTask( wxObject* parent, wxObject* object, a2dWalkEvent event );
00428
00429
00430 a2dCanvasObjectFlagsMask m_which;
00431
00432
00433 bool m_setOrClear;
00434 };
00435
00436
00437
00438
00439
00440 class A2DCANVASDLLEXP a2dWalker_SetPropertyToObject: public a2dWalkerIOHandler
00441 {
00442 public:
00443
00444
00445 a2dWalker_SetPropertyToObject( a2dNamedProperty* prop );
00446
00447 ~a2dWalker_SetPropertyToObject();
00448
00449 void Initialize();
00450
00451
00452 virtual bool WalkTask( wxObject* parent, wxObject* object, a2dWalkEvent event );
00453
00454
00455 a2dNamedProperty* m_property;
00456
00457 };
00458
00459
00460
00461
00462
00463
00464
00465
00466
00467 template< class basetype, class a2dpropertyidtyped, class proptype = a2dPropObject >
00468 class a2dWalker_SetProperty: public a2dWalkerIOHandler
00469 {
00470 public:
00471
00472
00473 a2dWalker_SetProperty( basetype valueToSet, bool all = true );
00474
00475
00476 a2dWalker_SetProperty( const a2dpropertyidtyped* id, basetype valueToSet , bool all = true );
00477
00478
00479 ~a2dWalker_SetProperty();
00480
00481
00482 void AddPropertyId( const a2dpropertyidtyped* id );
00483
00484
00485 bool Start( a2dObject* object );
00486
00487
00488 virtual bool WalkTask( wxObject* parent, wxObject* object, a2dWalkEvent event );
00489
00490
00491 bool m_all;
00492
00493
00494 basetype m_valueToSet;
00495
00496
00497 a2dPropertyIdList m_propertyList;
00498 };
00499
00500 typedef a2dWalker_SetProperty< bool, a2dPropertyIdBool > a2dWalker_SetBoolProperty;
00501
00502 typedef a2dWalker_SetProperty< wxInt16, a2dPropertyIdInt16> a2dWalker_SetInt16Property;
00503 typedef a2dWalker_SetProperty< wxUint16, a2dPropertyIdUint16> a2dWalker_SetUint16Property;
00504 typedef a2dWalker_SetProperty< wxInt32, a2dPropertyIdInt32> a2dWalker_SetInt32Property;
00505 typedef a2dWalker_SetProperty< wxUint32, a2dPropertyIdUint32> a2dWalker_SetUint32Property;
00506
00507 typedef a2dWalker_SetProperty< double, a2dPropertyIdDouble> a2dWalker_SetDoubleProperty;
00508 typedef a2dWalker_SetProperty< float, a2dPropertyIdFloat> a2dWalker_SetFloatProperty;
00509 typedef a2dWalker_SetProperty< wxString, a2dPropertyIdString> a2dWalker_SetStringProperty;
00510
00511 template< class basetype, class a2dpropertyidtyped, class proptype >
00512 a2dWalker_SetProperty< basetype,a2dpropertyidtyped, proptype >::a2dWalker_SetProperty( basetype valueToSet, bool all )
00513 {
00514 m_valueToSet = valueToSet;
00515 m_all = all;
00516 }
00517
00518 template< class basetype, class a2dpropertyidtyped, class proptype >
00519 a2dWalker_SetProperty< basetype,a2dpropertyidtyped, proptype >::a2dWalker_SetProperty( const a2dpropertyidtyped* id, basetype valueToSet, bool all )
00520 {
00521 m_valueToSet = valueToSet;
00522 m_propertyList.push_back( (a2dPropertyId*) id );
00523 m_all = all;
00524 }
00525
00526 template< class basetype, class a2dpropertyidtyped, class proptype >
00527 a2dWalker_SetProperty< basetype,a2dpropertyidtyped, proptype >::~a2dWalker_SetProperty()
00528 {
00529 }
00530
00531 template< class basetype, class a2dpropertyidtyped, class proptype >
00532 void a2dWalker_SetProperty< basetype,a2dpropertyidtyped, proptype >::AddPropertyId( const a2dpropertyidtyped* id )
00533 {
00534 m_propertyList.push_back( (a2dPropertyId*) id );
00535 }
00536
00537
00538 template< class basetype, class a2dpropertyidtyped, class proptype >
00539 bool a2dWalker_SetProperty< basetype,a2dpropertyidtyped, proptype >::Start( a2dObject* object )
00540 {
00541 object->Walker( NULL, *this );
00542 return true;
00543 }
00544
00545 template< class basetype, class a2dpropertyidtyped, class proptype >
00546 bool a2dWalker_SetProperty< basetype,a2dpropertyidtyped, proptype >::WalkTask( wxObject* WXUNUSED(parent), wxObject* object, a2dWalkEvent event )
00547 {
00548 if ( event == a2dWalker_a2dPropObjectStart )
00549 {
00550 SetStopWalking( true );
00551 if ( wxDynamicCast( object, proptype ) )
00552 {
00553 a2dPropObject* propobj = wxDynamicCast( object, proptype );
00554 forEachIn( a2dPropertyIdList, &m_propertyList )
00555 {
00556 a2dpropertyidtyped *id = (a2dpropertyidtyped*) *iter;
00557 id->SetPropertyToObject( propobj, m_valueToSet );
00558 }
00559 }
00560 }
00561 if ( event == a2dWalker_a2dPropObjectEnd )
00562 SetStopWalking( false );
00563
00564 return true;
00565 }
00566
00567
00568
00569
00570
00571 class A2DCANVASDLLEXP a2dWalker_SetViewDependent: public a2dWalkerIOHandler
00572 {
00573 public:
00574
00575
00576
00577
00578
00579
00580
00581
00582
00583
00584
00585
00586 a2dWalker_SetViewDependent( a2dCanvasView* aView, bool viewdependent, bool viewspecific = false, bool onlyinternalarea = false );
00587
00588
00589 ~a2dWalker_SetViewDependent();
00590
00591 bool Start( a2dCanvasObject* object );
00592
00593 void Initialize();
00594
00595
00596 virtual bool WalkTask( wxObject* parent, wxObject* object, a2dWalkEvent event );
00597
00598
00599 a2dCanvasView* m_aView;
00600
00601 bool m_viewdependent;
00602
00603 bool m_viewspecific;
00604
00605 bool m_onlyinternalarea;
00606 };
00607
00608
00609
00610
00611
00612 class A2DCANVASDLLEXP a2dWalker_SetCanvasDocument: public a2dWalkerIOHandler
00613 {
00614 public:
00615
00616
00617
00618
00619
00620 a2dWalker_SetCanvasDocument( a2dCanvasDocument* root );
00621
00622 ~a2dWalker_SetCanvasDocument();
00623
00624
00625 bool Start( a2dCanvasObject* object );
00626
00627
00628 virtual bool WalkTask( wxObject* parent, wxObject* object, a2dWalkEvent event );
00629
00630
00631 a2dCanvasDocument* m_root;
00632 };
00633
00634
00635
00636
00637
00638
00639
00640
00641 class A2DCANVASDLLEXP a2dWalker_MakeTree: public a2dWalker_FilterCanvasObjects
00642 {
00643 public:
00644
00645
00646 a2dWalker_MakeTree( a2dCanvasObjectFlagsMask mask = a2dCanvasOFlags::ALL );
00647
00648
00649 a2dWalker_MakeTree( const a2dPropertyId* id , a2dCanvasObjectFlagsMask mask = a2dCanvasOFlags::ALL );
00650
00651
00652 a2dWalker_MakeTree( const a2dPropertyIdList& idList , a2dCanvasObjectFlagsMask mask = a2dCanvasOFlags::ALL );
00653
00654 ~a2dWalker_MakeTree();
00655
00656
00657 bool Start( a2dCanvasObject* object );
00658
00659 void Initialize();
00660
00661
00662 virtual bool WalkTask( wxObject* parent, wxObject* object, a2dWalkEvent event );
00663
00664 private:
00665
00666
00667 bool m_firstLevelChild;
00668 };
00669
00670
00671
00672
00673
00674
00675
00676
00677
00678
00679
00680 class A2DCANVASDLLEXP a2dWalker_RemoveHierarchy: public a2dWalker_FilterCanvasObjects
00681 {
00682 public:
00683
00684
00685 a2dWalker_RemoveHierarchy( a2dCanvasObjectFlagsMask mask = a2dCanvasOFlags::ALL );
00686
00687
00688 a2dWalker_RemoveHierarchy( const a2dPropertyId* id , a2dCanvasObjectFlagsMask mask = a2dCanvasOFlags::ALL );
00689
00690
00691 a2dWalker_RemoveHierarchy( const a2dPropertyIdList& idList , a2dCanvasObjectFlagsMask mask = a2dCanvasOFlags::ALL );
00692
00693 ~a2dWalker_RemoveHierarchy();
00694
00695
00696 bool Start( a2dCanvasObject* object );
00697
00698 void Initialize();
00699
00700
00701 virtual bool WalkTask( wxObject* parent, wxObject* object, a2dWalkEvent event );
00702
00703 private:
00704
00705
00706 bool m_selected;
00707
00708
00709 bool m_firstLevelChild;
00710
00711
00712 a2dSmrtPtrList<a2dObject> m_parentList;
00713 };
00714
00715
00716
00717
00718
00719
00720
00721
00722
00723
00724 class A2DCANVASDLLEXP a2dWalker_LayerGroup: public a2dWalker_FilterCanvasObjects
00725 {
00726 public:
00727
00728
00729 a2dWalker_LayerGroup( a2dCanvasObjectFlagsMask mask = a2dCanvasOFlags::ALL );
00730
00731
00732 a2dWalker_LayerGroup( const a2dPropertyId* id , a2dCanvasObjectFlagsMask mask = a2dCanvasOFlags::ALL );
00733
00734
00735 a2dWalker_LayerGroup( const a2dPropertyIdList& idList , a2dCanvasObjectFlagsMask mask = a2dCanvasOFlags::ALL );
00736
00737
00738 ~a2dWalker_LayerGroup();
00739
00740
00741 void Initialize();
00742
00743
00744 bool Start( a2dCanvasObject* object );
00745
00746
00747 void SetGroupA( const a2dLayerGroup& groupA ) { m_groupA = groupA; }
00748
00749
00750 void SetGroupB( const a2dLayerGroup& groupB ) { m_groupB = groupB; }
00751
00752
00753 void SetTarget( wxUint16 targetlayer);
00754
00755
00756 void SetSelectedOnlyA( bool selectedOnlyA ) { m_selectedOnlyA = selectedOnlyA; }
00757
00758
00759 bool GetSelectedOnlyA() { return m_selectedOnlyA; }
00760
00761
00762 void SetSelectedOnlyB( bool selectedOnlyB ) { m_selectedOnlyB = selectedOnlyB; }
00763
00764
00765 bool GetSelectedOnlyB() { return m_selectedOnlyB; }
00766
00767 protected:
00768
00769
00770 a2dLayerGroup m_groupA;
00771
00772
00773 a2dLayerGroup m_groupB;
00774
00775
00776 wxUint16 m_target;
00777
00778
00779 bool m_selectedOnlyA;
00780
00781 bool m_selectedOnlyB;
00782
00783 };
00784
00785
00786
00787
00788
00789
00790
00791
00792
00793
00794
00795
00796
00797 class A2DCANVASDLLEXP a2dWalker_LayerCanvasObjects: public a2dWalker_LayerGroup
00798 {
00799 public:
00800
00801 typedef long Operation;
00802
00803
00804 static const long moveLayers;
00805
00806 static const long copyLayers;
00807
00808 static const long deleteLayers;
00809
00810 static const long ConvertToArcs;
00811
00812 static const long ConvertToPolygonPolylinesWithArcs;
00813
00814 static const long ConvertToPolygonPolylinesWithoutArcs;
00815
00816 static const long ConvertPolygonToArcs;
00817
00818 static const long ConvertPolylineToArcs;
00819
00820 static const long ConvertToVPaths;
00821
00822 static const long ConvertLinesArcs;
00823
00824 static const long ConvertToPolylines;
00825
00826 static const long RemoveRedundant;
00827
00828 static const long areaLayers;
00829
00830
00831 a2dWalker_LayerCanvasObjects( a2dCanvasObjectFlagsMask mask = a2dCanvasOFlags::ALL );
00832
00833
00834 a2dWalker_LayerCanvasObjects( const a2dPropertyId* id , a2dCanvasObjectFlagsMask mask = a2dCanvasOFlags::ALL );
00835
00836
00837 a2dWalker_LayerCanvasObjects( const a2dPropertyIdList& idList , a2dCanvasObjectFlagsMask mask = a2dCanvasOFlags::ALL );
00838
00839
00840 ~a2dWalker_LayerCanvasObjects();
00841
00842
00843 void Initialize();
00844
00845
00846 virtual bool WalkTask( wxObject* parent, wxObject* object, a2dWalkEvent event );
00847
00848
00849 void SetOperation( Operation operation ) { m_operation = operation; }
00850
00851
00852 void SetRadiusMin( double radiusMin ) { m_radiusMin = radiusMin; }
00853
00854 void SetRadiusMax( double radiusMax ) { m_radiusMax = radiusMax; }
00855
00856 void SetAberPolyToArc( double aber ) { m_AberPolyToArc = aber; }
00857
00858
00859
00860 void SetDetectCircle( bool detectCircle ) { m_detectCircle = detectCircle; }
00861
00862
00863 bool GetDetectCircle() { return m_detectCircle; }
00864
00865
00866 double GetCalculatedArea() { return m_calculatedArea; }
00867
00868 protected:
00869
00870 void AddArea( a2dCanvasObject* getAsPolyObject );
00871
00872
00873 double m_radiusMin;
00874
00875 double m_radiusMax;
00876
00877 double m_AberPolyToArc;
00878
00879 bool m_detectCircle;
00880
00881 double m_calculatedArea;
00882
00883
00884 Operation m_operation;
00885 };
00886
00887
00888
00889
00890
00891 class A2DCANVASDLLEXP a2dWalker_DetectSmall: public a2dWalker_LayerGroup
00892 {
00893 public:
00894
00895
00896 a2dWalker_DetectSmall( a2dCanvasObjectFlagsMask mask = a2dCanvasOFlags::ALL );
00897
00898
00899 a2dWalker_DetectSmall( const a2dPropertyId* id , a2dCanvasObjectFlagsMask mask = a2dCanvasOFlags::ALL );
00900
00901
00902 a2dWalker_DetectSmall( const a2dPropertyIdList& idList , a2dCanvasObjectFlagsMask mask = a2dCanvasOFlags::ALL );
00903
00904
00905 ~a2dWalker_DetectSmall();
00906
00907
00908 void Initialize();
00909
00910
00911 void SetSmall( double smallest ) { m_small = smallest; }
00912
00913
00914 void SetAsString( bool asString ) { m_asString = asString; }
00915
00916
00917 bool GetAsString() { return m_asString; }
00918
00919 bool Start( a2dCanvasObject* object );
00920
00921
00922 virtual bool WalkTask( wxObject* parent, wxObject* object, a2dWalkEvent event );
00923
00924 #if wxUSE_STD_IOSTREAM
00925 const wxString& GetString() const
00926 {
00927 static wxString aap = wxString( m_strstream.str().c_str(), wxConvUTF8 );
00928 return aap;
00929 }
00930 #else
00931 const wxString GetString() const { return m_strstream.GetString(); }
00932 #endif
00933
00934 protected:
00935
00936 a2dIOHandlerCVGOut m_CVGwriter;
00937 a2dDocumentStringOutputStream m_strstream;
00938 bool m_asString;
00939 double m_small;
00940 };
00941
00942
00943
00944
00945
00946 class A2DCANVASDLLEXP a2dWalker_DetectSmallSegments: public a2dWalker_LayerGroup
00947 {
00948 public:
00949
00950
00951 a2dWalker_DetectSmallSegments( a2dCanvasObjectFlagsMask mask = a2dCanvasOFlags::ALL );
00952
00953
00954 a2dWalker_DetectSmallSegments( const a2dPropertyId* id , a2dCanvasObjectFlagsMask mask = a2dCanvasOFlags::ALL );
00955
00956
00957 a2dWalker_DetectSmallSegments( const a2dPropertyIdList& idList , a2dCanvasObjectFlagsMask mask = a2dCanvasOFlags::ALL );
00958
00959
00960 ~a2dWalker_DetectSmallSegments();
00961
00962
00963 void Initialize();
00964
00965
00966 void SetSmall( double smallest ) { m_small = smallest; }
00967
00968
00969 void SetAsString( bool asString ) { m_asString = asString; }
00970
00971
00972 bool GetAsString() { return m_asString; }
00973
00974 bool Start( a2dCanvasObject* object );
00975
00976
00977 virtual bool WalkTask( wxObject* parent, wxObject* object, a2dWalkEvent event );
00978
00979 #if wxUSE_STD_IOSTREAM
00980 const wxString& GetString() const
00981 {
00982 static wxString aap = wxString( m_strstream.str().c_str(), wxConvUTF8 );
00983 return aap;
00984 }
00985 #else
00986 const wxString GetString() const { return m_strstream.GetString(); }
00987 #endif
00988
00989 protected:
00990
00991 a2dIOHandlerCVGOut m_CVGwriter;
00992 a2dDocumentStringOutputStream m_strstream;
00993 bool m_asString;
00994 double m_small;
00995 };
00996
00997
00998
00999
01000
01001
01002
01003
01004
01005
01006
01007 class A2DCANVASDLLEXP a2dWalker_FindAndSetCorridorPath: public a2dWalker_FindCanvasObject
01008 {
01009 public:
01010
01011
01012
01013
01014
01015
01016
01017
01018
01019 a2dWalker_FindAndSetCorridorPath( a2dCanvasObject* findObject );
01020
01021
01022 ~a2dWalker_FindAndSetCorridorPath();
01023
01024
01025 virtual bool WalkTask( wxObject* parent, wxObject* object, a2dWalkEvent event );
01026 };
01027
01028
01029
01030
01031
01032
01033
01034
01035 class A2DCANVASDLLEXP a2dWalker_AllowedObjects: public a2dWalker_LayerGroup
01036 {
01037 public:
01038
01039
01040 a2dWalker_AllowedObjects( a2dCanvasObjectFlagsMask mask = a2dCanvasOFlags::ALL );
01041
01042
01043 a2dWalker_AllowedObjects( const a2dPropertyId* id , a2dCanvasObjectFlagsMask mask = a2dCanvasOFlags::ALL );
01044
01045
01046 a2dWalker_AllowedObjects( const a2dPropertyIdList& idList , a2dCanvasObjectFlagsMask mask = a2dCanvasOFlags::ALL );
01047
01048
01049 ~a2dWalker_AllowedObjects();
01050
01051
01052 void Initialize();
01053
01054
01055 void SetAsString( bool asString ) { m_asString = asString; }
01056
01057
01058 bool GetAsString() { return m_asString; }
01059
01060
01061 void SetStore( bool store ) { m_store = store; }
01062
01063
01064 bool GetStore() { return m_store; }
01065
01066 bool Start( a2dCanvasObject* object );
01067
01068
01069 virtual bool WalkTask( wxObject* parent, wxObject* object, a2dWalkEvent event );
01070
01071 #if wxUSE_STD_IOSTREAM
01072 const wxString& GetString() const
01073 {
01074 static wxString aap = wxString( m_strstream.str().c_str(), wxConvUTF8 );
01075 return aap;
01076 }
01077 #else
01078 const wxString GetString() const { return m_strstream.GetString(); }
01079 #endif
01080
01081 protected:
01082
01083 a2dIOHandlerCVGOut m_CVGwriter;
01084 a2dDocumentStringOutputStream m_strstream;
01085 bool m_asString;
01086 bool m_store;
01087 };
01088
01089
01090
01091
01092
01093
01094 class A2DCANVASDLLEXP a2dWalkerIOHandlerWithContext: public a2dWalkerIOHandler
01095 {
01096 public:
01097
01098
01099 a2dWalkerIOHandlerWithContext( a2dIterC& ic );
01100
01101
01102 ~a2dWalkerIOHandlerWithContext();
01103
01104
01105 void Initialize();
01106
01107
01108 bool Start( a2dCanvasObject* object );
01109
01110
01111 virtual bool WalkTask( a2dIterC& ic, wxObject* parent, wxObject* object, a2dWalkEvent event ) = 0;
01112
01113 a2dIterC* m_context;
01114 };
01115
01116
01117
01118
01119
01120
01121 class a2dWalker_RenderLayers: public a2dWalkerIOHandlerWithContext
01122 {
01123 public:
01124
01125
01126 a2dWalker_RenderLayers( a2dIterC& ic );
01127
01128
01129 ~a2dWalker_RenderLayers();
01130
01131
01132 virtual bool WalkTask( a2dIterC& ic, wxObject* parent, wxObject* object, a2dWalkEvent event );
01133
01134 void Render( a2dIterC& ic, a2dCanvasObject* canobj, OVERLAP clipparent );
01135 };
01136
01137
01138 #endif