source: git/src/mainfrm.h @ e2df869

RELEASE/1.0RELEASE/1.2debug-cidebug-ci-sanitisersfaster-cavernloglog-selectstereostereo-2025walls-datawalls-data-hanging-as-warningwarn-only-for-hanging-survey
Last change on this file since e2df869 was e2df869, checked in by Olly Betts <olly@…>, 23 years ago

Stripped out AVENPRES stuff

git-svn-id: file:///home/survex-svn/survex/trunk@2093 4b37db11-9a0c-4f06-9ece-9ab7cdaee568

  • Property mode set to 100644
File size: 17.6 KB
RevLine 
[5809313]1//
2//  mainfrm.h
3//
4//  Main frame handling for Aven.
5//
6//  Copyright (C) 2000-2001, Mark R. Shinwell.
[5a9b8cc]7//  Copyright (C) 2001-2002 Olly Betts
[5809313]8//
9//  This program is free software; you can redistribute it and/or modify
10//  it under the terms of the GNU General Public License as published by
11//  the Free Software Foundation; either version 2 of the License, or
12//  (at your option) any later version.
13//
14//  This program is distributed in the hope that it will be useful,
15//  but WITHOUT ANY WARRANTY; without even the implied warranty of
16//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17//  GNU General Public License for more details.
18//
19//  You should have received a copy of the GNU General Public License
20//  along with this program; if not, write to the Free Software
21//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
22//
23
24#ifndef mainfrm_h
25#define mainfrm_h
26
27#include "wx.h"
[732b9b0]28#include "wx/docview.h"
[137bf99]29#include "gfxcore.h"
30#include "message.h"
[156dc16]31#include "aventreectrl.h"
[2d9ed8ad]32#include "img.h"
[156dc16]33
[137bf99]34#include <list>
[2c30188]35#if 0 // if you turn this back on, reenabled the check in configure.in too
[1efb58c]36#ifdef HAVE_EXT_HASH_MAP
[dc8d2eb]37#include <ext/hash_map>
[1efb58c]38#elif defined HAVE_HASH_MAP
[156dc16]39#include <hash_map>
[1efb58c]40#else
41#include <map>
42#define hash_map map
[dc8d2eb]43#endif
[2c30188]44#endif
[5809313]45
[137bf99]46using namespace std;
[5341d94]47
[f17e6dc6]48#include <math.h>
49
50// This is for mingw32/Visual C++:
51#ifndef M_PI
52#define M_PI 3.14159265358979323846
53#endif
54
[137bf99]55extern const int NUM_DEPTH_COLOURS;
56
57enum {
58    menu_FILE_OPEN = 1000,
[156dc16]59    menu_FILE_OPEN_PRES,
[137bf99]60    menu_FILE_QUIT,
61    menu_ROTATION_START,
62    menu_ROTATION_STOP,
[2d9ed8ad]63    menu_ROTATION_TOGGLE,
[137bf99]64    menu_ROTATION_SPEED_UP,
65    menu_ROTATION_SLOW_DOWN,
66    menu_ROTATION_REVERSE,
67    menu_ROTATION_STEP_CCW,
68    menu_ROTATION_STEP_CW,
69    menu_ORIENT_MOVE_NORTH,
70    menu_ORIENT_MOVE_EAST,
71    menu_ORIENT_MOVE_SOUTH,
72    menu_ORIENT_MOVE_WEST,
73    menu_ORIENT_SHIFT_LEFT,
74    menu_ORIENT_SHIFT_RIGHT,
75    menu_ORIENT_SHIFT_UP,
76    menu_ORIENT_SHIFT_DOWN,
77    menu_ORIENT_PLAN,
78    menu_ORIENT_ELEVATION,
79    menu_ORIENT_HIGHER_VP,
80    menu_ORIENT_LOWER_VP,
81    menu_ORIENT_ZOOM_IN,
82    menu_ORIENT_ZOOM_OUT,
83    menu_ORIENT_DEFAULTS,
84    menu_VIEW_SHOW_LEGS,
85    menu_VIEW_SHOW_CROSSES,
86    menu_VIEW_SHOW_NAMES,
87    menu_VIEW_SHOW_SURFACE,
88    menu_VIEW_SURFACE_DEPTH,
89    menu_VIEW_SURFACE_DASHED,
90    menu_VIEW_SHOW_OVERLAPPING_NAMES,
[fe444b8]91    menu_VIEW_SHOW_ENTRANCES,
92    menu_VIEW_SHOW_FIXED_PTS,
93    menu_VIEW_SHOW_EXPORTED_PTS,
[e3513a5]94    menu_VIEW_INDICATORS,
[137bf99]95    menu_VIEW_COMPASS,
96    menu_VIEW_CLINO,
97    menu_VIEW_DEPTH_BAR,
98    menu_VIEW_SCALE_BAR,
99    menu_VIEW_STATUS_BAR,
[c1cf79d]100    menu_VIEW_GRID,
[9059368]101    menu_VIEW_SIDE_PANEL,
[7a89dc2]102    menu_VIEW_METRIC,
103    menu_VIEW_DEGREES,
[156dc16]104    menu_PRES_CREATE,
105    menu_PRES_GO,
106    menu_PRES_GO_BACK,
107    menu_PRES_RESTART,
108    menu_PRES_RECORD,
109    menu_PRES_FINISH,
110    menu_PRES_ERASE,
111    menu_PRES_ERASE_ALL,
[137bf99]112    menu_CTL_REVERSE,
[1fd2edb]113    menu_CTL_CANCEL_DIST_LINE,
[2a02de2]114    menu_HELP_ABOUT,
115    button_FIND,
116    button_HIDE
[137bf99]117};
118
119class PointInfo {
120    friend class MainFrm;
[c6d95d8]121    Double x, y, z;
[137bf99]122    bool isLine; // false => move, true => draw line
123    bool isSurface;
124
125public:
[c6d95d8]126    Double GetX() const { return x; }
127    Double GetY() const { return y; }
128    Double GetZ() const { return z; }
[137bf99]129    bool IsLine() const { return isLine; }
130    bool IsSurface() const { return isSurface; }
131};
132
[fa42426]133#define LFLAG_SURFACE           img_SFLAG_SURFACE
134#define LFLAG_UNDERGROUND       img_SFLAG_UNDERGROUND
135#define LFLAG_EXPORTED          img_SFLAG_EXPORTED
136#define LFLAG_FIXED             img_SFLAG_FIXED
137#define LFLAG_ENTRANCE          0x100
138#define LFLAG_HIGHLIGHTED       0x200
139
140class LabelPlotCmp;
141
[137bf99]142class LabelInfo {
143    friend class MainFrm;
[d5de678]144    friend class GfxCore;
[fa42426]145    friend class LabelPlotCmp;
[c6d95d8]146    Double x, y, z;
[137bf99]147    wxString text;
[2d9ed8ad]148    int flags;
[6dde19f]149    wxTreeItemId tree_id;
[e521e318]150
151public:
[c6d95d8]152    Double GetX() const { return x; }
153    Double GetY() const { return y; }
154    Double GetZ() const { return z; }
[2d9ed8ad]155
[137bf99]156    wxString GetText() const { return text; }
[2d9ed8ad]157
[fa42426]158    bool IsEntrance() const { return flags & LFLAG_ENTRANCE; }
159    bool IsFixedPt() const { return flags & LFLAG_FIXED; }
160    bool IsExportedPt() const { return flags & LFLAG_EXPORTED; }
161    bool IsUnderground() const { return flags & LFLAG_UNDERGROUND; }
162    bool IsSurface() const { return flags & LFLAG_SURFACE; }
163    bool IsHighLighted() const { return flags & LFLAG_HIGHLIGHTED; }
[137bf99]164};
165
166class MainFrm : public wxFrame {
[732b9b0]167    wxFileHistory m_history;
[9059368]168    int m_SashPosition;
[137bf99]169    list<PointInfo*>* m_Points;
170    list<LabelInfo*> m_Labels;
[c6d95d8]171    Double m_XExt;
172    Double m_YExt;
173    Double m_ZExt;
174    Double m_XMin;
175    Double m_YMin;
176    Double m_ZMin;
[137bf99]177    int m_NumLegs;
178    int m_NumPoints;
179    int m_NumCrosses;
180    int m_NumExtraLegs;
181    GfxCore* m_Gfx;
182    wxPen* m_Pens;
183    wxBrush* m_Brushes;
[a9a32f2]184    int m_NumEntrances;
185    int m_NumFixedPts;
186    int m_NumExportedPts;
[156dc16]187    wxSplitterWindow* m_Splitter;
188    wxPanel* m_Panel;
189    AvenTreeCtrl* m_Tree;
190    wxTreeItemId m_TreeRoot;
191    wxTextCtrl* m_FindBox;
192    wxStaticText* m_MousePtr;
193    wxStaticText* m_Coords;
194    wxStaticText* m_StnCoords;
195    wxStaticText* m_StnName;
196    wxStaticText* m_StnAlt;
197    wxStaticText* m_Dist1;
198    wxStaticText* m_Dist2;
199    wxStaticText* m_Dist3;
[01faa28]200    wxStaticText* m_Found;
[2a02de2]201    wxCheckBox* m_RegexpCheckBox;
[156dc16]202    wxString m_File;
[9f9c05e]203    int separator; // character separating survey levels (often '.')
[156dc16]204
205    struct {
[421b7d2]206        Double x, y, z;
[156dc16]207    } m_Offsets;
[8000d8f]208
[6dde19f]209    void SetTreeItemColour(LabelInfo* label);
[156dc16]210    void FillTree();
[137bf99]211    void ClearPointLists();
[1d0cd97]212    bool LoadData(const wxString& file, wxString prefix = "");
[137bf99]213    void SortIntoDepthBands(list<PointInfo*>& points);
[c6d95d8]214    void IntersectLineWithPlane(Double x0, Double y0, Double z0,
215                                Double x1, Double y1, Double z1,
216                                Double z, Double& x, Double& y);
217    Double GetDepthBoundaryBetweenBands(int a, int b);
218    int GetDepthColour(Double z);
219    void CentreDataset(Double xmin, Double ymin, Double zmin);
[137bf99]220
221    wxString GetTabMsg(int key) {
[421b7d2]222        wxString x(msg(key)); x.Replace("##", "\t"); x.Replace("@", "&"); return x;
[137bf99]223    }
224
[9d3d8cc]225    void InitialisePensAndBrushes();
226    void CreateMenuBar();
227    void CreateToolBar();
228    void CreateSidePanel();
229
[137bf99]230public:
231    MainFrm(const wxString& title, const wxPoint& pos, const wxSize& size);
[5809313]232    ~MainFrm();
233
[732b9b0]234    void OnMRUFile(wxCommandEvent& event);
[5901b62]235    void OpenFile(const wxString& file, wxString survey = "", bool delay = false);
[8000d8f]236    void OnFileOpenTerrainUpdate(wxUpdateUIEvent& event);
[137bf99]237
[2a02de2]238    void OnFind(wxCommandEvent& event);
239    void OnHide(wxCommandEvent& event);
240
[5809313]241    void OnOpen(wxCommandEvent& event);
[8000d8f]242    void OnFileOpenTerrain(wxCommandEvent& event);
[5809313]243    void OnQuit(wxCommandEvent& event);
[5ffa439]244
[573f4e9]245    void OnAbout(wxCommandEvent& event);
[137bf99]246    void OnClose(wxCloseEvent&);
247
[4b1fc48]248    void OnSetFocus(wxFocusEvent &e) { if (m_Gfx) m_Gfx->SetFocus(); }
249
[137bf99]250    // temporary bodges until event handling problem is sorted out:
251    void OnDefaultsUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnDefaultsUpdate(event); }
252    void OnPlanUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnPlanUpdate(event); }
253    void OnElevationUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnElevationUpdate(event); }
254    void OnDisplayOverlappingNamesUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnDisplayOverlappingNamesUpdate(event); }
255    void OnShowCrossesUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnShowCrossesUpdate(event); }
[fe444b8]256    void OnShowEntrancesUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnShowEntrancesUpdate(event); }
257    void OnShowFixedPtsUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnShowFixedPtsUpdate(event); }
258    void OnShowExportedPtsUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnShowExportedPtsUpdate(event); }
[137bf99]259    void OnShowStationNamesUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnShowStationNamesUpdate(event); }
260    void OnShowSurveyLegsUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnShowSurveyLegsUpdate(event); }
261    void OnShowSurfaceUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnShowSurfaceUpdate(event); }
262    void OnShowSurfaceDepthUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnShowSurfaceDepthUpdate(event); }
263    void OnShowSurfaceDashedUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnShowSurfaceDashedUpdate(event); }
264    void OnMoveEastUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnMoveEastUpdate(event); }
265    void OnMoveNorthUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnMoveNorthUpdate(event); }
266    void OnMoveSouthUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnMoveSouthUpdate(event); }
267    void OnMoveWestUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnMoveWestUpdate(event); }
268    void OnStartRotationUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnStartRotationUpdate(event); }
[7ebc3d1]269    void OnToggleRotationUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnToggleRotationUpdate(event); }
[137bf99]270    void OnStopRotationUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnStopRotationUpdate(event); }
271    void OnReverseControlsUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnReverseControlsUpdate(event); }
272    void OnSlowDownUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnSlowDownUpdate(event); }
273    void OnSpeedUpUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnSpeedUpUpdate(event); }
274    void OnStepOnceAnticlockwiseUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnStepOnceAnticlockwiseUpdate(event); }
275    void OnStepOnceClockwiseUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnStepOnceClockwiseUpdate(event); }
276    void OnHigherViewpointUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnHigherViewpointUpdate(event); }
277    void OnLowerViewpointUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnLowerViewpointUpdate(event); }
278    void OnShiftDisplayDownUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnShiftDisplayDownUpdate(event); }
279    void OnShiftDisplayLeftUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnShiftDisplayLeftUpdate(event); }
280    void OnShiftDisplayRightUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnShiftDisplayRightUpdate(event); }
281    void OnShiftDisplayUpUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnShiftDisplayUpUpdate(event); }
282    void OnZoomInUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnZoomInUpdate(event); }
283    void OnZoomOutUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnZoomOutUpdate(event); }
284    void OnToggleScalebarUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnToggleScalebarUpdate(event); }
285    void OnToggleDepthbarUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnToggleDepthbarUpdate(event); }
286    void OnViewCompassUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnViewCompassUpdate(event); }
[c1cf79d]287    void OnViewGridUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnViewGridUpdate(event); }
[137bf99]288    void OnViewClinoUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnViewClinoUpdate(event); }
289    void OnReverseDirectionOfRotationUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnReverseDirectionOfRotationUpdate(event); }
[1fd2edb]290    void OnCancelDistLineUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnCancelDistLineUpdate(event); }
[e3513a5]291    void OnIndicatorsUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnIndicatorsUpdate(event); }
[137bf99]292
[1fd2edb]293    void OnDefaults(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnDefaults(); }
294    void OnPlan(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnPlan(); }
295    void OnElevation(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnElevation(); }
296    void OnDisplayOverlappingNames(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnDisplayOverlappingNames(); }
297    void OnShowCrosses(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnShowCrosses(); }
298    void OnShowEntrances(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnShowEntrances(); }
299    void OnShowFixedPts(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnShowFixedPts(); }
300    void OnShowExportedPts(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnShowExportedPts(); }
301    void OnShowStationNames(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnShowStationNames(); }
302    void OnShowSurveyLegs(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnShowSurveyLegs(); }
303    void OnShowSurface(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnShowSurface(); }
304    void OnShowSurfaceDepth(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnShowSurfaceDepth(); }
305    void OnShowSurfaceDashed(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnShowSurfaceDashed(); }
306    void OnMoveEast(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnMoveEast(); }
307    void OnMoveNorth(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnMoveNorth(); }
308    void OnMoveSouth(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnMoveSouth(); }
309    void OnMoveWest(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnMoveWest(); }
310    void OnStartRotation(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnStartRotation(); }
311    void OnToggleRotation(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnToggleRotation(); }
312    void OnStopRotation(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnStopRotation(); }
313    void OnReverseControls(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnReverseControls(); }
314    void OnSlowDown(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnSlowDown(); }
315    void OnSpeedUp(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnSpeedUp(); }
316    void OnStepOnceAnticlockwise(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnStepOnceAnticlockwise(); }
317    void OnStepOnceClockwise(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnStepOnceClockwise(); }
318    void OnHigherViewpoint(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnHigherViewpoint(); }
319    void OnLowerViewpoint(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnLowerViewpoint(); }
[4b1fc48]320    void OnShiftDisplayDown(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnShiftDisplayDown(); }
321    void OnShiftDisplayLeft(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnShiftDisplayLeft(); }
322    void OnShiftDisplayRight(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnShiftDisplayRight(); }
323    void OnShiftDisplayUp(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnShiftDisplayUp(); }
[1fd2edb]324    void OnZoomIn(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnZoomIn(); }
325    void OnZoomOut(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnZoomOut(); }
326    void OnToggleScalebar(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnToggleScalebar(); }
327    void OnToggleDepthbar(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnToggleDepthbar(); }
328    void OnViewCompass(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnViewCompass(); }
329    void OnViewClino(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnViewClino(); }
330    void OnViewGrid(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnViewGrid(); }
331    void OnReverseDirectionOfRotation(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnReverseDirectionOfRotation(); }
[6d109e5]332    void OnCancelDistLine(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnCancelDistLine(); }
[137bf99]333    // end of horrible bodges
[421b7d2]334
[7a89dc2]335    void OnToggleMetric(wxCommandEvent&) { if (m_Gfx) m_Gfx->OnToggleMetric(); }
336    void OnToggleDegrees(wxCommandEvent&) { if (m_Gfx) m_Gfx->OnToggleDegrees(); }
[5757725]337
[7a89dc2]338    void OnToggleMetricUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnToggleMetricUpdate(event); }
339    void OnToggleDegreesUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnToggleDegreesUpdate(event); }
[5757725]340
[9059368]341    void OnViewSidePanelUpdate(wxUpdateUIEvent& event);
342    void OnViewSidePanel(wxCommandEvent& event);
[b1de3e0]343    void ToggleSidePanel();
[137bf99]344
[003d953]345    Double GetXExtent() const { return m_XExt; }
346    Double GetYExtent() const { return m_YExt; }
347    Double GetZExtent() const { return m_ZExt; }
348    Double GetXMin() const { return m_XMin; }
349    Double GetYMin() const { return m_YMin; }
350    Double GetYMax() const { return m_YMin + m_YExt; }
351    Double GetZMin() const { return m_ZMin; }
352    Double GetZMax() const { return m_ZMin + m_ZExt; }
353
354    int GetNumLegs() const { return m_NumLegs; }
355    int GetNumPoints() const { return m_NumPoints; }
356    int GetNumCrosses() const { return m_NumCrosses; }
[137bf99]357
[003d953]358    int GetNumDepthBands() const { return NUM_DEPTH_COLOURS; }
[137bf99]359
[003d953]360    wxPen GetPen(int band) const {
[421b7d2]361        assert(band >= 0 && band < NUM_DEPTH_COLOURS);
362        return m_Pens[band];
[137bf99]363    }
364
[003d953]365    wxBrush GetBrush(int band) const {
[421b7d2]366        assert(band >= 0 && band < NUM_DEPTH_COLOURS);
367        return m_Brushes[band];
[137bf99]368    }
369
[003d953]370    void GetColour(int band, Double& r, Double& g, Double& b) const;
[c6d95d8]371
[003d953]372    wxPen GetSurfacePen() const { return m_Pens[NUM_DEPTH_COLOURS]; }
[137bf99]373
[6dde19f]374    void SelectTreeItem(LabelInfo* label);
[1fd2edb]375    void ClearTreeSelection();
376
[003d953]377    int GetNumFixedPts() const { return m_NumFixedPts; }
378    int GetNumExportedPts() const { return m_NumExportedPts; }
379    int GetNumEntrances() const { return m_NumEntrances; }
[a9a32f2]380
[156dc16]381    void ClearCoords();
382    void SetCoords(Double x, Double y);
[7a89dc2]383    void SetAltitude(Double z);
[156dc16]384
[003d953]385    Double GetXOffset() const { return m_Offsets.x; }
386    Double GetYOffset() const { return m_Offsets.y; }
387    Double GetZOffset() const { return m_Offsets.z; }
[156dc16]388
[39e460c9]389    void SetMouseOverStation(LabelInfo* label);
390
[003d953]391    list<PointInfo*>::iterator GetPointsNC(int band) const {
[421b7d2]392        assert(band >= 0 && band < NUM_DEPTH_COLOURS);
393        return m_Points[band].begin();
[ee119518]394    }
395
[003d953]396    list<PointInfo*>::iterator GetPointsEndNC(int band) const {
[421b7d2]397        assert(band >= 0 && band < NUM_DEPTH_COLOURS);
398        return m_Points[band].end();
[ee119518]399    }
400
[003d953]401    list<PointInfo*>::const_iterator GetPoints(int band) const {
[421b7d2]402        assert(band >= 0 && band < NUM_DEPTH_COLOURS);
403        return m_Points[band].begin();
[137bf99]404    }
405
[003d953]406    list<PointInfo*>::const_iterator GetPointsEnd(int band) const {
[421b7d2]407        assert(band >= 0 && band < NUM_DEPTH_COLOURS);
408        return m_Points[band].end();
[137bf99]409    }
410
[fa42426]411    list<LabelInfo*>::const_iterator GetLabels() const {
412        return m_Labels.begin();
413    }
414
[003d953]415    list<LabelInfo*>::const_iterator GetLabelsEnd() const {
[421b7d2]416        return m_Labels.end();
[137bf99]417    }
[5809313]418
[fa42426]419    list<LabelInfo*>::const_reverse_iterator GetRevLabels() const {
420        return m_Labels.rbegin();
421    }
422
423    list<LabelInfo*>::const_reverse_iterator GetRevLabelsEnd() const {
424        return m_Labels.rend();
425    }
426
[8734409]427    void ShowInfo(const LabelInfo *label);
428    void DisplayTreeInfo(const wxTreeItemData* data);
[156dc16]429    void TreeItemSelected(wxTreeItemData* data);
[8bac36d6]430
[84cab34]431private:
432    DECLARE_EVENT_TABLE()
[5809313]433};
434
435#endif
Note: See TracBrowser for help on using the repository browser.