52 dst->
m_lat = src->m_lat;
53 dst->
m_lon = src->m_lon;
57 dst->
IconDescription = pWayPointMan->GetIconDescription(src->GetIconName());
74 h->
Type = link->LType;
89 dst->
scamin = src->GetScaMin();
93 dst->
scamax = src->GetScaMax();
100static void cloneHyperlinkListExV2(
RoutePoint* dst,
106 Plugin_HyperlinkList::compatibility_iterator linknode =
113 h->Link = link->
Link;
114 h->LType = link->
Type;
118 linknode = linknode->GetNext();
130 cloneHyperlinkListExV2(pWP, src);
140 pWP->
m_btemp = (b_permanent ==
false);
149 pWP->SetScaMin(src->
scamin);
156 pWP->SetScaMax(src->
scamax);
158 if (src->
m_ETD.IsValid())
161 pWP->
SetETD(wxEmptyString);
166 ::Route* route = new ::Route();
171 wxDateTime plannedDeparture;
173 Plugin_WaypointExV2List::compatibility_iterator pwpnode =
176 pwaypointex = pwpnode->GetData();
178 pWP = pWayPointMan->FindRoutePointByGUID(pwaypointex->
m_GUID);
180 pWP = CreateNewPoint(pwaypointex, b_permanent);
184 route->AddPoint(pWP);
186 pSelect->AddSelectableRoutePoint(pWP->m_lat, pWP->m_lon, pWP);
189 pSelect->AddSelectableRouteSegment(pWP_src->m_lat, pWP_src->m_lon,
190 pWP->m_lat, pWP->m_lon, pWP_src, pWP,
197 pwpnode = pwpnode->GetNext();
205 if (!proute->
m_GUID.IsEmpty()) {
208 route->
m_btemp = (b_permanent ==
false);
214 route->
m_style = proute->m_style;
222 NavObj_dB::GetInstance().InsertRoute(route);
225 GuiEvents::GetInstance().on_routes_update.Notify();
231 bool b_found =
false;
235 if (pRoute) b_found =
true;
238 bool b_permanent = !pRoute->
m_btemp;
241 b_found = AddPlugInRouteExV3(proute, b_permanent);
250 dst->
m_lat = src->m_lat;
251 dst->
m_lon = src->m_lon;
255 dst->
IconDescription = pWayPointMan->GetIconDescription(src->GetIconName());
270 h->
Link = link->Link;
271 h->
Type = link->LType;
284 dst->
scamin = src->GetScaMin();
289static void cloneHyperlinkListEx(
RoutePoint* dst,
295 Plugin_HyperlinkList::compatibility_iterator linknode =
302 h->Link = link->
Link;
303 h->LType = link->
Type;
307 linknode = linknode->GetNext();
312static wxString DropMarkPI(
double lat,
double lon) {
313 if ((fabs(lat) > 80.0) || (fabs(lon) > 180.))
return "";
316 new RoutePoint(lat, lon, g_default_wp_icon, wxEmptyString, wxEmptyString);
318 pSelect->AddSelectableRoutePoint(lat, lon, pWP);
319 NavObj_dB::GetInstance().InsertRoutePoint(pWP);
323static wxString RouteCreatePI(
int canvas_index,
bool start) {
331 return cc->FinishRoute();
338static bool DoMeasurePI(
int canvas_index,
bool start) {
343 cc->StartMeasureRoute();
346 cc->CancelMeasureRoute();
355static void EnableDefaultConsole(
bool enable) {
356 g_bhide_route_console = !enable;
359static wxString NavToHerePI(
double lat,
double lon) {
361 new RoutePoint(lat, lon, g_default_wp_icon, wxEmptyString, wxEmptyString);
362 pSelect->AddSelectableRoutePoint(lat, lon, pWP_dest);
365 wxEmptyString, wxEmptyString);
371 temp_route->AddPoint(pWP_src);
372 temp_route->AddPoint(pWP_dest);
374 pSelect->AddSelectableRouteSegment(
gLat,
gLon, lat, lon, pWP_src, pWP_dest,
385 return temp_route->
m_GUID;
388static bool ActivateRoutePI(wxString route_guid,
bool activate) {
390 if (!route)
return false;
407static void SetMaxZoomScale(
double max_scale) {
408 g_maxzoomin = wxRound(wxMax(max_scale, 100.));
411static void EnableDefaultContextMenus(
bool enable) {
412 g_bhide_context_menus = !enable;
415static void SetMinZoomScale(
double min_scale) {
416 for (
unsigned int i = 0; i <
g_canvasArray.GetCount(); i++) {
418 cc->SetAbsoluteMinScale(min_scale);
422static std::shared_ptr<HostApi121::PiPointContext> GetContextAtPoint(
423 int x,
int y,
int canvas_index) {
426 return cc->GetCanvasContextAtPoint(x, y);
428 auto rstruct = std::make_shared<HostApi121::PiPointContext>();
429 rstruct->object_type = HostApi121::PiContextObjectType::kObjectUnknown;
430 rstruct->object_ident =
"";
435static wxBitmap GetObjectIcon_PlugIn(
const wxString& name) {
437 return *pWayPointMan->GetIconBitmap(name);
442static bool IsRouteActive(wxString route_guid) {
444 return (route_guid.IsSameAs(
g_pRouteMan->GetpActiveRoute()->m_GUID));
449static void SetBoatPosition(
double zlat,
double zlon) {
452 GuiEvents::GetInstance().gframe_update_status_bar.Notify();
455static void RouteInsertWaypoint(
int canvas_index, wxString route_guid,
456 double zlat,
double zlon) {
467 if ((seltype & SELTYPE_ROUTESEGMENT) != SELTYPE_ROUTESEGMENT)
return;
470 route->InsertPointAfter(parent->GetFoundRoutepoint(), zlat, zlon, rename);
472 pSelect->DeleteAllSelectableRoutePoints(route);
473 pSelect->DeleteAllSelectableRouteSegments(route);
474 pSelect->AddAllSelectableRouteSegments(route);
475 pSelect->AddAllSelectableRoutePoints(route);
477 NavObj_dB::GetInstance().UpdateRoute(route);
480static void RouteAppendWaypoint(
int canvas_index, wxString route_guid) {
488 parent->m_pMouseRoute = route;
489 parent->m_routeState = route->GetnPoints() + 1;
491 parent->m_pMouseRoute->SetHiLite(50);
493 auto pLast = route->GetLastPoint();
495 parent->m_prev_rlat = pLast->m_lat;
496 parent->m_prev_rlon = pLast->m_lon;
497 parent->m_prev_pMousePoint = pLast;
499 parent->m_bAppendingRoute =
true;
502static void FinishRoute(
int canvas_index) {
507 parent->FinishRoute();
510static bool IsRouteBeingCreated(
int canvas_index) {
513 if (!parent)
return false;
514 return !(parent->m_pMouseRoute == NULL);
517static bool AreRouteWaypointNamesVisible(wxString route_guid) {
519 if (!route)
return false;
520 return route->AreWaypointNamesVisible();
523static void ShowRouteWaypointNames(wxString route_guid,
bool show) {
526 route->ShowWaypointNames(show);
529static void NavigateToWaypoint(wxString waypoint_guid) {
530 RoutePoint* prp = pWayPointMan->FindRoutePointByGUID(waypoint_guid);
534 wxEmptyString, wxEmptyString);
540 temp_route->AddPoint(pWP_src);
541 temp_route->AddPoint(prp);
542 prp->SetShared(
true);
545 pWP_src, prp, temp_route);
547 wxString name = prp->GetName();
548 if (name.IsEmpty()) name = _(
"(Unnamed Waypoint)");
549 wxString rteName = _(
"Go to ");
550 rteName.Append(name);
561static bool IsAISTrackVisible(wxString ais_mmsi) {
563 ais_mmsi.ToLong(&mmsi);
564 auto myptarget =
g_pAIS->Get_Target_Data_From_MMSI(mmsi);
566 return myptarget->b_show_track;
571static void AISToggleShowTrack(wxString ais_mmsi) {
573 ais_mmsi.ToLong(&mmsi);
574 auto myptarget =
g_pAIS->Get_Target_Data_From_MMSI(mmsi);
575 if (myptarget) myptarget->ToggleShowTrack();
578static void AISToggleShowCPA(wxString ais_mmsi) {
580 ais_mmsi.ToLong(&mmsi);
581 auto myptarget =
g_pAIS->Get_Target_Data_From_MMSI(mmsi);
582 if (myptarget) myptarget->Toggle_AIS_CPA();
585static void ShowAISTargetQueryDialog(
int canvas_index, wxString ais_mmsi) {
591 ais_mmsi.ToLong(&mmsi);
592 ShowAISTargetQueryDialog(parent, mmsi);
595static void ShowAISTargetList(
int canvas_index) {
599 parent->ShowAISTargetList();
602static bool IsMeasureActive(
int canvas_index) {
605 if (!parent)
return false;
606 return parent->m_bMeasure_Active;
609static void CancelMeasure(
int canvas_index) {
613 parent->CancelMeasureRoute();
616static void SetDepthUnitVisible(
bool bviz) { g_bhide_depth_units = !bviz; }
618static void SetOverzoomFlagVisible(
bool bviz) { g_bhide_overzoom_flag = !bviz; }
621static void AddNoShowDirectory(std::string chart_dir) {
625static void RemoveNoShowDirectory(std::string chart_dir) {
634static const std::vector<std::string>& GetNoShowVector() {
649 int ref_index = oCanvas->GetQuiltReferenceChartIndex();
650 if (ref_index == -1)
return false;
655 if (cte_ref.GetChartFamily() == Family) {
656 if (!cte_ref.IsBasemap())
return false;
660 int index_smallest_nobasemap = -1;
663 for (
auto index : oCanvas->m_pQuilt->GetFullscreenIndexArray()) {
665 if ((cte.GetChartFamily() == Family) && !cte.IsBasemap())
666 index_smallest_nobasemap = index;
668 if (index_smallest_nobasemap < 0) {
671 int index_smallest_basemap = -1;
672 int scale_smallest_basemap = 1;
673 for (
auto index : oCanvas->m_pQuilt->GetFullscreenIndexArray()) {
675 if ((cte.GetChartFamily() == Family) && cte.IsBasemap()) {
676 if (cte.GetScale() > scale_smallest_basemap) {
677 scale_smallest_basemap = cte.GetScale();
678 index_smallest_basemap = index;
682 if (index_smallest_basemap >= 0) {
684 ChartData->GetChartTableEntry(index_smallest_basemap);
685 oCanvas->SelectQuiltRefdbChart(index_smallest_basemap,
false);
687 oCanvas->ZoomCanvasSimple(.9999);
688 oCanvas->DoCanvasUpdate();
695 int target_scale = cte_ref.GetScale();
697 int target_index = -1;
698 for (
auto index : oCanvas->m_pQuilt->GetFullscreenIndexArray()) {
700 if (cte.GetChartFamily() != Family)
continue;
701 if (cte.IsBasemap())
continue;
703 if (cte.GetScale() == target_scale) {
704 target_index = index;
709 if (target_index < 0) {
711 for (
auto index : oCanvas->m_pQuilt->GetFullscreenIndexArray()) {
713 if (cte.GetChartFamily() != Family)
continue;
714 if (cte.IsBasemap())
continue;
715 if (cte.GetScale() <= target_scale) {
716 target_index = index;
721 if (target_index < 0) {
723 for (
auto index : oCanvas->m_pQuilt->GetFullscreenIndexArray()) {
725 if (cte.GetChartFamily() != Family)
continue;
726 if (cte.IsBasemap())
continue;
727 if (cte.GetScale() > target_scale) {
728 target_index = index;
734 if (target_index >= 0) {
737 if (oCanvas->IsChartQuiltableRef(target_index)) {
738 oCanvas->SelectQuiltRefdbChart(target_index,
false);
741 oCanvas->ZoomCanvasSimple(.9999);
742 oCanvas->DoCanvasUpdate();
751static void CenterToAisTarget(wxString ais_mmsi) {
753 if (ais_mmsi.ToLong(&mmsi)) {
754 std::shared_ptr<AisTargetData> pAISTarget =
nullptr;
755 if (
g_pAIS) pAISTarget =
g_pAIS->Get_Target_Data_From_MMSI(mmsi);
758 GuiEvents::GetInstance().on_center_ais_target.Notify(pAISTarget);
762static void AisTargetCreateWpt(wxString ais_mmsi) {
764 if (ais_mmsi.ToLong(&mmsi)) {
765 std::shared_ptr<AisTargetData> pAISTarget = NULL;
766 if (
g_pAIS) pAISTarget =
g_pAIS->Get_Target_Data_From_MMSI(mmsi);
770 new RoutePoint(pAISTarget->Lat, pAISTarget->Lon, g_default_wp_icon,
771 wxEmptyString, wxEmptyString);
773 pSelect->AddSelectableRoutePoint(pAISTarget->Lat, pAISTarget->Lon, pWP);
774 NavObj_dB::GetInstance().InsertRoutePoint(pWP);
776 GuiEvents::GetInstance().on_routes_update.Notify();
781static void AisShowAllTracks(
bool show) {
783 for (
const auto& it :
g_pAIS->GetTargetList()) {
784 auto pAISTarget = it.second;
785 if (NULL != pAISTarget) {
786 pAISTarget->b_show_track = show;
789 std::map<int, Track*>::iterator itt;
790 itt =
g_pAIS->m_persistent_tracks.find(pAISTarget->MMSI);
791 if (itt !=
g_pAIS->m_persistent_tracks.end()) {
792 pAISTarget->b_show_track_old = show;
800static void AisToggleTrack(wxString ais_mmsi) {
802 if (ais_mmsi.ToLong(&mmsi)) {
803 std::shared_ptr<AisTargetData> pAISTarget = NULL;
804 if (
g_pAIS) pAISTarget =
g_pAIS->Get_Target_Data_From_MMSI(mmsi);
807 pAISTarget->b_show_track_old =
808 pAISTarget->b_show_track;
809 pAISTarget->b_show_track =
810 !pAISTarget->b_show_track;
815static int GetContextMenuMask() {
return g_canvas_context_menu_disable_mask; }
817static void SetContextMenuMask(
int mask) {
818 g_canvas_context_menu_disable_mask = mask;
821static bool IsAIS_CPAVisible(wxString ais_mmsi) {
823 ais_mmsi.ToLong(&mmsi);
824 auto myptarget =
g_pAIS->Get_Target_Data_From_MMSI(mmsi);
826 return myptarget->b_show_AIS_CPA;
831static void SetTrackVisibility(
const wxString& track_GUID,
bool viz) {
833 if (ptrack->m_GUID == track_GUID) {
834 ptrack->SetVisible(viz);
842bool GetNearestTideStation(
double lat,
double lon,
844 if (!
ptcmgr || !
ptcmgr->IsReady() || !station)
return false;
846 auto stations =
ptcmgr->GetStationsForLL(lat, lon);
847 for (
auto& [dist, pIDX] : stations) {
848 if (pIDX->IDX_type ==
'T' || pIDX->IDX_type ==
't') {
850 for (
int i = 1; i <=
ptcmgr->Get_max_IDX(); i++) {
851#pragma GCC diagnostic push
852#pragma GCC diagnostic ignored "-Wstringop-truncation"
853 if (
ptcmgr->GetIDX_entry(i) == pIDX) {
855 strncpy(station->name, pIDX->IDX_station_name, 89);
856 station->name[89] =
'\0';
857 station->lat = pIDX->IDX_lat;
858 station->lon = pIDX->IDX_lon;
861#pragma GCC diagnostic pop
868bool GetTideHeight(
int stationIndex, time_t time,
float* height) {
869 if (!
ptcmgr || !
ptcmgr->IsReady() || !height)
return false;
871 return ptcmgr->GetTideOrCurrent(time, stationIndex, *height, dir);
875 return ::AddPlugInRouteExV3(route, permanent);
879 return ::UpdatePlugInRouteExV3(route);
884 if (!route)
return nullptr;
886 auto dst_route = std::make_unique<HostApi121::Route>();
890 PlugInExV2FromRoutePoint(dst_wp, src_wp);
891 dst_route->pWaypointList->Append(dst_wp);
896 dst_route->m_GUID = route->
m_GUID;
897 dst_route->m_isActive =
g_pRouteMan->GetpActiveRoute() == route;
898 dst_route->m_isVisible = route->IsVisible();
901 dst_route->m_Colour = route->
m_Colour;
902 dst_route->m_style = route->
m_style;
909wxString HostApi121::DropMarkPI(
double lat,
double lon) {
910 return ::DropMarkPI(lat, lon);
913wxString HostApi121::RouteCreatePI(
int canvas_index,
bool start) {
914 return ::RouteCreatePI(canvas_index, start);
917bool HostApi121::DoMeasurePI(
int canvas_index,
bool start) {
918 return ::DoMeasurePI(canvas_index, start);
921wxString HostApi121::NavToHerePI(
double lat,
double lon) {
922 return ::NavToHerePI(lat, lon);
925bool HostApi121::ActivateRoutePI(wxString route_guid,
bool activate) {
926 return ::ActivateRoutePI(route_guid, activate);
929void HostApi121::EnableDefaultConsole(
bool enable) {
930 ::EnableDefaultConsole(enable);
933void HostApi121::EnableDefaultContextMenus(
bool enable) {
934 ::EnableDefaultContextMenus(enable);
937void HostApi121::SetMinZoomScale(
double min_scale) {
938 ::SetMinZoomScale(min_scale);
941void HostApi121::SetMaxZoomScale(
double max_scale) {
942 ::SetMaxZoomScale(max_scale);
945std::shared_ptr<HostApi121::PiPointContext> HostApi121::GetContextAtPoint(
946 int x,
int y,
int canvas_index) {
947 return ::GetContextAtPoint(x, y, canvas_index);
950wxBitmap HostApi121::GetObjectIcon_PlugIn(
const wxString& name) {
951 return ::GetObjectIcon_PlugIn(name);
954bool HostApi121::IsRouteActive(wxString route_guid) {
955 return ::IsRouteActive(route_guid);
958void HostApi121::SetBoatPosition(
double zlat,
double zlon) {
959 ::SetBoatPosition(zlat, zlon);
962void HostApi121::RouteInsertWaypoint(
int canvas_index, wxString route_guid,
963 double zlat,
double zlon) {
964 ::RouteInsertWaypoint(canvas_index, route_guid, zlat, zlon);
967void HostApi121::RouteAppendWaypoint(
int canvas_index, wxString route_guid) {
968 ::RouteAppendWaypoint(canvas_index, route_guid);
971void HostApi121::FinishRoute(
int canvas_index) { ::FinishRoute(canvas_index); }
973bool HostApi121::IsRouteBeingCreated(
int canvas_index) {
974 return ::IsRouteBeingCreated(canvas_index);
977bool HostApi121::AreRouteWaypointNamesVisible(wxString route_guid) {
978 return ::AreRouteWaypointNamesVisible(route_guid);
981void HostApi121::ShowRouteWaypointNames(wxString route_guid,
bool show) {
982 ::ShowRouteWaypointNames(route_guid, show);
985void HostApi121::NavigateToWaypoint(wxString waypoint_guid) {
986 ::NavigateToWaypoint(waypoint_guid);
989bool HostApi121::IsAISTrackVisible(
const wxString& ais_mmsi)
const {
990 return ::IsAISTrackVisible(ais_mmsi);
993void HostApi121::AISToggleShowTrack(
const wxString& ais_mmsi) {
994 ::AISToggleShowTrack(ais_mmsi);
997bool HostApi121::IsAIS_CPAVisible(
const wxString& ais_mmsi)
const {
998 return ::IsAIS_CPAVisible(ais_mmsi);
1001void HostApi121::AISToggleShowCPA(
const wxString& ais_mmsi) {
1002 ::AISToggleShowCPA(ais_mmsi);
1005void HostApi121::ShowAISTargetQueryDialog(
int canvas_index,
1006 const wxString& ais_mmsi) {
1007 ::ShowAISTargetQueryDialog(canvas_index, ais_mmsi);
1010void HostApi121::ShowAISTargetList(
int canvas_index) {
1011 ::ShowAISTargetList(canvas_index);
1014bool HostApi121::IsMeasureActive(
int canvas_index) {
1015 return ::IsMeasureActive(canvas_index);
1018void HostApi121::CancelMeasure(
int canvas_index) {
1019 ::CancelMeasure(canvas_index);
1022void HostApi121::SetDepthUnitVisible(
bool bviz) { ::SetDepthUnitVisible(bviz); }
1024void HostApi121::SetOverzoomFlagVisible(
bool viz) {
1025 ::SetOverzoomFlagVisible(viz);
1028void HostApi121::AddNoShowDirectory(std::string chart_dir) {
1029 ::AddNoShowDirectory(chart_dir);
1032void HostApi121::RemoveNoShowDirectory(std::string chart_dir) {
1033 ::RemoveNoShowDirectory(chart_dir);
1036void HostApi121::ClearNoShowVector() { ::ClearNoShowVector(); }
1038const std::vector<std::string>& HostApi121::GetNoShowVector() {
1039 return ::GetNoShowVector();
1043 return ::SelectChartFamily(CanvasIndex, Family);
1048void HostApi121::CenterToAisTarget(wxString ais_mmsi) {
1049 ::CenterToAisTarget(ais_mmsi);
1052void HostApi121::AisTargetCreateWpt(wxString ais_mmsi) {
1053 ::AisTargetCreateWpt(ais_mmsi);
1056void HostApi121::AisShowAllTracks(
bool show) { ::AisShowAllTracks(show); }
1058void HostApi121::AisToggleTrack(wxString ais_mmsi) {
1059 ::AisToggleTrack(ais_mmsi);
1063int HostApi121::GetContextMenuMask() { return ::GetContextMenuMask(); }
1065void HostApi121::SetContextMenuMask(
int mask) { ::SetContextMenuMask(mask); }
1067void HostApi121::SetTrackVisibiiity(
const wxString& track_GUID,
bool viz) {
1068 ::SetTrackVisibility(track_GUID, viz);
1071bool HostApi121::GetNearestTideStation(
double lat,
double lon,
1073 return ::GetNearestTideStation(lat, lon, station);
1076bool HostApi121::GetTideHeight(
int stationIndex, time_t time,
float* height) {
1077 return ::GetTideHeight(stationIndex, time, height);
AisDecoder * g_pAIS
Global instance.
Class AisDecoder and helpers.
std::vector< std::string > ChartDirectoryExcludedVector
Global instance.
ChartDB * ChartData
Global instance.
arrayofCanvasPtr g_canvasArray
Global instance.
Generic Chart canvas base.
ChartCanvas - Main chart display and interaction component.
int PrepareContextSelections(double lat, double lon)
virtual bool AddRoute(Route *route, bool permanent=true)
Add route to database, updated version of AddPlugInRouteExV2.
virtual std::unique_ptr< HostApi121::Route > GetRoute(const wxString &guid)
Retrieve route from database.
virtual bool UpdateRoute(Route *route)
Update database route, updated version of UpdatePlugInRouteExV2.
bool m_isVisible
True if route should be displayed.
Plugin_WaypointExV2List * pWaypointList
List of waypoints making up this route in order.
wxString m_StartString
Description of route start point.
wxString m_Description
Optional route description/notes.
wxString m_NameString
User-visible name of the route.
wxString m_GUID
Globally unique identifier.
wxString m_EndString
Description of route end point.
wxDateTime m_ETD
Estimated departure time in UTC, or wxInvalidDateTime if not set.
wxString m_MarkDescription
Optional description text.
wxString m_GUID
Globally unique identifier.
wxString m_TideStation
Tide Station Identifier.
wxDateTime m_CreateTime
Creation timestamp in UTC.
bool m_bShowWaypointRangeRings
True to show range rings on chart.
wxString IconDescription
User-friendly description of icon.
double m_lat
Latitude in decimal degrees.
wxColour RangeRingColor
Color to draw range rings.
bool IsActive
Active state (e.g. destination).
Plugin_HyperlinkList * m_HyperlinkList
List of hyperlinks associated with this waypoint.
double scamin
Minimum display scale (1:X) for waypoint visibility.
double scamax
Maximum display scale (1:X) for waypoint visibility.
bool b_useScamin
True to enable scale-dependent visibility.
wxString IconName
Name of icon to use for waypoint symbol.
bool IsNameVisible
True to show waypoint name on chart.
double m_PlannedSpeed
Planned speed for next leg (knots).
double RangeRingSpace
Distance between range rings in preferred units.
double m_lon
Longitude in decimal degrees.
double m_WaypointArrivalRadius
Arrival radius in nautical miles.
int RangeRingSpaceUnits
Units for range ring spacing - 0:nm, 1:km.
wxString m_MarkName
Display name of waypoint.
bool IsVisible
Visibility state on chart.
int nrange_rings
Number of range rings to display around waypoint.
Extended waypoint class with additional navigation features.
wxDateTime m_CreateTime
Creation timestamp in UTC.
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.
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.
bool IsActive
Active state (e.g. destination).
bool IsVisible
Visibility state on chart.
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.
HyperlinkList * m_HyperlinkList
List of hyperlinks associated with this waypoint.
wxColour m_wxcWaypointRangeRingsColour
Color for the range rings display.
wxString m_MarkDescription
Description text for the waypoint.
int m_iWaypointRangeRingsNumber
Number of range rings to display around the waypoint.
void SetCreateTime(wxDateTime dt)
Sets the create time of this RoutePoint in UTC.
wxString m_GUID
Globally Unique Identifier for the waypoint.
bool m_bIsolatedMark
Flag indicating if the waypoint is a standalone mark.
bool m_bIsActive
Flag indicating if this waypoint is active for navigation.
wxDateTime GetManualETD()
Retrieves the manually set Estimated Time of Departure for this waypoint, in UTC.
bool m_bShowName
Flag indicating if the waypoint name should be shown.
double GetPlannedSpeed()
Return the planned speed associated with this waypoint.
bool m_btemp
Flag indicating if this is a temporary waypoint.
int m_iWaypointRangeRingsStepUnits
Units for the range rings step (0=nm, 1=km).
wxDateTime GetCreateTime(void)
Returns the Create Time of this RoutePoint in UTC.
float m_fWaypointRangeRingsStep
Distance between consecutive range rings.
wxString m_TideStation
Associated tide station identifier.
void SetETD(const wxDateTime &etd)
Sets the Estimated Time of Departure for this waypoint, in UTC.
Represents a navigational route in the navigation system.
bool m_bRtIsSelected
Flag indicating whether this route is currently selected in the UI.
double m_PlannedSpeed
Default planned speed for the route in knots.
wxString m_RouteStartString
Name or description of the route's starting point.
wxString m_RouteDescription
Additional descriptive information about the route.
RoutePointList * pRoutePointList
Ordered list of waypoints (RoutePoints) that make up this route.
wxString m_Colour
Color name for rendering the route on the chart.
bool m_bDeleteOnArrival
Flag indicating whether the route should be deleted once navigation reaches the end.
wxString m_RouteEndString
Name or description of the route's ending point.
bool m_btemp
Flag indicating if this is a temporary route.
wxPenStyle m_style
Style of the route line when rendered on the chart.
wxString m_TimeDisplayFormat
Format for displaying times in the UI.
wxString m_RouteNameString
User-assigned name for the route.
wxString m_GUID
Globally unique identifier for this route.
wxDateTime m_PlannedDeparture
Planned departure time for the route, in UTC.
bool m_bIsInLayer
Flag indicating whether this route belongs to a layer.
int m_lastMousePointIndex
Index of the most recently interacted with route point.
Represents a track, which is a series of connected track points.
Misc GUI event vars, a singleton.
Miscellaneous globals primarely used by gui layer, not persisted in configuration file.
MySQL based storage for routes, tracks, etc.
User notifications manager.
PlugIn Object Definition/API.
ChartFamilyEnumPI
Enumeration of chart families (broad categories).
@ PI_CHART_FAMILY_VECTOR
Vector chart formats (S-57, CM93, etc.).
wxWindow * GetCanvasByIndex(int canvasIndex)
Gets chart canvas window by index.
double gLat
Vessel's current latitude in decimal degrees.
double gCog
Course over ground in degrees (0-359.99).
double gSog
Speed over ground in knots.
double gLon
Vessel's current longitude in decimal degrees.
Position, course, speed, etc.
Routeman * g_pRouteMan
Global instance.
RouteList * pRouteList
Global instance.
Select * pSelect
Global instance.
Represents an entry in the chart table, containing information about a single chart.
TCMgr * ptcmgr
Global instance.
Tide and Current Manager @TODO Add original author copyright.
std::vector< Track * > g_TrackList
Global instance.
Recorded track abstraction.