OpenCPN Partial API docs
Loading...
Searching...
No Matches
ocpn_plugin.h
Go to the documentation of this file.
1/**************************************************************************
2 * Copyright (C) 2010 - 2024 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
25#ifndef _PLUGIN_H_
26#define _PLUGIN_H_
27
28#ifndef DECL_EXP
29#if defined(__WXMSW__) || defined(__CYGWIN__)
30#define DECL_EXP __declspec(dllexport)
31#elif defined __GNUC__ && __GNUC__ >= 4
32#define DECL_EXP __attribute__((visibility("default")))
33#elif defined __WXOSX__
34#define DECL_EXP __attribute__((visibility("default")))
35#else
36#define DECL_EXP
37#endif
38#endif
39
40#if defined(__WXMSW__) && defined(MAKING_PLUGIN)
41#define DECL_IMP __declspec(dllimport)
42#else
43#define DECL_IMP
44#endif
45
46#include <wx/xml/xml.h>
47#include <wx/dcmemory.h>
48#include <wx/dialog.h>
49#include <wx/event.h>
50#include <wx/menuitem.h>
51#include <wx/gdicmn.h>
52
53#ifdef ocpnUSE_SVG
54#include <wx/bitmap.h>
55#endif // ocpnUSE_SVG
56
57#include <memory>
58#include <vector>
59#include <unordered_map>
60
61class wxGLContext;
62
63// This is the most modern API Version number
64// It is expected that the API will remain downward compatible, meaning that
65// PlugIns conforming to API Version less than the most modern will also
66// be correctly supported.
67#define API_VERSION_MAJOR 1
68#define API_VERSION_MINOR 20
69
70// Fwd Definitions
71class wxFileConfig;
72class wxNotebook;
73class wxFont;
74class wxAuiManager;
75class wxScrolledWindow;
76class wxGLCanvas;
77
78//---------------------------------------------------------------------------------------------------------
79//
80// Bitfield PlugIn Capabilities flag definition
81//
82//---------------------------------------------------------------------------------------------------------
86#define WANTS_OVERLAY_CALLBACK 0x00000001
90#define WANTS_CURSOR_LATLON 0x00000002
100#define WANTS_TOOLBAR_CALLBACK 0x00000004
106#define INSTALLS_TOOLBAR_TOOL 0x00000008
109#define WANTS_CONFIG 0x00000010
112#define INSTALLS_TOOLBOX_PAGE 0x00000020
115#define INSTALLS_CONTEXTMENU_ITEMS 0x00000040
118#define WANTS_NMEA_SENTENCES 0x00000080
122#define WANTS_NMEA_EVENTS 0x00000100
125#define WANTS_AIS_SENTENCES 0x00000200
128#define USES_AUI_MANAGER 0x00000400
131#define WANTS_PREFERENCES 0x00000800
134#define INSTALLS_PLUGIN_CHART 0x00001000
137#define WANTS_ONPAINT_VIEWPORT 0x00002000
140#define WANTS_PLUGIN_MESSAGING 0x00004000
141#define WANTS_OPENGL_OVERLAY_CALLBACK 0x00008000
142#define WANTS_DYNAMIC_OPENGL_OVERLAY_CALLBACK 0x00010000
145#define WANTS_LATE_INIT 0x00020000
148#define INSTALLS_PLUGIN_CHART_GL 0x00040000
151#define WANTS_MOUSE_EVENTS 0x00080000
154#define WANTS_VECTOR_CHART_OBJECT_INFO 0x00100000
157#define WANTS_KEYBOARD_EVENTS 0x00200000
160#define WANTS_PRESHUTDOWN_HOOK 0x00400000
161
162//---------------------------------------------------------------------------------------------------------
163//
164// Overlay priorities
165//
166//---------------------------------------------------------------------------------------------------------
167#define OVERLAY_LEGACY 0
168#define OVERLAY_OVER_SHIPS 64
169#define OVERLAY_OVER_EMBOSS 96
170#define OVERLAY_OVER_UI 128
171
172//----------------------------------------------------------------------------------------------------------
173// Some PlugIn API interface object class definitions
174//----------------------------------------------------------------------------------------------------------
189
194public:
195 double clat;
196 double clon;
198 double skew;
199 double rotation;
200
202
205 wxRect rv_rect;
206 bool b_quilt;
209
210 double lat_min;
211 double lat_max;
212 double lon_min;
213 double lon_max;
214
215 bool
217};
218
223public:
224 double Lat;
225 double Lon;
226 double Cog;
227 double Sog;
228 double Var;
229 time_t FixTime;
230 int nSats;
231};
243public:
250 double Lat;
251
258 double Lon;
259
261 double Cog;
262
267 double Sog;
268
270 double Var;
271
276 double Hdm;
277
283 double Hdt;
284
290 time_t FixTime;
291
298 int nSats;
299};
300
305public:
306 double Xte;
308 double Btw;
309 double Dtw;
310 wxString wp_name;
311 bool arrival;
313};
314
323
328public:
329 int MMSI;
330 int Class;
332 double SOG;
333 double COG;
334 double HDG;
335 double Lon;
336 double Lat;
337 int ROTAIS;
338 char CallSign[8];
339 char ShipName[21];
340 unsigned char ShipType;
341 int IMO;
342
343 double Range_NM;
344 double Brg;
345
346 // Per target collision parameters
348 double TCPA;
349 double CPA;
350
352};
353
368
378
388
411
415typedef struct _ExtentPI {
416 double SLAT;
417 double WLON;
418 double NLAT;
419 double ELON;
421
422// PlugInChartBase::Init() init_flags constants
425#define PI_FULL_INIT 0
428#define PI_HEADER_ONLY 1
430#define PI_THUMB_ONLY 2
431
445class DECL_EXP PlugInChartBase : public wxObject {
446public:
447 // These methods Must be overriden in any derived class
449 virtual ~PlugInChartBase();
450
471 virtual wxString GetFileSearchMask(void);
472
497 virtual int Init(const wxString &full_path, int init_flags);
517 virtual void SetColorScheme(int cs, bool bApplyImmediate);
518
539 virtual double GetNormalScaleMin(double canvas_scale_factor,
540 bool b_allow_overzoom);
558 virtual double GetNormalScaleMax(double canvas_scale_factor,
559 int canvas_width);
574 virtual double GetNearestPreferredScalePPM(double target_scale_ppm);
575
593 virtual bool GetChartExtent(ExtentPI *pext);
594
621 virtual wxBitmap &RenderRegionView(const PlugIn_ViewPort &VPoint,
622 const wxRegion &Region);
623
638 virtual bool AdjustVP(PlugIn_ViewPort &vp_last, PlugIn_ViewPort &vp_proposed);
639
655 virtual void GetValidCanvasRegion(const PlugIn_ViewPort &VPoint,
656 wxRegion *pValidRegion);
657
675 virtual int GetCOVREntries() { return 0; }
691 virtual int GetCOVRTablePoints(int iTable) { return 0; }
705 virtual int GetCOVRTablenPoints(int iTable) { return 0; }
726 virtual float *GetCOVRTableHead(int iTable) { return (float *)NULL; }
727
750 virtual wxBitmap *GetThumbnail(int tnx, int tny, int cs);
751
752 // Accessors, need not be overridden in derived class if the member
753 // variables are maintained
754
768 virtual wxString GetFullPath() const { return m_FullPath; }
769
791 virtual ChartTypeEnumPI GetChartType() { return m_ChartType; }
805 virtual ChartFamilyEnumPI GetChartFamily() { return m_ChartFamily; }
825 virtual OcpnProjTypePI GetChartProjection() { return m_projection; }
838 virtual wxString GetName() { return m_Name; }
849 virtual wxString GetDescription() { return m_Description; }
861 virtual wxString GetID() { return m_ID; }
875 virtual wxString GetSE() { return m_SE; }
891 virtual wxString GetDepthUnits() { return m_DepthUnits; }
908 virtual wxString GetSoundingsDatum() { return m_SoundingsDatum; }
924 virtual wxString GetDatumString() { return m_datum_str; }
938 virtual wxString GetExtraInfo() { return m_ExtraInfo; }
951 virtual wxString GetPubDate() { return m_PubYear; }
965 virtual double GetChartErrorFactor() { return m_Chart_Error_Factor; }
981 virtual ChartDepthUnitTypePI GetDepthUnitId() { return m_depth_unit_id; }
996 virtual bool IsReadyToRender() { return m_bReadyToRender; }
1009 virtual int GetNativeScale() { return m_Chart_Scale; };
1022 virtual double GetChartSkew() { return m_Chart_Skew; }
1035 virtual wxDateTime GetEditionDate(void) { return m_EdDate; }
1036
1037 // Methods pertaining to CHART_FAMILY_RASTER type PlugIn charts only
1038
1057 virtual void ComputeSourceRectangle(const PlugIn_ViewPort &vp,
1058 wxRect *pSourceRect);
1059
1074 virtual double GetRasterScaleFactor();
1095 virtual bool GetChartBits(wxRect &source, unsigned char *pPix, int sub_samp);
1107 virtual int GetSize_X();
1119 virtual int GetSize_Y();
1134 virtual void latlong_to_chartpix(double lat, double lon, double &pixx,
1135 double &pixy);
1150 virtual void chartpix_to_latlong(double pixx, double pixy, double *plat,
1151 double *plon);
1152
1153protected:
1154 ChartTypeEnumPI m_ChartType;
1155 ChartFamilyEnumPI m_ChartFamily;
1156
1157 wxString m_FullPath;
1158 OcpnProjTypePI m_projection;
1159 int m_Chart_Scale;
1160 double m_Chart_Skew;
1161
1162 wxDateTime m_EdDate;
1163 bool m_bReadyToRender;
1164
1165 wxString m_Name;
1166 wxString m_Description;
1167 wxString m_ID;
1168 wxString m_SE;
1169 wxString m_SoundingsDatum;
1170 wxString m_datum_str;
1171 wxString m_PubYear;
1172 wxString m_DepthUnits;
1173 wxString m_ExtraInfo;
1174
1175 ChartDepthUnitTypePI m_depth_unit_id;
1176
1177 double m_Chart_Error_Factor;
1178};
1179
1180// Declare an array of PlugIn_AIS_Targets
1181WX_DEFINE_ARRAY_PTR(PlugIn_AIS_Target *, ArrayOfPlugIn_AIS_Targets);
1182
1197class DECL_EXP opencpn_plugin {
1198public:
1199 opencpn_plugin(void *pmgr) {}
1200 virtual ~opencpn_plugin();
1201
1202 // Public API to the PlugIn class
1203
1204 // This group of methods is required, and will be called by the opencpn
1205 // host opencpn PlugIns must implement this group
1206
1221 virtual int Init(void);
1230 virtual bool DeInit(void);
1231
1244 virtual int GetAPIVersionMajor();
1257 virtual int GetAPIVersionMinor();
1269 virtual int GetPlugInVersionMajor();
1281 virtual int GetPlugInVersionMinor();
1294 virtual wxBitmap *GetPlugInBitmap();
1295
1296 // These three methods should produce valid, meaningful strings always
1297 // ---EVEN IF--- the PlugIn has not (yet) been initialized.
1298 // They are used by the PlugInManager GUI
1299
1311 virtual wxString GetCommonName();
1323 virtual wxString GetShortDescription();
1337 virtual wxString GetLongDescription();
1338
1339 // This group is optional.
1340 // PlugIns may override any of these methods as required
1341
1353 virtual void SetDefaults(void);
1354
1368 virtual int GetToolbarToolCount(void);
1381 virtual int GetToolboxPanelCount(void);
1395 virtual void SetupToolboxPanel(int page_sel, wxNotebook *pnotebook);
1411 virtual void OnCloseToolboxPanel(int page_sel, int ok_apply_cancel);
1425 virtual void ShowPreferencesDialog(wxWindow *parent);
1426
1452 virtual bool RenderOverlay(wxMemoryDC *pmdc, PlugIn_ViewPort *vp);
1465 virtual void SetCursorLatLon(double lat, double lon);
1484 virtual void SetCurrentViewPort(PlugIn_ViewPort &vp);
1485
1504 virtual void SetPositionFix(PlugIn_Position_Fix &pfix);
1518 virtual void SetNMEASentence(wxString &sentence);
1535 virtual void SetAISSentence(wxString &sentence);
1536
1546 virtual void ProcessParentResize(int x, int y);
1558 virtual void SetColorScheme(PI_ColorScheme cs);
1559
1568 virtual void OnToolbarToolCallback(int id);
1577 virtual void OnContextMenuItemCallback(int id);
1585 virtual void UpdateAuiStatus(void);
1586
1598 virtual wxArrayString GetDynamicChartClassNameArray(void);
1599};
1600
1601// the types of the class factories used to create PlugIn instances
1602typedef opencpn_plugin *create_t(void *);
1603typedef void destroy_t(opencpn_plugin *);
1604
1605#ifdef __clang__
1606#pragma clang diagnostic push
1607#pragma clang diagnostic ignored "-Woverloaded-virtual"
1608#endif
1609
1610class DECL_EXP opencpn_plugin_16 : public opencpn_plugin {
1611public:
1612 opencpn_plugin_16(void *pmgr);
1613 virtual ~opencpn_plugin_16();
1614
1616
1634 virtual bool RenderOverlay(wxDC &dc, PlugIn_ViewPort *vp);
1649 virtual void SetPluginMessage(wxString &message_id, wxString &message_body);
1650};
1651
1652class DECL_EXP opencpn_plugin_17 : public opencpn_plugin {
1653public:
1654 opencpn_plugin_17(void *pmgr);
1655 virtual ~opencpn_plugin_17();
1656
1658
1659 virtual bool RenderOverlay(wxDC &dc, PlugIn_ViewPort *vp);
1660 virtual bool RenderGLOverlay(wxGLContext *pcontext, PlugIn_ViewPort *vp);
1661
1662 virtual void SetPluginMessage(wxString &message_id, wxString &message_body);
1663};
1664
1665class DECL_EXP opencpn_plugin_18 : public opencpn_plugin {
1666public:
1667 opencpn_plugin_18(void *pmgr);
1668 virtual ~opencpn_plugin_18();
1669
1671
1672 virtual bool RenderOverlay(wxDC &dc, PlugIn_ViewPort *vp);
1694 virtual bool RenderGLOverlay(wxGLContext *pcontext, PlugIn_ViewPort *vp);
1695 virtual void SetPluginMessage(wxString &message_id, wxString &message_body);
1710 virtual void SetPositionFixEx(PlugIn_Position_Fix_Ex &pfix);
1711};
1712
1713#ifdef __clang__
1714#pragma clang diagnostic pop
1715#endif
1716
1717class DECL_EXP opencpn_plugin_19 : public opencpn_plugin_18 {
1718public:
1719 opencpn_plugin_19(void *pmgr);
1720 virtual ~opencpn_plugin_19();
1721
1728 virtual void OnSetupOptions(void);
1729};
1730
1731class DECL_EXP opencpn_plugin_110 : public opencpn_plugin_19 {
1732public:
1733 opencpn_plugin_110(void *pmgr);
1734 virtual ~opencpn_plugin_110();
1735
1736 virtual void LateInit(void); // If WANTS_LATE_INIT is returned by Init()
1737};
1738
1740public:
1741 opencpn_plugin_111(void *pmgr);
1742 virtual ~opencpn_plugin_111();
1743};
1744
1746public:
1747 opencpn_plugin_112(void *pmgr);
1748 virtual ~opencpn_plugin_112();
1749
1759 virtual bool MouseEventHook(wxMouseEvent &event);
1774 virtual void SendVectorChartObjectInfo(wxString &chart, wxString &feature,
1775 wxString &objname, double lat,
1776 double lon, double scale,
1777 int nativescale);
1778};
1779
1781public:
1782 opencpn_plugin_113(void *pmgr);
1783 virtual ~opencpn_plugin_113();
1784
1794 virtual bool KeyboardEventHook(wxKeyEvent &event);
1802 virtual void OnToolbarToolDownCallback(int id);
1810 virtual void OnToolbarToolUpCallback(int id);
1811};
1812
1814public:
1815 opencpn_plugin_114(void *pmgr);
1816 virtual ~opencpn_plugin_114();
1817};
1818
1820public:
1821 opencpn_plugin_115(void *pmgr);
1822 virtual ~opencpn_plugin_115();
1823};
1824
1826public:
1827 opencpn_plugin_116(void *pmgr);
1828 virtual ~opencpn_plugin_116();
1841 virtual bool RenderGLOverlayMultiCanvas(wxGLContext *pcontext,
1842 PlugIn_ViewPort *vp, int canvasIndex);
1855 virtual bool RenderOverlayMultiCanvas(wxDC &dc, PlugIn_ViewPort *vp,
1856 int canvasIndex);
1865 virtual void PrepareContextMenu(int canvasIndex);
1866};
1867
1869public:
1870 opencpn_plugin_117(void *pmgr);
1877 virtual int GetPlugInVersionPatch();
1878
1880 virtual int GetPlugInVersionPost();
1881
1883 virtual const char *GetPlugInVersionPre();
1884
1886 virtual const char *GetPlugInVersionBuild();
1887
1888 /*Provide active leg data to plugins*/
1889 virtual void SetActiveLegInfo(Plugin_Active_Leg_Info &leg_info);
1890};
1891
1893public:
1894 opencpn_plugin_118(void *pmgr);
1895
1898
1907#ifdef _MSC_VER
1908 virtual bool RenderGLOverlayMultiCanvas(wxGLContext *pcontext,
1909 PlugIn_ViewPort *vp, int canvasIndex,
1910 int priority = -1);
1911#else
1912 virtual bool RenderGLOverlayMultiCanvas(wxGLContext *pcontext,
1913 PlugIn_ViewPort *vp, int canvasIndex,
1914 int priority);
1915
1916 bool RenderGLOverlayMultiCanvas(wxGLContext *pcontext, PlugIn_ViewPort *vp,
1917 int canvas_ix) override {
1918 return RenderGLOverlayMultiCanvas(pcontext, vp, canvas_ix, -1);
1919 }
1920#endif
1921
1930#ifdef _MSC_VER
1931 virtual bool RenderOverlayMultiCanvas(wxDC &dc, PlugIn_ViewPort *vp,
1932 int canvasIndex, int priority = -1);
1933#else
1934 virtual bool RenderOverlayMultiCanvas(wxDC &dc, PlugIn_ViewPort *vp,
1935 int canvas_ix, int priority);
1937 int canvas_ix) override {
1938 return RenderOverlayMultiCanvas(dc, vp, canvas_ix, -1);
1939 }
1940#endif
1941};
1942
1944public:
1945 opencpn_plugin_119(void *pmgr);
1946
1965 virtual void PreShutdownHook();
1966};
1967
1969public:
1970 opencpn_plugin_120(void *pmgr);
1971};
1972
1973//------------------------------------------------------------------
1974// Route and Waypoint PlugIn support
1975//
1976//------------------------------------------------------------------
1977
1989class DECL_EXP Plugin_Hyperlink {
1990public:
1991 wxString DescrText;
1992 wxString Link;
1993 wxString Type;
1994};
1995
1996WX_DECLARE_LIST(Plugin_Hyperlink, Plugin_HyperlinkList);
1997
2012class DECL_EXP PlugIn_Waypoint {
2013public:
2027 PlugIn_Waypoint(double lat, double lon, const wxString &icon_ident,
2028 const wxString &wp_name, const wxString &GUID = _T(""));
2030
2031 double m_lat;
2032 double m_lon;
2033 wxString m_GUID;
2034 wxString m_MarkName;
2036 wxDateTime m_CreateTime;
2038 wxString m_IconName;
2039
2040 Plugin_HyperlinkList *m_HyperlinkList;
2041};
2042
2043WX_DECLARE_LIST(PlugIn_Waypoint, Plugin_WaypointList);
2044
2051class DECL_EXP PlugIn_Route {
2052public:
2053 PlugIn_Route(void);
2054 ~PlugIn_Route(void);
2055
2056 wxString m_NameString;
2057 wxString m_StartString;
2058 wxString m_EndString;
2059 wxString m_GUID;
2060
2065 Plugin_WaypointList *pWaypointList;
2066};
2067
2081class DECL_EXP PlugIn_Track {
2082public:
2083 PlugIn_Track(void);
2084 ~PlugIn_Track(void);
2085
2086 wxString m_NameString;
2087 wxString m_StartString;
2088 wxString m_EndString;
2089 wxString m_GUID;
2090
2097 Plugin_WaypointList *pWaypointList;
2098};
2099
2100//----------------------------------------------------------------------------------------------------------
2101// The PlugIn CallBack API Definition
2102//
2103// The API back up to the PlugIn Manager
2104// PlugIns may call these static functions as necessary for system services
2105//
2106//----------------------------------------------------------------------------------------------------------
2107
2128extern "C" DECL_EXP int InsertPlugInTool(wxString label, wxBitmap *bitmap,
2129 wxBitmap *bmpRollover, wxItemKind kind,
2130 wxString shortHelp, wxString longHelp,
2131 wxObject *clientData, int position,
2132 int tool_sel, opencpn_plugin *pplugin);
2140extern "C" DECL_EXP void RemovePlugInTool(int tool_id);
2149extern "C" DECL_EXP void SetToolbarToolViz(int item, bool viz);
2158extern "C" DECL_EXP void SetToolbarItemState(int item, bool toggle);
2168extern "C" DECL_EXP void SetToolbarToolBitmaps(int item, wxBitmap *bitmap,
2169 wxBitmap *bmpRollover);
2188extern "C" DECL_EXP int InsertPlugInToolSVG(
2189 wxString label, wxString SVGfile, wxString SVGfileRollover,
2190 wxString SVGfileToggled, wxItemKind kind, wxString shortHelp,
2191 wxString longHelp, wxObject *clientData, int position, int tool_sel,
2192 opencpn_plugin *pplugin);
2203extern "C" DECL_EXP void SetToolbarToolBitmapsSVG(int item, wxString SVGfile,
2204 wxString SVGfileRollover,
2205 wxString SVGfileToggled);
2215extern "C" DECL_EXP int AddCanvasContextMenuItem(wxMenuItem *pitem,
2216 opencpn_plugin *pplugin);
2224extern "C" DECL_EXP void RemoveCanvasContextMenuItem(int item);
2233extern "C" DECL_EXP void SetCanvasContextMenuItemViz(int item, bool viz);
2242extern "C" DECL_EXP void SetCanvasContextMenuItemGrey(int item, bool grey);
2243
2253extern "C" DECL_EXP wxFileConfig *GetOCPNConfigObject(void);
2254
2262extern "C" DECL_EXP void RequestRefresh(wxWindow *);
2272extern "C" DECL_EXP bool GetGlobalColor(wxString colorName, wxColour *pcolour);
2273
2285extern "C" DECL_EXP void GetCanvasPixLL(PlugIn_ViewPort *vp, wxPoint *pp,
2286 double lat, double lon);
2298extern "C" DECL_EXP void GetCanvasLLPix(PlugIn_ViewPort *vp, wxPoint p,
2299 double *plat, double *plon);
2307extern "C" DECL_EXP wxWindow *GetOCPNCanvasWindow();
2308
2347extern "C" DECL_EXP wxFont *OCPNGetFont(wxString TextElement,
2348 int default_size = 0);
2349
2362extern "C" DECL_EXP wxString *GetpSharedDataLocation();
2371extern "C" DECL_EXP ArrayOfPlugIn_AIS_Targets *GetAISTargetArray(void);
2381extern "C" DECL_EXP wxAuiManager *GetFrameAuiManager(void);
2390extern "C" DECL_EXP bool AddLocaleCatalog(wxString catalog);
2391
2399extern "C" DECL_EXP void PushNMEABuffer(wxString str);
2400
2410extern DECL_EXP wxXmlDocument GetChartDatabaseEntryXML(int dbIndex,
2411 bool b_getGeom);
2422extern DECL_EXP bool UpdateChartDBInplace(wxArrayString dir_array,
2423 bool b_force_update,
2424 bool b_ProgressDialog);
2432extern DECL_EXP wxArrayString GetChartDBDirArrayString();
2433
2442extern "C" DECL_EXP void SendPluginMessage(wxString message_id,
2443 wxString message_body);
2451extern "C" DECL_EXP void DimeWindow(wxWindow *);
2452
2460extern "C" DECL_EXP void JumpToPosition(double lat, double lon, double scale);
2461
2462/* API 1.9 adds some common cartographic functions to avoid unnecessary code
2463 * duplication */
2464/* Study the original OpenCPN source (georef.c) for functional definitions */
2465
2477extern "C" DECL_EXP void PositionBearingDistanceMercator_Plugin(
2478 double lat, double lon, double brg, double dist, double *dlat,
2479 double *dlon);
2491extern "C" DECL_EXP void DistanceBearingMercator_Plugin(
2492 double lat0, double lon0, double lat1, double lon1, double *brg,
2493 double *dist);
2503extern "C" DECL_EXP double DistGreatCircle_Plugin(double slat, double slon,
2504 double dlat, double dlon);
2515extern "C" DECL_EXP void toTM_Plugin(float lat, float lon, float lat0,
2516 float lon0, double *x, double *y);
2527extern "C" DECL_EXP void fromTM_Plugin(double x, double y, double lat0,
2528 double lon0, double *lat, double *lon);
2539extern "C" DECL_EXP void toSM_Plugin(double lat, double lon, double lat0,
2540 double lon0, double *x, double *y);
2551extern "C" DECL_EXP void fromSM_Plugin(double x, double y, double lat0,
2552 double lon0, double *lat, double *lon);
2563extern "C" DECL_EXP void toSM_ECC_Plugin(double lat, double lon, double lat0,
2564 double lon0, double *x, double *y);
2575extern "C" DECL_EXP void fromSM_ECC_Plugin(double x, double y, double lat0,
2576 double lon0, double *lat,
2577 double *lon);
2588extern "C" DECL_EXP bool DecodeSingleVDOMessage(const wxString &str,
2590 wxString *acc);
2596extern "C" DECL_EXP int GetChartbarHeight(void);
2627extern "C" DECL_EXP bool GetActiveRoutepointGPX(char *buffer,
2628 unsigned int buffer_length);
2629
2630/* API 1.9 */
2631
2660
2675extern DECL_EXP wxScrolledWindow *AddOptionsPage(OptionsParentPI parent,
2676 wxString title);
2683extern DECL_EXP bool DeleteOptionsPage(wxScrolledWindow *page);
2684
2685/* API 1.10 */
2686
2687/* API 1.10 adds some common functions to avoid unnecessary code duplication */
2688/* Study the original OpenCPN source for functional definitions */
2699extern "C" DECL_EXP double toUsrDistance_Plugin(double nm_distance,
2700 int unit = -1);
2709extern "C" DECL_EXP double fromUsrDistance_Plugin(double usr_distance,
2710 int unit = -1);
2719extern "C" DECL_EXP double toUsrSpeed_Plugin(double kts_speed, int unit = -1);
2728extern "C" DECL_EXP double fromUsrSpeed_Plugin(double usr_speed, int unit = -1);
2737extern "C" DECL_EXP double toUsrTemp_Plugin(double cel_temp, int unit = -1);
2746extern "C" DECL_EXP double fromUsrTemp_Plugin(double usr_temp, int unit = -1);
2754extern DECL_EXP wxString getUsrDistanceUnit_Plugin(int unit = -1);
2762extern DECL_EXP wxString getUsrSpeedUnit_Plugin(int unit = -1);
2770extern DECL_EXP wxString getUsrTempUnit_Plugin(int unit = -1);
2771
2779extern DECL_EXP wxString getUsrWindSpeedUnit_Plugin(int unit = -1);
2780
2789extern DECL_EXP double toUsrWindSpeed_Plugin(double kts_wspeed, int unit = -1);
2790
2799extern DECL_EXP double fromUsrWindSpeed_Plugin(double usr_wspeed,
2800 int unit = -1);
2801
2809extern DECL_EXP wxString getUsrDepthUnit_Plugin(int unit = -1);
2810
2819extern DECL_EXP double toUsrDepth_Plugin(double m_depth, int unit = -1);
2820
2829extern DECL_EXP double fromUsrDepth_Plugin(double usr_depth, int unit = -1);
2830
2847extern DECL_EXP double fromDMM_PlugIn(wxString sdms);
2848
2863 DateTimeFormatOptions() = default;
2883 wxString format_string = "$weekday_short_date_time";
2899 wxString time_zone = wxEmptyString;
2904 double longitude = NAN;
2905
2906 int version = 1; // For future compatibility checks
2907
2927 format_string = fmt;
2928 return *this;
2929 }
2930
2949 DateTimeFormatOptions &SetTimezone(const wxString &tz) {
2950 time_zone = tz;
2951 return *this;
2952 }
2953
2972 longitude = lon;
2973 return *this;
2974 }
2975};
2976
2996extern DECL_EXP wxString toUsrDateTimeFormat_Plugin(
2997 const wxDateTime date_time,
2999
3011extern DECL_EXP wxString GetNewGUID();
3024extern "C" DECL_EXP bool PlugIn_GSHHS_CrossesLand(double lat1, double lon1,
3025 double lat2, double lon2);
3032extern DECL_EXP void PlugInPlaySound(wxString &sound_file);
3033
3034// API 1.10 Route and Waypoint Support
3035
3044extern DECL_EXP wxBitmap *FindSystemWaypointIcon(wxString &icon_name);
3055extern DECL_EXP bool AddCustomWaypointIcon(wxBitmap *pimage, wxString key,
3056 wxString description);
3066extern DECL_EXP bool AddSingleWaypoint(PlugIn_Waypoint *pwaypoint,
3067 bool b_permanent = true);
3076extern DECL_EXP bool DeleteSingleWaypoint(wxString &GUID);
3085extern DECL_EXP bool UpdateSingleWaypoint(PlugIn_Waypoint *pwaypoint);
3095extern DECL_EXP bool AddPlugInRoute(PlugIn_Route *proute,
3096 bool b_permanent = true);
3105extern DECL_EXP bool DeletePlugInRoute(wxString &GUID);
3115extern DECL_EXP bool UpdatePlugInRoute(PlugIn_Route *proute);
3116
3126extern DECL_EXP bool AddPlugInTrack(PlugIn_Track *ptrack,
3127 bool b_permanent = true);
3136extern DECL_EXP bool DeletePlugInTrack(wxString &GUID);
3146extern DECL_EXP bool UpdatePlugInTrack(PlugIn_Track *ptrack);
3147
3148/* API 1.11 */
3149
3150/* API 1.11 adds some more common functions to avoid unnecessary code
3151 * duplication */
3152
3161wxColour DECL_EXP GetBaseGlobalColor(wxString colorName);
3162
3176int DECL_EXP OCPNMessageBox_PlugIn(wxWindow *parent, const wxString &message,
3177 const wxString &caption = _T("Message"),
3178 int style = wxOK, int x = -1, int y = -1);
3179
3194extern DECL_EXP wxString toSDMM_PlugIn(int NEflag, double a,
3195 bool hi_precision = true);
3205extern "C" DECL_EXP wxString *GetpPrivateApplicationDataLocation();
3213extern DECL_EXP wxString GetOCPN_ExePath(void);
3222extern "C" DECL_EXP wxString *GetpPlugInLocation();
3231extern DECL_EXP wxString GetPlugInPath(opencpn_plugin *pplugin);
3232
3242extern "C" DECL_EXP int AddChartToDBInPlace(wxString &full_path,
3243 bool b_RefreshCanvas);
3250extern "C" DECL_EXP int RemoveChartFromDBInPlace(wxString &full_path);
3259extern DECL_EXP wxString GetLocaleCanonicalName();
3260
3275#define PLIB_CAPS_LINE_VBO 1
3279#define PLIB_CAPS_LINE_BUFFER 1 << 1
3283#define PLIB_CAPS_SINGLEGEO_BUFFER 1 << 2
3287#define PLIB_CAPS_OBJSEGLIST 1 << 3
3291#define PLIB_CAPS_OBJCATMUTATE 1 << 4
3292
3293class PI_S57Obj;
3294
3295WX_DECLARE_LIST(PI_S57Obj, ListOfPI_S57Obj);
3296
3297// ----------------------------------------------------------------------------
3298// PlugInChartBaseGL
3299// Derived from PlugInChartBase, add OpenGL Vector chart support
3300// ----------------------------------------------------------------------------
3301
3314class DECL_EXP PlugInChartBaseGL : public PlugInChartBase {
3315public:
3317 virtual ~PlugInChartBaseGL();
3318
3333 virtual int RenderRegionViewOnGL(const wxGLContext &glc,
3334 const PlugIn_ViewPort &VPoint,
3335 const wxRegion &Region, bool b_use_stencil);
3336
3349 virtual ListOfPI_S57Obj *GetObjRuleListAtLatLon(float lat, float lon,
3350 float select_radius,
3351 PlugIn_ViewPort *VPoint);
3361 virtual wxString CreateObjDescriptions(ListOfPI_S57Obj *obj_list);
3367 virtual int GetNoCOVREntries();
3374 virtual int GetNoCOVRTablePoints(int iTable);
3381 virtual int GetNoCOVRTablenPoints(int iTable);
3388 virtual float *GetNoCOVRTableHead(int iTable);
3389};
3390
3391// ----------------------------------------------------------------------------
3392// PlugInChartBaseGLPlus2
3393// Derived from PlugInChartBaseGL, add additional chart management methods
3394// ----------------------------------------------------------------------------
3395
3405public:
3407 virtual ~PlugInChartBaseGLPlus2();
3408
3425 virtual ListOfPI_S57Obj *GetLightsObjRuleListVisibleAtLatLon(
3426 float lat, float lon, PlugIn_ViewPort *VPoint);
3427};
3428
3429// ----------------------------------------------------------------------------
3430// PlugInChartBaseExtended
3431// Derived from PlugInChartBase, add extended chart support methods
3432// ----------------------------------------------------------------------------
3433
3442public:
3444 virtual ~PlugInChartBaseExtended();
3445
3458 virtual int RenderRegionViewOnGL(const wxGLContext &glc,
3459 const PlugIn_ViewPort &VPoint,
3460 const wxRegion &Region, bool b_use_stencil);
3461
3472 virtual wxBitmap &RenderRegionViewOnDCNoText(const PlugIn_ViewPort &VPoint,
3473 const wxRegion &Region);
3484 virtual bool RenderRegionViewOnDCTextOnly(wxMemoryDC &dc,
3485 const PlugIn_ViewPort &VPoint,
3486 const wxRegion &Region);
3498 virtual int RenderRegionViewOnGLNoText(const wxGLContext &glc,
3499 const PlugIn_ViewPort &VPoint,
3500 const wxRegion &Region,
3501 bool b_use_stencil);
3502
3514 virtual int RenderRegionViewOnGLTextOnly(const wxGLContext &glc,
3515 const PlugIn_ViewPort &VPoint,
3516 const wxRegion &Region,
3517 bool b_use_stencil);
3518
3519 virtual ListOfPI_S57Obj *GetObjRuleListAtLatLon(float lat, float lon,
3520 float select_radius,
3521 PlugIn_ViewPort *VPoint);
3522 virtual wxString CreateObjDescriptions(ListOfPI_S57Obj *obj_list);
3523
3524 virtual int GetNoCOVREntries();
3525 virtual int GetNoCOVRTablePoints(int iTable);
3526 virtual int GetNoCOVRTablenPoints(int iTable);
3527 virtual float *GetNoCOVRTableHead(int iTable);
3534 virtual void ClearPLIBTextList();
3535};
3536
3537// ----------------------------------------------------------------------------
3538// PlugInChartBaseExtendedPlus2
3539// Derived from PlugInChartBaseExtended, add additional extended chart support
3540// methods
3541// ----------------------------------------------------------------------------
3542
3544public:
3547
3548 virtual ListOfPI_S57Obj *GetLightsObjRuleListVisibleAtLatLon(
3549 float lat, float lon, PlugIn_ViewPort *VPoint);
3550};
3551
3552class wxArrayOfS57attVal;
3553
3572
3596
3625
3639
3665
3673class DECL_EXP PI_S57Obj {
3674public:
3675 // Public Methods
3676 PI_S57Obj();
3677
3678public:
3679 // Instance Data
3680 char FeatureName[8];
3682
3684 wxArrayOfS57attVal *attVal;
3686
3687 int iOBJL;
3688 int Index;
3689
3690 double x;
3691 double y;
3692 double z;
3693 int npt;
3694 void *geoPt;
3695 double *geoPtz;
3696 double *geoPtMulti;
3697
3699
3700 double m_lat;
3701 double m_lon;
3702
3705
3706 double lat_min;
3707 double lat_max;
3708 double lon_min;
3709 double lon_max;
3710
3712
3714 int nRef;
3715
3716 bool bIsAton;
3718
3723
3725
3729
3730 // Coordinate transform coefficients
3731 double x_rate;
3732 double y_rate;
3733 double x_origin;
3734 double y_origin;
3735
3736 // OpenGL rendering parameters
3741
3745};
3746
3752wxString DECL_EXP PI_GetPLIBColorScheme();
3761int DECL_EXP PI_GetPLIBDepthUnitInt();
3769int DECL_EXP PI_GetPLIBSymbolStyle();
3777int DECL_EXP PI_GetPLIBBoundaryStyle();
3784int DECL_EXP PI_GetPLIBStateHash();
3790double DECL_EXP PI_GetPLIBMarinerSafetyContour();
3801bool DECL_EXP PI_GetObjectRenderBox(PI_S57Obj *pObj, double *lat_min,
3802 double *lat_max, double *lon_min,
3803 double *lon_max);
3809void DECL_EXP PI_UpdateContext(PI_S57Obj *pObj);
3810
3818bool DECL_EXP PI_PLIBObjectRenderCheck(PI_S57Obj *pObj, PlugIn_ViewPort *vp);
3851void DECL_EXP PI_PLIBSetLineFeaturePriority(PI_S57Obj *pObj, int prio);
3856void DECL_EXP PI_PLIBPrepareForNewRender(void);
3862void DECL_EXP PI_PLIBFreeContext(void *pContext);
3872void DECL_EXP PI_PLIBSetRenderCaps(unsigned int flags);
3882bool DECL_EXP PI_PLIBSetContext(PI_S57Obj *pObj);
3883
3898int DECL_EXP PI_PLIBRenderObjectToDC(wxDC *pdc, PI_S57Obj *pObj,
3899 PlugIn_ViewPort *vp);
3916int DECL_EXP PI_PLIBRenderAreaToDC(wxDC *pdc, PI_S57Obj *pObj,
3917 PlugIn_ViewPort *vp, wxRect rect,
3918 unsigned char *pixbuf);
3919
3934int DECL_EXP PI_PLIBRenderAreaToGL(const wxGLContext &glcc, PI_S57Obj *pObj,
3935 PlugIn_ViewPort *vp, wxRect &render_rect);
3936
3953int DECL_EXP PI_PLIBRenderObjectToGL(const wxGLContext &glcc, PI_S57Obj *pObj,
3954 PlugIn_ViewPort *vp, wxRect &render_rect);
3955
3956/* API 1.11 OpenGL Display List and vertex buffer object routines
3957
3958 Effectively these two routines cancel each other so all
3959 of the translation, scaling and rotation can be done by opengl.
3960
3961 Display lists need only be built infrequently, but used in each frame
3962 greatly accelerates the speed of rendering. This avoids costly calculations,
3963 and also allows the vertexes to be stored in graphics memory.
3964
3965 static int dl = 0;
3966 glPushMatrix();
3967 PlugInMultMatrixViewport(current_viewport);
3968 if(dl)
3969 glCallList(dl);
3970 else {
3971 dl = glGenLists(1);
3972 PlugInViewPort norm_viewport = current_viewport;
3973 NormalizeViewPort(norm_viewport);
3974 glNewList(dl, GL_COMPILE_AND_EXECUTE);
3975 ... // use norm_viewport with GetCanvasLLPix here
3976 glEndList();
3977 }
3978 glPopMatrix();
3979 ... // use current_viewport with GetCanvasLLPix again
3980*/
3981
3991extern DECL_EXP bool PlugInHasNormalizedViewPort(PlugIn_ViewPort *vp);
4006extern DECL_EXP void PlugInMultMatrixViewport(PlugIn_ViewPort *vp,
4007 float lat = 0, float lon = 0);
4022extern DECL_EXP void PlugInNormalizeViewport(PlugIn_ViewPort *vp, float lat = 0,
4023 float lon = 0);
4024
4025class wxPoint2DDouble;
4037extern "C" DECL_EXP void GetDoubleCanvasPixLL(PlugIn_ViewPort *vp,
4038 wxPoint2DDouble *pp, double lat,
4039 double lon);
4040
4041/* API 1.13 */
4042/* API 1.13 adds some more common functions to avoid unnecessary code
4043 * duplication */
4044
4053extern DECL_EXP double fromDMM_Plugin(wxString sdms);
4064extern DECL_EXP void SetCanvasRotation(double rotation);
4076extern DECL_EXP void SetCanvasProjection(int projection);
4086extern DECL_EXP bool GetSingleWaypoint(wxString GUID,
4087 PlugIn_Waypoint *pwaypoint);
4100extern DECL_EXP bool CheckEdgePan_PlugIn(int x, int y, bool dragging,
4101 int margin, int delta);
4110extern DECL_EXP wxBitmap GetIcon_PlugIn(const wxString &name);
4118extern DECL_EXP void SetCursor_PlugIn(wxCursor *pPlugin_Cursor = NULL);
4154extern DECL_EXP wxFont *GetOCPNScaledFont_PlugIn(wxString TextElement,
4155 int default_size = 0);
4169extern DECL_EXP wxFont GetOCPNGUIScaledFont_PlugIn(wxString item);
4185extern DECL_EXP double GetOCPNGUIToolScaleFactor_PlugIn(int GUIScaledFactor);
4200extern DECL_EXP double GetOCPNGUIToolScaleFactor_PlugIn();
4215extern DECL_EXP float GetOCPNChartScaleFactor_Plugin();
4223extern DECL_EXP wxColour GetFontColour_PlugIn(wxString TextElement);
4224
4235extern DECL_EXP double GetCanvasTilt();
4246extern DECL_EXP void SetCanvasTilt(double tilt);
4247
4253extern DECL_EXP bool PlugInPlaySoundEx(wxString &sound_file,
4254 int deviceIndex = -1);
4267extern DECL_EXP void AddChartDirectory(wxString &path);
4278extern DECL_EXP void ForceChartDBUpdate();
4290extern DECL_EXP void ForceChartDBRebuild();
4291
4297extern DECL_EXP wxString GetWritableDocumentsDir(void);
4303extern DECL_EXP wxDialog *GetActiveOptionsDialog();
4314extern DECL_EXP wxArrayString GetWaypointGUIDArray(void);
4320extern DECL_EXP wxArrayString GetIconNameArray(void);
4321
4332extern DECL_EXP bool AddPersistentFontKey(wxString TextElement);
4344extern DECL_EXP wxString GetActiveStyleName();
4345
4361extern DECL_EXP wxBitmap GetBitmapFromSVGFile(wxString filename,
4362 unsigned int width,
4363 unsigned int height);
4376extern DECL_EXP bool IsTouchInterface_PlugIn(void);
4377
4378/* Platform optimized File/Dir selector dialogs */
4397extern DECL_EXP int PlatformDirSelectorDialog(wxWindow *parent,
4398 wxString *file_spec,
4399 wxString Title, wxString initDir);
4421extern DECL_EXP int PlatformFileSelectorDialog(wxWindow *parent,
4422 wxString *file_spec,
4423 wxString Title, wxString initDir,
4424 wxString suggestedName,
4425 wxString wildcard);
4426
4427/* OpenCPN HTTP File Download PlugIn Interface */
4428
4429/* Various method Return Codes, etc */
4444
4457
4458// Style definitions for Synchronous file download modal dialogs, if
4459// desired. Abstracted from wxCURL package
4463 0x0002,
4466 OCPN_DLDS_SIZE = 0x0010,
4469 0x0020,
4470
4471 // styles related to the use of wxCurlConnectionSettingsDialog:
4472
4474 0x0040,
4479 0x0100,
4480
4481 OCPN_DLDS_CONN_SETTINGS_ALL = OCPN_DLDS_CONN_SETTINGS_AUTH |
4484
4485 OCPN_DLDS_SHOW_ALL = OCPN_DLDS_ELAPSED_TIME | OCPN_DLDS_ESTIMATED_TIME |
4488 OCPN_DLDS_CONN_SETTINGS_ALL,
4489
4491 OCPN_DLDS_CAN_START = 0x0400,
4494
4496 0x1000,
4497
4498 // by default all available features are enabled:
4499 OCPN_DLDS_DEFAULT_STYLE = OCPN_DLDS_CAN_START | OCPN_DLDS_CAN_PAUSE |
4500 OCPN_DLDS_CAN_ABORT | OCPN_DLDS_SHOW_ALL |
4502};
4503
4504#define ONLINE_CHECK_RETRY \
4505 30 // Recheck the Internet connection availability every ONLINE_CHECK_RETRY s
4506
4527extern DECL_EXP _OCPN_DLStatus OCPN_downloadFile(
4528 const wxString &url, const wxString &outputFile, const wxString &title,
4529 const wxString &message, const wxBitmap &bitmap, wxWindow *parent,
4530 long style, int timeout_secs);
4531
4549extern DECL_EXP _OCPN_DLStatus
4550OCPN_downloadFileBackground(const wxString &url, const wxString &outputFile,
4551 wxEvtHandler *handler, long *handle);
4552
4558extern DECL_EXP void OCPN_cancelDownloadFileBackground(long handle);
4559
4571extern DECL_EXP _OCPN_DLStatus OCPN_postDataHttp(const wxString &url,
4572 const wxString &parameters,
4573 wxString &result,
4574 int timeout_secs);
4575
4581extern DECL_EXP bool OCPN_isOnline();
4582
4583/* Supporting Event for Background downloading */
4584/* OCPN_downloadEvent Definition */
4585
4586/* PlugIn should be ready/able to handle this event after initiating a
4587 * background file transfer
4588 *
4589 * The event as received should be parsed primarily by the getDLEventCondition()
4590 * method. This will allow identification of download start, progress, and end
4591 * states.
4592 *
4593 * Other accessor methods contain status, byte counts, etc.
4594 *
4595 * A PlugIn may safely destroy its EvtHandler after receipt of an
4596 * OCPN_downloadEvent with getDLEventCondition == OCPN_DL_EVENT_TYPE_END
4597 */
4598
4599class DECL_EXP OCPN_downloadEvent : public wxEvent {
4600public:
4601 OCPN_downloadEvent(wxEventType commandType = wxEVT_NULL, int id = 0);
4603
4604 // accessors
4605 _OCPN_DLStatus getDLEventStatus() { return m_stat; }
4606 OCPN_DLCondition getDLEventCondition() { return m_condition; }
4607
4608 void setDLEventStatus(_OCPN_DLStatus stat) { m_stat = stat; }
4609 void setDLEventCondition(OCPN_DLCondition cond) { m_condition = cond; }
4610
4611 void setTotal(long bytes) { m_totalBytes = bytes; }
4612 void setTransferred(long bytes) { m_sofarBytes = bytes; }
4613 long getTotal() { return m_totalBytes; }
4614 long getTransferred() { return m_sofarBytes; }
4615
4616 void setComplete(bool b_complete) { m_b_complete = b_complete; }
4617 bool getComplete() { return m_b_complete; }
4618
4619 // required for sending with wxPostEvent()
4620 wxEvent *Clone() const;
4621
4622private:
4623 OCPN_DLStatus m_stat;
4624 OCPN_DLCondition m_condition;
4625
4626 long m_totalBytes;
4627 long m_sofarBytes;
4628 bool m_b_complete;
4629};
4630
4631// extern WXDLLIMPEXP_CORE const wxEventType wxEVT_DOWNLOAD_EVENT;
4632
4633#ifdef MAKING_PLUGIN
4634extern DECL_IMP wxEventType wxEVT_DOWNLOAD_EVENT;
4635#else
4636extern DECL_EXP wxEventType wxEVT_DOWNLOAD_EVENT;
4637#endif
4638
4639/* API 1.14 */
4640/* API 1.14 adds some more common functions to avoid unnecessary code
4641 * duplication */
4642
4643extern DECL_EXP bool LaunchDefaultBrowser_Plugin(wxString url);
4644
4645// API 1.14 Extra canvas Support
4646
4662extern DECL_EXP void PlugInAISDrawGL(wxGLCanvas *glcanvas,
4663 const PlugIn_ViewPort &vp);
4673extern DECL_EXP bool PlugInSetFontColor(const wxString TextElement,
4674 const wxColour color);
4675
4676// API 1.15
4677
4692extern DECL_EXP double PlugInGetDisplaySizeMM();
4693
4706extern DECL_EXP wxFont *FindOrCreateFont_PlugIn(
4707 int point_size, wxFontFamily family, wxFontStyle style, wxFontWeight weight,
4708 bool underline = false, const wxString &facename = wxEmptyString,
4709 wxFontEncoding encoding = wxFONTENCODING_DEFAULT);
4710
4742
4756extern DECL_EXP void PlugInHandleAutopilotRoute(bool enable);
4757
4758// API 1.16
4759//
4775extern DECL_EXP wxString GetPluginDataDir(const char *plugin_name);
4776
4782extern DECL_EXP bool ShuttingDown(void);
4783
4784// Support for MUI MultiCanvas model
4785
4808extern DECL_EXP wxWindow *PluginGetFocusCanvas();
4817extern DECL_EXP wxWindow *PluginGetOverlayRenderCanvas();
4818
4827extern "C" DECL_EXP void CanvasJumpToPosition(wxWindow *canvas, double lat,
4828 double lon, double scale);
4840extern "C" DECL_EXP int AddCanvasMenuItem(wxMenuItem *pitem,
4841 opencpn_plugin *pplugin,
4842 const char *name = "");
4851extern "C" DECL_EXP void RemoveCanvasMenuItem(int item, const char *name = "");
4861extern "C" DECL_EXP void SetCanvasMenuItemViz(int item, bool viz,
4862 const char *name = "");
4872extern "C" DECL_EXP void SetCanvasMenuItemGrey(int item, bool grey,
4873 const char *name = "");
4874
4875// Extract waypoints, routes and tracks
4881extern DECL_EXP wxString GetSelectedWaypointGUID_Plugin();
4887extern DECL_EXP wxString GetSelectedRouteGUID_Plugin();
4893extern DECL_EXP wxString GetSelectedTrackGUID_Plugin();
4894
4901extern DECL_EXP std::unique_ptr<PlugIn_Waypoint> GetWaypoint_Plugin(
4902 const wxString &);
4909extern DECL_EXP std::unique_ptr<PlugIn_Route> GetRoute_Plugin(const wxString &);
4916extern DECL_EXP std::unique_ptr<PlugIn_Track> GetTrack_Plugin(const wxString &);
4922extern DECL_EXP wxWindow *GetCanvasUnderMouse();
4936extern DECL_EXP int GetCanvasIndexUnderMouse();
4937// extern DECL_EXP std::vector<wxWindow *> GetCanvasArray();
4950extern DECL_EXP wxWindow *GetCanvasByIndex(int canvasIndex);
4961extern DECL_EXP int GetCanvasCount();
4976extern DECL_EXP bool CheckMUIEdgePan_PlugIn(int x, int y, bool dragging,
4977 int margin, int delta,
4978 int canvasIndex);
4987extern DECL_EXP void SetMUICursor_PlugIn(wxCursor *pCursor, int canvasIndex);
4988
4989// API 1.17
4990//
4991
5000extern DECL_EXP wxRect GetMasterToolbarRect();
5001
5021
5029extern DECL_EXP int GetLatLonFormat(void);
5030
5031// API 1.17
5032
5043extern "C" DECL_EXP void ZeroXTE();
5044
5068class DECL_EXP PlugIn_Waypoint_Ex {
5069public:
5071 PlugIn_Waypoint_Ex(double lat, double lon, const wxString &icon_ident,
5072 const wxString &wp_name, const wxString &GUID = "",
5073 const double ScaMin = 1e9, const bool bNameVisible = false,
5074 const int nRanges = 0, const double RangeDistance = 1.0,
5075 const wxColor RangeColor = wxColor(255, 0, 0));
5087 void InitDefaults();
5088
5100 bool GetFSStatus();
5101
5110 int GetRouteMembershipCount();
5111
5112 double m_lat;
5113 double m_lon;
5114 wxString m_GUID;
5115 wxString m_MarkName;
5117 wxDateTime m_CreateTime;
5120
5121 double scamin;
5124
5128
5129 wxString IconName;
5131
5137 Plugin_HyperlinkList *m_HyperlinkList;
5138};
5139
5140WX_DECLARE_LIST(PlugIn_Waypoint_Ex, Plugin_WaypointExList);
5141
5164class DECL_EXP PlugIn_Route_Ex {
5165public:
5166 PlugIn_Route_Ex(void);
5167 ~PlugIn_Route_Ex(void);
5168
5169 wxString m_NameString;
5170 wxString m_StartString;
5171 wxString m_EndString;
5172 wxString m_GUID;
5175 wxString m_Description;
5176
5182 Plugin_WaypointExList *pWaypointList;
5183};
5184
5192extern DECL_EXP wxArrayString GetRouteGUIDArray(void);
5200extern DECL_EXP wxArrayString GetTrackGUIDArray(void);
5201
5211extern DECL_EXP bool GetSingleWaypointEx(wxString GUID,
5212 PlugIn_Waypoint_Ex *pwaypoint);
5213
5223extern DECL_EXP bool AddSingleWaypointEx(PlugIn_Waypoint_Ex *pwaypoint,
5224 bool b_permanent = true);
5233extern DECL_EXP bool UpdateSingleWaypointEx(PlugIn_Waypoint_Ex *pwaypoint);
5234
5244extern DECL_EXP bool AddPlugInRouteEx(PlugIn_Route_Ex *proute,
5245 bool b_permanent = true);
5246
5255extern DECL_EXP bool UpdatePlugInRouteEx(PlugIn_Route_Ex *proute);
5256
5265extern DECL_EXP std::unique_ptr<PlugIn_Waypoint_Ex> GetWaypointEx_Plugin(
5266 const wxString &);
5275extern DECL_EXP std::unique_ptr<PlugIn_Route_Ex> GetRouteEx_Plugin(
5276 const wxString &);
5277
5283extern DECL_EXP wxString GetActiveWaypointGUID(void);
5289extern DECL_EXP wxString GetActiveRouteGUID(void);
5290
5291// API 1.18
5292
5307extern DECL_EXP double OCPN_GetDisplayContentScaleFactor();
5308
5323extern DECL_EXP double OCPN_GetWinDIPScaleFactor();
5324
5332extern DECL_EXP std::vector<std::string> GetPriorityMaps();
5340extern DECL_EXP std::vector<std::string> GetActivePriorityIdentifiers();
5341
5349extern DECL_EXP int GetGlobalWatchdogTimoutSeconds();
5350
5362
5363// FIXME (dave) Implement these
5380extern DECL_EXP wxArrayString GetRouteGUIDArray(OBJECT_LAYER_REQ req);
5396extern DECL_EXP wxArrayString GetTrackGUIDArray(OBJECT_LAYER_REQ req);
5414extern DECL_EXP wxArrayString GetWaypointGUIDArray(OBJECT_LAYER_REQ req);
5415
5418/* Listening to messages. */
5419class ObservableListener;
5420
5422class ObservedEvt;
5423
5424// This is a verbatim copy from observable_evt.h, don't define twice.
5425#ifndef OBSERVABLE_EVT_H
5426#define OBSERVABLE_EVT_H
5427
5428wxDECLARE_EVENT(obsNOTIFY, ObservedEvt);
5429
5444class ObservedEvt : public wxCommandEvent {
5445public:
5452 ObservedEvt(wxEventType commandType = obsNOTIFY, int id = 0)
5453 : wxCommandEvent(commandType, id) {}
5454 ObservedEvt(const ObservedEvt &event) : wxCommandEvent(event) {
5455 this->m_shared_ptr = event.m_shared_ptr;
5456 }
5464 wxEvent *Clone() const { return new ObservedEvt(*this); }
5470 std::shared_ptr<const void> GetSharedPtr() const { return m_shared_ptr; }
5476 void SetSharedPtr(std::shared_ptr<const void> p) { m_shared_ptr = p; }
5477
5478private:
5479 std::shared_ptr<const void> m_shared_ptr;
5480};
5481
5482#endif // OBSERVABLE_EVT_H
5483
5484class ObservableListener;
5485
5493 const uint64_t id;
5498 NMEA2000Id(int value) : id(static_cast<uint64_t>(value)) {};
5499};
5500
5511extern DECL_EXP std::shared_ptr<ObservableListener> GetListener(
5512 NMEA2000Id id, wxEventType ev, wxEvtHandler *handler);
5513
5521 const std::string id;
5526 NMEA0183Id(const std::string &s) : id(s) {};
5527};
5528
5539extern DECL_EXP std::shared_ptr<ObservableListener> GetListener(
5540 NMEA0183Id id, wxEventType ev, wxEvtHandler *handler);
5541
5549 const std::string id;
5554 SignalkId(const std::string &s) : id(s) {};
5555};
5556
5567extern DECL_EXP std::shared_ptr<ObservableListener> GetListener(
5568 SignalkId id, wxEventType ev, wxEvtHandler *handler);
5569
5585extern DECL_EXP std::vector<uint8_t> GetN2000Payload(NMEA2000Id id,
5586 ObservedEvt ev);
5587
5604extern DECL_EXP std::shared_ptr<void> GetSignalkPayload(ObservedEvt ev);
5605
5610extern DECL_EXP std::string GetN2000Source(NMEA2000Id id, ObservedEvt ev);
5611
5613extern DECL_EXP std::string GetN0183Payload(NMEA0183Id id, ObservedEvt ev);
5614
5622 const int type;
5627 NavDataId() : type(0) {}
5628};
5629
5641extern DECL_EXP std::shared_ptr<ObservableListener> GetListener(
5642 NavDataId id, wxEventType ev, wxEvtHandler *handler);
5643
5651 double lat;
5652 double lon;
5653 double sog;
5654 double cog;
5655 double var;
5656 double hdt;
5657 time_t time;
5658};
5659
5661extern DECL_EXP PluginNavdata GetEventNavdata(ObservedEvt ev);
5662
5664/*
5665 * Plugins may access comm ports for direct output.
5666 * The general program flow for a plugin may look something like this
5667 * pseudo-code:
5668 * 1. Plugin will query OCPN core for a list of active comm drivers.
5669 * 2. Plugin will inspect the list, and query OCPN core for driver
5670 * attributes.
5671 * 3. Plugin will select a comm driver with appropriate attributes for output.
5672 * 4. Plugin will register a list of PGNs expected to be transmitted
5673 * (N2K specific)
5674 * 5. Plugin may then send a payload buffer to a specific comm driver for
5675 * output as soon as possible.
5676 *
5677 * The mechanism for specifying a particular comm driver uses the notion of
5678 * "handles". Each active comm driver has an associated opaque handle, managed
5679 * by OCPN core. All references by a plugin to a driver are by means of its
5680 * handle. Handles should be considered to be "opaque", meaning that the exact
5681 * contents of the handle are of no specific value to the plugin, and only
5682 * have meaning to the OCPN core management of drivers.
5683 */
5684
5686typedef std::string DriverHandle;
5687
5710
5712extern DECL_EXP std::vector<DriverHandle> GetActiveDrivers();
5713
5728extern DECL_EXP const std::unordered_map<std::string, std::string>
5730
5731/* Writing to a specific driver */
5741extern DECL_EXP CommDriverResult WriteCommDriver(
5742 DriverHandle handle, const std::shared_ptr<std::vector<uint8_t>> &payload);
5743
5745extern DECL_EXP CommDriverResult WriteCommDriverN2K(
5746 DriverHandle handle, int PGN, int destinationCANAddress, int priority,
5747 const std::shared_ptr<std::vector<uint8_t>> &payload);
5748
5791extern DECL_EXP CommDriverResult RegisterTXPGNs(DriverHandle handle,
5792 std::vector<int> &pgn_list);
5793
5794// API 1.20
5795//
5796
5833
5836 const std::string id;
5837 PluginMsgId(const std::string &s) : id(s) {};
5838};
5839
5844extern DECL_EXP std::shared_ptr<ObservableListener> GetListener(
5845 PluginMsgId id, wxEventType ev, wxEvtHandler *handler);
5846
5851extern DECL_EXP std::string GetPluginMsgPayload(PluginMsgId id, ObservedEvt ev);
5852
5858extern DECL_EXP void ExitOCPN();
5859
5868extern "C" DECL_EXP void RequestWindowRefresh(wxWindow *win,
5869 bool eraseBackground);
5875extern DECL_EXP bool GetFullScreen();
5881extern DECL_EXP void SetFullScreen(bool full_screen_on);
5887extern DECL_EXP void EnableTouchMode(bool enable);
5893extern DECL_EXP bool GetTouchMode();
5901extern DECL_EXP void SetGlobalColor(std::string table, std::string name,
5902 wxColor color);
5910extern DECL_EXP wxColor GetGlobalColorD(std::string map_name, std::string name);
5916extern DECL_EXP void EnableStatusBar(bool enable);
5922extern DECL_EXP void EnableMenu(bool enable);
5928extern DECL_EXP bool GetEnableStatusBar();
5934extern DECL_EXP bool GetEnableMenu();
5935
5945extern DECL_EXP void SetNavigationMode(PI_NavMode mode, int CanvasIndex);
5952extern DECL_EXP PI_NavMode GetNavigationMode(int CanvasIndex);
5960extern DECL_EXP void EnableLookaheadMode(bool enable, int CanvasIndex);
5967extern DECL_EXP bool GetEnableLookaheadMode(int CanvasIndex);
5974extern DECL_EXP void EnableMUIBar(bool enable, int CanvasIndex);
5981extern DECL_EXP void EnableCompassGPSIcon(bool enable, int CanvasIndex);
5988extern DECL_EXP void EnableChartBar(bool enable, int CanvasIndex);
5995extern DECL_EXP bool GetEnableMUIBar(int CanvasIndex);
6002extern DECL_EXP bool GetEnableCompassGPSIcon(int CanvasIndex);
6009extern DECL_EXP bool GetEnableChartBar(int CanvasIndex);
6017extern DECL_EXP void EnableCanvasFocusBar(bool enable, int CanvasIndex);
6024extern DECL_EXP bool GetEnableCanvasFocusBar(int CanvasIndex);
6025
6026/*
6027 * Allow plugin control of "Chart Panel Options" dialog
6028 */
6029
6036extern DECL_EXP void EnableLatLonGrid(bool enable, int CanvasIndex);
6043extern DECL_EXP void EnableChartOutlines(bool enable, int CanvasIndex);
6050extern DECL_EXP void EnableDepthUnitDisplay(bool enable, int CanvasIndex);
6057extern DECL_EXP void EnableAisTargetDisplay(bool enable, int CanvasIndex);
6064extern DECL_EXP void EnableTideStationsDisplay(bool enable, int CanvasIndex);
6071extern DECL_EXP void EnableCurrentStationsDisplay(bool enable, int CanvasIndex);
6078extern DECL_EXP void EnableENCTextDisplay(bool enable, int CanvasIndex);
6085extern DECL_EXP void EnableENCDepthSoundingsDisplay(bool enable,
6086 int CanvasIndex);
6093extern DECL_EXP void EnableBuoyLightLabelsDisplay(bool enable, int CanvasIndex);
6100extern DECL_EXP void EnableLightsDisplay(bool enable, int CanvasIndex);
6107extern DECL_EXP void EnableLightDescriptionsDisplay(bool enable,
6108 int CanvasIndex);
6115extern DECL_EXP void SetENCDisplayCategory(PI_DisCat cat, int CanvasIndex);
6116
6123extern DECL_EXP bool GetEnableLatLonGrid(int CanvasIndex);
6130extern DECL_EXP bool GetEnableChartOutlines(int CanvasIndex);
6137extern DECL_EXP bool GetEnableDepthUnitDisplay(int CanvasIndex);
6144extern DECL_EXP bool GetEnableAisTargetDisplay(int CanvasIndex);
6151extern DECL_EXP bool GetEnableTideStationsDisplay(int CanvasIndex);
6158extern DECL_EXP bool GetEnableCurrentStationsDisplay(int CanvasIndex);
6165extern DECL_EXP bool GetEnableENCTextDisplay(int CanvasIndex);
6172extern DECL_EXP bool GetEnableENCDepthSoundingsDisplay(int CanvasIndex);
6179extern DECL_EXP bool GetEnableBuoyLightLabelsDisplay(int CanvasIndex);
6186extern DECL_EXP bool GetEnableLightsDisplay(int CanvasIndex);
6193extern DECL_EXP bool GetEnableLightDescriptionsDisplay(int CanvasIndex);
6204extern DECL_EXP PI_DisCat GetENCDisplayCategory(int CanvasIndex);
6213extern DECL_EXP void PluginSetFollowMode(int CanvasIndex, bool enable_follow);
6220extern DECL_EXP bool PluginGetFollowMode(int CanvasIndex);
6228extern DECL_EXP void SetTrackingMode(bool enable);
6234extern DECL_EXP bool GetTrackingMode();
6242extern DECL_EXP void SetAppColorScheme(PI_ColorScheme cs);
6248extern DECL_EXP PI_ColorScheme GetAppColorScheme();
6249
6258extern DECL_EXP void EnableSplitScreenLayout(bool enable = true);
6259
6260// ChartCanvas control utilities
6261
6269extern DECL_EXP void PluginZoomCanvas(int CanvasIndex, double factor);
6275extern DECL_EXP bool GetEnableMainToolbar();
6281extern DECL_EXP void SetEnableMainToolbar(bool enable);
6286extern DECL_EXP void ShowGlobalSettingsDialog();
6292extern DECL_EXP void PluginCenterOwnship(int CanvasIndex);
6300extern DECL_EXP bool GetEnableTenHertzUpdate();
6307extern DECL_EXP void EnableTenHertzUpdate(bool enable);
6313extern DECL_EXP void ConfigFlushAndReload();
6314
6315/*
6316 * Reload and restore all connections by direct read of config file
6317 */
6318extern DECL_EXP void ReloadConfigConnections();
6319
6323enum class PI_NotificationSeverity : int {
6324 PI_kInformational = 0,
6325 PI_kWarning = 1,
6326 PI_kCritical = 2
6327};
6328
6330public:
6332 const std::string &_message, int _timeout_start,
6333 int _timeout_left, std::string _guid);
6334 virtual ~PI_Notification() {};
6335
6336 PI_NotificationSeverity severity;
6337 std::string message;
6338 int auto_timeout_left;
6339 int auto_timeout_start;
6340 std::string guid;
6341 std::string action_verb; // Either "ACK" or "POST", when set by a
6342 // PI_Notification message payload.
6343 // Empty otherwise
6344};
6345
6346extern DECL_EXP int GetActiveNotificationCount();
6347extern DECL_EXP PI_NotificationSeverity GetMaxActiveNotificationLevel();
6348extern DECL_EXP std::string RaiseNotification(
6349 const PI_NotificationSeverity _severity, const std::string &_message,
6350 int timeout_secs = -1);
6351extern DECL_EXP bool AcknowledgeNotification(const std::string &guid);
6352extern DECL_EXP std::vector<std::shared_ptr<PI_Notification>>
6353GetActiveNotifications();
6354extern DECL_EXP void EnableNotificationCanvasIcon(bool enable);
6355
6356/*
6357 * Messaging interface for Notification Framework
6358 *
6359 */
6360
6361/*
6362 * Typical use pattern
6363 *
6364 * 1) Establish listener
6365 wxDEFINE_EVENT(EVT_NOTIFICATION_FRAME, ObservedEvt);
6366 static std::shared_ptr<ObservableListener> listener_note;
6367 NotificationMsgId note_id = NotificationMsgId();
6368 listener_note = GetListener(note_id, EVT_NOTIFICATION_FRAME, this);
6369 Bind(EVT_NOTIFICATION_FRAME, [&](ObservedEvt ev) { HandleNotification(ev); });
6370 *
6371 *
6372 *
6373 * 2) Define actions on receipt
6374 static void HandleNotification(ObservedEvt &ev) {
6375 NotificationMsgId id;
6376 std::shared_ptr<PI_Notification>payload=GetNotificationMsgPayload(id, ev);
6377 if (payload->action_verb == "ACK"){
6378 // Do Acknowledge notification actions
6379 }
6380 else if (payload->action_verb == "POST") {
6381 // Do Add Notification actions
6382 }
6383 }
6384
6385*/
6388 const std::string id;
6389 NotificationMsgId(const std::string &s) : id(s) {};
6390 NotificationMsgId() {};
6391};
6392
6397extern DECL_EXP std::shared_ptr<ObservableListener> GetListener(
6398 NotificationMsgId id, wxEventType ev, wxEvtHandler *handler);
6399
6403extern DECL_EXP std::shared_ptr<PI_Notification> GetNotificationMsgPayload(
6405
6406#endif //_PLUGIN_H_
Keeps listening over it's lifespan, removes itself on destruction.
Definition observable.h:131
Custom event class for OpenCPN's notification system.
ObservedEvt(wxEventType commandType=obsNOTIFY, int id=0)
Constructor.
void SetSharedPtr(std::shared_ptr< const void > p)
Sets the event's payload data.
wxEvent * Clone() const
Creates a cloned copy of this event.
std::shared_ptr< const void > GetSharedPtr() const
Gets the event's payload data.
Class representing an S-57 chart object.
int auxParm3
Auxiliary parameter 3.
PI_S57Obj * next
Linked list pointer.
PI_DisCat m_DisplayCat
Display category (base, standard, other)
double m_lon
Reference longitude.
double lon_max
Bounding box maximum longitude.
int Scamin
Minimum display scale.
int * m_lsindex_array
Array of line segment indices.
double x
X coordinate for point features.
int auxParm1
Auxiliary parameter 1.
void * m_chart_context
Parent chart context.
int m_n_lsindex
Number of line segments.
double lon_min
Bounding box minimum longitude.
PI_S57Obj * child
Child object list (for multipoint soundings)
double x_rate
X scale factor.
int npt
Number of points in geometry.
int auxParm2
Auxiliary parameter 2.
double lat_max
Bounding box maximum latitude.
int auxParm0
Auxiliary parameter 0.
int iOBJL
Object lookup index.
void * pPolyTessGeo
Tesselated polygon geometry.
double chart_ref_lon
Chart reference longitude.
bool bIsAssociable
True if object can have relationships.
int m_n_edge_max_points
Maximum points per edge.
void * geoPt
Geometry data for lines/areas.
double y
Y coordinate for point features.
int nRef
Reference count for memory management.
int n_attr
Number of attributes.
double * geoPtMulti
Lat/lon pairs for decomposed points.
double y_origin
Y origin offset.
PI_line_segment_element * m_ls_list
Line segment list.
int Index
Runtime object index.
void * S52_Context
S52 presentation data.
bool bIsClone
True if object is a clone.
char * att_array
Array of attribute types.
double * geoPtz
Z values for multipoint features.
double m_lat
Reference latitude.
int m_DPRI
Display priority.
bool m_bcategory_mutable
True if category can change.
bool bIsAton
True if object is an aid to navigation.
double chart_ref_lat
Chart reference latitude.
double z
Z coordinate (usually depth)
wxArrayOfS57attVal * attVal
Array of attribute values.
double y_rate
Y scale factor.
double lat_min
Bounding box minimum latitude.
double x_origin
X origin offset.
int Primitive_type
Geometry type (point, line, area)
Represents a line segment element for efficient vector chart rendering.
int priority
Drawing priority (higher draws on top)
int type
Line type identifier.
void * private0
Private data pointer for implementation use.
float lon_min
Minimum longitude of segment's bounding box.
float lat_min
Minimum latitude of segment's bounding box.
size_t vbo_offset
Offset into vertex buffer object for this segment.
float lat_max
Maximum latitude of segment's bounding box.
float lon_max
Maximum longitude of segment's bounding box.
PI_line_segment_element * next
Pointer to next segment in linked list.
size_t n_points
Number of points in this line segment.
Extended chart base class with separated text rendering.
Extended OpenGL-optimized chart base class with additional querying capabilities.
OpenGL-optimized chart base class for plugin chart types.
Base class for implementing custom chart types in OpenCPN plugins.
virtual ChartFamilyEnumPI GetChartFamily()
Returns the chart family classification.
virtual wxString GetID()
Returns a unique identifier for the chart.
virtual wxString GetDatumString()
Returns the horizontal geodetic datum of the chart.
virtual wxString GetName()
Returns the chart's name or title.
virtual wxDateTime GetEditionDate(void)
Returns the edition date of the chart.
virtual int GetCOVRTablenPoints(int iTable)
Alternative method to get the number of points in a coverage table entry.
virtual int GetCOVREntries()
Returns the number of coverage table entries for this chart.
virtual wxString GetSoundingsDatum()
Returns the vertical datum used for soundings in the chart.
virtual wxString GetExtraInfo()
Returns additional information about the chart.
virtual wxString GetDescription()
Returns a descriptive text about the chart.
virtual wxString GetFullPath() const
Returns the full file path of the chart.
virtual wxString GetSE()
Returns the chart's source edition identifier.
virtual bool IsReadyToRender()
Indicates whether the chart is ready for rendering.
virtual int GetNativeScale()
Returns the native scale of the chart.
virtual double GetChartSkew()
Returns the skew/rotation angle of the chart.
virtual wxString GetDepthUnits()
Returns the depth units used in the chart.
virtual float * GetCOVRTableHead(int iTable)
Returns a pointer to the coverage table data for a specific entry.
virtual double GetChartErrorFactor()
Returns the error factor for the chart.
virtual OcpnProjTypePI GetChartProjection()
Returns the projection type used by the chart.
virtual wxString GetPubDate()
Returns the publication date/year of the chart.
virtual ChartTypeEnumPI GetChartType()
Returns the chart type identifier.
virtual int GetCOVRTablePoints(int iTable)
Returns the number of points in a specific coverage table entry.
virtual ChartDepthUnitTypePI GetDepthUnitId()
Returns the depth unit type identifier.
AIS target information accessible to plugins.
char CallSign[8]
Call sign, includes NULL terminator.
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.
char ShipName[21]
Ship name, includes NULL terminator.
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.
Basic position fix information.
double Cog
Course over ground in degrees.
double Sog
Speed over ground in knots.
time_t FixTime
UTC time of fix as time_t value.
double Lat
Latitude in decimal degrees.
int nSats
Number of satellites used in the fix.
double Var
Magnetic variation in degrees, typically from RMC message.
double Lon
Longitude in decimal 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.
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.
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.
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.
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.
Information about the currently active route leg.
double Dtw
Distance to waypoint in nautical miles.
wxString wp_name
Name of destination waypoint for the active leg.
double Xte
Cross track error in nautical miles, negative values indicate left side of track.
double Btw
Bearing to waypoint in degrees true.
bool arrival
True when vessel is within the arrival circle of the destination waypoint.
virtual bool RenderOverlayMultiCanvas(wxDC &dc, PlugIn_ViewPort *vp, int canvasIndex)
Renders plugin overlay graphics with canvas selection.
virtual bool RenderGLOverlayMultiCanvas(wxGLContext *pcontext, PlugIn_ViewPort *vp, int canvasIndex)
Renders plugin overlay graphics in OpenGL mode with canvas selection.
bool RenderGLOverlayMultiCanvas(wxGLContext *pcontext, PlugIn_ViewPort *vp, int canvas_ix) override
Renders plugin overlay graphics in OpenGL mode with canvas selection.
bool RenderOverlayMultiCanvas(wxDC &dc, PlugIn_ViewPort *vp, int canvas_ix) override
Renders plugin overlay graphics with canvas selection.
Base class for OpenCPN plugins.
virtual bool RenderOverlay(wxMemoryDC *pmdc, PlugIn_ViewPort *vp)
Render plugin overlay graphics using standard device context.
DECL_EXP void RemovePlugInTool(int tool_id)
Removes a tool from OpenCPN's toolbar.
DECL_EXP void EnableNotificationCanvasIcon(bool enable)
Plugin Notification Framework GUI support.
DECL_EXP void ForceChartDBUpdate()
Forces an update of the chart database.
DECL_EXP wxArrayString GetRouteGUIDArray(void)
Gets array of route GUIDs.
DECL_EXP CommDriverResult WriteCommDriverN2K(DriverHandle handle, int PGN, int destinationCANAddress, int priority, const std::shared_ptr< std::vector< uint8_t > > &payload)
Send a PGN message to an NMEA2000 address.
_OBJECT_LAYER_REQ
Filter options for object queries.
@ 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.
DECL_EXP void toSM_ECC_Plugin(double lat, double lon, double lat0, double lon0, double *x, double *y)
Converts geographic coordinates to Elliptical Simple Mercator projection.
DECL_EXP void EnableENCDepthSoundingsDisplay(bool enable, int CanvasIndex)
Controls ENC depth sounding display.
DECL_EXP void EnableChartBar(bool enable, int CanvasIndex)
Controls visibility of chart info bar.
DECL_EXP double fromDMM_Plugin(wxString sdms)
Converts degrees/decimal minutes string to decimal degrees.
DECL_EXP void SetCanvasMenuItemGrey(int item, bool grey, const char *name="")
Sets menu item enabled/disabled state.
DECL_EXP void EnableLatLonGrid(bool enable, int CanvasIndex)
Controls latitude/longitude grid display.
DECL_EXP void SetNavigationMode(PI_NavMode mode, int CanvasIndex)
Sets the navigation mode for a specific chart canvas.
DECL_EXP bool GetEnableENCDepthSoundingsDisplay(int CanvasIndex)
Gets ENC depth sounding visibility.
DECL_EXP void EnableENCTextDisplay(bool enable, int CanvasIndex)
Controls ENC text label display.
DECL_EXP wxXmlDocument GetChartDatabaseEntryXML(int dbIndex, bool b_getGeom)
Gets chart database entry as XML.
DECL_EXP void AddChartDirectory(wxString &path)
Adds a chart directory to OpenCPN's chart database.
DECL_EXP wxBitmap GetBitmapFromSVGFile(wxString filename, unsigned int width, unsigned int height)
Creates bitmap from SVG file.
DECL_EXP wxArrayString GetChartDBDirArrayString()
Gets chart database directory list.
DECL_EXP wxWindow * GetCanvasByIndex(int canvasIndex)
Gets chart canvas window by index.
DECL_EXP bool GetEnableCanvasFocusBar(int CanvasIndex)
Gets focus indicator visibility state.
DECL_EXP int GetCanvasIndexUnderMouse()
Gets index of chart canvas under mouse cursor.
DECL_EXP void DimeWindow(wxWindow *)
Applies system color scheme to window.
plugin_ais_alarm_type
Enumeration of AIS alarm states.
@ PI_AIS_ALARM_ACKNOWLEDGED
Alarm has been acknowledged by the user.
@ PI_AIS_NO_ALARM
No alarm condition exists.
@ PI_AIS_ALARM_SET
Alarm has been set but not acknowledged.
enum ChartDepthUnitTypePI _ChartDepthUnitTypePI
Enumeration of depth unit types used in charts.
DECL_EXP void EnableCanvasFocusBar(bool enable, int CanvasIndex)
Controls visibility of canvas focus indicator.
DECL_EXP void EnableTideStationsDisplay(bool enable, int CanvasIndex)
Controls tide station icon display.
enum _PI_DisCat PI_DisCat
Display categories for S52 chart features.
DECL_EXP void RemoveCanvasContextMenuItem(int item)
Removes a context menu item completely.
void DECL_EXP PI_PLIBSetRenderCaps(unsigned int flags)
Sets rendering capability flags.
DECL_EXP void fromSM_ECC_Plugin(double x, double y, double lat0, double lon0, double *lat, double *lon)
Converts Elliptical Simple Mercator coordinates to geographic.
DECL_EXP bool GetEnableChartBar(int CanvasIndex)
Gets chart bar visibility state.
DECL_EXP wxFont GetOCPNGUIScaledFont_PlugIn(wxString item)
Gets a uniquely scaled font copy for responsive UI elements.
DECL_EXP std::unique_ptr< PlugIn_Waypoint_Ex > GetWaypointEx_Plugin(const wxString &)
Gets extended waypoint by GUID.
DECL_EXP double DistGreatCircle_Plugin(double slat, double slon, double dlat, double dlon)
Calculates great circle distance between two points.
CommDriverResult
Error return values
@ RESULT_COMM_INVALID_PARMS
Invalid parameters provided to operation.
@ RESULT_COMM_REGISTER_GATEWAY_ERROR
Failed to register with gateway device.
@ RESULT_COMM_TX_ERROR
Error occurred during transmission.
@ RESULT_COMM_REGISTER_PGN_ERROR
Failed to register PGN parameters.
@ RESULT_COMM_NO_ERROR
Operation completed successfully.
@ RESULT_COMM_INVALID_HANDLE
Invalid or unknown driver handle specified.
DECL_EXP void RequestWindowRefresh(wxWindow *win, bool eraseBackground)
Requests window refresh.
DECL_EXP bool UpdateChartDBInplace(wxArrayString dir_array, bool b_force_update, bool b_ProgressDialog)
Updates chart database in place.
DECL_EXP wxString GetLocaleCanonicalName()
Gets system locale canonical name.
DECL_EXP bool GetEnableDepthUnitDisplay(int CanvasIndex)
Gets depth unit display state.
enum OptionsParentPI _OptionsParentPI
Enum defining parent pages in OpenCPN options dialog where plugins can add panels.
DECL_EXP void SetToolbarItemState(int item, bool toggle)
Sets toolbar item toggle state.
DECL_EXP bool UpdatePlugInRoute(PlugIn_Route *proute)
Updates an existing route.
DECL_EXP bool AddLocaleCatalog(wxString catalog)
Adds a locale catalog for translations.
int DECL_EXP PI_PLIBRenderObjectToDC(wxDC *pdc, PI_S57Obj *pObj, PlugIn_ViewPort *vp)
Renders an S57 object using standard device context.
DECL_EXP _OCPN_DLStatus OCPN_downloadFile(const wxString &url, const wxString &outputFile, const wxString &title, const wxString &message, const wxBitmap &bitmap, wxWindow *parent, long style, int timeout_secs)
Synchronously downloads a file with progress dialog.
void DECL_EXP PI_PLIBSetLineFeaturePriority(PI_S57Obj *pObj, int prio)
Sets rendering priority for line feature.
enum _PI_DisPrio PI_DisPrio
Display priority levels for S52 chart objects.
DECL_EXP void EnableCurrentStationsDisplay(bool enable, int CanvasIndex)
Controls current station icon display.
DECL_EXP wxArrayString GetIconNameArray(void)
Gets array of available waypoint icons.
DECL_EXP void toTM_Plugin(float lat, float lon, float lat0, float lon0, double *x, double *y)
Converts geographic coordinates to Transverse Mercator projection.
DECL_EXP bool GetGlobalColor(wxString colorName, wxColour *pcolour)
Gets a global color value.
DECL_EXP bool GetSingleWaypointEx(wxString GUID, PlugIn_Waypoint_Ex *pwaypoint)
Gets extended waypoint data by GUID.
DECL_EXP int PlatformFileSelectorDialog(wxWindow *parent, wxString *file_spec, wxString Title, wxString initDir, wxString suggestedName, wxString wildcard)
Shows platform-optimized file selector dialog.
DECL_EXP PI_DisCat GetENCDisplayCategory(int CanvasIndex)
Gets current ENC display category.
void DECL_EXP PI_UpdateContext(PI_S57Obj *pObj)
Updates rendering context for S57 object.
DECL_EXP int AddCanvasContextMenuItem(wxMenuItem *pitem, opencpn_plugin *pplugin)
Adds item to chart canvas context menu.
DECL_EXP double fromUsrSpeed_Plugin(double usr_speed, int unit=-1)
Converts from user's preferred speed unit to knots.
DECL_EXP _OCPN_DLStatus OCPN_postDataHttp(const wxString &url, const wxString &parameters, wxString &result, int timeout_secs)
Performs HTTP POST request.
DECL_EXP wxString GetActiveRouteGUID(void)
Gets GUID of currently active route.
DECL_EXP void RequestRefresh(wxWindow *)
Requests window refresh.
void DECL_EXP PI_PLIBPrepareForNewRender(void)
Prepares PLIB for new rendering pass.
DECL_EXP PI_NavMode GetNavigationMode(int CanvasIndex)
Gets current navigation mode for a canvas.
DECL_EXP std::unique_ptr< PlugIn_Route_Ex > GetRouteEx_Plugin(const wxString &)
Gets extended route by GUID.
DECL_EXP void SetCanvasRotation(double rotation)
Sets chart display rotation angle.
DECL_EXP void PlugInMultMatrixViewport(PlugIn_ViewPort *vp, float lat=0, float lon=0)
Applies viewport transformation matrix.
DECL_EXP double toUsrDepth_Plugin(double m_depth, int unit=-1)
Converts meters to user's preferred depth unit.
int DECL_EXP PI_GetPLIBDepthUnitInt()
Gets configured depth unit for S52 display.
DECL_EXP wxArrayString GetWaypointGUIDArray(void)
Gets array of all waypoint/marks GUIDs.
DECL_EXP double toUsrTemp_Plugin(double cel_temp, int unit=-1)
Converts Celsius to user's preferred temperature unit.
DECL_EXP bool CheckEdgePan_PlugIn(int x, int y, bool dragging, int margin, int delta)
Checks if chart should pan when cursor near edge.
DECL_EXP wxString * GetpSharedDataLocation()
Gets shared application data location.
DECL_EXP double toUsrSpeed_Plugin(double kts_speed, int unit=-1)
Converts knots to user's preferred speed unit.
DECL_EXP bool GetEnableBuoyLightLabelsDisplay(int CanvasIndex)
Gets buoy/light label visibility.
_OCPN_DLCondition
Event types for HTTP file download operations.
@ OCPN_DL_EVENT_TYPE_UNKNOWN
Unknown event type.
@ OCPN_DL_EVENT_TYPE_PROGRESS
Download progress update.
@ OCPN_DL_EVENT_TYPE_END
Download has completed.
@ OCPN_DL_EVENT_TYPE_START
Download is starting.
DECL_EXP bool DeleteOptionsPage(wxScrolledWindow *page)
Removes a previously added options page.
DECL_EXP void EnableTenHertzUpdate(bool enable)
Enable or disable 10 Hz update rate.
DECL_EXP void EnableLightDescriptionsDisplay(bool enable, int CanvasIndex)
Controls light description text display.
DECL_EXP bool AddPlugInRouteEx(PlugIn_Route_Ex *proute, bool b_permanent=true)
Adds a route with extended features.
bool DECL_EXP PI_PLIBObjectRenderCheck(PI_S57Obj *pObj, PlugIn_ViewPort *vp)
Checks if object should be rendered.
DECL_EXP void GetCanvasPixLL(PlugIn_ViewPort *vp, wxPoint *pp, double lat, double lon)
Converts lat/lon to canvas physical pixel coordinates.
DECL_EXP bool PlugIn_GSHHS_CrossesLand(double lat1, double lon1, double lat2, double lon2)
Checks if a great circle route crosses land.
ChartTypeEnumPI
Enumeration of chart types.
@ PI_CHART_TYPE_PLUGIN
Chart type provided by a plugin.
@ PI_CHART_TYPE_CM93COMP
CM93 Composite vector chart format.
@ PI_CHART_TYPE_CM93
CM93 vector chart format.
@ PI_CHART_TYPE_S57
S-57 vector chart format.
@ PI_CHART_TYPE_UNKNOWN
Chart type is unknown or undefined.
@ PI_CHART_TYPE_DONTCARE
Chart type is not important for the operation.
@ PI_CHART_TYPE_KAP
BSB/KAP raster chart format.
@ PI_CHART_TYPE_DUMMY
Dummy chart used when no actual chart is available.
@ PI_CHART_TYPE_GEO
GEO raster chart format.
DECL_EXP int GetChartbarHeight(void)
Gets height of chart bar in pixels.
DECL_EXP wxString GetNewGUID()
Generates a new globally unique identifier (GUID).
PI_ColorScheme
Enumeration of color schemes.
@ PI_GLOBAL_COLOR_SCHEME_DAY
Day color scheme, optimized for bright ambient light.
@ PI_GLOBAL_COLOR_SCHEME_NIGHT
Night color scheme, optimized for dark conditions with minimal impact on night vision.
@ PI_N_COLOR_SCHEMES
Number of color schemes, used for bounds checking.
@ PI_GLOBAL_COLOR_SCHEME_RGB
RGB color scheme, unmodified colors.
@ PI_GLOBAL_COLOR_SCHEME_DUSK
Dusk color scheme, optimized for low ambient light.
DECL_EXP wxString toSDMM_PlugIn(int NEflag, double a, bool hi_precision=true)
Convert decimal degrees to a formatted string.
DECL_EXP void SetEnableMainToolbar(bool enable)
Show or hide the main toolbar.
enum _OCPN_DLCondition OCPN_DLCondition
Event types for HTTP file download operations.
DECL_EXP wxString GetActiveStyleName()
Gets name of currently active style sheet.
DECL_EXP void EnableAisTargetDisplay(bool enable, int CanvasIndex)
Controls AIS target display.
DECL_EXP void ZeroXTE()
Resets cross track error to zero.
DECL_EXP void SetENCDisplayCategory(PI_DisCat cat, int CanvasIndex)
Sets ENC (Electronic Navigation Chart) feature display category.
DECL_EXP wxString GetOCPN_ExePath(void)
Gets OpenCPN executable path.
int DECL_EXP OCPNMessageBox_PlugIn(wxWindow *parent, const wxString &message, const wxString &caption=_T("Message"), int style=wxOK, int x=-1, int y=-1)
Shows a message box dialog.
DECL_EXP wxString * GetpPlugInLocation()
Gets plugins directory location.
DECL_EXP std::string GetN2000Source(NMEA2000Id id, ObservedEvt ev)
Return source identifier (iface) of a received n2000 message of type id in ev.
DECL_EXP int GetLatLonFormat(void)
Gets currently selected latitude/longitude display format.
PI_NotificationSeverity
Plugin Notification Framework support.
DECL_EXP std::shared_ptr< void > GetSignalkPayload(ObservedEvt ev)
Get SignalK status payload after receiving a message.
DECL_EXP double OCPN_GetWinDIPScaleFactor()
Gets Windows-specific DPI scaling factor.
DECL_EXP std::shared_ptr< ObservableListener > GetListener(NMEA2000Id id, wxEventType ev, wxEvtHandler *handler)
Gets listener for NMEA 2000 messages.
DECL_EXP wxWindow * GetCanvasUnderMouse()
Gets canvas window under mouse cursor.
DECL_EXP void EnableBuoyLightLabelsDisplay(bool enable, int CanvasIndex)
Controls buoy/light name label display.
int DECL_EXP PI_PLIBRenderAreaToDC(wxDC *pdc, PI_S57Obj *pObj, PlugIn_ViewPort *vp, wxRect rect, unsigned char *pixbuf)
Renders an S57 area object using standard device context.
DECL_EXP void SetGlobalColor(std::string table, std::string name, wxColor color)
Sets a color in the global color scheme.
DECL_EXP void PushNMEABuffer(wxString str)
Pushes NMEA sentence to the system.
DECL_EXP bool OCPN_isOnline()
Checks internet connectivity.
DECL_EXP void SetCanvasContextMenuItemGrey(int item, bool grey)
Sets menu item enabled/disabled state.
DECL_EXP std::unique_ptr< PlugIn_Waypoint > GetWaypoint_Plugin(const wxString &)
Gets waypoint details by GUID.
enum PI_InitReturn _PI_InitReturn
Return values for plugin initialization.
DECL_EXP void CanvasJumpToPosition(wxWindow *canvas, double lat, double lon, double scale)
Centers specified canvas on given position at given scale.
DECL_EXP double fromUsrTemp_Plugin(double usr_temp, int unit=-1)
Converts from user's preferred temperature unit to Celsius.
DECL_EXP bool GetEnableMenu()
Gets menu bar visibility state.
bool DECL_EXP PI_GetObjectRenderBox(PI_S57Obj *pObj, double *lat_min, double *lat_max, double *lon_min, double *lon_max)
Gets geographic bounding box of S57 object.
_OCPN_DLStatus
Status codes for HTTP file download operations.
@ OCPN_DL_NO_ERROR
Download completed successfully.
@ OCPN_DL_USER_TIMEOUT
Download timed out waiting for user action.
@ OCPN_DL_STARTED
Download has begun but not yet complete.
@ OCPN_DL_FAILED
Download failed (general error)
@ OCPN_DL_UNKNOWN
Unknown or uninitialized status.
@ OCPN_DL_ABORTED
Download was cancelled by user.
SDDMFORMAT
Coordinate format options for lat/lon display.
@ DEGREES_DECIMAL_MINUTES
Format like "50° 12.345' N".
@ DEGREES_MINUTES_SECONDS
Format like "50° 12' 34.5" N".
@ DECIMAL_DEGREES
Format like "50.12345° N".
@ END_SDDMFORMATS
Number of available formats.
DECL_EXP bool IsTouchInterface_PlugIn(void)
Checks if touch interface mode is enabled.
DECL_EXP wxString GetPlugInPath(opencpn_plugin *pplugin)
Gets the installation path for a specific plugin.
DECL_EXP double GetCanvasTilt()
Gets current canvas tilt angle.
DECL_EXP bool GetEnableAisTargetDisplay(int CanvasIndex)
Gets AIS target display state.
OCPN_DLDialogStyle
@ OCPN_DLDS_CONN_SETTINGS_AUTH
The dialog allows the user to change the authentication settings.
@ OCPN_DLDS_CAN_START
The transfer won't start automatically.
@ OCPN_DLDS_URL
The dialog shows the URL involved in the transfer.
@ OCPN_DLDS_AUTO_CLOSE
The dialog auto closes when transfer is complete.
@ OCPN_DLDS_CAN_ABORT
The transfer can be aborted by the user.
@ OCPN_DLDS_ESTIMATED_TIME
The dialog shows the estimated total time.
@ OCPN_DLDS_SIZE
The dialog shows the size of the resource to download/upload.
@ OCPN_DLDS_CONN_SETTINGS_PROXY
The dialog allows the user to change the proxy settings.
@ OCPN_DLDS_REMAINING_TIME
The dialog shows the remaining time.
@ OCPN_DLDS_SPEED
The dialog shows the transfer speed.
@ OCPN_DLDS_ELAPSED_TIME
The dialog shows the elapsed time.
@ OCPN_DLDS_CAN_PAUSE
The transfer can be paused.
@ OCPN_DLDS_CONN_SETTINGS_PORT
The dialog allows the user to change the port for the transfer.
DECL_EXP void RemoveCanvasMenuItem(int item, const char *name="")
Removes a context menu item completely.
DECL_EXP void EnableStatusBar(bool enable)
Shows/hides the status bar.
ChartFamilyEnumPI
Enumeration of chart families (broad categories).
@ PI_CHART_FAMILY_UNKNOWN
Chart family is unknown.
@ PI_CHART_FAMILY_VECTOR
Vector chart formats (S-57, CM93, etc.)
@ PI_CHART_FAMILY_RASTER
Raster chart formats (KAP, GEO, etc.)
@ PI_CHART_FAMILY_DONTCARE
Chart family is not important for the operation.
DECL_EXP void EnableChartOutlines(bool enable, int CanvasIndex)
Controls chart outline display.
DECL_EXP wxString GetWritableDocumentsDir(void)
Returns the platform-specific default documents directory.
DECL_EXP wxString GetSelectedTrackGUID_Plugin()
Gets GUID of currently selected track.
DECL_EXP bool GetEnableTenHertzUpdate()
Check if 10 Hz update rate is enabled.
DECL_EXP bool DeletePlugInRoute(wxString &GUID)
Deletes a route.
DECL_EXP void GetDoubleCanvasPixLL(PlugIn_ViewPort *vp, wxPoint2DDouble *pp, double lat, double lon)
Converts lat/lon to canvas pixels with double precision.
DECL_EXP bool GetFullScreen()
Gets full screen state.
DECL_EXP bool PluginGetFollowMode(int CanvasIndex)
Get the current follow mode status for a specific canvas.
DECL_EXP bool GetSingleWaypoint(wxString GUID, PlugIn_Waypoint *pwaypoint)
Gets waypoint data by GUID.
enum _PI_LUPname PI_LUPname
Name identifiers for S57 lookup table sets.
DECL_EXP double OCPN_GetDisplayContentScaleFactor()
Gets content scaling factor for current display.
DECL_EXP double fromUsrDepth_Plugin(double usr_depth, int unit=-1)
Converts from user's preferred depth unit to meters.
DECL_EXP bool UpdatePlugInTrack(PlugIn_Track *ptrack)
Updates an existing track.
DECL_EXP wxArrayString GetTrackGUIDArray(void)
Gets array of track GUIDs.
DECL_EXP bool GetEnableLightsDisplay(int CanvasIndex)
Gets light icon visibility.
int DECL_EXP PI_GetPLIBStateHash()
Gets hash value representing current PLIB state.
DECL_EXP double toUsrDistance_Plugin(double nm_distance, int unit=-1)
Converts nautical miles to user's preferred distance unit.
DECL_EXP bool GetActiveRoutepointGPX(char *buffer, unsigned int buffer_length)
Gets GPX representation of active route waypoint.
DECL_EXP wxBitmap * FindSystemWaypointIcon(wxString &icon_name)
Finds built-in system waypoint icon.
DECL_EXP void ExitOCPN()
Exits OpenCPN application.
DECL_EXP int PlugInGetMinAvailableGshhgQuality()
Gets minimum available GSHHS coastline data quality.
DECL_EXP bool GetEnableLookaheadMode(int CanvasIndex)
Gets look-ahead mode state for a canvas.
DECL_EXP wxString getUsrTempUnit_Plugin(int unit=-1)
Gets display string for user's preferred temperature unit.
DECL_EXP double fromDMM_PlugIn(wxString sdms)
Parse a formatted coordinate string to get decimal degrees.
DECL_EXP int PlugInGetMaxAvailableGshhgQuality()
Gets maximum available GSHHS coastline data quality.
ChartDepthUnitTypePI
Enumeration of depth unit types used in charts.
@ PI_DEPTH_UNIT_METERS
Depths shown in meters.
@ PI_DEPTH_UNIT_UNKNOWN
Depth unit is unknown or not specified.
@ PI_DEPTH_UNIT_FATHOMS
Depths shown in fathoms.
@ PI_DEPTH_UNIT_FEET
Depths shown in feet.
DECL_EXP bool PlugInHasNormalizedViewPort(PlugIn_ViewPort *vp)
Checks if viewport has been normalized.
DECL_EXP bool AddSingleWaypoint(PlugIn_Waypoint *pwaypoint, bool b_permanent=true)
Adds a single waypoint.
DECL_EXP double fromUsrWindSpeed_Plugin(double usr_wspeed, int unit=-1)
Converts from user's preferred wind speed unit to knots.
DECL_EXP bool PlugInSetFontColor(const wxString TextElement, const wxColour color)
Sets text color for a UI element.
DECL_EXP wxString getUsrWindSpeedUnit_Plugin(int unit=-1)
Gets display string for user's preferred wind speed unit.
DECL_EXP bool DeleteSingleWaypoint(wxString &GUID)
Deletes a single waypoint.
DECL_EXP bool ShuttingDown(void)
Checks if OpenCPN is in shutdown process.
DECL_EXP void EnableDepthUnitDisplay(bool enable, int CanvasIndex)
Controls depth unit display.
DECL_EXP void PlugInAISDrawGL(wxGLCanvas *glcanvas, const PlugIn_ViewPort &vp)
Renders AIS targets on a secondary OpenGL canvas.
DECL_EXP void PlugInHandleAutopilotRoute(bool enable)
Controls autopilot route handling.
DECL_EXP void EnableMUIBar(bool enable, int CanvasIndex)
Controls visibility of MUI (Mobile/Touch User Interface) bar.
DECL_EXP void JumpToPosition(double lat, double lon, double scale)
Centers chart display on specified position at given scale.
DECL_EXP CommDriverResult WriteCommDriver(DriverHandle handle, const std::shared_ptr< std::vector< uint8_t > > &payload)
Send a non-NMEA2000 message.
DECL_EXP int PlatformDirSelectorDialog(wxWindow *parent, wxString *file_spec, wxString Title, wxString initDir)
Shows platform-optimized directory selector dialog.
DECL_EXP std::string GetN0183Payload(NMEA0183Id id, ObservedEvt ev)
Return payload in a received n0183 message of type id in ev.
wxString DECL_EXP PI_GetPLIBColorScheme()
Gets current color scheme used by S52 PLIB.
DECL_EXP void SetToolbarToolBitmaps(int item, wxBitmap *bitmap, wxBitmap *bmpRollover)
Updates toolbar tool bitmaps.
DECL_EXP bool GetTrackingMode()
Get the current tracking mode status.
std::string DriverHandle
Plugin API supporting direct access to comm drivers for output purposes.
PI_LUPname DECL_EXP PI_GetObjectLUPName(PI_S57Obj *pObj)
Gets Look-Up Table (LUP) name for object.
DECL_EXP bool AddPersistentFontKey(wxString TextElement)
Registers a new font configuration element.
enum _OCPN_DLStatus OCPN_DLStatus
Status codes for HTTP file download operations.
DECL_EXP wxAuiManager * GetFrameAuiManager(void)
Gets main frame AUI manager.
DECL_EXP void PlugInNormalizeViewport(PlugIn_ViewPort *vp, float lat=0, float lon=0)
Normalizes viewport parameters.
DECL_EXP wxString getUsrDistanceUnit_Plugin(int unit=-1)
Gets display string for user's preferred distance unit.
struct _ExtentPI ExtentPI
Geographic extent structure defining a bounding box.
DECL_EXP wxFileConfig * GetOCPNConfigObject(void)
Gets OpenCPN's configuration object.
DECL_EXP bool AddCustomWaypointIcon(wxBitmap *pimage, wxString key, wxString description)
Adds a custom waypoint icon.
DECL_EXP wxString toUsrDateTimeFormat_Plugin(const wxDateTime date_time, const DateTimeFormatOptions &options=DateTimeFormatOptions())
Format a date/time to a localized string representation, conforming to the global date/time format an...
DECL_EXP wxRect GetMasterToolbarRect()
Gets bounding rectangle of master toolbar.
DECL_EXP wxWindow * PluginGetOverlayRenderCanvas()
Gets the canvas currently designated for overlay rendering.
DECL_EXP void EnableLookaheadMode(bool enable, int CanvasIndex)
Enables/disables look-ahead mode for a canvas.
DECL_EXP void OCPN_cancelDownloadFileBackground(long handle)
Cancels a background download.
DECL_EXP PI_ColorScheme GetAppColorScheme()
Get the current application color scheme.
DECL_EXP PluginNavdata GetEventNavdata(ObservedEvt ev)
Return BasicNavDataMsg decoded data available in ev.
DECL_EXP int AddChartToDBInPlace(wxString &full_path, bool b_RefreshCanvas)
Adds a chart to the database without full rebuild.
DECL_EXP void toSM_Plugin(double lat, double lon, double lat0, double lon0, double *x, double *y)
Converts geographic coordinates to Simple Mercator projection.
DECL_EXP wxString getUsrDepthUnit_Plugin(int unit=-1)
Gets display string for user's preferred depth unit.
DECL_EXP void EnableMenu(bool enable)
Shows/hides the main menu bar.
DECL_EXP wxFont * OCPNGetFont(wxString TextElement, int default_size=0)
Gets a font for UI elements.
DECL_EXP int GetGlobalWatchdogTimoutSeconds()
Gets global watchdog timeout value.
DECL_EXP void SetTrackingMode(bool enable)
Enable or disable tracking mode.
enum ChartTypeEnumPI _ChartTypeEnumPI
Enumeration of chart types.
DECL_EXP std::shared_ptr< PI_Notification > GetNotificationMsgPayload(NotificationMsgId id, ObservedEvt ev)
Retrieve the Notification Event in a Notification message.
enum OcpnProjTypePI _OcpnProjTypePI
Enumeration of chart projection types.
DECL_EXP bool GetEnableStatusBar()
Gets status bar visibility state.
DECL_EXP float GetOCPNChartScaleFactor_Plugin()
Gets chart rendering scale factor.
void DECL_EXP PI_PLIBFreeContext(void *pContext)
Frees S52 PLIB context.
DECL_EXP bool GetEnableChartOutlines(int CanvasIndex)
Gets chart outline visibility state.
DECL_EXP std::unique_ptr< PlugIn_Track > GetTrack_Plugin(const wxString &)
Gets track details by GUID.
DECL_EXP bool AddPlugInRoute(PlugIn_Route *proute, bool b_permanent=true)
Adds a new route.
DECL_EXP std::vector< uint8_t > GetN2000Payload(NMEA2000Id id, ObservedEvt ev)
Return N2K payload for a received n2000 message of type id in ev.
DECL_EXP wxColour GetFontColour_PlugIn(wxString TextElement)
Gets color configured for a UI text element.
DECL_EXP bool GetEnableMainToolbar()
Check if the main toolbar is enabled.
enum ChartFamilyEnumPI _ChartFamilyEnumPI
Enumeration of chart families (broad categories).
DECL_EXP wxFont * FindOrCreateFont_PlugIn(int point_size, wxFontFamily family, wxFontStyle style, wxFontWeight weight, bool underline=false, const wxString &facename=wxEmptyString, wxFontEncoding encoding=wxFONTENCODING_DEFAULT)
Creates or finds a font in the font cache.
DECL_EXP void SetCanvasContextMenuItemViz(int item, bool viz)
Temporarily changes context menu item visibility.
DECL_EXP bool PlugInPlaySoundEx(wxString &sound_file, int deviceIndex=-1)
Start playing a sound file asynchronously.
DECL_EXP wxBitmap GetIcon_PlugIn(const wxString &name)
Gets icon bitmap by name.
DECL_EXP double toUsrWindSpeed_Plugin(double kts_wspeed, int unit=-1)
Converts knots to user's preferred wind speed unit.
DECL_EXP wxWindow * GetOCPNCanvasWindow()
Gets OpenCPN's main canvas window.
_PI_NavMode
Navigation mode options for chart display orientation.
@ PI_NORTH_UP_MODE
North Up Mode - True north is always at the top of the display.
@ 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.
DECL_EXP void SetMUICursor_PlugIn(wxCursor *pCursor, int canvasIndex)
Sets mouse cursor for specific canvas.
DECL_EXP const std::unordered_map< std::string, std::string > GetAttributes(DriverHandle handle)
Query a specific driver for attributes.
DECL_EXP 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.
DECL_EXP void ConfigFlushAndReload()
Flush configuration changes to disk and reload settings.
DECL_EXP bool AddSingleWaypointEx(PlugIn_Waypoint_Ex *pwaypoint, bool b_permanent=true)
Adds a waypoint with extended properties.
DECL_EXP bool GetEnableLatLonGrid(int CanvasIndex)
Gets latitude/longitude grid visibility state.
_PI_DisPrio
Display priority levels for S52 chart objects.
@ PI_PRIO_AREA_2
Superimposed areas including water features.
@ PI_PRIO_NUM
Number of priority levels.
@ PI_PRIO_AREA_1
Superimposed areas.
@ PI_PRIO_MARINERS
VRM, EBL, own ship (highest priority)
@ PI_PRIO_SYMB_POINT
Point symbols including land features.
@ PI_PRIO_ROUTEING
Routeing lines (TSS, recommended tracks)
@ PI_PRIO_GROUP1
S57 group 1 filled areas (land, etc)
@ PI_PRIO_SYMB_AREA
Area symbols including traffic areas.
@ PI_PRIO_SYMB_LINE
Line symbols including restricted areas.
@ PI_PRIO_NODATA
No data fill area pattern (lowest priority)
@ PI_PRIO_HAZARDS
Hazards, buoys, beacons.
bool DECL_EXP PI_PLIBSetContext(PI_S57Obj *pObj)
Sets S52 PLIB rendering context for an object.
DECL_EXP bool UpdatePlugInRouteEx(PlugIn_Route_Ex *proute)
Updates an existing extended route.
DECL_EXP std::vector< DriverHandle > GetActiveDrivers()
Query OCPN core for a list of active drivers
DECL_EXP void SetCursor_PlugIn(wxCursor *pPlugin_Cursor=NULL)
Sets mouse cursor.
enum CommDriverResult _CommDriverResult
Error return values
DECL_EXP void PositionBearingDistanceMercator_Plugin(double lat, double lon, double brg, double dist, double *dlat, double *dlon)
Calculates destination point given start point, bearing and distance.
DECL_EXP std::unique_ptr< PlugIn_Route > GetRoute_Plugin(const wxString &)
Gets route details by GUID.
_PI_DisCat
Display categories for S52 chart features.
@ PI_DISP_CAT_NUM
Number of categories (for array sizing)
@ PI_OTHER
Other - additional features for detailed navigation.
@ PI_MARINERS_OTHER
Additional mariner specified features.
@ 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.
DECL_EXP bool DecodeSingleVDOMessage(const wxString &str, PlugIn_Position_Fix_Ex *pos, wxString *acc)
Decodes a single VDO (Own Ship AIS) message.
PI_DisPrio DECL_EXP PI_GetObjectDisplayPriority(PI_S57Obj *pObj)
Gets display priority for object.
DECL_EXP double PlugInGetDisplaySizeMM()
Gets physical display size in millimeters.
DECL_EXP std::string GetPluginMsgPayload(PluginMsgId id, ObservedEvt ev)
Retrieve the string in a plugin message, internal or received on the REST insterface.
DECL_EXP double fromUsrDistance_Plugin(double usr_distance, int unit=-1)
Converts from user's preferred distance unit to nautical miles.
DECL_EXP wxWindow * PluginGetFocusCanvas()
Gets the currently focused chart canvas.
int DECL_EXP PI_PLIBRenderAreaToGL(const wxGLContext &glcc, PI_S57Obj *pObj, PlugIn_ViewPort *vp, wxRect &render_rect)
Renders an S57 area object using OpenGL.
DECL_EXP bool UpdateSingleWaypointEx(PlugIn_Waypoint_Ex *pwaypoint)
Updates an existing extended waypoint.
DECL_EXP void SetFullScreen(bool full_screen_on)
Sets full screen mode.
DECL_EXP void PluginCenterOwnship(int CanvasIndex)
Center the chart view on the own ship position for a specific canvas.
DECL_EXP double GetOCPNGUIToolScaleFactor_PlugIn()
Gets current global GUI scaling factor.
DECL_EXP wxString GetSelectedRouteGUID_Plugin()
Gets GUID of currently selected route.
DECL_EXP void DistanceBearingMercator_Plugin(double lat0, double lon0, double lat1, double lon1, double *brg, double *dist)
Calculates bearing and distance between two points.
DECL_EXP wxColor GetGlobalColorD(std::string map_name, std::string name)
Gets a color from the global color scheme.
enum _PI_NavMode PI_NavMode
Navigation mode options for chart display orientation.
DECL_EXP void ShowGlobalSettingsDialog()
Display the global settings dialog.
DECL_EXP void SetToolbarToolBitmapsSVG(int item, wxString SVGfile, wxString SVGfileRollover, wxString SVGfileToggled)
Updates SVG graphics for toolbar tool.
DECL_EXP void PlugInPlaySound(wxString &sound_file)
Plays a sound file asynchronously.
_PI_LUPname
Name identifiers for S57 lookup table sets.
@ PI_PLAIN_BOUNDARIES
Area objects with simple boundaries.
@ PI_PAPER_CHART
Point objects using traditional paper chart symbols.
@ PI_LINES
Line objects (e.g., depth contours, coastlines)
@ PI_LUPNAME_NUM
Total number of lookup table types.
@ PI_SIMPLIFIED
Point objects using simplified symbols.
@ PI_SYMBOLIZED_BOUNDARIES
Area objects with symbolized boundaries.
DECL_EXP std::vector< std::string > GetPriorityMaps()
Gets list of configured priority mapping schemes.
DECL_EXP ArrayOfPlugIn_AIS_Targets * GetAISTargetArray(void)
Gets array of AIS targets.
DECL_EXP void EnableSplitScreenLayout(bool enable=true)
Enable or disable the split-screen layout.
DECL_EXP bool UpdateSingleWaypoint(PlugIn_Waypoint *pwaypoint)
Updates a single waypoint.
DECL_EXP void SetCanvasProjection(int projection)
Sets chart projection type.
DECL_EXP bool AddPlugInTrack(PlugIn_Track *ptrack, bool b_permanent=true)
Adds a new track.
DECL_EXP 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.
DECL_EXP wxString getUsrSpeedUnit_Plugin(int unit=-1)
Gets display string for user's preferred speed unit.
wxColour DECL_EXP GetBaseGlobalColor(wxString colorName)
Gets a global system color.
DECL_EXP bool GetEnableENCTextDisplay(int CanvasIndex)
Gets ENC text label visibility.
DECL_EXP bool GetEnableCompassGPSIcon(int CanvasIndex)
Gets compass icon visibility state.
OcpnProjTypePI
Enumeration of chart projection types.
@ PI_PROJECTION_UNKNOWN
Projection type is unknown or undefined.
@ PI_PROJECTION_MERCATOR
Mercator projection, standard for navigation charts.
@ PI_PROJECTION_STEREOGRAPHIC
Stereographic projection, used for polar and specialty charts.
@ PI_PROJECTION_GNOMONIC
Gnomonic projection, in which great circles appear as straight lines.
@ PI_PROJECTION_POLAR
Polar projection, used for polar regions.
@ PI_PROJECTION_POLYCONIC
Polyconic projection, sometimes used for inland charts.
@ PI_PROJECTION_TRANSVERSE_MERCATOR
Transverse Mercator projection, used for some coastal charts.
@ PI_PROJECTION_ORTHOGRAPHIC
Orthographic projection, showing Earth as viewed from space.
@ PI_PROJECTION_EQUIRECTANGULAR
Equirectangular/Plate Carrée projection, simple lat/lon grid.
DECL_EXP bool GetEnableMUIBar(int CanvasIndex)
Gets MUI bar visibility state.
DECL_EXP bool CheckMUIEdgePan_PlugIn(int x, int y, bool dragging, int margin, int delta, int canvasIndex)
Checks if chart should pan when cursor near edge.
DECL_EXP void EnableTouchMode(bool enable)
Enables/disables touch interface mode.
DECL_EXP void PluginZoomCanvas(int CanvasIndex, double factor)
Zoom a specific chart canvas by the given factor.
DECL_EXP wxString GetActiveWaypointGUID(void)
Gets GUID of currently active waypoint.
DECL_EXP void GetCanvasLLPix(PlugIn_ViewPort *vp, wxPoint p, double *plat, double *plon)
Converts canvas physical pixel coordinates to lat/lon.
DECL_EXP bool GetEnableLightDescriptionsDisplay(int CanvasIndex)
Gets light description text visibility.
enum _OBJECT_LAYER_REQ OBJECT_LAYER_REQ
Filter options for object queries.
DECL_EXP CommDriverResult RegisterTXPGNs(DriverHandle handle, std::vector< int > &pgn_list)
Register PGNs that this application intends to transmit for some NMEA 2000 adapters like Actisense NG...
DECL_EXP void SendPluginMessage(wxString message_id, wxString message_body)
Sends message to other plugins.
DECL_EXP wxString * GetpPrivateApplicationDataLocation()
Gets private application data directory.
DECL_EXP wxDialog * GetActiveOptionsDialog()
Gets pointer to active options dialog.
DECL_EXP void SetAppColorScheme(PI_ColorScheme cs)
Set the application color scheme.
DECL_EXP bool DeletePlugInTrack(wxString &GUID)
Deletes a track.
DECL_EXP bool GetEnableCurrentStationsDisplay(int CanvasIndex)
Gets current station icon visibility.
DECL_EXP int AddCanvasMenuItem(wxMenuItem *pitem, opencpn_plugin *pplugin, const char *name="")
Adds item to canvas context menu.
int DECL_EXP PI_PLIBRenderObjectToGL(const wxGLContext &glcc, PI_S57Obj *pObj, PlugIn_ViewPort *vp, wxRect &render_rect)
Renders any S57 object using OpenGL.
DECL_EXP bool GetEnableTideStationsDisplay(int CanvasIndex)
Gets tide station icon visibility.
DECL_EXP void SetCanvasMenuItemViz(int item, bool viz, const char *name="")
Temporarily changes context menu item visibility.
DECL_EXP void SetCanvasTilt(double tilt)
Gets current canvas tilt angle.
DECL_EXP std::vector< std::string > GetActivePriorityIdentifiers()
Gets list of active priority identifiers.
DECL_EXP void fromSM_Plugin(double x, double y, double lat0, double lon0, double *lat, double *lon)
Converts Simple Mercator coordinates to geographic.
DECL_EXP int GetCanvasCount()
Gets total number of chart canvases.
DECL_EXP void PluginSetFollowMode(int CanvasIndex, bool enable_follow)
Set follow mode for a specific canvas.
double DECL_EXP PI_GetPLIBMarinerSafetyContour()
Gets configured safety contour depth.
DECL_EXP void EnableLightsDisplay(bool enable, int CanvasIndex)
Controls light icon display.
PI_InitReturn
Return values for plugin initialization.
@ PI_INIT_OK
Initialization successful.
@ PI_INIT_FAIL_NOERROR
Init failed, request no explicit error message.
@ PI_INIT_FAIL_RETRY
Init failed, retry suggested.
@ PI_INIT_FAIL_REMOVE
Init failed, suggest remove from further use.
DECL_EXP void fromTM_Plugin(double x, double y, double lat0, double lon0, double *lat, double *lon)
Converts Transverse Mercator coordinates to geographic.
PI_DisCat DECL_EXP PI_GetObjectDisplayCategory(PI_S57Obj *pObj)
Gets display category for object.
DECL_EXP int RemoveChartFromDBInPlace(wxString &full_path)
Removes a chart from database without full rebuild.
DECL_EXP _OCPN_DLStatus OCPN_downloadFileBackground(const wxString &url, const wxString &outputFile, wxEvtHandler *handler, long *handle)
Asynchronously downloads a file in the background.
DECL_EXP wxString GetPluginDataDir(const char *plugin_name)
Return the plugin data directory for a given directory name.
DECL_EXP wxScrolledWindow * AddOptionsPage(OptionsParentPI parent, wxString title)
Adds a new preferences page to OpenCPN options dialog.
DECL_EXP bool GetTouchMode()
Gets touch interface mode state.
DECL_EXP wxString GetSelectedWaypointGUID_Plugin()
Gets GUID of currently selected waypoint.
DECL_EXP void ForceChartDBRebuild()
Forces complete rebuild of chart database.
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.
DECL_EXP void SetToolbarToolViz(int item, bool viz)
Temporarily changes toolbar tool visibility.
int DECL_EXP PI_GetPLIBSymbolStyle()
Gets configured S52 symbol style.
DECL_EXP void EnableCompassGPSIcon(bool enable, int CanvasIndex)
Controls visibility of compass/GPS status icon.
int DECL_EXP PI_GetPLIBBoundaryStyle()
Gets configured S52 boundary style.
Configuration options for date and time formatting.
wxString format_string
The format string for date/time.
DateTimeFormatOptions & SetFormatString(const wxString &fmt)
Sets the date/time format pattern string.
DateTimeFormatOptions & SetTimezone(const wxString &tz)
Sets the timezone mode for date/time display.
wxString time_zone
The timezone to use when formatting the date/time.
DateTimeFormatOptions & SetLongitude(double lon)
Sets the reference longitude for Local Mean Time (LMT) calculations.
double longitude
The longitude to use when formatting the date/time in Local Mean Time (LMT).
Identifier for NMEA 0183 sentence types.
const std::string id
Sentence identifier.
NMEA0183Id(const std::string &s)
Creates identifier from sentence type.
Identifier for NMEA 2000 message types.
const uint64_t id
The PGN value.
NMEA2000Id(int value)
Creates identifier from PGN value.
Navigation data message identifier.
const int type
Message type identifier (currently only 0 supported)
NavDataId()
Default constructor.
Facade for NotificationMsg.
Facade for NavAddrPluginMsg.
Basic navigation data structure.
double var
Magnetic variation in degrees.
double cog
Course over ground in degrees.
double lon
Longitude in decimal degrees.
double lat
Latitude in decimal degrees.
double sog
Speed over ground in knots.
double hdt
True heading in degrees.
time_t time
UTC timestamp of data.
Identifier for Signal K paths.
SignalkId(const std::string &s)
Creates identifier from Signal K path.
const std::string id
Signal K path.
Geographic extent structure defining a bounding box.
double NLAT
Northern latitude boundary in decimal degrees.
double WLON
Western longitude boundary in decimal degrees.
double SLAT
Southern latitude boundary in decimal degrees.
double ELON
Eastern longitude boundary in decimal degrees.