source: git/src/mainfrm.h @ af1e622

RELEASE/1.0RELEASE/1.1RELEASE/1.2debug-cidebug-ci-sanitisersfaster-cavernloglog-selectstereostereo-2025walls-datawalls-data-hanging-as-warningwarn-only-for-hanging-survey
Last change on this file since af1e622 was 003d953, checked in by Olly Betts <olly@…>, 24 years ago
  • Suppressed message box when wxWindows doesn't support the language Survex is set to use
  • print*: "--crosses" no longer prevents "--station-names" from working.
  • print*: if running interactively, prompt for what elements to plot when run so MS Windows users don't have to resort to the command line.

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

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