source: git/src/mainfrm.h @ 4f39124

v1.0.7
Last change on this file since 4f39124 was 2c30188, checked in by Olly Betts <olly@…>, 23 years ago

Removed an amazing amount of dead code from aven.

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

  • Property mode set to 100644
File size: 19.8 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"
[137bf99]28#include "gfxcore.h"
29#include "message.h"
[156dc16]30#include "aventreectrl.h"
[2d9ed8ad]31#include "img.h"
[156dc16]32
[137bf99]33#include <list>
[2c30188]34#if 0 // if you turn this back on, reenabled the check in configure.in too
[1efb58c]35#ifdef HAVE_EXT_HASH_MAP
[dc8d2eb]36#include <ext/hash_map>
[1efb58c]37#elif defined HAVE_HASH_MAP
[156dc16]38#include <hash_map>
[1efb58c]39#else
40#include <map>
41#define hash_map map
[dc8d2eb]42#endif
[2c30188]43#endif
[5809313]44
[137bf99]45using namespace std;
[5341d94]46
[f17e6dc6]47#include <math.h>
48
49// This is for mingw32/Visual C++:
50#ifndef M_PI
51#define M_PI 3.14159265358979323846
52#endif
53
[137bf99]54extern const int NUM_DEPTH_COLOURS;
55
56enum {
57    menu_FILE_OPEN = 1000,
[156dc16]58    menu_FILE_OPEN_PRES,
[8000d8f]59#ifdef AVENGL
60    menu_FILE_OPEN_TERRAIN,
61#endif
[137bf99]62    menu_FILE_QUIT,
63    menu_ROTATION_START,
64    menu_ROTATION_STOP,
[2d9ed8ad]65    menu_ROTATION_TOGGLE,
[137bf99]66    menu_ROTATION_SPEED_UP,
67    menu_ROTATION_SLOW_DOWN,
68    menu_ROTATION_REVERSE,
69    menu_ROTATION_STEP_CCW,
70    menu_ROTATION_STEP_CW,
71    menu_ORIENT_MOVE_NORTH,
72    menu_ORIENT_MOVE_EAST,
73    menu_ORIENT_MOVE_SOUTH,
74    menu_ORIENT_MOVE_WEST,
75    menu_ORIENT_SHIFT_LEFT,
76    menu_ORIENT_SHIFT_RIGHT,
77    menu_ORIENT_SHIFT_UP,
78    menu_ORIENT_SHIFT_DOWN,
79    menu_ORIENT_PLAN,
80    menu_ORIENT_ELEVATION,
81    menu_ORIENT_HIGHER_VP,
82    menu_ORIENT_LOWER_VP,
83    menu_ORIENT_ZOOM_IN,
84    menu_ORIENT_ZOOM_OUT,
85    menu_ORIENT_DEFAULTS,
86    menu_VIEW_SHOW_LEGS,
87    menu_VIEW_SHOW_CROSSES,
88    menu_VIEW_SHOW_NAMES,
89    menu_VIEW_SHOW_SURFACE,
90    menu_VIEW_SURFACE_DEPTH,
91    menu_VIEW_SURFACE_DASHED,
92    menu_VIEW_SHOW_OVERLAPPING_NAMES,
[fe444b8]93    menu_VIEW_SHOW_ENTRANCES,
94    menu_VIEW_SHOW_FIXED_PTS,
95    menu_VIEW_SHOW_EXPORTED_PTS,
[e3513a5]96    menu_VIEW_INDICATORS,
[137bf99]97    menu_VIEW_COMPASS,
98    menu_VIEW_CLINO,
99    menu_VIEW_DEPTH_BAR,
100    menu_VIEW_SCALE_BAR,
101    menu_VIEW_STATUS_BAR,
[c1cf79d]102    menu_VIEW_GRID,
[9059368]103    menu_VIEW_SIDE_PANEL,
[c6d95d8]104#ifdef AVENGL
105    menu_VIEW_ANTIALIAS,
[8000d8f]106    menu_VIEW_SOLID_SURFACE,
[c6d95d8]107#endif
[7a89dc2]108    menu_VIEW_METRIC,
109    menu_VIEW_DEGREES,
[156dc16]110    menu_PRES_CREATE,
111    menu_PRES_GO,
112    menu_PRES_GO_BACK,
113    menu_PRES_RESTART,
114    menu_PRES_RECORD,
115    menu_PRES_FINISH,
116    menu_PRES_ERASE,
117    menu_PRES_ERASE_ALL,
[137bf99]118    menu_CTL_REVERSE,
[1fd2edb]119    menu_CTL_CANCEL_DIST_LINE,
[2a02de2]120    menu_HELP_ABOUT,
121    button_FIND,
122    button_HIDE
[137bf99]123};
124
125class PointInfo {
126    friend class MainFrm;
[c6d95d8]127    Double x, y, z;
[137bf99]128    bool isLine; // false => move, true => draw line
129    bool isSurface;
[e61185d]130    wxPoint* dest;
[137bf99]131
132public:
[c6d95d8]133    Double GetX() const { return x; }
134    Double GetY() const { return y; }
135    Double GetZ() const { return z; }
[137bf99]136    bool IsLine() const { return isLine; }
137    bool IsSurface() const { return isSurface; }
[ee119518]138
[e61185d]139    void SetDestination(wxPoint* p) { dest = p; }
140    wxPoint* GetDestination() const { return dest; }
[137bf99]141};
142
143class LabelInfo {
144    friend class MainFrm;
[c6d95d8]145    Double x, y, z;
[137bf99]146    wxString text;
[2d9ed8ad]147    int flags;
[6dde19f]148    wxTreeItemId tree_id;
[e521e318]149
150public:
[c6d95d8]151    Double GetX() const { return x; }
152    Double GetY() const { return y; }
153    Double GetZ() const { return z; }
[2d9ed8ad]154
[137bf99]155    wxString GetText() const { return text; }
[2d9ed8ad]156
157    bool IsEntrance() const { return flags & img_SFLAG_ENTRANCE; }
158    bool IsFixedPt() const { return flags & img_SFLAG_FIXED; }
159    bool IsExportedPt() const { return flags & img_SFLAG_EXPORTED; }
160    bool IsUnderground() const { return flags & img_SFLAG_UNDERGROUND; }
161    bool IsSurface() const { return flags & img_SFLAG_SURFACE; }
[137bf99]162};
163
164class MainFrm : public wxFrame {
[9059368]165    int m_SashPosition;
[137bf99]166    list<PointInfo*>* m_Points;
167    list<LabelInfo*> m_Labels;
[c6d95d8]168    Double m_XExt;
169    Double m_YExt;
170    Double m_ZExt;
171    Double m_XMin;
172    Double m_YMin;
173    Double m_ZMin;
[137bf99]174    int m_NumLegs;
175    int m_NumPoints;
176    int m_NumCrosses;
177    int m_NumExtraLegs;
178    GfxCore* m_Gfx;
179    wxPen* m_Pens;
180    wxBrush* m_Brushes;
[a9a32f2]181    int m_NumEntrances;
182    int m_NumFixedPts;
183    int m_NumExportedPts;
[156dc16]184    wxSplitterWindow* m_Splitter;
185    wxPanel* m_Panel;
186    AvenTreeCtrl* m_Tree;
187    wxTreeItemId m_TreeRoot;
188    wxTextCtrl* m_FindBox;
189    wxStaticText* m_MousePtr;
190    wxStaticText* m_Coords;
191    wxStaticText* m_StnCoords;
192    wxStaticText* m_StnName;
193    wxStaticText* m_StnAlt;
194    wxStaticText* m_Dist1;
195    wxStaticText* m_Dist2;
196    wxStaticText* m_Dist3;
[01faa28]197    wxStaticText* m_Found;
[2a02de2]198    wxCheckBox* m_RegexpCheckBox;
[156dc16]199    wxString m_File;
[2c30188]200#ifdef AVENPRES
201    FILE* m_PresFP;
[156dc16]202    bool m_PresLoaded;
203    bool m_Recording;
[2c30188]204#endif
[156dc16]205
206    struct {
[421b7d2]207        Double x, y, z;
[156dc16]208    } m_Offsets;
[8000d8f]209
[2c30188]210#ifdef AVENGL
[8000d8f]211    struct {
212        Double xmin, xmax;
213        Double ymin, ymax;
214        Double zmin, zmax;
215    } m_TerrainExtents;
216
217    struct {
218        int x, y;
219    } m_TerrainSize;
220
221    Double* m_TerrainGrid;
[2c30188]222#endif
[421b7d2]223
[6dde19f]224    void SetTreeItemColour(LabelInfo* label);
[156dc16]225    void FillTree();
[137bf99]226    void ClearPointLists();
[1d0cd97]227    bool LoadData(const wxString& file, wxString prefix = "");
[8000d8f]228#ifdef AVENGL
229    bool LoadTerrain(const wxString& file);
230    void OpenTerrain(const wxString& file);
231#endif
[137bf99]232    void SortIntoDepthBands(list<PointInfo*>& points);
[c6d95d8]233    void IntersectLineWithPlane(Double x0, Double y0, Double z0,
234                                Double x1, Double y1, Double z1,
235                                Double z, Double& x, Double& y);
236    Double GetDepthBoundaryBetweenBands(int a, int b);
237    int GetDepthColour(Double z);
238    void CentreDataset(Double xmin, Double ymin, Double zmin);
[137bf99]239
240    wxString GetTabMsg(int key) {
[421b7d2]241        wxString x(msg(key)); x.Replace("##", "\t"); x.Replace("@", "&"); return x;
[137bf99]242    }
243
[9d3d8cc]244    void InitialisePensAndBrushes();
245    void CreateMenuBar();
246    void CreateToolBar();
247    void CreateSidePanel();
248
[137bf99]249public:
250    MainFrm(const wxString& title, const wxPoint& pos, const wxSize& size);
[5809313]251    ~MainFrm();
252
[5901b62]253    void OpenFile(const wxString& file, wxString survey = "", bool delay = false);
[003d953]254#ifdef AVENPRES
[5ffa439]255    void OnOpenPresUpdate(wxUpdateUIEvent& event);
[003d953]256#endif
[8000d8f]257    void OnFileOpenTerrainUpdate(wxUpdateUIEvent& event);
[137bf99]258
[2a02de2]259    void OnFind(wxCommandEvent& event);
260    void OnHide(wxCommandEvent& event);
261
[5809313]262    void OnOpen(wxCommandEvent& event);
[8000d8f]263    void OnFileOpenTerrain(wxCommandEvent& event);
[003d953]264#ifdef AVENPRES
[156dc16]265    void OnOpenPres(wxCommandEvent& event);
[003d953]266#endif
[5809313]267    void OnQuit(wxCommandEvent& event);
[5ffa439]268
[003d953]269#ifdef AVENPRES
[156dc16]270    void OnPresCreate(wxCommandEvent& event);
271    void OnPresGo(wxCommandEvent& event);
272    void OnPresGoBack(wxCommandEvent& event);
273    void OnPresFinish(wxCommandEvent& event);
274    void OnPresRestart(wxCommandEvent& event);
275    void OnPresRecord(wxCommandEvent& event);
276    void OnPresErase(wxCommandEvent& event);
277    void OnPresEraseAll(wxCommandEvent& event);
[5ffa439]278
279    void OnPresCreateUpdate(wxUpdateUIEvent& event);
280    void OnPresGoUpdate(wxUpdateUIEvent& event);
281    void OnPresGoBackUpdate(wxUpdateUIEvent& event);
282    void OnPresFinishUpdate(wxUpdateUIEvent& event);
283    void OnPresRestartUpdate(wxUpdateUIEvent& event);
284    void OnPresRecordUpdate(wxUpdateUIEvent& event);
285    void OnPresEraseUpdate(wxUpdateUIEvent& event);
286    void OnPresEraseAllUpdate(wxUpdateUIEvent& event);
[003d953]287#endif
[5ffa439]288
[573f4e9]289    void OnAbout(wxCommandEvent& event);
[137bf99]290    void OnClose(wxCloseEvent&);
291
[4b1fc48]292    void OnSetFocus(wxFocusEvent &e) { if (m_Gfx) m_Gfx->SetFocus(); }
293
[137bf99]294    // temporary bodges until event handling problem is sorted out:
295    void OnDefaultsUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnDefaultsUpdate(event); }
296    void OnPlanUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnPlanUpdate(event); }
297    void OnElevationUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnElevationUpdate(event); }
298    void OnDisplayOverlappingNamesUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnDisplayOverlappingNamesUpdate(event); }
299    void OnShowCrossesUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnShowCrossesUpdate(event); }
[fe444b8]300    void OnShowEntrancesUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnShowEntrancesUpdate(event); }
301    void OnShowFixedPtsUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnShowFixedPtsUpdate(event); }
302    void OnShowExportedPtsUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnShowExportedPtsUpdate(event); }
[137bf99]303    void OnShowStationNamesUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnShowStationNamesUpdate(event); }
304    void OnShowSurveyLegsUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnShowSurveyLegsUpdate(event); }
305    void OnShowSurfaceUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnShowSurfaceUpdate(event); }
306    void OnShowSurfaceDepthUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnShowSurfaceDepthUpdate(event); }
307    void OnShowSurfaceDashedUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnShowSurfaceDashedUpdate(event); }
308    void OnMoveEastUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnMoveEastUpdate(event); }
309    void OnMoveNorthUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnMoveNorthUpdate(event); }
310    void OnMoveSouthUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnMoveSouthUpdate(event); }
311    void OnMoveWestUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnMoveWestUpdate(event); }
312    void OnStartRotationUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnStartRotationUpdate(event); }
[7ebc3d1]313    void OnToggleRotationUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnToggleRotationUpdate(event); }
[137bf99]314    void OnStopRotationUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnStopRotationUpdate(event); }
315    void OnReverseControlsUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnReverseControlsUpdate(event); }
316    void OnSlowDownUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnSlowDownUpdate(event); }
317    void OnSpeedUpUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnSpeedUpUpdate(event); }
318    void OnStepOnceAnticlockwiseUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnStepOnceAnticlockwiseUpdate(event); }
319    void OnStepOnceClockwiseUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnStepOnceClockwiseUpdate(event); }
320    void OnHigherViewpointUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnHigherViewpointUpdate(event); }
321    void OnLowerViewpointUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnLowerViewpointUpdate(event); }
322    void OnShiftDisplayDownUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnShiftDisplayDownUpdate(event); }
323    void OnShiftDisplayLeftUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnShiftDisplayLeftUpdate(event); }
324    void OnShiftDisplayRightUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnShiftDisplayRightUpdate(event); }
325    void OnShiftDisplayUpUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnShiftDisplayUpUpdate(event); }
326    void OnZoomInUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnZoomInUpdate(event); }
327    void OnZoomOutUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnZoomOutUpdate(event); }
328    void OnToggleScalebarUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnToggleScalebarUpdate(event); }
329    void OnToggleDepthbarUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnToggleDepthbarUpdate(event); }
330    void OnViewCompassUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnViewCompassUpdate(event); }
[c1cf79d]331    void OnViewGridUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnViewGridUpdate(event); }
[137bf99]332    void OnViewClinoUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnViewClinoUpdate(event); }
333    void OnReverseDirectionOfRotationUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnReverseDirectionOfRotationUpdate(event); }
[1fd2edb]334    void OnCancelDistLineUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnCancelDistLineUpdate(event); }
[c6d95d8]335#ifdef AVENGL
336    void OnAntiAliasUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnAntiAliasUpdate(event); }
[8000d8f]337    void OnSolidSurfaceUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnSolidSurfaceUpdate(event); }
[c6d95d8]338#endif
[e3513a5]339    void OnIndicatorsUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnIndicatorsUpdate(event); }
[137bf99]340
[1fd2edb]341    void OnDefaults(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnDefaults(); }
342    void OnPlan(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnPlan(); }
343    void OnElevation(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnElevation(); }
344    void OnDisplayOverlappingNames(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnDisplayOverlappingNames(); }
345    void OnShowCrosses(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnShowCrosses(); }
346    void OnShowEntrances(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnShowEntrances(); }
347    void OnShowFixedPts(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnShowFixedPts(); }
348    void OnShowExportedPts(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnShowExportedPts(); }
349    void OnShowStationNames(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnShowStationNames(); }
350    void OnShowSurveyLegs(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnShowSurveyLegs(); }
351    void OnShowSurface(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnShowSurface(); }
352    void OnShowSurfaceDepth(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnShowSurfaceDepth(); }
353    void OnShowSurfaceDashed(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnShowSurfaceDashed(); }
354    void OnMoveEast(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnMoveEast(); }
355    void OnMoveNorth(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnMoveNorth(); }
356    void OnMoveSouth(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnMoveSouth(); }
357    void OnMoveWest(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnMoveWest(); }
358    void OnStartRotation(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnStartRotation(); }
359    void OnToggleRotation(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnToggleRotation(); }
360    void OnStopRotation(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnStopRotation(); }
361    void OnReverseControls(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnReverseControls(); }
362    void OnSlowDown(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnSlowDown(); }
363    void OnSpeedUp(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnSpeedUp(); }
364    void OnStepOnceAnticlockwise(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnStepOnceAnticlockwise(); }
365    void OnStepOnceClockwise(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnStepOnceClockwise(); }
366    void OnHigherViewpoint(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnHigherViewpoint(); }
367    void OnLowerViewpoint(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnLowerViewpoint(); }
[4b1fc48]368    void OnShiftDisplayDown(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnShiftDisplayDown(); }
369    void OnShiftDisplayLeft(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnShiftDisplayLeft(); }
370    void OnShiftDisplayRight(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnShiftDisplayRight(); }
371    void OnShiftDisplayUp(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnShiftDisplayUp(); }
[1fd2edb]372    void OnZoomIn(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnZoomIn(); }
373    void OnZoomOut(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnZoomOut(); }
374    void OnToggleScalebar(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnToggleScalebar(); }
375    void OnToggleDepthbar(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnToggleDepthbar(); }
376    void OnViewCompass(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnViewCompass(); }
377    void OnViewClino(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnViewClino(); }
378    void OnViewGrid(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnViewGrid(); }
379    void OnReverseDirectionOfRotation(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnReverseDirectionOfRotation(); }
[6d109e5]380    void OnCancelDistLine(wxCommandEvent& event) { if (m_Gfx) m_Gfx->OnCancelDistLine(); }
[c6d95d8]381#ifdef AVENGL
[4b1fc48]382    void OnAntiAlias(wxCommandEvent&) { if (m_Gfx) m_Gfx->OnAntiAlias(); }
383    void OnSolidSurface(wxCommandEvent&) { if (m_Gfx) m_Gfx->OnSolidSurface(); }
[c6d95d8]384#endif
[137bf99]385    // end of horrible bodges
[421b7d2]386
[7a89dc2]387    void OnToggleMetric(wxCommandEvent&) { if (m_Gfx) m_Gfx->OnToggleMetric(); }
388    void OnToggleDegrees(wxCommandEvent&) { if (m_Gfx) m_Gfx->OnToggleDegrees(); }
[5757725]389
[7a89dc2]390    void OnToggleMetricUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnToggleMetricUpdate(event); }
391    void OnToggleDegreesUpdate(wxUpdateUIEvent& event) { if (m_Gfx) m_Gfx->OnToggleDegreesUpdate(event); }
[5757725]392
[9059368]393    void OnViewSidePanelUpdate(wxUpdateUIEvent& event);
394    void OnViewSidePanel(wxCommandEvent& event);
[b1de3e0]395    void ToggleSidePanel();
[137bf99]396
[003d953]397    Double GetXExtent() const { return m_XExt; }
398    Double GetYExtent() const { return m_YExt; }
399    Double GetZExtent() const { return m_ZExt; }
400    Double GetXMin() const { return m_XMin; }
401    Double GetYMin() const { return m_YMin; }
402    Double GetYMax() const { return m_YMin + m_YExt; }
403    Double GetZMin() const { return m_ZMin; }
404    Double GetZMax() const { return m_ZMin + m_ZExt; }
405
[2c30188]406#ifdef AVENGL
[003d953]407    int GetTerrainXSize() const { return m_TerrainSize.x; }
408    int GetTerrainYSize() const { return m_TerrainSize.y; }
409
410    Double GetTerrainMinX() const { return m_TerrainExtents.xmin; }
411    Double GetTerrainMaxX() const { return m_TerrainExtents.xmax; }
412    Double GetTerrainMinY() const { return m_TerrainExtents.ymin; }
413    Double GetTerrainMaxY() const { return m_TerrainExtents.ymax; }
414    Double GetTerrainMinZ() const { return m_TerrainExtents.zmin; }
415    Double GetTerrainMaxZ() const { return m_TerrainExtents.zmax; }
416
417    Double GetTerrainXSquareSize() const {
418        return (m_TerrainExtents.xmax - m_TerrainExtents.xmin)
419                / m_TerrainSize.x;
420    }
421    Double GetTerrainYSquareSize() const {
422        return (m_TerrainExtents.ymax - m_TerrainExtents.ymin)
423                / m_TerrainSize.y;
424    }
425
426    Double GetTerrainHeight(int x, int y) const {
[8000d8f]427        assert(x >= 0 && x < m_TerrainSize.x);
428        assert(y >= 0 && y < m_TerrainSize.y);
429
430        return m_TerrainGrid[x + m_TerrainSize.x * y];
431    }
[2c30188]432#endif
[137bf99]433
[003d953]434    int GetNumLegs() const { return m_NumLegs; }
435    int GetNumPoints() const { return m_NumPoints; }
436    int GetNumCrosses() const { return m_NumCrosses; }
[137bf99]437
[003d953]438    int GetNumDepthBands() const { return NUM_DEPTH_COLOURS; }
[137bf99]439
[003d953]440    wxPen GetPen(int band) const {
[421b7d2]441        assert(band >= 0 && band < NUM_DEPTH_COLOURS);
442        return m_Pens[band];
[137bf99]443    }
444
[003d953]445    wxBrush GetBrush(int band) const {
[421b7d2]446        assert(band >= 0 && band < NUM_DEPTH_COLOURS);
447        return m_Brushes[band];
[137bf99]448    }
449
[003d953]450    void GetColour(int band, Double& r, Double& g, Double& b) const;
[c6d95d8]451
[003d953]452    wxPen GetSurfacePen() const { return m_Pens[NUM_DEPTH_COLOURS]; }
[137bf99]453
[6dde19f]454    void SelectTreeItem(LabelInfo* label);
[1fd2edb]455    void ClearTreeSelection();
456
[003d953]457    int GetNumFixedPts() const { return m_NumFixedPts; }
458    int GetNumExportedPts() const { return m_NumExportedPts; }
459    int GetNumEntrances() const { return m_NumEntrances; }
[a9a32f2]460
[156dc16]461    void ClearCoords();
462    void SetCoords(Double x, Double y);
[7a89dc2]463    void SetAltitude(Double z);
[156dc16]464
[003d953]465    Double GetXOffset() const { return m_Offsets.x; }
466    Double GetYOffset() const { return m_Offsets.y; }
467    Double GetZOffset() const { return m_Offsets.z; }
[156dc16]468
[39e460c9]469    void SetMouseOverStation(LabelInfo* label);
470
[003d953]471    list<PointInfo*>::iterator GetPointsNC(int band) const {
[421b7d2]472        assert(band >= 0 && band < NUM_DEPTH_COLOURS);
473        return m_Points[band].begin();
[ee119518]474    }
475
[003d953]476    list<PointInfo*>::iterator GetPointsEndNC(int band) const {
[421b7d2]477        assert(band >= 0 && band < NUM_DEPTH_COLOURS);
478        return m_Points[band].end();
[ee119518]479    }
480
[003d953]481    list<PointInfo*>::const_iterator GetPoints(int band) const {
[421b7d2]482        assert(band >= 0 && band < NUM_DEPTH_COLOURS);
483        return m_Points[band].begin();
[137bf99]484    }
485
[003d953]486    list<LabelInfo*>::const_iterator GetLabels() const {
[421b7d2]487        return m_Labels.begin();
[137bf99]488    }
489
[003d953]490    list<PointInfo*>::const_iterator GetPointsEnd(int band) const {
[421b7d2]491        assert(band >= 0 && band < NUM_DEPTH_COLOURS);
492        return m_Points[band].end();
[137bf99]493    }
494
[003d953]495    list<LabelInfo*>::const_iterator GetLabelsEnd() const {
[421b7d2]496        return m_Labels.end();
[137bf99]497    }
[5809313]498
[7a89dc2]499    void ShowInfo(LabelInfo *label);
[156dc16]500    void DisplayTreeInfo(wxTreeItemData* data);
501    void TreeItemSelected(wxTreeItemData* data);
[8bac36d6]502
[84cab34]503private:
504    DECLARE_EVENT_TABLE()
[5809313]505};
506
507#endif
Note: See TracBrowser for help on using the repository browser.