OpenCPN Partial API docs
Loading...
Searching...
No Matches
CanvasConfig.cpp
1/***************************************************************************
2 * Copyright (C) 2018 by David S. Register *
3 * *
4 * This program is free software; you can redistribute it and/or modify *
5 * it under the terms of the GNU General Public License as published by *
6 * the Free Software Foundation; either version 2 of the License, or *
7 * (at your option) any later version. *
8 * *
9 * This program is distributed in the hope that it will be useful, *
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
12 * GNU General Public License for more details. *
13 * *
14 * You should have received a copy of the GNU General Public License *
15 * along with this program; if not, write to the *
16 * Free Software Foundation, Inc., *
17 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
18 **************************************************************************/
19
20#include <wx/wxprec.h>
21
22#ifndef WX_PRECOMP
23#include <wx/wx.h>
24#endif // precompiled headers
25
26#include <wx/fileconf.h>
27
28#include "CanvasConfig.h"
29#include "ocpn_plugin.h"
30
31//----------------------------------------------------------------------------
32// constants
33//----------------------------------------------------------------------------
34#ifndef PI
35#define PI 3.1415926535897931160E0 /* pi */
36#endif
37
38//------------------------------------------------------------------------------
39// canvasConfig Implementation
40//------------------------------------------------------------------------------
41
42canvasConfig::canvasConfig(int index) {
43 configIndex = index;
44 canvas = NULL;
45 GroupID = 0;
46 iLat = 0.;
47 iLon = 0.;
48 iScale = .0003; // decent initial value
49 iRotation = 0.;
50}
51
52canvasConfig::~canvasConfig() {}
53
55 bFollow = false;
56 bShowTides = false;
57 bShowCurrents = false;
58 bCourseUp = false;
59 bHeadUp = false;
60 bLookahead = false;
61 bShowAIS = true;
62 bAttenAIS = false;
63 bQuilt = true;
64 nENCDisplayCategory = (int)(enum _DisCat)STANDARD;
65}
66
67void canvasConfig::LoadFromLegacyConfig(wxFileConfig *conf) {
68 if (!conf) return;
69
70 bFollow = false;
71 bShowAIS = true;
72
73 // S52 stuff
74 conf->SetPath(_T ( "/Settings/GlobalState" ));
75 conf->Read(_T ( "bShowS57Text" ), &bShowENCText, 1);
76 conf->Read(_T ( "bShowLightDescription" ), &bShowENCLightDescriptions, 0);
77 conf->Read(_T ( "nDisplayCategory" ), &nENCDisplayCategory,
78 (enum _DisCat)STANDARD);
79 conf->Read(_T ( "bShowSoundg" ), &bShowENCDepths, 1);
80 conf->Read(_T ( "bShowAtonText" ), &bShowENCBuoyLabels, 1);
81 bShowENCLights = true;
82
83 conf->SetPath(_T ( "/Settings/AIS" ));
84 conf->Read(_T ( "bShowScaledTargets" ), &bAttenAIS, 0);
85
86 conf->SetPath(_T ( "/Settings" ));
87 conf->Read(_T ( "ShowTide" ), &bShowTides, 0);
88 conf->Read(_T ( "ShowCurrent" ), &bShowCurrents, 0);
89 conf->Read(_T ( "CourseUpMode" ), &bCourseUp, 0);
90 conf->Read(_T ( "HeadUpMode" ), &bHeadUp, 0);
91 conf->Read(_T ( "LookAheadMode" ), &bLookahead, 0);
92
93 conf->Read(_T ( "ShowGrid" ), &bShowGrid, 0);
94 conf->Read(_T ( "ShowChartOutlines" ), &bShowOutlines, 1);
95 conf->Read(_T ( "ShowDepthUnits" ), &bShowDepthUnits, 1);
96 conf->Read(_T ( "ChartQuilting" ), &bQuilt, 1);
97
98 conf->Read(_T ( "ActiveChartGroup" ), &GroupID, 0);
99 conf->Read(_T ( "InitialdBIndex" ), &DBindex, -1);
100
101 conf->SetPath(_T ( "/Settings/GlobalState" ));
102 wxString st;
103 double st_view_scale, st_rotation;
104 if (conf->Read(wxString(_T ( "VPScale" )), &st)) {
105 sscanf(st.mb_str(wxConvUTF8), "%lf", &st_view_scale);
106 // Sanity check the scale
107 st_view_scale = fmax(st_view_scale, .001 / 32);
108 st_view_scale = fmin(st_view_scale, 4);
109 iScale = st_view_scale;
110 }
111
112 if (conf->Read(wxString(_T ( "VPRotation" )), &st)) {
113 sscanf(st.mb_str(wxConvUTF8), "%lf", &st_rotation);
114 // Sanity check the rotation
115 st_rotation = fmin(st_rotation, 360);
116 st_rotation = fmax(st_rotation, 0);
117 iRotation = st_rotation * PI / 180.;
118 }
119
120 wxString sll;
121 double lat, lon;
122 if (conf->Read(_T ( "VPLatLon" ), &sll)) {
123 sscanf(sll.mb_str(wxConvUTF8), "%lf,%lf", &lat, &lon);
124
125 // Sanity check the lat/lon...both have to be reasonable.
126 if (fabs(lon) < 360.) {
127 while (lon < -180.) lon += 360.;
128
129 while (lon > 180.) lon -= 360.;
130
131 iLon = lon;
132 }
133
134 if (fabs(lat) < 90.0) iLat = lat;
135 }
136}
double iLat
Latitude of the center of the chart, in degrees.
bool bShowOutlines
Display chart outlines.
void Reset()
Resets all configuration options to default values.
bool bShowDepthUnits
Display depth unit indicators.
double iLon
Longitude of the center of the chart, in degrees.
double iRotation
Initial rotation angle in radians.
bool bCourseUp
Orient display to course up.
bool bQuilt
Enable chart quilting.
bool bFollow
Enable vessel following mode.
double iScale
Initial chart scale factor.
bool bShowENCText
Display ENC text elements.
bool bShowAIS
Display AIS targets.
bool bShowGrid
Display coordinate grid.
ChartCanvas * canvas
Pointer to associated chart canvas.
bool bShowCurrents
Display current information.
bool bShowTides
Display tide information.
bool bLookahead
Enable lookahead mode.
bool bHeadUp
Orient display to heading up.
bool bAttenAIS
Enable AIS target attenuation.
PlugIn Object Definition/API.