30#include <wx/dcmemory.h>
32#include <wx/glcanvas.h>
33#include <wx/notebook.h>
37#include "model/ais_decoder.h"
39#include "model/idents.h"
40#include "model/multiplexer.h"
41#include "model/own_ship.h"
43#include "model/route.h"
44#include "model/track.h"
51#include "glChartCanvas.h"
55#include "OCPN_AUIManager.h"
56#include "ocpn_frame.h"
57#include "OCPNPlatform.h"
61#include "pluginmanager.h"
62#include "routemanagerdialog.h"
63#include "routeman_gui.h"
65#include "SoundFactory.h"
67#include "SystemCmdSound.h"
69#include "waypointman_gui.h"
70#include "shapefile_basemap.h"
76#if wxUSE_XLOCALE || !wxCHECK_VERSION(3, 0, 0)
77extern wxLocale* plocale_def_lang;
86extern bool g_bShowChartBar;
90extern RouteList* pRouteList;
91extern std::vector<Track*> g_TrackList;
93extern s52plib* ps52plib;
94extern wxString ChartListFileName;
96extern ColorScheme global_color_scheme;
97extern wxArrayString g_locale_catalog_array;
98extern int g_GUIScaleFactor;
99extern int g_ChartScaleFactor;
103extern int g_chart_zoom_modifier_raster;
104extern int g_chart_zoom_modifier_vector;
106extern bool g_bopengl;
108extern ChartGroupArray* g_pGroupArray;
112extern unsigned int g_canvasConfig;
114extern wxString g_CmdSoundString;
116unsigned int gs_plib_flags;
119extern bool g_bquiting;
120extern bool g_disable_main_toolbar;
121extern bool g_btenhertz;
123WX_DEFINE_ARRAY_PTR(
ChartCanvas*, arrayofCanvasPtr);
124extern arrayofCanvasPtr g_canvasArray;
126void NotifySetupOptionsPlugin(
const PlugInData* pic);
141 wxItemKind kind, wxString shortHelp, wxString longHelp,
142 wxObject* clientData,
int position,
int tool_sel,
145 return s_ppim->AddToolbarTool(label, bitmap, bmpRollover, kind, shortHelp,
146 longHelp, clientData, position, tool_sel,
153 if (s_ppim) s_ppim->RemoveToolbarTool(tool_id);
157 if (s_ppim) s_ppim->SetToolbarToolViz(item, viz);
161 if (s_ppim) s_ppim->SetToolbarItemState(item, toggle);
165 if (s_ppim) s_ppim->SetToolbarItemBitmaps(item, bitmap, bmpRollover);
169 wxString SVGfileRollover, wxString SVGfileToggled,
170 wxItemKind kind, wxString shortHelp, wxString longHelp,
171 wxObject* clientData,
int position,
int tool_sel,
174 return s_ppim->AddToolbarTool(label, SVGfile, SVGfileRollover,
175 SVGfileToggled, kind, shortHelp, longHelp,
176 clientData, position, tool_sel, pplugin);
182 wxString SVGfileRollover,
183 wxString SVGfileToggled) {
185 s_ppim->SetToolbarItemBitmaps(item, SVGfile, SVGfileRollover,
193 return s_ppim->AddCanvasContextMenuItem(pitem, pplugin, name);
199 if (s_ppim) s_ppim->SetCanvasContextMenuItemViz(item, viz, name);
203 if (s_ppim) s_ppim->SetCanvasContextMenuItemGrey(item, grey, name);
207 if (s_ppim) s_ppim->RemoveCanvasContextMenuItem(item, name);
228 return reinterpret_cast<wxFileConfig*
>(
235 wxWindow* pret = NULL;
237 MyFrame* pFrame = s_ppim->GetParentFrame();
238 pret = (wxWindow*)pFrame->GetPrimaryCanvas();
244 if (win) win->Refresh(
true);
304 return FontMgr::Get().
GetFont(TextElement, default_size);
307wxFont* GetOCPNScaledFont_PlugIn(wxString TextElement,
int default_size) {
312 return g_Platform->GetToolbarScaleFactor(GUIScaleFactor);
316 return g_Platform->GetToolbarScaleFactor(g_GUIScaleFactor);
320 return g_Platform->GetChartScaleFactorExp(g_ChartScaleFactor);
328 return FontMgr::Get().
AddAuxKey(TextElement);
333 return g_StyleManager->GetCurrentStyle()->name;
339 unsigned int height) {
340 wxBitmap bmp = LoadSVG(filename, width, height);
348 SVGDocumentPixelSize(filename, w, h);
349 if (w == 0 || h == 0) {
356 return LoadSVG(filename, w, h);
367 return g_Platform->GetSharedDataDirPtr();
371 if (!g_pAIS)
return NULL;
373 ArrayOfPlugIn_AIS_Targets* pret =
new ArrayOfPlugIn_AIS_Targets;
376 for (
const auto& it : g_pAIS->GetTargetList()) {
385 td.n_alarm_state = AIS_ALARM_SET;
395 SendMessageToAllPlugins(message_id, message_body);
403 Nevent.SetID(message_id);
404 Nevent.SetJSONText(message_body);
405 gFrame->GetEventHandler()->AddPendingEvent(Nevent);
411 gFrame->JumpToPosition(gFrame->GetFocusCanvas(), lat, lon,
scale);
416#if wxUSE_XLOCALE || !wxCHECK_VERSION(3, 0, 0)
418 if (plocale_def_lang) {
420 g_locale_catalog_array.Add(catalog);
422 return plocale_def_lang->AddCatalog(catalog);
432 std::string full_sentence = buf.ToStdString();
434 if ((full_sentence[0] ==
'$') || (full_sentence[0] ==
'!')) {
435 std::string identifier;
437 identifier = full_sentence.substr(1, 5);
441 auto address = std::make_shared<NavAddr0183>(
"virtual");
443 std::make_shared<const Nmea0183Msg>(identifier, full_sentence, address);
444 auto msg_all = std::make_shared<const Nmea0183Msg>(*msg,
"ALL");
446 auto& msgbus = NavMsgBus::GetInstance();
448 msgbus.Notify(std::move(msg));
449 msgbus.Notify(std::move(msg_all));
455 wxXmlDocument doc = ChartData->GetXMLDescription(dbIndex, b_getGeom);
461 bool b_ProgressDialog) {
463 ArrayOfCDI ChartDirArray;
464 for (
unsigned int i = 0; i < dir_array.GetCount(); i++) {
465 wxString dirname = dir_array[i];
467 cdi.fullpath = dirname;
468 cdi.magic_number = _T(
"");
469 ChartDirArray.Add(cdi);
471 bool b_ret = gFrame->UpdateChartDatabaseInplace(ChartDirArray, b_force_update,
473 ChartData->GetDBFileName());
474 gFrame->ChartsRefresh();
479 return ChartData->GetChartDirArrayString();
484 wxFileName fn(full_path);
485 wxString fdir = fn.GetPath();
489 bret = ChartData->AddSingleChart(full_path);
493 pConfig->UpdateChartDirs(ChartData->GetChartDirArray());
494 ChartData->SaveBinary(ChartListFileName);
497 ArrayOfCDI XnewChartDirArray;
498 pConfig->LoadChartDirArray(XnewChartDirArray);
501 ChartData->
LoadBinary(ChartListFileName, XnewChartDirArray);
504 if (g_pGroupArray) ChartData->ApplyGroupArray(g_pGroupArray);
506 if (g_options && g_options->IsShown())
507 g_options->UpdateDisplayedChartDirList(ChartData->GetChartDirArray());
509 if (b_RefreshCanvas || !gFrame->GetPrimaryCanvas()->GetQuiltMode()) {
510 gFrame->ChartsRefresh();
520 bret = ChartData->RemoveSingleChart(full_path);
523 pConfig->UpdateChartDirs(ChartData->GetChartDirArray());
524 ChartData->SaveBinary(ChartListFileName);
527 ArrayOfCDI XnewChartDirArray;
528 pConfig->LoadChartDirArray(XnewChartDirArray);
531 ChartData->
LoadBinary(ChartListFileName, XnewChartDirArray);
534 if (g_pGroupArray) ChartData->ApplyGroupArray(g_pGroupArray);
536 if (g_options && g_options->IsShown())
537 g_options->UpdateDisplayedChartDirList(ChartData->GetChartDirArray());
539 gFrame->ChartsRefresh();
549 if (!g_pOptions)
return NULL;
554 parentid = g_pOptions->m_pageDisplay;
557 parentid = g_pOptions->m_pageConnections;
560 parentid = g_pOptions->m_pageCharts;
563 parentid = g_pOptions->m_pageShips;
566 parentid = g_pOptions->m_pageUI;
569 parentid = g_pOptions->m_pagePlugins;
573 _T(
"Error in PluginManager::AddOptionsPage: Unknown parent"));
578 return g_pOptions->AddPage(parentid, title);
582 if (!g_pOptions)
return false;
583 return g_pOptions->DeletePluginPage(page);
587 wxString* accumulator) {
588 if (!pos)
return false;
591 AisError nerr = AIS_GENERIC_ERROR;
592 if (g_pAIS) nerr = g_pAIS->DecodeSingleVDO(str, &gpd, accumulator);
593 if (nerr == AIS_NoError) {
614 if (g_bShowChartBar) {
616 if (cc && cc->GetPiano()) {
617 val = cc->GetPiano()->GetHeight();
623bool GetRoutepointGPX(
RoutePoint* pRoutePoint,
char* buffer,
624 unsigned int buffer_length) {
628 pgpx->AddGPXWaypoint(pRoutePoint);
629 wxString gpxfilename = wxFileName::CreateTempFileName(wxT(
"gpx"));
630 pgpx->SaveFile(gpxfilename);
633 wxFFile gpxfile(gpxfilename);
635 if (gpxfile.ReadAll(&s)) {
636 if (s.Length() < buffer_length) {
637 strncpy(buffer, (
const char*)s.mb_str(wxConvUTF8), buffer_length - 1);
643 ::wxRemoveFile(gpxfilename);
649 if (g_pRouteMan->IsAnyRouteActive())
650 return GetRoutepointGPX(g_pRouteMan->GetpActivePoint(), buffer,
657 double dist,
double* dlat,
659 PositionBearingDistanceMercator(lat, lon, brg, dist, dlat, dlon);
663 double lon1,
double* brg,
double* dist) {
664 DistanceBearingMercator(lat0, lon0, lat1, lon1, brg, dist);
669 return DistGreatCircle(slat, slon, dlat, dlon);
672void toTM_Plugin(
float lat,
float lon,
float lat0,
float lon0,
double* x,
674 toTM(lat, lon, lat0, lon0, x, y);
677void fromTM_Plugin(
double x,
double y,
double lat0,
double lon0,
double* lat,
679 fromTM(x, y, lat0, lon0, lat, lon);
682void toSM_Plugin(
double lat,
double lon,
double lat0,
double lon0,
double* x,
684 toSM(lat, lon, lat0, lon0, x, y);
687void fromSM_Plugin(
double x,
double y,
double lat0,
double lon0,
double* lat,
689 fromSM(x, y, lat0, lon0, lat, lon);
693 double* x,
double* y) {
694 toSM_ECC(lat, lon, lat0, lon0, x, y);
698 double* lat,
double* lon) {
699 fromSM_ECC(x, y, lat0, lon0, lat, lon);
703 return toUsrDistance(nm_distance,
unit);
707 return fromUsrDistance(usr_distance,
unit);
711 return toUsrSpeed(kts_speed,
unit);
715 return toUsrWindSpeed(kts_speed,
unit);
719 return fromUsrSpeed(usr_speed,
unit);
723 return fromUsrWindSpeed(usr_wspeed,
unit);
727 return toUsrTemp(cel_temp,
unit);
731 return fromUsrTemp(usr_temp,
unit);
735 return getUsrDistanceUnit(
unit);
741 return getUsrWindSpeedUnit(
unit);
750 return toUsrDepth(m_depth,
unit);
754 return fromUsrDepth(usr_depth,
unit);
768 static bool loaded =
false;
770 gshhsCrossesLandInit();
773 return gshhsCrossesLand(lat1, lon1, lat2, lon2);
789 const wxString& icon_ident,
790 const wxString& wp_name,
791 const wxString& GUID) {
792 wxDateTime now = wxDateTime::Now();
803PlugIn_Waypoint::~PlugIn_Waypoint() {}
806PlugIn_Route::PlugIn_Route(
void) {
pWaypointList =
new Plugin_WaypointList; }
808PlugIn_Route::~PlugIn_Route(
void) {
816PlugIn_Track::PlugIn_Track(
void) {
pWaypointList =
new Plugin_WaypointList; }
818PlugIn_Track::~PlugIn_Track(
void) {
828 wxString description) {
829 wxImage image = pimage->ConvertToImage();
830 WayPointmanGui(*pWayPointMan).ProcessIcon(image, key, description);
839 wxPlugin_HyperlinkListNode* linknode = src->
m_HyperlinkList->GetFirst();
845 h->Link = link->
Link;
846 h->LType = link->
Type;
848 dst->m_HyperlinkList->Append(h);
850 linknode = linknode->GetNext();
860 bool b_unique =
true;
861 wxRoutePointListNode* prpnode = pWayPointMan->GetWaypointList()->GetFirst();
865 if (prp->m_GUID == pwaypoint->
m_GUID) {
869 prpnode = prpnode->GetNext();
872 if (!b_unique)
return false;
880 cloneHyperlinkList(pWP, pwaypoint);
887 wxDateTime dtnow(wxDateTime::Now());
888 pWP->SetCreateTime(dtnow);
891 pWP->m_btemp = (b_permanent ==
false);
893 pSelect->AddSelectableRoutePoint(pwaypoint->
m_lat, pwaypoint->
m_lon, pWP);
894 if (b_permanent) pConfig->AddNewWayPoint(pWP, -1);
896 if (pRouteManagerDialog && pRouteManagerDialog->IsShown())
897 pRouteManagerDialog->UpdateWptListCtrl();
904 bool b_found =
false;
905 RoutePoint* prp = pWayPointMan->FindRoutePointByGUID(GUID);
907 if (prp) b_found =
true;
910 pWayPointMan->DestroyWaypoint(prp);
911 if (pRouteManagerDialog && pRouteManagerDialog->IsShown())
912 pRouteManagerDialog->UpdateWptListCtrl();
920 bool b_found =
false;
923 if (prp) b_found =
true;
926 double lat_save = prp->m_lat;
927 double lon_save = prp->m_lon;
929 prp->m_lat = pwaypoint->
m_lat;
930 prp->m_lon = pwaypoint->
m_lon;
941 prp->m_HyperlinkList->Clear();
943 wxPlugin_HyperlinkListNode* linknode =
950 h->Link = link->
Link;
951 h->LType = link->
Type;
953 prp->m_HyperlinkList->Append(h);
955 linknode = linknode->GetNext();
960 if (prp) prp->ReLoadIcon();
962 auto canvas = gFrame->GetPrimaryCanvas();
963 SelectCtx ctx(canvas->m_bShowNavobjects, canvas->GetCanvasTrueScale(),
964 canvas->GetScaleValue());
966 pSelect->FindSelection(ctx, lat_save, lon_save, SELTYPE_ROUTEPOINT);
968 pFind->m_slat = pwaypoint->
m_lat;
969 pFind->m_slon = pwaypoint->
m_lon;
972 if (!prp->m_btemp) pConfig->UpdateWayPoint(prp);
974 if (pRouteManagerDialog && pRouteManagerDialog->IsShown())
975 pRouteManagerDialog->UpdateWptListCtrl();
984 dst->
m_lat = src->m_lat;
985 dst->
m_lon = src->m_lon;
991 dst->
m_GUID = src->m_GUID;
994 if (src->m_HyperlinkList ==
nullptr)
return;
999 if (src->m_HyperlinkList->GetCount() > 0) {
1002 wxHyperlinkListNode* linknode = src->m_HyperlinkList->GetFirst();
1008 h->
Link = link->Link;
1009 h->
Type = link->LType;
1013 linknode = linknode->GetNext();
1020 RoutePoint* prp = pWayPointMan->FindRoutePointByGUID(GUID);
1022 if (!prp)
return false;
1024 PlugInFromRoutePoint(pwaypoint, prp);
1030 wxArrayString result;
1031 const RoutePointList* list = pWayPointMan->GetWaypointList();
1033 wxRoutePointListNode* prpnode = list->GetFirst();
1036 result.Add(prp->m_GUID);
1038 prpnode = prpnode->GetNext();
1045 wxArrayString result;
1046 RouteList* list = pRouteList;
1048 wxRouteListNode* prpnode = list->GetFirst();
1050 Route* proute = prpnode->GetData();
1051 result.Add(proute->m_GUID);
1053 prpnode = prpnode->GetNext();
1060 wxArrayString result;
1061 for (
Track* ptrack : g_TrackList) {
1062 result.Add(ptrack->m_GUID);
1069 wxArrayString result;
1070 const RoutePointList* list = pWayPointMan->GetWaypointList();
1072 wxRoutePointListNode* prpnode = list->GetFirst();
1077 result.Add(prp->m_GUID);
1080 if (!prp->m_bIsInLayer) result.Add(prp->m_GUID);
1083 if (prp->m_bIsInLayer) result.Add(prp->m_GUID);
1087 prpnode = prpnode->GetNext();
1094 wxArrayString result;
1095 RouteList* list = pRouteList;
1097 wxRouteListNode* prpnode = list->GetFirst();
1099 Route* proute = prpnode->GetData();
1102 result.Add(proute->m_GUID);
1105 if (!proute->m_bIsInLayer) result.Add(proute->m_GUID);
1108 if (proute->m_bIsInLayer) result.Add(proute->m_GUID);
1112 prpnode = prpnode->GetNext();
1119 wxArrayString result;
1120 for (
Track* ptrack : g_TrackList) {
1123 result.Add(ptrack->m_GUID);
1126 if (!ptrack->m_bIsInLayer) result.Add(ptrack->m_GUID);
1129 if (ptrack->m_bIsInLayer) result.Add(ptrack->m_GUID);
1138 wxArrayString result;
1140 for (
int i = 0; i < pWayPointMan->GetNumIcons(); i++) {
1141 wxString* ps = pWayPointMan->GetIconKey(i);
1153 wxDateTime plannedDeparture;
1155 wxPlugin_WaypointListNode* pwpnode = proute->
pWaypointList->GetFirst();
1157 pwp = pwpnode->GetData();
1163 cloneHyperlinkList(pWP, pwp);
1165 pWP->m_bShowName =
false;
1168 route->AddPoint(pWP);
1170 pSelect->AddSelectableRoutePoint(pWP->m_lat, pWP->m_lon, pWP);
1173 pSelect->AddSelectableRouteSegment(pWP_src->m_lat, pWP_src->m_lon,
1174 pWP->m_lat, pWP->m_lon, pWP_src, pWP,
1181 pwpnode = pwpnode->GetNext();
1189 if (!proute->
m_GUID.IsEmpty()) {
1190 route->m_GUID = proute->
m_GUID;
1192 route->m_btemp = (b_permanent ==
false);
1194 pRouteList->Append(route);
1196 if (b_permanent) pConfig->AddNewRoute(route);
1198 if (pRouteManagerDialog && pRouteManagerDialog->IsShown())
1199 pRouteManagerDialog->UpdateRouteListCtrl();
1205 bool b_found =
false;
1208 Route* pRoute = g_pRouteMan->FindRouteByGUID(GUID);
1210 g_pRouteMan->
DeleteRoute(pRoute, NavObjectChanges::getInstance());
1217 bool b_found =
false;
1220 Route* pRoute = g_pRouteMan->FindRouteByGUID(proute->
m_GUID);
1221 if (pRoute) b_found =
true;
1224 bool b_permanent = (pRoute->m_btemp ==
false);
1225 g_pRouteMan->
DeleteRoute(pRoute, NavObjectChanges::getInstance());
1240 wxPlugin_WaypointListNode* pwpnode = ptrack->
pWaypointList->GetFirst();
1242 pwp = pwpnode->GetData();
1247 track->AddPoint(pWP);
1250 pSelect->AddSelectableTrackSegment(pWP_src->m_lat, pWP_src->m_lon,
1251 pWP->m_lat, pWP->m_lon, pWP_src, pWP,
1256 pwpnode = pwpnode->GetNext();
1262 track->m_GUID = ptrack->
m_GUID;
1263 track->m_btemp = (b_permanent ==
false);
1265 g_TrackList.push_back(track);
1267 if (b_permanent) pConfig->AddNewTrack(track);
1269 if (pRouteManagerDialog && pRouteManagerDialog->IsShown())
1270 pRouteManagerDialog->UpdateTrkListCtrl();
1276 bool b_found =
false;
1279 Track* pTrack = g_pRouteMan->FindTrackByGUID(GUID);
1285 if (pRouteManagerDialog && pRouteManagerDialog->IsShown())
1286 pRouteManagerDialog->UpdateTrkListCtrl();
1292 bool b_found =
false;
1295 Track* pTrack = g_pRouteMan->FindTrackByGUID(ptrack->
m_GUID);
1296 if (pTrack) b_found =
true;
1299 bool b_permanent = (pTrack->m_btemp ==
false);
1313 return glChartCanvas::HasNormalizedViewPort(ocpn_vp);
1339 glChartCanvas::NormalizedViewPort(ocpn_vp, lat, lon);
1358 pret->
MMSI = ptarget->MMSI;
1359 pret->
Class = ptarget->Class;
1361 pret->
SOG = ptarget->SOG;
1362 pret->
COG = ptarget->COG;
1363 pret->
HDG = ptarget->HDG;
1364 pret->
Lon = ptarget->Lon;
1365 pret->
Lat = ptarget->Lat;
1366 pret->
ROTAIS = ptarget->ROTAIS;
1367 pret->
ShipType = ptarget->ShipType;
1368 pret->
IMO = ptarget->IMO;
1370 pret->
Range_NM = ptarget->Range_NM;
1371 pret->
Brg = ptarget->Brg;
1375 pret->
TCPA = ptarget->TCPA;
1376 pret->
CPA = ptarget->CPA;
1380 memcpy(pret->CallSign, ptarget->CallSign,
sizeof(ptarget->CallSign) - 1);
1381 memcpy(pret->ShipName, ptarget->ShipName,
sizeof(ptarget->ShipName) - 1);
1400 gFrame->GetPrimaryCanvas()->DoRotateCanvas(rotation);
1406 gFrame->GetPrimaryCanvas()->DoTiltCanvas(tilt);
1410 gFrame->GetPrimaryCanvas()->SetVPProjection(projection);
1413OcpnSound* g_PluginSound = SoundFactory();
1414static void onPlugInPlaySoundExFinished(
void* ptr) {}
1418 bool ok = g_PluginSound->Load(sound_file, deviceIndex);
1420 wxLogWarning(
"Cannot load sound file: %s", sound_file);
1423 auto cmd_sound =
dynamic_cast<SystemCmdSound*
>(g_PluginSound);
1424 if (cmd_sound) cmd_sound->SetCmd(g_CmdSoundString.mb_str(wxConvUTF8));
1426 g_PluginSound->SetFinishedCallback(onPlugInPlaySoundExFinished, NULL);
1427 ok = g_PluginSound->Play();
1429 wxLogWarning(
"Cannot play sound file: %s", sound_file);
1435 return gFrame->GetPrimaryCanvas()->CheckEdgePan(x, y, dragging, margin,
1441 return style->GetIcon(name);
1445 gFrame->GetPrimaryCanvas()->pPlugIn_Cursor = pCursor;
1450 g_options->AddChartDir(path);
1456 g_options->pScanCheckBox->SetValue(
true);
1457 g_options->pUpdateCheckBox->SetValue(
true);
1463 g_options->pUpdateCheckBox->SetValue(
true);
1470 wxString Title, wxString initDir) {
1471 return g_Platform->DoDirSelectorDialog(parent, file_spec, Title, initDir);
1475 wxString Title, wxString initDir,
1476 wxString suggestedName, wxString wildcard) {
1477 return g_Platform->DoFileSelectorDialog(parent, file_spec, Title, initDir,
1478 suggestedName, wildcard);
1501 if (gFrame->GetPrimaryCanvas())
1502 vp.
ref_scale = gFrame->GetPrimaryCanvas()->GetVP().ref_scale;
1513 ViewPort ocpn_vp = CreateCompatibleViewportEx(vp);
1518 AISDraw(dc, ocpn_vp, NULL);
1522 return FontMgr::Get().
SetFontColor(TextElement, color);
1532 wxFontStyle style, wxFontWeight weight,
1533 bool underline,
const wxString& facename,
1534 wxFontEncoding encoding) {
1536 underline, facename, encoding);
1539int PluginGetMinAvailableGshhgQuality() {
1540 return gFrame->GetPrimaryCanvas()->GetMinAvailableGshhgQuality();
1542int PluginGetMaxAvailableGshhgQuality() {
1543 return gFrame->GetPrimaryCanvas()->GetMaxAvailableGshhgQuality();
1548 g_bPluginHandleAutopilotRoute = enable;
1551bool LaunchDefaultBrowser_Plugin(wxString url) {
1552 if (g_Platform) g_Platform->platformLaunchDefaultBrowser(url);
1562 if (cc && cc->GetSelectedRoutePoint()) {
1563 return cc->GetSelectedRoutePoint()->m_GUID;
1565 return wxEmptyString;
1570 if (cc && cc->GetSelectedRoute()) {
1571 return cc->GetSelectedRoute()->m_GUID;
1573 return wxEmptyString;
1578 if (cc && cc->GetSelectedTrack()) {
1579 return cc->GetSelectedTrack()->m_GUID;
1581 return wxEmptyString;
1591 std::unique_ptr<PlugIn_Route> r;
1592 Route* route = g_pRouteMan->FindRouteByGUID(GUID);
1593 if (route ==
nullptr)
return r;
1600 wxRoutePointListNode* node = route->pRoutePointList->GetFirst();
1603 src_wp = node->GetData();
1606 PlugInFromRoutePoint(dst_wp, src_wp);
1610 node = node->GetNext();
1615 dst_route->
m_GUID = route->m_GUID;
1621 std::unique_ptr<PlugIn_Track> t;
1623 Track* pTrack = g_pRouteMan->FindTrackByGUID(GUID);
1624 if (!pTrack)
return t;
1626 std::unique_ptr<PlugIn_Track> tk =
1631 dst_track->
m_EndString = pTrack->m_TrackEndString;
1632 dst_track->
m_GUID = pTrack->m_GUID;
1634 for (
int i = 0; i < pTrack->GetnPoints(); i++) {
1639 dst_wp->
m_lat = ptp->m_lat;
1640 dst_wp->
m_lon = ptp->m_lon;
1653 return g_overlayCanvas;
1659 auto oCanvas =
dynamic_cast<ChartCanvas*
>(canvas);
1660 if (oCanvas) gFrame->JumpToPosition(oCanvas, lat, lon,
scale);
1668 ChartCanvas* l_canvas = gFrame->GetCanvasUnderMouse();
1670 for (
unsigned int i = 0; i < g_canvasArray.GetCount(); ++i) {
1671 if (l_canvas == g_canvasArray[i])
return i;
1689 if (g_canvasConfig == 0)
1690 return gFrame->GetPrimaryCanvas();
1692 if ((canvasIndex >= 0) && g_canvasArray[canvasIndex]) {
1693 return g_canvasArray[canvasIndex];
1701 if (g_canvasConfig == 0)
1702 return gFrame->GetPrimaryCanvas()->CheckEdgePan(x, y, dragging, margin,
1705 if ((canvasIndex >= 0) && g_canvasArray[canvasIndex]) {
1706 return g_canvasArray[canvasIndex]->CheckEdgePan(x, y, dragging, margin,
1715 if (g_canvasConfig == 0)
1716 gFrame->GetPrimaryCanvas()->pPlugIn_Cursor = pCursor;
1718 if ((canvasIndex >= 0) && g_canvasArray[canvasIndex]) {
1719 g_canvasArray[canvasIndex]->pPlugIn_Cursor = pCursor;
1725 if (g_canvasConfig == 1)
return 2;
1734 return g_MainToolbar->GetToolbarRect();
1736 return wxRect(0, 0, 1, 1);
1745 g_pRouteMan->ZeroCurrentXTEToActivePoint();
1766 pivp.
lat_min = tvp.GetBBox().GetMinLat();
1767 pivp.
lat_max = tvp.GetBBox().GetMaxLat();
1768 pivp.
lon_min = tvp.GetBBox().GetMinLon();
1769 pivp.
lon_max = tvp.GetBBox().GetMaxLon();
1771 pivp.
bValid = tvp.IsValid();
1776ListOfPI_S57Obj* PlugInManager::GetLightsObjRuleListVisibleAtLatLon(
1778 ListOfPI_S57Obj* list = NULL;
1792 list = picbx->GetLightsObjRuleListVisibleAtLatLon(zlat, zlon, &pi_vp);
1803#include <wx/listimpl.cpp>
1804WX_DEFINE_LIST(Plugin_WaypointExList)
1807PlugIn_Waypoint_Ex::PlugIn_Waypoint_Ex() {
InitDefaults(); }
1809PlugIn_Waypoint_Ex::PlugIn_Waypoint_Ex(
1810 double lat,
double lon,
const wxString& icon_ident,
const wxString& wp_name,
1811 const wxString& GUID,
const double ScaMin,
const bool bNameVisible,
1812 const int nRangeRings,
const double RangeDistance,
1813 const wxColor RangeColor) {
1816 wxDateTime now = wxDateTime::Now();
1849 if (!prp)
return false;
1851 if (prp->m_bIsInRoute && !prp->IsShared())
return false;
1862 wxRouteListNode* node = pRouteList->GetFirst();
1864 Route* proute = node->GetData();
1865 wxRoutePointListNode* pnode = (proute->pRoutePointList)->GetFirst();
1868 if (prp == pWP) nCount++;
1869 pnode = pnode->GetNext();
1872 node = node->GetNext();
1878PlugIn_Waypoint_Ex::~PlugIn_Waypoint_Ex() {}
1881PlugIn_Route_Ex::PlugIn_Route_Ex(
void) {
1885PlugIn_Route_Ex::~PlugIn_Route_Ex(
void) {
1897 dst->
m_lat = src->m_lat;
1898 dst->
m_lon = src->m_lon;
1899 dst->
IconName = src->GetIconName();
1902 dst->
IconDescription = pWayPointMan->GetIconDescription(src->GetIconName());
1905 dst->
m_GUID = src->m_GUID;
1908 if (src->m_HyperlinkList ==
nullptr)
return;
1913 if (src->m_HyperlinkList->GetCount() > 0) {
1916 wxHyperlinkListNode* linknode = src->m_HyperlinkList->GetFirst();
1922 h->
Link = link->Link;
1923 h->
Type = link->LType;
1927 linknode = linknode->GetNext();
1938 dst->
scamin = src->GetScaMin();
1943static void cloneHyperlinkListEx(
RoutePoint* dst,
1949 wxPlugin_HyperlinkListNode* linknode = src->
m_HyperlinkList->GetFirst();
1955 h->Link = link->
Link;
1956 h->LType = link->
Type;
1958 dst->m_HyperlinkList->Append(h);
1960 linknode = linknode->GetNext();
1971 cloneHyperlinkListEx(pWP, src);
1978 wxDateTime dtnow(wxDateTime::Now());
1979 pWP->SetCreateTime(dtnow);
1982 pWP->m_btemp = (b_permanent ==
false);
1989 pWP->SetScaMin(src->
scamin);
1998 RoutePoint* prp = pWayPointMan->FindRoutePointByGUID(GUID);
2000 if (!prp)
return false;
2002 PlugInExFromRoutePoint(pwaypoint, prp);
2012 bool b_unique =
true;
2013 wxRoutePointListNode* prpnode = pWayPointMan->GetWaypointList()->GetFirst();
2017 if (prp->m_GUID == pwaypointex->
m_GUID) {
2021 prpnode = prpnode->GetNext();
2024 if (!b_unique)
return false;
2026 RoutePoint* pWP = CreateNewPoint(pwaypointex, b_permanent);
2028 pWP->SetShowWaypointRangeRings(pwaypointex->
nrange_rings > 0);
2030 pSelect->AddSelectableRoutePoint(pWP->m_lat, pWP->m_lon, pWP);
2031 if (b_permanent) pConfig->AddNewWayPoint(pWP, -1);
2033 if (pRouteManagerDialog && pRouteManagerDialog->IsShown())
2034 pRouteManagerDialog->UpdateWptListCtrl();
2041 bool b_found =
false;
2044 if (prp) b_found =
true;
2047 double lat_save = prp->m_lat;
2048 double lon_save = prp->m_lon;
2050 prp->m_lat = pwaypoint->
m_lat;
2051 prp->m_lon = pwaypoint->
m_lon;
2052 prp->SetIconName(pwaypoint->
IconName);
2062 prp->m_HyperlinkList->Clear();
2064 wxPlugin_HyperlinkListNode* linknode =
2071 h->Link = link->
Link;
2072 h->LType = link->
Type;
2074 prp->m_HyperlinkList->Append(h);
2076 linknode = linknode->GetNext();
2082 prp->SetWaypointRangeRingsNumber(pwaypoint->
nrange_rings);
2085 prp->SetScaMin(pwaypoint->
scamin);
2089 prp->SetShowWaypointRangeRings(pwaypoint->
nrange_rings > 0);
2091 if (prp) prp->ReLoadIcon();
2093 auto canvas = gFrame->GetPrimaryCanvas();
2094 SelectCtx ctx(canvas->m_bShowNavobjects, canvas->GetCanvasTrueScale(),
2095 canvas->GetScaleValue());
2097 pSelect->FindSelection(ctx, lat_save, lon_save, SELTYPE_ROUTEPOINT);
2099 pFind->m_slat = pwaypoint->
m_lat;
2100 pFind->m_slon = pwaypoint->
m_lon;
2103 if (!prp->m_btemp) pConfig->UpdateWayPoint(prp);
2105 if (pRouteManagerDialog && pRouteManagerDialog->IsShown())
2106 pRouteManagerDialog->UpdateWptListCtrl();
2118 wxDateTime plannedDeparture;
2120 wxPlugin_WaypointExListNode* pwpnode = proute->
pWaypointList->GetFirst();
2122 pwaypointex = pwpnode->GetData();
2124 pWP = pWayPointMan->FindRoutePointByGUID(pwaypointex->
m_GUID);
2126 pWP = CreateNewPoint(pwaypointex, b_permanent);
2130 route->AddPoint(pWP);
2132 pSelect->AddSelectableRoutePoint(pWP->m_lat, pWP->m_lon, pWP);
2135 pSelect->AddSelectableRouteSegment(pWP_src->m_lat, pWP_src->m_lon,
2136 pWP->m_lat, pWP->m_lon, pWP_src, pWP,
2143 pwpnode = pwpnode->GetNext();
2151 if (!proute->
m_GUID.IsEmpty()) {
2152 route->m_GUID = proute->
m_GUID;
2154 route->m_btemp = (b_permanent ==
false);
2158 pRouteList->Append(route);
2160 if (b_permanent) pConfig->AddNewRoute(route);
2162 if (pRouteManagerDialog && pRouteManagerDialog->IsShown())
2163 pRouteManagerDialog->UpdateRouteListCtrl();
2169 bool b_found =
false;
2172 Route* pRoute = g_pRouteMan->FindRouteByGUID(proute->
m_GUID);
2173 if (pRoute) b_found =
true;
2176 bool b_permanent = !pRoute->m_btemp;
2177 g_pRouteMan->
DeleteRoute(pRoute, NavObjectChanges::getInstance());
2200 std::unique_ptr<PlugIn_Route_Ex> r;
2201 Route* route = g_pRouteMan->FindRouteByGUID(GUID);
2202 if (route ==
nullptr)
return r;
2209 wxRoutePointListNode* node = route->pRoutePointList->GetFirst();
2212 src_wp = node->GetData();
2215 PlugInExFromRoutePoint(dst_wp, src_wp);
2219 node = node->GetNext();
2224 dst_route->
m_GUID = route->m_GUID;
2225 dst_route->
m_isActive = g_pRouteMan->GetpActiveRoute() == route;
2234 RoutePoint* rp = g_pRouteMan->GetpActivePoint();
2236 return wxEmptyString;
2243 Route* rt = g_pRouteMan->GetpActiveRoute();
2245 return wxEmptyString;
2255 MyApp& app = wxGetApp();
2256 return (app.m_comm_bridge.GetPriorityMaps());
2260 std::vector<std::string> result;
2262 MyApp& app = wxGetApp();
2265 app.m_comm_bridge.GetPriorityContainer(
"position").active_source;
2266 result.push_back(
id);
2267 id = app.m_comm_bridge.GetPriorityContainer(
"velocity").active_source;
2268 result.push_back(
id);
2269 id = app.m_comm_bridge.GetPriorityContainer(
"heading").active_source;
2270 result.push_back(
id);
2271 id = app.m_comm_bridge.GetPriorityContainer(
"variation").active_source;
2272 result.push_back(
id);
2273 id = app.m_comm_bridge.GetPriorityContainer(
"satellites").active_source;
2274 result.push_back(
id);
2281#if defined(__WXOSX__) || defined(__WXGTK3__)
2283 if (gFrame) rv = gFrame->GetContentScaleFactor();
2288 double scaler = 1.0;
2290 if (gFrame) scaler = (double)(gFrame->ToDIP(100)) / 100.;
2307 bool state = gFrame->IsFullScreen();
2308 if (set_full_screen_on && !state)
2309 gFrame->ToggleFullScreen();
2310 else if (!set_full_screen_on && state)
2311 gFrame->ToggleFullScreen();
2314extern bool g_useMUI;
2316 bool current_mui_state = g_useMUI;
2319 if (enable && !current_mui_state) {
2321 for (
unsigned int i = 0; i < g_canvasArray.GetCount(); i++) {
2323 if (cc) cc->CreateMUIBar();
2325 }
else if (!enable && current_mui_state) {
2327 for (
unsigned int i = 0; i < g_canvasArray.GetCount(); i++) {
2329 if (cc) cc->DestroyMuiBar();
2338 ChartCanvas* cc = g_canvasArray.Item(CanvasIndex);
2339 if (cc) cc->SetShowGPSCompassWindow(enable);
2345 ChartCanvas* cc = g_canvasArray.Item(CanvasIndex);
2347 return cc->GetShowGPSCompassWindow();
2354extern bool g_bShowStatusBar;
2356 g_bShowStatusBar = enable;
2357 gFrame->ConfigureStatusBar();
2363 bool current_chartbar_state = g_bShowChartBar;
2364 for (
unsigned int i = 0; i < g_canvasArray.GetCount(); i++) {
2366 if (current_chartbar_state && !enable) {
2367 gFrame->ToggleChartBar(cc);
2368 g_bShowChartBar = current_chartbar_state;
2369 }
else if (!current_chartbar_state && enable) {
2370 gFrame->ToggleChartBar(cc);
2371 g_bShowChartBar = current_chartbar_state;
2374 g_bShowChartBar = enable;
2379extern bool g_bShowMenuBar;
2382 if (g_bShowMenuBar) {
2383 g_bShowMenuBar =
false;
2384 if (gFrame->m_pMenuBar) {
2385 gFrame->SetMenuBar(NULL);
2386 gFrame->m_pMenuBar->Destroy();
2387 gFrame->m_pMenuBar = NULL;
2391 g_bShowMenuBar =
true;
2392 gFrame->BuildMenuBar();
2399 if (ps52plib) ps52plib->m_chartSymbols.UpdateTableColor(table, name, color);
2403 wxColor ret = wxColor(*wxRED);
2405 int i_table = ps52plib->m_chartSymbols.FindColorTable(map_name.c_str());
2406 ret = ps52plib->m_chartSymbols.GetwxColor(name.c_str(), i_table);
2413 ChartCanvas* cc = g_canvasArray.Item(CanvasIndex);
2414 if (cc) cc->SetShowGrid(enable);
2420 ChartCanvas* cc = g_canvasArray.Item(CanvasIndex);
2421 if (cc) cc->SetShowOutlines(enable);
2427 ChartCanvas* cc = g_canvasArray.Item(CanvasIndex);
2428 if (cc) cc->SetShowDepthUnits(enable);
2434 ChartCanvas* cc = g_canvasArray.Item(CanvasIndex);
2435 if (cc) cc->SetShowAIS(enable);
2441 ChartCanvas* cc = g_canvasArray.Item(CanvasIndex);
2442 if (cc) cc->ShowTides(enable);
2448 ChartCanvas* cc = g_canvasArray.Item(CanvasIndex);
2449 if (cc) cc->ShowCurrents(enable);
2455 ChartCanvas* cc = g_canvasArray.Item(CanvasIndex);
2456 if (cc) cc->SetShowENCText(enable);
2462 ChartCanvas* cc = g_canvasArray.Item(CanvasIndex);
2463 if (cc) cc->SetShowENCDepth(enable);
2469 ChartCanvas* cc = g_canvasArray.Item(CanvasIndex);
2470 if (cc) cc->SetShowENCBuoyLabels(enable);
2476 ChartCanvas* cc = g_canvasArray.Item(CanvasIndex);
2477 if (cc) cc->SetShowENCLights(enable);
2483 ChartCanvas* cc = g_canvasArray.Item(CanvasIndex);
2484 if (cc) cc->SetShowENCLightDesc(enable);
2489 int valSet = STANDARD;
2492 valSet = DISPLAYBASE;
2501 valSet = MARINERS_STANDARD;
2508 ChartCanvas* cc = g_canvasArray.Item(CanvasIndex);
2509 if (cc) cc->SetENCDisplayCategory(valSet);
2513 ChartCanvas* cc = g_canvasArray.Item(CanvasIndex);
2515 return ((
PI_DisCat)cc->GetENCDisplayCategory());
2517 return PI_DisCat::PI_STANDARD;
2521 int newMode = NORTH_UP_MODE;
2523 newMode = COURSE_UP_MODE;
2525 newMode = HEAD_UP_MODE;
2528 ChartCanvas* cc = g_canvasArray.Item(CanvasIndex);
2529 if (cc) cc->SetUpMode(newMode);
2534 ChartCanvas* cc = g_canvasArray.Item(CanvasIndex);
2535 if (cc)
return ((
PI_NavMode)cc->GetUpMode());
2537 return PI_NavMode::PI_NORTH_UP_MODE;
2542 ChartCanvas* cc = g_canvasArray.Item(CanvasIndex);
2543 if (cc)
return (cc->GetShowGrid());
2550 ChartCanvas* cc = g_canvasArray.Item(CanvasIndex);
2551 if (cc)
return (cc->GetShowOutlines());
2558 ChartCanvas* cc = g_canvasArray.Item(CanvasIndex);
2559 if (cc)
return (cc->GetShowDepthUnits());
2566 ChartCanvas* cc = g_canvasArray.Item(CanvasIndex);
2567 if (cc)
return (cc->GetShowAIS());
2574 ChartCanvas* cc = g_canvasArray.Item(CanvasIndex);
2575 if (cc)
return (cc->GetbShowTide());
2582 ChartCanvas* cc = g_canvasArray.Item(CanvasIndex);
2583 if (cc)
return (cc->GetbShowCurrent());
2590 ChartCanvas* cc = g_canvasArray.Item(CanvasIndex);
2591 if (cc)
return (cc->GetShowENCText());
2598 ChartCanvas* cc = g_canvasArray.Item(CanvasIndex);
2599 if (cc)
return (cc->GetShowENCDepth());
2606 ChartCanvas* cc = g_canvasArray.Item(CanvasIndex);
2607 if (cc)
return (cc->GetShowENCBuoyLabels());
2614 ChartCanvas* cc = g_canvasArray.Item(CanvasIndex);
2615 if (cc)
return (cc->GetShowENCLights());
2620bool GetShowENCLightDesc(
int CanvasIndex) {
2622 ChartCanvas* cc = g_canvasArray.Item(CanvasIndex);
2623 if (cc)
return (cc->GetbShowCurrent());
2634 ChartCanvas* cc = g_canvasArray.Item(CanvasIndex);
2635 if (cc) cc->ToggleLookahead();
2641 ChartCanvas* cc = g_canvasArray.Item(CanvasIndex);
2642 if (cc)
return (cc->GetLookahead());
2647extern bool g_bTrackActive;
2649 if (!g_bTrackActive && enable)
2651 else if (g_bTrackActive && !enable)
2657 gFrame->SetAndApplyColorScheme((ColorScheme)cs);
2664 if (win) win->Refresh(eraseBackground);
2668 if (g_canvasConfig == 1) {
2673 gFrame->CreateCanvasLayout();
2674 gFrame->DoChartUpdate();
2679 gFrame->CreateCanvasLayout();
2680 gFrame->DoChartUpdate();
2691 ChartCanvas* cc = g_canvasArray.Item(CanvasIndex);
2698 g_disable_main_toolbar = !enable;
2699 if (g_MainToolbar) g_MainToolbar->RefreshToolbar();
2703 if (gFrame) gFrame->ScheduleSettingsDialog();
2708 ChartCanvas* cc = g_canvasArray.Item(CanvasIndex);
2710 bool bfollow = cc->GetbFollow();
2711 cc->ResetOwnshipOffset();
2715 cc->JumpToPosition(gLat, gLon, cc->
GetVPScale());
2722 ChartCanvas* cc = g_canvasArray.Item(CanvasIndex);
2724 if (cc->GetbFollow() != enable_follow) cc->TogglebFollow();
2731 ChartCanvas* cc = g_canvasArray.Item(CanvasIndex);
2732 if (cc)
return cc->GetbFollow();
2739 ChartCanvas* cc = g_canvasArray.Item(CanvasIndex);
2740 if (cc) cc->SetShowFocusBar(enable);
2745 ChartCanvas* cc = g_canvasArray.Item(CanvasIndex);
2746 if (cc)
return (cc->GetShowFocusBar());
2760 pConfig->LoadMyConfigRaw(
false);
2763 pConfig->LoadCanvasConfigs(
false);
2764 auto& config_array = ConfigMgr::Get().GetCanvasConfigArray();
2765 for (
auto pcc : config_array) {
2766 if (pcc && pcc->canvas) {
2767 pcc->canvas->ApplyCanvasConfig(pcc);
2768 pcc->canvas->Refresh();
ChartCanvas - Main chart display and interaction component.
float GetVPScale()
Return the ViewPort scale factor, in physical pixels per meter.
void ZoomCanvasSimple(double factor)
Perform an immediate zoom operation without smooth transitions.
Manages the chart database and provides access to chart data.
bool LoadBinary(const wxString &filename, ArrayOfCDI &dir_array_check)
Load the chart database from a binary file.
Wrapper class for plugin-based charts.
wxFont * FindOrCreateFont(int point_size, wxFontFamily family, wxFontStyle style, wxFontWeight weight, bool underline=false, const wxString &facename=wxEmptyString, wxFontEncoding encoding=wxFONTENCODING_DEFAULT)
Creates or finds a matching font in the font cache.
wxColour GetFontColor(const wxString &TextElement) const
Gets the text color for a UI element.
bool AddAuxKey(wxString key)
Adds new plugin-defined font configuration key.
bool SetFontColor(const wxString &TextElement, const wxColour color) const
Sets the text color for a UI element.
wxFont * GetFont(const wxString &TextElement, int requested_font_size=0)
Gets a font object for a UI element.
static wxString GetUUID(void)
Return a unique RFC4122 version 4 compliant GUID string.
Extended OpenGL-optimized chart base class with additional querying capabilities.
virtual ListOfPI_S57Obj * GetLightsObjRuleListVisibleAtLatLon(float lat, float lon, PlugIn_ViewPort *VPoint)
Gets list of visible light objects at specified position.
Basic data for a loaded plugin, trivially copyable.
AIS target information accessible to plugins.
double HDG
Heading in degrees true.
int ROTAIS
Rate of turn as indicated in AIS message.
unsigned char ShipType
Ship type as per ITU-R M.1371.
double Lat
Latitude in decimal degrees.
int MMSI
Maritime Mobile Service Identity number.
bool bCPA_Valid
True if CPA calculation is valid.
double Brg
Bearing to target in degrees true.
double Lon
Longitude in decimal degrees.
double CPA
Closest Point of Approach in nautical miles.
int Class
AIS class (Class A: 0, Class B: 1)
double SOG
Speed over ground in knots.
double Range_NM
Range to target in nautical miles.
int NavStatus
Navigational status (0-15 as per ITU-R M.1371)
int IMO
IMO ship identification number.
double TCPA
Time to Closest Point of Approach in minutes.
double COG
Course over ground in degrees.
plugin_ais_alarm_type alarm_state
Current alarm state for this target.
Extended position fix information.
int nSats
Number of satellites used in the fix.
double Var
Magnetic variation in degrees, typically from RMC message.
double Cog
Course over ground in degrees.
double Lat
Latitude in decimal degrees.
double Hdm
Heading magnetic in degrees.
time_t FixTime
UTC time of fix.
double Lon
Longitude in decimal degrees.
double Sog
Speed over ground in knots.
double Hdt
Heading true in degrees.
Extended route class for managing complex route features.
wxString m_Description
Optional route description/notes.
wxString m_EndString
Description of route end point.
Plugin_WaypointExList * pWaypointList
List of waypoints making up this route in order.
wxString m_NameString
User-visible name of the route.
bool m_isVisible
True if route should be displayed.
wxString m_GUID
Globally unique identifier.
bool m_isActive
True if this is the active route.
wxString m_StartString
Description of route start point.
Plugin route class for managing ordered waypoint collections.
wxString m_GUID
Globally unique identifier.
wxString m_EndString
Name/description of ending point.
wxString m_NameString
Route name.
Plugin_WaypointList * pWaypointList
List of waypoints making up this route in order.
wxString m_StartString
Name/description of starting point.
Plugin track class for managing recorded track data.
Plugin_WaypointList * pWaypointList
List of waypoints making up this track in chronological order.
wxString m_GUID
Globally unique identifier.
wxString m_EndString
Description of track end point/time.
wxString m_StartString
Description of track start point/time.
wxString m_NameString
Display name of the track.
Contains view parameters and status information for a chart display viewport.
double view_scale_ppm
Display scale in pixels per meter.
wxRect rv_rect
Rectangle defining the rendered view area.
int pix_width
Viewport width in pixels.
double lon_max
Maximum longitude of the viewport.
double clon
Center longitude of the viewport in decimal degrees.
double lat_max
Maximum latitude of the viewport.
int pix_height
Viewport height in pixels.
double clat
Center latitude of the viewport in decimal degrees.
double skew
Display skew angle in radians.
double rotation
Display rotation angle in radians.
bool bValid
True if this viewport is valid and can be used for rendering.
double lon_min
Minimum longitude of the viewport.
double lat_min
Minimum latitude of the viewport.
int m_projection_type
Chart projection type (PROJECTION_MERCATOR, etc.)
bool b_quilt
True if the viewport is in quilt mode (showing multiple charts)
float chart_scale
Conventional chart displayed scale (e.g., 1:50000)
Extended waypoint class with additional navigation features.
bool GetFSStatus()
Gets "free-standing" status of waypoint.
wxDateTime m_CreateTime
Creation timestamp.
wxColour RangeRingColor
Color to draw range rings.
int nrange_rings
Number of range rings to display around waypoint.
wxString IconDescription
User-friendly description of icon.
bool b_useScamin
True to enable scale-dependent visibility.
double RangeRingSpace
Distance between range rings in preferred units.
Plugin_HyperlinkList * m_HyperlinkList
List of hyperlinks associated with this waypoint.
wxString m_MarkName
Display name of waypoint.
wxString m_GUID
Globally unique identifier.
double m_lon
Longitude in decimal degrees.
wxString IconName
Name of icon to use for waypoint symbol.
void InitDefaults()
Initializes waypoint properties to default values.
double scamin
Minimum display scale (1:X) for waypoint visibility.
bool IsNameVisible
True to show waypoint name on chart.
double m_lat
Latitude in decimal degrees.
wxString m_MarkDescription
Optional description text.
int GetRouteMembershipCount()
Gets number of routes containing this waypoint.
bool IsActive
Active state (e.g. destination)
bool IsVisible
Visibility state on chart.
Plugin waypoint class providing core waypoint/mark functionality.
double m_lon
Longitude in decimal degrees.
wxString m_IconName
Icon identifier.
wxString m_MarkDescription
Optional description.
wxString m_GUID
Globally unique identifier.
bool m_IsVisible
Visibility state.
PlugIn_Waypoint()
Default constructor - creates waypoint at 0,0.
wxDateTime m_CreateTime
Creation timestamp.
wxString m_MarkName
Display name.
double m_lat
Latitude in decimal degrees.
Plugin_HyperlinkList * m_HyperlinkList
List of associated hyperlinks.
Class representing a hyperlink associated with a waypoint or route.
wxString Link
The actual URL or file path.
wxString DescrText
User-visible description of the link.
wxString Type
Link type identifier (e.g., "Website", "Chart", "Image")
Represents a waypoint or mark within the navigation system.
bool m_bIsolatedMark
Flag indicating if the waypoint is a standalone mark.
Represents a navigational route in the navigation system.
wxDateTime m_PlannedDeparture
The departure time of the route, in UTC.
bool DeleteRoute(Route *pRoute, NavObjectChanges *nav_obj_changes)
Manages a set of ShapeBaseChart objects at different resolutions.
Represents a single point in a track.
wxDateTime GetCreateTime(void)
Retrieves the creation timestamp of a track point as a wxDateTime object.
void SetCreateTime(wxDateTime dt)
Sets the creation timestamp for a track point.
Represents a track, which is a series of connected track points.
ViewPort - Core geographic projection and coordinate transformation engine.
double view_scale_ppm
Requested view scale in physical pixels per meter (ppm), before applying projections.
double ref_scale
The nominal scale of the "reference chart" for this view.
int pix_height
Height of the viewport in physical pixels.
void SetBoxes(void)
Computes the bounding box coordinates for the current viewport.
double rotation
Rotation angle of the viewport in radians.
int pix_width
Width of the viewport in physical pixels.
wxPoint2DDouble GetDoublePixFromLL(double lat, double lon)
Convert latitude and longitude on the ViewPort to physical pixel coordinates with double precision.
double skew
Angular distortion (shear transform) applied to the viewport in radians.
void GetLLFromPix(const wxPoint &p, double *lat, double *lon)
Convert physical pixel coordinates on the ViewPort to latitude and longitude.
double clon
Center longitude of the viewport in degrees.
double clat
Center latitude of the viewport in degrees.
wxPoint GetPixFromLL(double lat, double lon)
Convert latitude and longitude on the ViewPort to physical pixel coordinates.
double chart_scale
Chart scale denominator (e.g., 50000 for a 1:50000 scale).
Device context class that can use either wxDC or OpenGL for drawing.
Base class for OpenCPN plugins.
Raw messages layer, supports sending and recieving navmsg messages.
wxFont * GetOCPNScaledFont(wxString item, int default_size)
Retrieves a font from FontMgr, optionally scaled for physical readability.
wxFont GetOCPNGUIScaledFont(wxString item)
Retrieves a font optimized for touch and high-resolution interfaces.
General purpose GUI support.
PlugIn Object Definition/API.
@ OBJECTS_ALL
Return all objects including those in layers.
@ OBJECTS_ONLY_LAYERS
Return only objects that are in layers.
@ OBJECTS_NO_LAYERS
Exclude objects that are in layers.
plugin_ais_alarm_type
Enumeration of AIS alarm states.
enum _PI_DisCat PI_DisCat
Display categories for S52 chart features.
PI_ColorScheme
Enumeration of color schemes.
@ PI_COURSE_UP_MODE
Course Up Mode - Current course over ground at the top.
@ PI_HEAD_UP_MODE
Head Up Mode - Current vessel heading at the top.
@ PI_OTHER
Other - additional features for detailed navigation.
@ PI_DISPLAYBASE
Display Base - features that must always be shown.
@ PI_STANDARD
Standard - default features for safe navigation.
@ PI_MARINERS_STANDARD
Mariner specified standard features.
enum _PI_NavMode PI_NavMode
Navigation mode options for chart display orientation.
enum _OBJECT_LAYER_REQ OBJECT_LAYER_REQ
Filter options for object queries.
OptionsParentPI
Enum defining parent pages in OpenCPN options dialog where plugins can add panels.
@ PI_OPTIONS_PARENT_DISPLAY
Display settings section.
@ PI_OPTIONS_PARENT_UI
User Interface section.
@ PI_OPTIONS_PARENT_SHIPS
Ships section.
@ PI_OPTIONS_PARENT_CHARTS
Charts section.
@ PI_OPTIONS_PARENT_PLUGINS
Plugins section.
@ PI_OPTIONS_PARENT_CONNECTIONS
Connections section.
void SetCanvasContextMenuItemGrey(int item, bool grey)
Sets menu item enabled/disabled state.
bool UpdateSingleWaypoint(PlugIn_Waypoint *pwaypoint)
Updates a single waypoint.
bool PlugInHasNormalizedViewPort(PlugIn_ViewPort *vp)
Checks if viewport has been normalized.
void PluginCenterOwnship(int CanvasIndex)
Center the chart view on the own ship position for a specific canvas.
void SetCanvasRotation(double rotation)
Sets chart display rotation angle.
wxString GetSelectedWaypointGUID_Plugin()
Gets GUID of currently selected waypoint.
int GetChartbarHeight(void)
Gets height of chart bar in pixels.
void RemovePlugInTool(int tool_id)
Removes a tool from OpenCPN's toolbar.
void SetCanvasProjection(int projection)
Sets chart projection type.
wxString * GetpSharedDataLocation(void)
Gets shared application data location.
double toUsrTemp_Plugin(double cel_temp, int unit)
Converts Celsius to user's preferred temperature unit.
wxWindow * PluginGetFocusCanvas()
Gets the currently focused chart canvas.
int AddChartToDBInPlace(wxString &full_path, bool b_RefreshCanvas)
Adds a chart to the database without full rebuild.
void fromSM_Plugin(double x, double y, double lat0, double lon0, double *lat, double *lon)
Converts Simple Mercator coordinates to geographic.
wxWindow * GetOCPNCanvasWindow()
Gets OpenCPN's main canvas window.
bool GetEnableLatLonGrid(int CanvasIndex)
Gets latitude/longitude grid visibility state.
bool UpdatePlugInRouteEx(PlugIn_Route_Ex *proute)
Updates an existing extended route.
void SetCanvasContextMenuItemViz(int item, bool viz)
Temporarily changes context menu item visibility.
int PlatformDirSelectorDialog(wxWindow *parent, wxString *file_spec, wxString Title, wxString initDir)
Shows platform-optimized directory selector dialog.
bool GetTouchMode()
Gets touch interface mode state.
int GetCanvasCount()
Gets total number of chart canvases.
ArrayOfPlugIn_AIS_Targets * GetAISTargetArray(void)
Gets array of AIS targets.
wxString getUsrWindSpeedUnit_Plugin(int unit)
Gets display string for user's preferred wind speed unit.
void SetCanvasMenuItemViz(int item, bool viz, const char *name)
Temporarily changes context menu item visibility.
void PlugInMultMatrixViewport(PlugIn_ViewPort *vp, float lat, float lon)
Applies viewport transformation matrix.
wxFont * OCPNGetFont(wxString TextElement, int default_size)
Gets a font for UI elements.
bool GetEnableMainToolbar()
Check if the main toolbar is enabled.
bool GetEnableENCTextDisplay(int CanvasIndex)
Gets ENC text label visibility.
bool UpdateSingleWaypointEx(PlugIn_Waypoint_Ex *pwaypoint)
Updates an existing extended waypoint.
wxArrayString GetTrackGUIDArray(void)
Gets array of track GUIDs.
wxString getUsrDistanceUnit_Plugin(int unit)
Gets display string for user's preferred distance unit.
bool DeletePlugInTrack(wxString &GUID)
Deletes a track.
bool DeletePlugInRoute(wxString &GUID)
Deletes a route.
void EnableSplitScreenLayout(bool enable)
Enable or disable the split-screen layout.
double toUsrWindSpeed_Plugin(double kts_speed, int unit)
Converts knots to user's preferred wind speed unit.
bool GetEnableLightsDisplay(int CanvasIndex)
Gets light icon visibility.
wxFont GetOCPNGUIScaledFont_PlugIn(wxString item)
Gets a uniquely scaled font copy for responsive UI elements.
wxBitmap GetBitmapFromSVGFile(wxString filename, unsigned int width, unsigned int height)
Creates bitmap from SVG file.
wxFont * FindOrCreateFont_PlugIn(int point_size, wxFontFamily family, wxFontStyle style, wxFontWeight weight, bool underline, const wxString &facename, wxFontEncoding encoding)
Creates or finds a font in the font cache.
int GetGlobalWatchdogTimoutSeconds()
Comm Global Watchdog Query
wxColour GetFontColour_PlugIn(wxString TextElement)
Gets color configured for a UI text element.
void EnableChartBar(bool enable, int CanvasIndex)
Controls visibility of chart info bar.
void PositionBearingDistanceMercator_Plugin(double lat, double lon, double brg, double dist, double *dlat, double *dlon)
Calculates destination point given start point, bearing and distance.
double toUsrDistance_Plugin(double nm_distance, int unit)
Converts nautical miles to user's preferred distance unit.
void SetENCDisplayCategory(PI_DisCat cat, int CanvasIndex)
Sets ENC (Electronic Navigation Chart) feature display category.
void toSM_Plugin(double lat, double lon, double lat0, double lon0, double *x, double *y)
Converts geographic coordinates to Simple Mercator projection.
PI_DisCat GetENCDisplayCategory(int CanvasIndex)
Gets current ENC display category.
void EnableTouchMode(bool enable)
Enables/disables touch interface mode.
void EnableCurrentStationsDisplay(bool enable, int CanvasIndex)
Controls current station icon display.
void EnableChartOutlines(bool enable, int CanvasIndex)
Controls chart outline display.
void EnableMUIBar(bool enable, int CanvasIndex)
Controls visibility of MUI (Mobile/Touch User Interface) bar.
double OCPN_GetDisplayContentScaleFactor()
Gets content scaling factor for current display.
double DistGreatCircle_Plugin(double slat, double slon, double dlat, double dlon)
Calculates great circle distance between two points.
void EnableLookaheadMode(bool enable, int CanvasIndex)
Enables/disables look-ahead mode for a canvas.
bool PluginGetFollowMode(int CanvasIndex)
Get the current follow mode status for a specific canvas.
wxArrayString GetRouteGUIDArray(void)
Gets array of route GUIDs.
wxScrolledWindow * AddOptionsPage(OptionsParentPI parent, wxString title)
Adds a new preferences page to OpenCPN options dialog.
void EnableLightsDisplay(bool enable, int CanvasIndex)
Controls light icon display.
void PlugInHandleAutopilotRoute(bool enable)
Controls autopilot route handling.
wxString getUsrDepthUnit_Plugin(int unit)
Gets display string for user's preferred depth unit.
void RemoveCanvasMenuItem(int item, const char *name)
Removes a context menu item completely.
void JumpToPosition(double lat, double lon, double scale)
Centers chart display on specified position at given scale.
int InsertPlugInToolSVG(wxString label, wxString SVGfile, wxString SVGfileRollover, wxString SVGfileToggled, wxItemKind kind, wxString shortHelp, wxString longHelp, wxObject *clientData, int position, int tool_sel, opencpn_plugin *pplugin)
Adds a tool using SVG graphics.
bool GetEnableCurrentStationsDisplay(int CanvasIndex)
Gets current station icon visibility.
wxDialog * GetActiveOptionsDialog()
Gets pointer to active options dialog.
wxString getUsrSpeedUnit_Plugin(int unit)
Gets display string for user's preferred speed unit.
std::unique_ptr< PlugIn_Waypoint > GetWaypoint_Plugin(const wxString &GUID)
Gets waypoint details by GUID.
bool GetEnableLookaheadMode(int CanvasIndex)
Gets look-ahead mode state for a canvas.
void EnableTideStationsDisplay(bool enable, int CanvasIndex)
Controls tide station icon display.
bool GetEnableChartBar(int CanvasIndex)
Gets chart bar visibility state.
wxBitmap GetIcon_PlugIn(const wxString &name)
Gets icon bitmap by name.
wxArrayString GetIconNameArray(void)
Gets array of available waypoint icons.
bool PlugIn_GSHHS_CrossesLand(double lat1, double lon1, double lat2, double lon2)
Checks if a great circle route crosses land.
void SetNavigationMode(PI_NavMode mode, int CanvasIndex)
Sets the navigation mode for a specific chart canvas.
bool GetEnableStatusBar()
Gets status bar visibility state.
bool GetEnableDepthUnitDisplay(int CanvasIndex)
Gets depth unit display state.
int InsertPlugInTool(wxString label, wxBitmap *bitmap, wxBitmap *bmpRollover, wxItemKind kind, wxString shortHelp, wxString longHelp, wxObject *clientData, int position, int tool_sel, opencpn_plugin *pplugin)
Adds a tool to OpenCPN's toolbar.
void EnableENCDepthSoundingsDisplay(bool enable, int CanvasIndex)
Controls ENC depth sounding display.
void PlugInAISDrawGL(wxGLCanvas *glcanvas, const PlugIn_ViewPort &vp)
Renders AIS targets on a secondary OpenGL canvas.
double GetCanvasTilt()
Gets current canvas tilt angle.
void AddChartDirectory(wxString &path)
Adds a chart directory to OpenCPN's chart database.
double fromDMM_PlugIn(wxString sdms)
Parse a formatted coordinate string to get decimal degrees.
double toUsrDepth_Plugin(double m_depth, int unit)
Converts meters to user's preferred depth unit.
bool GetActiveRoutepointGPX(char *buffer, unsigned int buffer_length)
Gets GPX representation of active route waypoint.
double PlugInGetDisplaySizeMM()
Gets physical display size in millimeters.
bool UpdatePlugInRoute(PlugIn_Route *proute)
Updates an existing route.
void SetToolbarToolBitmaps(int item, wxBitmap *bitmap, wxBitmap *bmpRollover)
Updates toolbar tool bitmaps.
void EnableBuoyLightLabelsDisplay(bool enable, int CanvasIndex)
Controls buoy/light name label display.
wxString GetActiveWaypointGUID(void)
Gets GUID of currently active waypoint.
void ConfigFlushAndReload()
Flush configuration changes to disk and reload settings.
void EnableAisTargetDisplay(bool enable, int CanvasIndex)
Controls AIS target display.
int PlatformFileSelectorDialog(wxWindow *parent, wxString *file_spec, wxString Title, wxString initDir, wxString suggestedName, wxString wildcard)
Shows platform-optimized file selector dialog.
bool CheckMUIEdgePan_PlugIn(int x, int y, bool dragging, int margin, int delta, int canvasIndex)
Checks if chart should pan when cursor near edge.
double fromUsrDepth_Plugin(double usr_depth, int unit)
Converts from user's preferred depth unit to meters.
bool AddPlugInRoute(PlugIn_Route *proute, bool b_permanent)
Adds a new route.
wxString GetNewGUID(void)
Generates a new globally unique identifier (GUID).
double fromDMM_Plugin(wxString sdms)
Converts degrees/decimal minutes string to decimal degrees.
void EnableENCTextDisplay(bool enable, int CanvasIndex)
Controls ENC text label display.
int GetCanvasIndexUnderMouse(void)
Gets index of chart canvas under mouse cursor.
void EnableTenHertzUpdate(bool enable)
Enable or disable 10 Hz update rate.
wxRect GetMasterToolbarRect()
Gets bounding rectangle of master toolbar.
void toTM_Plugin(float lat, float lon, float lat0, float lon0, double *x, double *y)
Converts geographic coordinates to Transverse Mercator projection.
void CanvasJumpToPosition(wxWindow *canvas, double lat, double lon, double scale)
Centers specified canvas on given position at given scale.
bool GetGlobalColor(wxString colorName, wxColour *pcolour)
Gets a global color value.
double fromUsrSpeed_Plugin(double usr_speed, int unit)
Converts from user's preferred speed unit to knots.
void GetDoubleCanvasPixLL(PlugIn_ViewPort *vp, wxPoint2DDouble *pp, double lat, double lon)
Converts lat/lon to canvas pixels with double precision.
std::unique_ptr< PlugIn_Track > GetTrack_Plugin(const wxString &GUID)
Gets track details by GUID.
bool PlugInPlaySoundEx(wxString &sound_file, int deviceIndex)
Start playing a sound file asynchronously.
void EnableCompassGPSIcon(bool enable, int CanvasIndex)
Controls visibility of compass/GPS status icon.
wxString GetActiveRouteGUID(void)
Gets GUID of currently active route.
void EnableDepthUnitDisplay(bool enable, int CanvasIndex)
Controls depth unit display.
bool GetEnableTideStationsDisplay(int CanvasIndex)
Gets tide station icon visibility.
bool PlugInSetFontColor(const wxString TextElement, const wxColour color)
Sets text color for a UI element.
wxWindow * GetCanvasUnderMouse(void)
Gets canvas window under mouse cursor.
std::unique_ptr< PlugIn_Waypoint_Ex > GetWaypointEx_Plugin(const wxString &GUID)
Gets extended waypoint by GUID.
bool GetTrackingMode()
Get the current tracking mode status.
bool GetEnableChartOutlines(int CanvasIndex)
Gets chart outline visibility state.
void GetCanvasPixLL(PlugIn_ViewPort *vp, wxPoint *pp, double lat, double lon)
Converts lat/lon to canvas physical pixel coordinates.
wxColor GetGlobalColorD(std::string map_name, std::string name)
Gets a color from the global color scheme.
bool GetEnableCompassGPSIcon(int CanvasIndex)
Gets compass icon visibility state.
void SetMUICursor_PlugIn(wxCursor *pCursor, int canvasIndex)
Sets mouse cursor for specific canvas.
void EnableMenu(bool enable)
Shows/hides the main menu bar.
void DimeWindow(wxWindow *win)
Applies system color scheme to window.
bool GetEnableAisTargetDisplay(int CanvasIndex)
Gets AIS target display state.
std::vector< std::string > GetPriorityMaps()
Comm Priority query support methods
double GetOCPNGUIToolScaleFactor_PlugIn()
Gets current global GUI scaling factor.
void SetToolbarToolBitmapsSVG(int item, wxString SVGfile, wxString SVGfileRollover, wxString SVGfileToggled)
Updates SVG graphics for toolbar tool.
wxString getUsrTempUnit_Plugin(int unit)
Gets display string for user's preferred temperature unit.
bool AddSingleWaypointEx(PlugIn_Waypoint_Ex *pwaypointex, bool b_permanent)
Adds a waypoint with extended properties.
wxArrayString GetWaypointGUIDArray(void)
Gets array of all waypoint/marks GUIDs.
int AddCanvasContextMenuItem(wxMenuItem *pitem, opencpn_plugin *pplugin)
Adds item to chart canvas context menu.
wxString GetActiveStyleName()
Gets name of currently active style sheet.
wxArrayString GetChartDBDirArrayString()
Gets chart database directory list.
void SetCursor_PlugIn(wxCursor *pCursor)
Sets mouse cursor.
bool GetEnableTenHertzUpdate()
Check if 10 Hz update rate is enabled.
wxString GetLocaleCanonicalName()
Gets system locale canonical name.
wxWindow * PluginGetOverlayRenderCanvas()
Gets the canvas currently designated for overlay rendering.
bool AddPersistentFontKey(wxString TextElement)
Registers a new font configuration element.
bool AddPlugInTrack(PlugIn_Track *ptrack, bool b_permanent)
Adds a new track.
bool UpdateChartDBInplace(wxArrayString dir_array, bool b_force_update, bool b_ProgressDialog)
Updates chart database in place.
void RequestWindowRefresh(wxWindow *win, bool eraseBackground)
Requests window refresh.
void EnableLatLonGrid(bool enable, int CanvasIndex)
Controls latitude/longitude grid display.
void SetAppColorScheme(PI_ColorScheme cs)
Set the application color scheme.
bool DeleteSingleWaypoint(wxString &GUID)
Deletes a single waypoint.
void RemoveCanvasContextMenuItem(int item)
Removes a context menu item completely.
bool DecodeSingleVDOMessage(const wxString &str, PlugIn_Position_Fix_Ex *pos, wxString *accumulator)
Decodes a single VDO (Own Ship AIS) message.
bool AddCustomWaypointIcon(wxBitmap *pimage, wxString key, wxString description)
Adds a custom waypoint icon.
bool CheckEdgePan_PlugIn(int x, int y, bool dragging, int margin, int delta)
Checks if chart should pan when cursor near edge.
double toUsrSpeed_Plugin(double kts_speed, int unit)
Converts knots to user's preferred speed unit.
std::unique_ptr< PlugIn_Route_Ex > GetRouteEx_Plugin(const wxString &GUID)
Gets extended route by GUID.
std::vector< std::string > GetActivePriorityIdentifiers()
Gets list of active priority identifiers.
bool GetEnableENCDepthSoundingsDisplay(int CanvasIndex)
Gets ENC depth sounding visibility.
void SetToolbarItemState(int item, bool toggle)
Sets toolbar item toggle state.
bool DeleteOptionsPage(wxScrolledWindow *page)
Removes a previously added options page.
void EnableLightDescriptionsDisplay(bool enable, int CanvasIndex)
Controls light description text display.
float GetOCPNChartScaleFactor_Plugin()
Gets chart rendering scale factor.
PI_NavMode GetNavigationMode(int CanvasIndex)
Gets current navigation mode for a canvas.
int AddCanvasMenuItem(wxMenuItem *pitem, opencpn_plugin *pplugin, const char *name)
Adds item to canvas context menu.
int RemoveChartFromDBInPlace(wxString &full_path)
Removes a chart from database without full rebuild.
void PlugInNormalizeViewport(PlugIn_ViewPort *vp, float lat, float lon)
Normalizes viewport parameters.
PI_ColorScheme GetAppColorScheme()
Get the current application color scheme.
void ExitOCPN()
Exits OpenCPN application.
wxWindow * GetCanvasByIndex(int canvasIndex)
Gets chart canvas window by index.
void fromTM_Plugin(double x, double y, double lat0, double lon0, double *lat, double *lon)
Converts Transverse Mercator coordinates to geographic.
double OCPN_GetWinDIPScaleFactor()
Gets Windows-specific DPI scaling factor.
void PushNMEABuffer(wxString buf)
Pushes NMEA sentence to the system.
void SetEnableMainToolbar(bool enable)
Show or hide the main toolbar.
void SetFullScreen(bool set_full_screen_on)
Sets full screen mode.
bool GetEnableMenu()
Gets menu bar visibility state.
void SetCanvasMenuItemGrey(int item, bool grey, const char *name)
Sets menu item enabled/disabled state.
bool GetEnableBuoyLightLabelsDisplay(int CanvasIndex)
Gets buoy/light label visibility.
double fromUsrWindSpeed_Plugin(double usr_wspeed, int unit)
Converts from user's preferred wind speed unit to knots.
bool GetEnableCanvasFocusBar(int CanvasIndex)
Gets focus indicator visibility state.
wxXmlDocument GetChartDatabaseEntryXML(int dbIndex, bool b_getGeom)
Gets chart database entry as XML.
wxAuiManager * GetFrameAuiManager(void)
Gets main frame AUI manager.
void SendPluginMessage(wxString message_id, wxString message_body)
Sends message to other plugins.
bool AddPlugInRouteEx(PlugIn_Route_Ex *proute, bool b_permanent)
Adds a route with extended features.
void fromSM_ECC_Plugin(double x, double y, double lat0, double lon0, double *lat, double *lon)
Converts Elliptical Simple Mercator coordinates to geographic.
void EnableStatusBar(bool enable)
Shows/hides the status bar.
void RequestRefresh(wxWindow *win)
Requests window refresh.
void PluginZoomCanvas(int CanvasIndex, double factor)
Zoom a specific chart canvas by the given factor.
int GetLatLonFormat()
Gets currently selected latitude/longitude display format.
bool AddSingleWaypoint(PlugIn_Waypoint *pwaypoint, bool b_permanent)
Adds a single waypoint.
bool IsTouchInterface_PlugIn(void)
Checks if touch interface mode is enabled.
bool GetSingleWaypoint(wxString GUID, PlugIn_Waypoint *pwaypoint)
Gets waypoint data by GUID.
void SetToolbarToolViz(int item, bool viz)
Temporarily changes toolbar tool visibility.
double fromUsrTemp_Plugin(double usr_temp, int unit)
Converts from user's preferred temperature unit to Celsius.
void SetCanvasTilt(double tilt)
Gets current canvas tilt angle.
std::unique_ptr< PlugIn_Route > GetRoute_Plugin(const wxString &GUID)
Gets route details by GUID.
bool GetEnableMUIBar(int CanvasIndex)
Gets MUI bar visibility state.
bool AddLocaleCatalog(wxString catalog)
Adds a locale catalog for translations.
bool GetFullScreen()
Gets full screen state.
void SetTrackingMode(bool enable)
Enable or disable tracking mode.
wxString g_locale
Global locale setting for OpenCPN UI.
void PluginSetFollowMode(int CanvasIndex, bool enable_follow)
Set follow mode for a specific canvas.
void ShowGlobalSettingsDialog()
Display the global settings dialog.
void toSM_ECC_Plugin(double lat, double lon, double lat0, double lon0, double *x, double *y)
Converts geographic coordinates to Elliptical Simple Mercator projection.
bool UpdatePlugInTrack(PlugIn_Track *ptrack)
Updates an existing track.
double fromUsrDistance_Plugin(double usr_distance, int unit)
Converts from user's preferred distance unit to nautical miles.
wxString GetSelectedTrackGUID_Plugin()
Gets GUID of currently selected track.
wxFileConfig * GetOCPNConfigObject(void)
Gets OpenCPN's configuration object.
void DistanceBearingMercator_Plugin(double lat0, double lon0, double lat1, double lon1, double *brg, double *dist)
Calculates bearing and distance between two points.
void SetGlobalColor(std::string table, std::string name, wxColor color)
Sets a color in the global color scheme.
void ZeroXTE()
Resets cross track error to zero.
void PlugInPlaySound(wxString &sound_file)
Plays a sound file asynchronously.
void GetCanvasLLPix(PlugIn_ViewPort *vp, wxPoint p, double *plat, double *plon)
Converts canvas physical pixel coordinates to lat/lon.
void EnableCanvasFocusBar(bool enable, int CanvasIndex)
Controls visibility of canvas focus indicator.
wxString GetSelectedRouteGUID_Plugin()
Gets GUID of currently selected route.
double g_display_size_mm
The width of the physical screen in millimeters.
void ForceChartDBUpdate()
Forces an update of the chart database.
bool GetSingleWaypointEx(wxString GUID, PlugIn_Waypoint_Ex *pwaypoint)
Gets extended waypoint data by GUID.
bool ShuttingDown(void)
Checks if OpenCPN is in shutdown process.
void ForceChartDBRebuild()
Forces complete rebuild of chart database.
Tools to send data to plugins.
A generic position and navigation data structure.
double kCog
Course over ground in degrees.
double kHdt
True heading in degrees.
double kLat
Latitude in decimal degrees.
double kSog
Speed over ground in knots.
double kLon
Longitude in decimal degrees.