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 <cstdint>
58#include <memory>
59#include <vector>
60#include <unordered_map>
61
62class wxGLContext;
63
64// This is the most modern API Version number
65// It is expected that the API will remain downward compatible, meaning that
66// PlugIns conforming to API Version less than the most modern will also
67// be correctly supported.
68#define API_VERSION_MAJOR 1
69#define API_VERSION_MINOR 21
70
71// Fwd Definitions
72class wxFileConfig;
73class wxNotebook;
74class wxFont;
75class wxAuiManager;
76class wxScrolledWindow;
77class wxGLCanvas;
78
79//---------------------------------------------------------------------------------------------------------
80//
81// Bitfield PlugIn Capabilities flag definition
82//
83//---------------------------------------------------------------------------------------------------------
87#define WANTS_OVERLAY_CALLBACK 0x00000001
91#define WANTS_CURSOR_LATLON 0x00000002
101#define WANTS_TOOLBAR_CALLBACK 0x00000004
107#define INSTALLS_TOOLBAR_TOOL 0x00000008
110#define WANTS_CONFIG 0x00000010
113#define INSTALLS_TOOLBOX_PAGE 0x00000020
116#define INSTALLS_CONTEXTMENU_ITEMS 0x00000040
119#define WANTS_NMEA_SENTENCES 0x00000080
123#define WANTS_NMEA_EVENTS 0x00000100
126#define WANTS_AIS_SENTENCES 0x00000200
129#define USES_AUI_MANAGER 0x00000400
132#define WANTS_PREFERENCES 0x00000800
135#define INSTALLS_PLUGIN_CHART 0x00001000
138#define WANTS_ONPAINT_VIEWPORT 0x00002000
141#define WANTS_PLUGIN_MESSAGING 0x00004000
142#define WANTS_OPENGL_OVERLAY_CALLBACK 0x00008000
143#define WANTS_DYNAMIC_OPENGL_OVERLAY_CALLBACK 0x00010000
146#define WANTS_LATE_INIT 0x00020000
149#define INSTALLS_PLUGIN_CHART_GL 0x00040000
152#define WANTS_MOUSE_EVENTS 0x00080000
155#define WANTS_VECTOR_CHART_OBJECT_INFO 0x00100000
158#define WANTS_KEYBOARD_EVENTS 0x00200000
161#define WANTS_PRESHUTDOWN_HOOK 0x00400000
162
184#define OVERLAY_LEGACY 0
185
194#define OVERLAY_OVER_SHIPS 64
195
204#define OVERLAY_OVER_EMBOSS 96
205
215#define OVERLAY_OVER_UI 128
216
220#define OVERLAY_CHARTS 256
221
222//----------------------------------------------------------------------------------------------------------
223// Some PlugIn API interface object class definitions
224//----------------------------------------------------------------------------------------------------------
239
244public:
245 double clat;
246 double clon;
248 double skew;
249 double rotation;
250
252
255 wxRect rv_rect;
256 bool b_quilt;
259
260 double lat_min;
261 double lat_max;
262 double lon_min;
263 double lon_max;
264
265 bool
267};
268
273public:
274 double Lat;
275 double Lon;
276 double Cog;
277 double Sog;
278 double Var;
279 time_t FixTime;
280 int nSats;
281};
293public:
300 double Lat;
301
308 double Lon;
309
313 double Cog;
314
319 double Sog;
320
322 double Var;
323
328 double Hdm;
329
335 double Hdt;
336
342 time_t FixTime;
343
350 int nSats;
351};
352
357public:
358 double Xte;
360 double Btw;
361 double Dtw;
362 wxString wp_name;
363 bool arrival;
365};
366
375
380public:
381 int MMSI;
382 int Class;
384 double SOG;
385 double COG;
386 double HDG;
387 double Lon;
388 double Lat;
389 int ROTAIS;
390 char CallSign[8];
391 char ShipName[21];
392 unsigned char ShipType;
393 int IMO;
394
395 double Range_NM;
396 double Brg;
397
398 // Per target collision parameters
400 double TCPA;
401 double CPA;
402
404};
405
420
430
440
463
467typedef struct _ExtentPI {
468 double SLAT;
469 double WLON;
470 double NLAT;
471 double ELON;
473
474// PlugInChartBase::Init() init_flags constants
477#define PI_FULL_INIT 0
480#define PI_HEADER_ONLY 1
482#define PI_THUMB_ONLY 2
483
497class DECL_EXP PlugInChartBase : public wxObject {
498public:
499 // These methods Must be overriden in any derived class
501 virtual ~PlugInChartBase();
502
523 virtual wxString GetFileSearchMask(void);
524
549 virtual int Init(const wxString &full_path, int init_flags);
550
570 virtual void SetColorScheme(int cs, bool bApplyImmediate);
571
592 virtual double GetNormalScaleMin(double canvas_scale_factor,
593 bool b_allow_overzoom);
611 virtual double GetNormalScaleMax(double canvas_scale_factor,
612 int canvas_width);
627 virtual double GetNearestPreferredScalePPM(double target_scale_ppm);
628
646 virtual bool GetChartExtent(ExtentPI *pext);
647
674 virtual wxBitmap &RenderRegionView(const PlugIn_ViewPort &VPoint,
675 const wxRegion &Region);
676
691 virtual bool AdjustVP(PlugIn_ViewPort &vp_last, PlugIn_ViewPort &vp_proposed);
692
708 virtual void GetValidCanvasRegion(const PlugIn_ViewPort &VPoint,
709 wxRegion *pValidRegion);
710
728 virtual int GetCOVREntries() { return 0; }
729
745 virtual int GetCOVRTablePoints(int iTable) { return 0; }
746
760 virtual int GetCOVRTablenPoints(int iTable) { return 0; }
761
782 virtual float *GetCOVRTableHead(int iTable) { return (float *)NULL; }
783
806 virtual wxBitmap *GetThumbnail(int tnx, int tny, int cs);
807
808 // Accessors, need not be overridden in derived class if the member
809 // variables are maintained
810
824 virtual wxString GetFullPath() const { return m_FullPath; }
825
847 virtual ChartTypeEnumPI GetChartType() { return m_ChartType; }
848
862 virtual ChartFamilyEnumPI GetChartFamily() { return m_ChartFamily; }
863
883 virtual OcpnProjTypePI GetChartProjection() { return m_projection; }
884
897 virtual wxString GetName() { return m_Name; }
898
909 virtual wxString GetDescription() { return m_Description; }
910
922 virtual wxString GetID() { return m_ID; }
923
937 virtual wxString GetSE() { return m_SE; }
938
954 virtual wxString GetDepthUnits() { return m_DepthUnits; }
955
972 virtual wxString GetSoundingsDatum() { return m_SoundingsDatum; }
973
989 virtual wxString GetDatumString() { return m_datum_str; }
990
1004 virtual wxString GetExtraInfo() { return m_ExtraInfo; }
1005
1018 virtual wxString GetPubDate() { return m_PubYear; }
1019
1033 virtual double GetChartErrorFactor() { return m_Chart_Error_Factor; }
1034
1050 virtual ChartDepthUnitTypePI GetDepthUnitId() { return m_depth_unit_id; }
1051
1066 virtual bool IsReadyToRender() { return m_bReadyToRender; }
1067
1080 virtual int GetNativeScale() { return m_Chart_Scale; };
1081
1094 virtual double GetChartSkew() { return m_Chart_Skew; }
1095
1108 virtual wxDateTime GetEditionDate(void) { return m_EdDate; }
1109
1110 // Methods pertaining to CHART_FAMILY_RASTER type PlugIn charts only
1111
1130 virtual void ComputeSourceRectangle(const PlugIn_ViewPort &vp,
1131 wxRect *pSourceRect);
1132
1147 virtual double GetRasterScaleFactor();
1148
1169 virtual bool GetChartBits(wxRect &source, unsigned char *pPix, int sub_samp);
1170
1182 virtual int GetSize_X();
1183
1195 virtual int GetSize_Y();
1196
1211 virtual void latlong_to_chartpix(double lat, double lon, double &pixx,
1212 double &pixy);
1213
1228 virtual void chartpix_to_latlong(double pixx, double pixy, double *plat,
1229 double *plon);
1230
1231protected:
1232 ChartTypeEnumPI m_ChartType;
1233 ChartFamilyEnumPI m_ChartFamily;
1234
1235 wxString m_FullPath;
1236 OcpnProjTypePI m_projection;
1237 int m_Chart_Scale;
1238 double m_Chart_Skew;
1239
1240 wxDateTime m_EdDate;
1241 bool m_bReadyToRender;
1242
1243 wxString m_Name;
1244 wxString m_Description;
1245 wxString m_ID;
1246 wxString m_SE;
1247 wxString m_SoundingsDatum;
1248 wxString m_datum_str;
1249 wxString m_PubYear;
1250 wxString m_DepthUnits;
1251 wxString m_ExtraInfo;
1252
1253 ChartDepthUnitTypePI m_depth_unit_id;
1254
1255 double m_Chart_Error_Factor;
1256};
1257
1258// Declare an array of PlugIn_AIS_Targets
1259WX_DEFINE_ARRAY_PTR(PlugIn_AIS_Target *, ArrayOfPlugIn_AIS_Targets);
1260
1275class DECL_EXP opencpn_plugin {
1276public:
1277 opencpn_plugin(void *pmgr) {}
1278 virtual ~opencpn_plugin();
1279
1280 // Public API to the PlugIn class
1281
1282 // This group of methods is required, and will be called by the opencpn
1283 // host opencpn PlugIns must implement this group
1284
1299 virtual int Init(void);
1300
1310 virtual bool DeInit(void);
1311
1324 virtual int GetAPIVersionMajor();
1325
1338 virtual int GetAPIVersionMinor();
1339
1351 virtual int GetPlugInVersionMajor();
1352
1364 virtual int GetPlugInVersionMinor();
1365
1378 virtual wxBitmap *GetPlugInBitmap();
1379
1380 // These three methods should produce valid, meaningful strings always
1381 // ---EVEN IF--- the PlugIn has not (yet) been initialized.
1382 // They are used by the PlugInManager GUI
1383
1395 virtual wxString GetCommonName();
1396
1408 virtual wxString GetShortDescription();
1409
1423 virtual wxString GetLongDescription();
1424
1425 // This group is optional.
1426 // PlugIns may override any of these methods as required
1427
1439 virtual void SetDefaults(void);
1440
1454 virtual int GetToolbarToolCount(void);
1455
1468 virtual int GetToolboxPanelCount(void);
1469
1484 virtual void SetupToolboxPanel(int page_sel, wxNotebook *pnotebook);
1485
1501 virtual void OnCloseToolboxPanel(int page_sel, int ok_apply_cancel);
1502
1516 virtual void ShowPreferencesDialog(wxWindow *parent);
1517
1543 virtual bool RenderOverlay(wxMemoryDC *pmdc, PlugIn_ViewPort *vp);
1544
1558 virtual void SetCursorLatLon(double lat, double lon);
1577 virtual void SetCurrentViewPort(PlugIn_ViewPort &vp);
1578
1604 virtual void SetPositionFix(PlugIn_Position_Fix &pfix);
1619 virtual void SetNMEASentence(wxString &sentence);
1636 virtual void SetAISSentence(wxString &sentence);
1637
1647 virtual void ProcessParentResize(int x, int y);
1648
1660 virtual void SetColorScheme(PI_ColorScheme cs);
1661
1670 virtual void OnToolbarToolCallback(int id);
1671
1680 virtual void OnContextMenuItemCallback(int id);
1681
1689 virtual void UpdateAuiStatus(void);
1690
1702 virtual wxArrayString GetDynamicChartClassNameArray(void);
1703};
1704
1705// the types of the class factories used to create PlugIn instances
1706typedef opencpn_plugin *create_t(void *);
1707typedef void destroy_t(opencpn_plugin *);
1708
1709#ifdef __clang__
1710#pragma clang diagnostic push
1711#pragma clang diagnostic ignored "-Woverloaded-virtual"
1712#endif
1713
1714class DECL_EXP opencpn_plugin_16 : public opencpn_plugin {
1715public:
1716 opencpn_plugin_16(void *pmgr);
1717 virtual ~opencpn_plugin_16();
1718
1720
1758 virtual bool RenderOverlay(wxDC &dc, PlugIn_ViewPort *vp);
1759
1774 virtual void SetPluginMessage(wxString &message_id, wxString &message_body);
1775};
1776
1777class DECL_EXP opencpn_plugin_17 : public opencpn_plugin {
1778public:
1779 opencpn_plugin_17(void *pmgr);
1780 virtual ~opencpn_plugin_17();
1781
1783
1784 virtual bool RenderOverlay(wxDC &dc, PlugIn_ViewPort *vp);
1785 virtual bool RenderGLOverlay(wxGLContext *pcontext, PlugIn_ViewPort *vp);
1786
1787 virtual void SetPluginMessage(wxString &message_id, wxString &message_body);
1788};
1789
1790class DECL_EXP opencpn_plugin_18 : public opencpn_plugin {
1791public:
1792 opencpn_plugin_18(void *pmgr);
1793 virtual ~opencpn_plugin_18();
1794
1796
1797 virtual bool RenderOverlay(wxDC &dc, PlugIn_ViewPort *vp);
1835 virtual bool RenderGLOverlay(wxGLContext *pcontext, PlugIn_ViewPort *vp);
1836 virtual void SetPluginMessage(wxString &message_id, wxString &message_body);
1837
1858 virtual void SetPositionFixEx(PlugIn_Position_Fix_Ex &pfix);
1859};
1860
1861#ifdef __clang__
1862#pragma clang diagnostic pop
1863#endif
1864
1865class DECL_EXP opencpn_plugin_19 : public opencpn_plugin_18 {
1866public:
1867 opencpn_plugin_19(void *pmgr);
1868 virtual ~opencpn_plugin_19();
1869
1877 virtual void OnSetupOptions(void);
1878};
1879
1880class DECL_EXP opencpn_plugin_110 : public opencpn_plugin_19 {
1881public:
1882 opencpn_plugin_110(void *pmgr);
1883 virtual ~opencpn_plugin_110();
1884
1885 virtual void LateInit(void); // If WANTS_LATE_INIT is returned by Init()
1886};
1887
1889public:
1890 opencpn_plugin_111(void *pmgr);
1891 virtual ~opencpn_plugin_111();
1892};
1893
1895public:
1896 opencpn_plugin_112(void *pmgr);
1897 virtual ~opencpn_plugin_112();
1898
1908 virtual bool MouseEventHook(wxMouseEvent &event);
1909
1924 virtual void SendVectorChartObjectInfo(wxString &chart, wxString &feature,
1925 wxString &objname, double lat,
1926 double lon, double scale,
1927 int nativescale);
1928};
1929
1931public:
1932 opencpn_plugin_113(void *pmgr);
1933 virtual ~opencpn_plugin_113();
1934
1944 virtual bool KeyboardEventHook(wxKeyEvent &event);
1945
1953 virtual void OnToolbarToolDownCallback(int id);
1954
1962 virtual void OnToolbarToolUpCallback(int id);
1963};
1964
1966public:
1967 opencpn_plugin_114(void *pmgr);
1968 virtual ~opencpn_plugin_114();
1969};
1970
1972public:
1973 opencpn_plugin_115(void *pmgr);
1974 virtual ~opencpn_plugin_115();
1975};
1976
1978public:
1979 opencpn_plugin_116(void *pmgr);
1980 virtual ~opencpn_plugin_116();
2013 virtual bool RenderGLOverlayMultiCanvas(wxGLContext *pcontext,
2014 PlugIn_ViewPort *vp, int canvasIndex);
2015
2048 virtual bool RenderOverlayMultiCanvas(wxDC &dc, PlugIn_ViewPort *vp,
2049 int canvasIndex);
2058 virtual void PrepareContextMenu(int canvasIndex);
2059};
2060
2062public:
2063 opencpn_plugin_117(void *pmgr);
2070 virtual int GetPlugInVersionPatch();
2071
2073 virtual int GetPlugInVersionPost();
2074
2076 virtual const char *GetPlugInVersionPre();
2077
2079 virtual const char *GetPlugInVersionBuild();
2080
2081 /*Provide active leg data to plugins*/
2082 virtual void SetActiveLegInfo(Plugin_Active_Leg_Info &leg_info);
2083};
2084
2086public:
2087 opencpn_plugin_118(void *pmgr);
2088
2091
2149#ifdef _MSC_VER
2150 virtual bool RenderGLOverlayMultiCanvas(wxGLContext *pcontext,
2151 PlugIn_ViewPort *vp, int canvasIndex,
2152 int priority = -1);
2153#else
2154 virtual bool RenderGLOverlayMultiCanvas(wxGLContext *pcontext,
2155 PlugIn_ViewPort *vp, int canvasIndex,
2156 int priority);
2157
2158 bool RenderGLOverlayMultiCanvas(wxGLContext *pcontext, PlugIn_ViewPort *vp,
2159 int canvas_ix) override {
2160 return RenderGLOverlayMultiCanvas(pcontext, vp, canvas_ix, -1);
2161 }
2162#endif
2163
2219#ifdef _MSC_VER
2220 virtual bool RenderOverlayMultiCanvas(wxDC &dc, PlugIn_ViewPort *vp,
2221 int canvasIndex, int priority = -1);
2222#else
2223 virtual bool RenderOverlayMultiCanvas(wxDC &dc, PlugIn_ViewPort *vp,
2224 int canvas_ix, int priority);
2226 int canvas_ix) override {
2227 return RenderOverlayMultiCanvas(dc, vp, canvas_ix, -1);
2228 }
2229#endif
2230};
2231
2233public:
2234 opencpn_plugin_119(void *pmgr);
2235
2253 virtual void PreShutdownHook();
2254};
2255
2257public:
2258 opencpn_plugin_120(void *pmgr);
2259
2260 virtual void OnContextMenuItemCallbackExt(int id, std::string obj_ident,
2261 std::string obj_type, double lat,
2262 double lon);
2263};
2264
2266public:
2267 opencpn_plugin_121(void *pmgr);
2268 virtual void UpdateFollowState(int canvas_index, bool state);
2269};
2270
2271//------------------------------------------------------------------
2272// Route and Waypoint PlugIn support
2273//
2274//------------------------------------------------------------------
2275
2287class DECL_EXP Plugin_Hyperlink {
2288public:
2289 wxString DescrText;
2290 wxString Link;
2291 wxString Type;
2292};
2293
2294WX_DECLARE_LIST(Plugin_Hyperlink, Plugin_HyperlinkList);
2295
2310class DECL_EXP PlugIn_Waypoint {
2311public:
2316
2326 PlugIn_Waypoint(double lat, double lon, const wxString &icon_ident,
2327 const wxString &wp_name, const wxString &GUID = _T(""));
2329
2330 double m_lat;
2331 double m_lon;
2332 wxString m_GUID;
2333 wxString m_MarkName;
2335 wxDateTime m_CreateTime;
2337 wxString m_IconName;
2338
2339 Plugin_HyperlinkList *m_HyperlinkList;
2340};
2341
2342WX_DECLARE_LIST(PlugIn_Waypoint, Plugin_WaypointList);
2343
2350class DECL_EXP PlugIn_Route {
2351public:
2352 PlugIn_Route(void);
2353 ~PlugIn_Route(void);
2354
2355 wxString m_NameString;
2356 wxString m_StartString;
2357 wxString m_EndString;
2358 wxString m_GUID;
2359
2364 Plugin_WaypointList *pWaypointList;
2365};
2366
2380class DECL_EXP PlugIn_Track {
2381public:
2382 PlugIn_Track(void);
2383 ~PlugIn_Track(void);
2384
2385 wxString m_NameString;
2386 wxString m_StartString;
2387 wxString m_EndString;
2388 wxString m_GUID;
2389
2396 Plugin_WaypointList *pWaypointList;
2397};
2398
2399//----------------------------------------------------------------------------------------------------------
2400// The PlugIn CallBack API Definition
2401//
2402// The API back up to the PlugIn Manager
2403// PlugIns may call these static functions as necessary for system services
2404//
2405//----------------------------------------------------------------------------------------------------------
2406
2427extern "C" DECL_EXP int InsertPlugInTool(wxString label, wxBitmap *bitmap,
2428 wxBitmap *bmpRollover, wxItemKind kind,
2429 wxString shortHelp, wxString longHelp,
2430 wxObject *clientData, int position,
2431 int tool_sel, opencpn_plugin *pplugin);
2439extern "C" DECL_EXP void RemovePlugInTool(int tool_id);
2440
2449extern "C" DECL_EXP void SetToolbarToolViz(int item, bool viz);
2450
2459extern "C" DECL_EXP void SetToolbarItemState(int item, bool toggle);
2460
2470extern "C" DECL_EXP void SetToolbarToolBitmaps(int item, wxBitmap *bitmap,
2471 wxBitmap *bmpRollover);
2490extern "C" DECL_EXP int InsertPlugInToolSVG(
2491 wxString label, wxString SVGfile, wxString SVGfileRollover,
2492 wxString SVGfileToggled, wxItemKind kind, wxString shortHelp,
2493 wxString longHelp, wxObject *clientData, int position, int tool_sel,
2494 opencpn_plugin *pplugin);
2495
2506extern "C" DECL_EXP void SetToolbarToolBitmapsSVG(int item, wxString SVGfile,
2507 wxString SVGfileRollover,
2508 wxString SVGfileToggled);
2518extern "C" DECL_EXP int AddCanvasContextMenuItem(wxMenuItem *pitem,
2519 opencpn_plugin *pplugin);
2527extern "C" DECL_EXP void RemoveCanvasContextMenuItem(int item);
2528
2537extern "C" DECL_EXP void SetCanvasContextMenuItemViz(int item, bool viz);
2538
2547extern "C" DECL_EXP void SetCanvasContextMenuItemGrey(int item, bool grey);
2548
2558extern "C" DECL_EXP wxFileConfig *GetOCPNConfigObject(void);
2559
2567extern "C" DECL_EXP void RequestRefresh(wxWindow *);
2568
2578extern "C" DECL_EXP bool GetGlobalColor(wxString colorName, wxColour *pcolour);
2579
2591extern "C" DECL_EXP void GetCanvasPixLL(PlugIn_ViewPort *vp, wxPoint *pp,
2592 double lat, double lon);
2604extern "C" DECL_EXP void GetCanvasLLPix(PlugIn_ViewPort *vp, wxPoint p,
2605 double *plat, double *plon);
2613extern "C" DECL_EXP wxWindow *GetOCPNCanvasWindow();
2614
2653extern "C" DECL_EXP wxFont *OCPNGetFont(wxString TextElement,
2654 int default_size = 0);
2655
2668extern "C" DECL_EXP wxString *GetpSharedDataLocation();
2669
2678extern "C" DECL_EXP ArrayOfPlugIn_AIS_Targets *GetAISTargetArray(void);
2679
2689extern "C" DECL_EXP wxAuiManager *GetFrameAuiManager(void);
2690
2699extern "C" DECL_EXP bool AddLocaleCatalog(wxString catalog);
2700
2708extern "C" DECL_EXP void PushNMEABuffer(wxString str);
2709
2719extern DECL_EXP wxXmlDocument GetChartDatabaseEntryXML(int dbIndex,
2720 bool b_getGeom);
2731extern DECL_EXP bool UpdateChartDBInplace(wxArrayString dir_array,
2732 bool b_force_update,
2733 bool b_ProgressDialog);
2741extern DECL_EXP wxArrayString GetChartDBDirArrayString();
2742
2751extern "C" DECL_EXP void SendPluginMessage(wxString message_id,
2752 wxString message_body);
2760extern "C" DECL_EXP void DimeWindow(wxWindow *);
2761
2769extern "C" DECL_EXP void JumpToPosition(double lat, double lon, double scale);
2770
2771/* API 1.9 adds some common cartographic functions to avoid unnecessary code
2772 * duplication */
2773/* Study the original OpenCPN source (georef.c) for functional definitions */
2774
2799extern "C" DECL_EXP void PositionBearingDistanceMercator_Plugin(
2800 double lat, double lon, double brg, double dist, double *dlat,
2801 double *dlon);
2824extern "C" DECL_EXP void DistanceBearingMercator_Plugin(
2825 double lat0, double lon0, double lat1, double lon1, double *brg,
2826 double *dist);
2827
2837extern "C" DECL_EXP double DistGreatCircle_Plugin(double slat, double slon,
2838 double dlat, double dlon);
2849extern "C" DECL_EXP void toTM_Plugin(float lat, float lon, float lat0,
2850 float lon0, double *x, double *y);
2851
2862extern "C" DECL_EXP void fromTM_Plugin(double x, double y, double lat0,
2863 double lon0, double *lat, double *lon);
2864
2875extern "C" DECL_EXP void toSM_Plugin(double lat, double lon, double lat0,
2876 double lon0, double *x, double *y);
2877
2888extern "C" DECL_EXP void fromSM_Plugin(double x, double y, double lat0,
2889 double lon0, double *lat, double *lon);
2890
2901extern "C" DECL_EXP void toSM_ECC_Plugin(double lat, double lon, double lat0,
2902 double lon0, double *x, double *y);
2903
2914extern "C" DECL_EXP void fromSM_ECC_Plugin(double x, double y, double lat0,
2915 double lon0, double *lat,
2916 double *lon);
2917
2928extern "C" DECL_EXP bool DecodeSingleVDOMessage(const wxString &str,
2930 wxString *acc);
2931
2938extern "C" DECL_EXP int GetChartbarHeight(void);
2969extern "C" DECL_EXP bool GetActiveRoutepointGPX(char *buffer,
2970 unsigned int buffer_length);
2971
2972/* API 1.9 */
2973
3002
3017extern DECL_EXP wxScrolledWindow *AddOptionsPage(OptionsParentPI parent,
3018 wxString title);
3019
3027extern DECL_EXP bool DeleteOptionsPage(wxScrolledWindow *page);
3028
3029/* API 1.10 */
3030
3031/* API 1.10 adds some common functions to avoid unnecessary code duplication */
3032/* Study the original OpenCPN source for functional definitions */
3043extern "C" DECL_EXP double toUsrDistance_Plugin(double nm_distance,
3044 int unit = -1);
3045
3054extern "C" DECL_EXP double fromUsrDistance_Plugin(double usr_distance,
3055 int unit = -1);
3056
3065extern "C" DECL_EXP double toUsrSpeed_Plugin(double kts_speed, int unit = -1);
3066
3075extern "C" DECL_EXP double fromUsrSpeed_Plugin(double usr_speed, int unit = -1);
3076
3085extern "C" DECL_EXP double toUsrTemp_Plugin(double cel_temp, int unit = -1);
3086
3095extern "C" DECL_EXP double fromUsrTemp_Plugin(double usr_temp, int unit = -1);
3096
3104extern DECL_EXP wxString getUsrDistanceUnit_Plugin(int unit = -1);
3105
3113extern DECL_EXP wxString getUsrSpeedUnit_Plugin(int unit = -1);
3114
3122extern DECL_EXP wxString getUsrTempUnit_Plugin(int unit = -1);
3123
3131extern DECL_EXP wxString getUsrWindSpeedUnit_Plugin(int unit = -1);
3132
3141extern DECL_EXP double toUsrWindSpeed_Plugin(double kts_wspeed, int unit = -1);
3142
3151extern DECL_EXP double fromUsrWindSpeed_Plugin(double usr_wspeed,
3152 int unit = -1);
3153
3161extern DECL_EXP wxString getUsrDepthUnit_Plugin(int unit = -1);
3162
3171extern DECL_EXP double toUsrDepth_Plugin(double m_depth, int unit = -1);
3172
3181extern DECL_EXP double fromUsrDepth_Plugin(double usr_depth, int unit = -1);
3182
3199extern DECL_EXP double fromDMM_PlugIn(wxString sdms);
3200
3214struct DECL_EXP DateTimeFormatOptions {
3216 virtual ~DateTimeFormatOptions();
3217
3238
3254 wxString time_zone;
3255
3263
3269
3270 int version = 1; // For future compatibility checks
3271
3291 format_string = fmt;
3292 return *this;
3293 }
3294
3313 DateTimeFormatOptions &SetTimezone(const wxString &tz) {
3314 time_zone = tz;
3315 return *this;
3316 }
3317
3325 show_timezone = show;
3326 return *this;
3327 }
3328
3347 longitude = lon;
3348 return *this;
3349 }
3350};
3351
3371extern DECL_EXP wxString toUsrDateTimeFormat_Plugin(
3372 const wxDateTime date_time,
3374
3386extern DECL_EXP wxString GetNewGUID();
3387
3400extern "C" DECL_EXP bool PlugIn_GSHHS_CrossesLand(double lat1, double lon1,
3401 double lat2, double lon2);
3408extern DECL_EXP void PlugInPlaySound(wxString &sound_file);
3409
3410// API 1.10 Route and Waypoint Support
3411
3420extern DECL_EXP wxBitmap *FindSystemWaypointIcon(wxString &icon_name);
3421
3432extern DECL_EXP bool AddCustomWaypointIcon(wxBitmap *pimage, wxString key,
3433 wxString description);
3434
3444extern DECL_EXP bool AddSingleWaypoint(PlugIn_Waypoint *pwaypoint,
3445 bool b_permanent = true);
3446
3455extern DECL_EXP bool DeleteSingleWaypoint(wxString &GUID);
3456
3465extern DECL_EXP bool UpdateSingleWaypoint(PlugIn_Waypoint *pwaypoint);
3466
3476extern DECL_EXP bool AddPlugInRoute(PlugIn_Route *proute,
3477 bool b_permanent = true);
3478
3487extern DECL_EXP bool DeletePlugInRoute(wxString &GUID);
3488
3498extern DECL_EXP bool UpdatePlugInRoute(PlugIn_Route *proute);
3499
3509extern DECL_EXP bool AddPlugInTrack(PlugIn_Track *ptrack,
3510 bool b_permanent = true);
3511
3520extern DECL_EXP bool DeletePlugInTrack(wxString &GUID);
3521
3531extern DECL_EXP bool UpdatePlugInTrack(PlugIn_Track *ptrack);
3532
3533/* API 1.11 */
3534
3535/* API 1.11 adds some more common functions to avoid unnecessary code
3536 * duplication */
3537
3546wxColour DECL_EXP GetBaseGlobalColor(wxString colorName);
3547
3561int DECL_EXP OCPNMessageBox_PlugIn(wxWindow *parent, const wxString &message,
3562 const wxString &caption = _T("Message"),
3563 int style = wxOK, int x = -1, int y = -1);
3564
3579extern DECL_EXP wxString toSDMM_PlugIn(int NEflag, double a,
3580 bool hi_precision = true);
3581
3591extern "C" DECL_EXP wxString *GetpPrivateApplicationDataLocation();
3592
3600extern DECL_EXP wxString GetOCPN_ExePath(void);
3601
3610extern "C" DECL_EXP wxString *GetpPlugInLocation();
3611
3620extern DECL_EXP wxString GetPlugInPath(opencpn_plugin *pplugin);
3621
3631extern "C" DECL_EXP int AddChartToDBInPlace(wxString &full_path,
3632 bool b_RefreshCanvas);
3639extern "C" DECL_EXP int RemoveChartFromDBInPlace(wxString &full_path);
3640
3649extern DECL_EXP wxString GetLocaleCanonicalName();
3650
3665#define PLIB_CAPS_LINE_VBO 1
3669#define PLIB_CAPS_LINE_BUFFER 1 << 1
3670
3674#define PLIB_CAPS_SINGLEGEO_BUFFER 1 << 2
3675
3679#define PLIB_CAPS_OBJSEGLIST 1 << 3
3680
3684#define PLIB_CAPS_OBJCATMUTATE 1 << 4
3685
3686class PI_S57Obj;
3687
3688WX_DECLARE_LIST(PI_S57Obj, ListOfPI_S57Obj);
3689
3690// ----------------------------------------------------------------------------
3691// PlugInChartBaseGL
3692// Derived from PlugInChartBase, add OpenGL Vector chart support
3693// ----------------------------------------------------------------------------
3694
3707class DECL_EXP PlugInChartBaseGL : public PlugInChartBase {
3708public:
3710 virtual ~PlugInChartBaseGL();
3711
3726 virtual int RenderRegionViewOnGL(const wxGLContext &glc,
3727 const PlugIn_ViewPort &VPoint,
3728 const wxRegion &Region, bool b_use_stencil);
3729
3742 virtual ListOfPI_S57Obj *GetObjRuleListAtLatLon(float lat, float lon,
3743 float select_radius,
3744 PlugIn_ViewPort *VPoint);
3745
3755 virtual wxString CreateObjDescriptions(ListOfPI_S57Obj *obj_list);
3756
3762 virtual int GetNoCOVREntries();
3763
3770 virtual int GetNoCOVRTablePoints(int iTable);
3771
3778 virtual int GetNoCOVRTablenPoints(int iTable);
3779
3786 virtual float *GetNoCOVRTableHead(int iTable);
3787};
3788
3789// ----------------------------------------------------------------------------
3790// PlugInChartBaseGLPlus2
3791// Derived from PlugInChartBaseGL, add additional chart management methods
3792// ----------------------------------------------------------------------------
3793
3803public:
3805 virtual ~PlugInChartBaseGLPlus2();
3806
3823 virtual ListOfPI_S57Obj *GetLightsObjRuleListVisibleAtLatLon(
3824 float lat, float lon, PlugIn_ViewPort *VPoint);
3825};
3826
3827// ----------------------------------------------------------------------------
3828// PlugInChartBaseExtended
3829// Derived from PlugInChartBase, add extended chart support methods
3830// ----------------------------------------------------------------------------
3831
3840public:
3842 virtual ~PlugInChartBaseExtended();
3843
3856 virtual int RenderRegionViewOnGL(const wxGLContext &glc,
3857 const PlugIn_ViewPort &VPoint,
3858 const wxRegion &Region, bool b_use_stencil);
3859
3870 virtual wxBitmap &RenderRegionViewOnDCNoText(const PlugIn_ViewPort &VPoint,
3871 const wxRegion &Region);
3872
3883 virtual bool RenderRegionViewOnDCTextOnly(wxMemoryDC &dc,
3884 const PlugIn_ViewPort &VPoint,
3885 const wxRegion &Region);
3886
3898 virtual int RenderRegionViewOnGLNoText(const wxGLContext &glc,
3899 const PlugIn_ViewPort &VPoint,
3900 const wxRegion &Region,
3901 bool b_use_stencil);
3902
3914 virtual int RenderRegionViewOnGLTextOnly(const wxGLContext &glc,
3915 const PlugIn_ViewPort &VPoint,
3916 const wxRegion &Region,
3917 bool b_use_stencil);
3918
3919 virtual ListOfPI_S57Obj *GetObjRuleListAtLatLon(float lat, float lon,
3920 float select_radius,
3921 PlugIn_ViewPort *VPoint);
3922 virtual wxString CreateObjDescriptions(ListOfPI_S57Obj *obj_list);
3923
3924 virtual int GetNoCOVREntries();
3925 virtual int GetNoCOVRTablePoints(int iTable);
3926 virtual int GetNoCOVRTablenPoints(int iTable);
3927 virtual float *GetNoCOVRTableHead(int iTable);
3928
3935 virtual void ClearPLIBTextList();
3936};
3937
3938// ----------------------------------------------------------------------------
3939// PlugInChartBaseExtendedPlus2
3940// Derived from PlugInChartBaseExtended, add additional extended chart support
3941// methods
3942// ----------------------------------------------------------------------------
3943
3945public:
3948
3949 virtual ListOfPI_S57Obj *GetLightsObjRuleListVisibleAtLatLon(
3950 float lat, float lon, PlugIn_ViewPort *VPoint);
3951};
3952
3953class wxArrayOfS57attVal;
3954
3973
3997
4026
4040
4066
4074class DECL_EXP PI_S57Obj {
4075public:
4076 // Public Methods
4077 PI_S57Obj();
4078
4079public:
4080 // Instance Data
4081 char FeatureName[8];
4083
4085 wxArrayOfS57attVal *attVal;
4087
4088 int iOBJL;
4089 int Index;
4090
4091 double x;
4092 double y;
4093 double z;
4094 int npt;
4095 void *geoPt;
4096 double *geoPtz;
4097 double *geoPtMulti;
4098
4100
4101 double m_lat;
4102 double m_lon;
4103
4106
4107 double lat_min;
4108 double lat_max;
4109 double lon_min;
4110 double lon_max;
4111
4113
4115 int nRef;
4116
4117 bool bIsAton;
4119
4124
4126
4130
4131 // Coordinate transform coefficients
4132 double x_rate;
4133 double y_rate;
4134 double x_origin;
4135 double y_origin;
4136
4137 // OpenGL rendering parameters
4142
4146};
4147
4153wxString DECL_EXP PI_GetPLIBColorScheme();
4162int DECL_EXP PI_GetPLIBDepthUnitInt();
4163
4171int DECL_EXP PI_GetPLIBSymbolStyle();
4172
4180int DECL_EXP PI_GetPLIBBoundaryStyle();
4181
4188int DECL_EXP PI_GetPLIBStateHash();
4189
4195double DECL_EXP PI_GetPLIBMarinerSafetyContour();
4196
4207bool DECL_EXP PI_GetObjectRenderBox(PI_S57Obj *pObj, double *lat_min,
4208 double *lat_max, double *lon_min,
4209 double *lon_max);
4210
4216void DECL_EXP PI_UpdateContext(PI_S57Obj *pObj);
4217
4225bool DECL_EXP PI_PLIBObjectRenderCheck(PI_S57Obj *pObj, PlugIn_ViewPort *vp);
4226
4239
4247
4255
4262void DECL_EXP PI_PLIBSetLineFeaturePriority(PI_S57Obj *pObj, int prio);
4263
4268void DECL_EXP PI_PLIBPrepareForNewRender(void);
4269
4275void DECL_EXP PI_PLIBFreeContext(void *pContext);
4276
4286void DECL_EXP PI_PLIBSetRenderCaps(unsigned int flags);
4287
4297bool DECL_EXP PI_PLIBSetContext(PI_S57Obj *pObj);
4298
4313int DECL_EXP PI_PLIBRenderObjectToDC(wxDC *pdc, PI_S57Obj *pObj,
4314 PlugIn_ViewPort *vp);
4315
4332int DECL_EXP PI_PLIBRenderAreaToDC(wxDC *pdc, PI_S57Obj *pObj,
4333 PlugIn_ViewPort *vp, wxRect rect,
4334 unsigned char *pixbuf);
4335
4350int DECL_EXP PI_PLIBRenderAreaToGL(const wxGLContext &glcc, PI_S57Obj *pObj,
4351 PlugIn_ViewPort *vp, wxRect &render_rect);
4352
4369int DECL_EXP PI_PLIBRenderObjectToGL(const wxGLContext &glcc, PI_S57Obj *pObj,
4370 PlugIn_ViewPort *vp, wxRect &render_rect);
4371
4372/* API 1.11 OpenGL Display List and vertex buffer object routines
4373
4374 Effectively these two routines cancel each other so all
4375 of the translation, scaling and rotation can be done by opengl.
4376
4377 Display lists need only be built infrequently, but used in each frame
4378 greatly accelerates the speed of rendering. This avoids costly calculations,
4379 and also allows the vertexes to be stored in graphics memory.
4380
4381 static int dl = 0;
4382 glPushMatrix();
4383 PlugInMultMatrixViewport(current_viewport);
4384 if(dl)
4385 glCallList(dl);
4386 else {
4387 dl = glGenLists(1);
4388 PlugInViewPort norm_viewport = current_viewport;
4389 NormalizeViewPort(norm_viewport);
4390 glNewList(dl, GL_COMPILE_AND_EXECUTE);
4391 ... // use norm_viewport with GetCanvasLLPix here
4392 glEndList();
4393 }
4394 glPopMatrix();
4395 ... // use current_viewport with GetCanvasLLPix again
4396*/
4397
4407extern DECL_EXP bool PlugInHasNormalizedViewPort(PlugIn_ViewPort *vp);
4408
4423extern DECL_EXP void PlugInMultMatrixViewport(PlugIn_ViewPort *vp,
4424 float lat = 0, float lon = 0);
4425
4440extern DECL_EXP void PlugInNormalizeViewport(PlugIn_ViewPort *vp, float lat = 0,
4441 float lon = 0);
4442
4443class wxPoint2DDouble;
4444
4456extern "C" DECL_EXP void GetDoubleCanvasPixLL(PlugIn_ViewPort *vp,
4457 wxPoint2DDouble *pp, double lat,
4458 double lon);
4459
4460/* API 1.13 */
4461/* API 1.13 adds some more common functions to avoid unnecessary code
4462 * duplication */
4463
4472extern DECL_EXP double fromDMM_Plugin(wxString sdms);
4473
4484extern DECL_EXP void SetCanvasRotation(double rotation);
4485
4497extern DECL_EXP void SetCanvasProjection(int projection);
4498
4508extern DECL_EXP bool GetSingleWaypoint(wxString GUID,
4509 PlugIn_Waypoint *pwaypoint);
4510
4523extern DECL_EXP bool CheckEdgePan_PlugIn(int x, int y, bool dragging,
4524 int margin, int delta);
4525
4534extern DECL_EXP wxBitmap GetIcon_PlugIn(const wxString &name);
4535
4543extern DECL_EXP void SetCursor_PlugIn(wxCursor *pPlugin_Cursor = NULL);
4544
4580extern DECL_EXP wxFont *GetOCPNScaledFont_PlugIn(wxString TextElement,
4581 int default_size = 0);
4582
4596extern DECL_EXP wxFont GetOCPNGUIScaledFont_PlugIn(wxString item);
4597
4613extern DECL_EXP double GetOCPNGUIToolScaleFactor_PlugIn(int GUIScaledFactor);
4614
4629extern DECL_EXP double GetOCPNGUIToolScaleFactor_PlugIn();
4630
4645extern DECL_EXP float GetOCPNChartScaleFactor_Plugin();
4646
4654extern DECL_EXP wxColour GetFontColour_PlugIn(wxString TextElement);
4655
4666extern DECL_EXP double GetCanvasTilt();
4667
4678extern DECL_EXP void SetCanvasTilt(double tilt);
4679
4685extern DECL_EXP bool PlugInPlaySoundEx(wxString &sound_file,
4686 int deviceIndex = -1);
4687
4700extern DECL_EXP void AddChartDirectory(wxString &path);
4701
4712extern DECL_EXP void ForceChartDBUpdate();
4713
4725extern DECL_EXP void ForceChartDBRebuild();
4726
4732extern DECL_EXP wxString GetWritableDocumentsDir(void);
4733
4739extern DECL_EXP wxDialog *GetActiveOptionsDialog();
4740
4751extern DECL_EXP wxArrayString GetWaypointGUIDArray(void);
4752
4758extern DECL_EXP wxArrayString GetIconNameArray(void);
4759
4770extern DECL_EXP bool AddPersistentFontKey(wxString TextElement);
4771
4783extern DECL_EXP wxString GetActiveStyleName();
4784
4800extern DECL_EXP wxBitmap GetBitmapFromSVGFile(wxString filename,
4801 unsigned int width,
4802 unsigned int height);
4803
4816extern DECL_EXP bool IsTouchInterface_PlugIn(void);
4817
4818/* Platform optimized File/Dir selector dialogs */
4837extern DECL_EXP int PlatformDirSelectorDialog(wxWindow *parent,
4838 wxString *file_spec,
4839 wxString Title, wxString initDir);
4840
4862extern DECL_EXP int PlatformFileSelectorDialog(wxWindow *parent,
4863 wxString *file_spec,
4864 wxString Title, wxString initDir,
4865 wxString suggestedName,
4866 wxString wildcard);
4867
4868/* OpenCPN HTTP File Download PlugIn Interface */
4869
4870/* Various method Return Codes, etc */
4885
4898
4899// Style definitions for Synchronous file download modal dialogs, if
4900// desired. Abstracted from wxCURL package
4904 0x0002,
4907 OCPN_DLDS_SIZE = 0x0010,
4910 0x0020,
4911
4912 // styles related to the use of wxCurlConnectionSettingsDialog:
4913
4915 0x0040,
4920 0x0100,
4921
4922 OCPN_DLDS_CONN_SETTINGS_ALL = OCPN_DLDS_CONN_SETTINGS_AUTH |
4925
4926 OCPN_DLDS_SHOW_ALL = OCPN_DLDS_ELAPSED_TIME | OCPN_DLDS_ESTIMATED_TIME |
4929 OCPN_DLDS_CONN_SETTINGS_ALL,
4930
4932 OCPN_DLDS_CAN_START = 0x0400,
4935
4937 0x1000,
4938
4939 // by default all available features are enabled:
4940 OCPN_DLDS_DEFAULT_STYLE = OCPN_DLDS_CAN_START | OCPN_DLDS_CAN_PAUSE |
4941 OCPN_DLDS_CAN_ABORT | OCPN_DLDS_SHOW_ALL |
4943};
4944
4945#define ONLINE_CHECK_RETRY \
4946 30 // Recheck the Internet connection availability every ONLINE_CHECK_RETRY s
4947
4968extern DECL_EXP _OCPN_DLStatus OCPN_downloadFile(
4969 const wxString &url, const wxString &outputFile, const wxString &title,
4970 const wxString &message, const wxBitmap &bitmap, wxWindow *parent,
4971 long style, int timeout_secs);
4972
4990extern DECL_EXP _OCPN_DLStatus
4991OCPN_downloadFileBackground(const wxString &url, const wxString &outputFile,
4992 wxEvtHandler *handler, long *handle);
4993
4999extern DECL_EXP void OCPN_cancelDownloadFileBackground(long handle);
5000
5012extern DECL_EXP _OCPN_DLStatus OCPN_postDataHttp(const wxString &url,
5013 const wxString &parameters,
5014 wxString &result,
5015 int timeout_secs);
5016
5022extern DECL_EXP bool OCPN_isOnline();
5023
5024/* Supporting Event for Background downloading */
5025/* OCPN_downloadEvent Definition */
5026
5027/* PlugIn should be ready/able to handle this event after initiating a
5028 * background file transfer
5029 *
5030 * The event as received should be parsed primarily by the getDLEventCondition()
5031 * method. This will allow identification of download start, progress, and end
5032 * states.
5033 *
5034 * Other accessor methods contain status, byte counts, etc.
5035 *
5036 * A PlugIn may safely destroy its EvtHandler after receipt of an
5037 * OCPN_downloadEvent with getDLEventCondition == OCPN_DL_EVENT_TYPE_END
5038 */
5039class DECL_EXP OCPN_downloadEvent : public wxEvent {
5040public:
5041 OCPN_downloadEvent(wxEventType commandType = wxEVT_NULL, int id = 0);
5043
5044 // accessors
5045 _OCPN_DLStatus getDLEventStatus() { return m_stat; }
5046 OCPN_DLCondition getDLEventCondition() { return m_condition; }
5047
5048 void setDLEventStatus(_OCPN_DLStatus stat) { m_stat = stat; }
5049 void setDLEventCondition(OCPN_DLCondition cond) { m_condition = cond; }
5050
5051 void setTotal(long bytes) { m_totalBytes = bytes; }
5052 void setTransferred(long bytes) { m_sofarBytes = bytes; }
5053 long getTotal() { return m_totalBytes; }
5054 long getTransferred() { return m_sofarBytes; }
5055
5056 void setComplete(bool b_complete) { m_b_complete = b_complete; }
5057 bool getComplete() { return m_b_complete; }
5058
5059 // required for sending with wxPostEvent()
5060 wxEvent *Clone() const;
5061
5062private:
5063 OCPN_DLStatus m_stat;
5064 OCPN_DLCondition m_condition;
5065
5066 long m_totalBytes;
5067 long m_sofarBytes;
5068 bool m_b_complete;
5069};
5070
5071// extern WXDLLIMPEXP_CORE const wxEventType wxEVT_DOWNLOAD_EVENT;
5072
5073#ifdef MAKING_PLUGIN
5074extern DECL_IMP wxEventType wxEVT_DOWNLOAD_EVENT;
5075#else
5076extern DECL_EXP wxEventType wxEVT_DOWNLOAD_EVENT;
5077#endif
5078
5079/* API 1.14 */
5080/* API 1.14 adds some more common functions to avoid unnecessary code
5081 * duplication */
5082
5083extern DECL_EXP bool LaunchDefaultBrowser_Plugin(wxString url);
5084
5085// API 1.14 Extra canvas Support
5086
5102extern DECL_EXP void PlugInAISDrawGL(wxGLCanvas *glcanvas,
5103 const PlugIn_ViewPort &vp);
5104
5114extern DECL_EXP bool PlugInSetFontColor(const wxString TextElement,
5115 const wxColour color);
5116
5117// API 1.15
5118
5133extern DECL_EXP double PlugInGetDisplaySizeMM();
5134
5147extern DECL_EXP wxFont *FindOrCreateFont_PlugIn(
5148 int point_size, wxFontFamily family, wxFontStyle style, wxFontWeight weight,
5149 bool underline = false, const wxString &facename = wxEmptyString,
5150 wxFontEncoding encoding = wxFONTENCODING_DEFAULT);
5151
5171
5184
5198extern DECL_EXP void PlugInHandleAutopilotRoute(bool enable);
5199
5200// API 1.16
5201//
5216extern DECL_EXP wxString GetPluginDataDir(const char *plugin_name);
5217
5223extern DECL_EXP bool ShuttingDown(void);
5224
5225// Support for MUI MultiCanvas model
5226
5249extern DECL_EXP wxWindow *PluginGetFocusCanvas();
5250
5259extern DECL_EXP wxWindow *PluginGetOverlayRenderCanvas();
5260
5269extern "C" DECL_EXP void CanvasJumpToPosition(wxWindow *canvas, double lat,
5270 double lon, double scale);
5282extern "C" DECL_EXP int AddCanvasMenuItem(wxMenuItem *pitem,
5283 opencpn_plugin *pplugin,
5284 const char *name = "");
5293extern "C" DECL_EXP void RemoveCanvasMenuItem(int item, const char *name = "");
5294
5304extern "C" DECL_EXP void SetCanvasMenuItemViz(int item, bool viz,
5305 const char *name = "");
5306
5316extern "C" DECL_EXP void SetCanvasMenuItemGrey(int item, bool grey,
5317 const char *name = "");
5318
5319// Extract waypoints, routes and tracks
5325extern DECL_EXP wxString GetSelectedWaypointGUID_Plugin();
5326
5332extern DECL_EXP wxString GetSelectedRouteGUID_Plugin();
5333
5339extern DECL_EXP wxString GetSelectedTrackGUID_Plugin();
5340
5347extern DECL_EXP std::unique_ptr<PlugIn_Waypoint> GetWaypoint_Plugin(
5348 const wxString &);
5349
5356extern DECL_EXP std::unique_ptr<PlugIn_Route> GetRoute_Plugin(const wxString &);
5357
5364extern DECL_EXP std::unique_ptr<PlugIn_Track> GetTrack_Plugin(const wxString &);
5365
5371extern DECL_EXP wxWindow *GetCanvasUnderMouse();
5372
5386extern DECL_EXP int GetCanvasIndexUnderMouse();
5387
5388// extern DECL_EXP std::vector<wxWindow *> GetCanvasArray();
5401extern DECL_EXP wxWindow *GetCanvasByIndex(int canvasIndex);
5402
5413extern DECL_EXP int GetCanvasCount();
5414
5429extern DECL_EXP bool CheckMUIEdgePan_PlugIn(int x, int y, bool dragging,
5430 int margin, int delta,
5431 int canvasIndex);
5432
5441extern DECL_EXP void SetMUICursor_PlugIn(wxCursor *pCursor, int canvasIndex);
5442
5443// API 1.17
5444//
5445
5454extern DECL_EXP wxRect GetMasterToolbarRect();
5455
5475
5483extern DECL_EXP int GetLatLonFormat(void);
5484
5485// API 1.17
5486
5497extern "C" DECL_EXP void ZeroXTE();
5498
5522class DECL_EXP PlugIn_Waypoint_Ex {
5523public:
5525 PlugIn_Waypoint_Ex(double lat, double lon, const wxString &icon_ident,
5526 const wxString &wp_name, const wxString &GUID = "",
5527 const double ScaMin = 1e9, const bool bNameVisible = false,
5528 const int nRanges = 0, const double RangeDistance = 1.0,
5529 const wxColor RangeColor = wxColor(255, 0, 0));
5541 void InitDefaults();
5542
5554 bool GetFSStatus();
5555
5564 int GetRouteMembershipCount();
5565
5566 double m_lat;
5567 double m_lon;
5568 wxString m_GUID;
5569 wxString m_MarkName;
5571 wxDateTime m_CreateTime;
5574
5575 double scamin;
5578
5582
5583 wxString IconName;
5585
5591 Plugin_HyperlinkList *m_HyperlinkList;
5592};
5593
5594WX_DECLARE_LIST(PlugIn_Waypoint_Ex, Plugin_WaypointExList);
5595
5596class DECL_EXP PlugIn_Waypoint_ExV2 {
5597public:
5599 PlugIn_Waypoint_ExV2(double lat, double lon, const wxString &icon_ident,
5600 const wxString &wp_name, const wxString &GUID = "",
5601 const double ScaMin = 1e9, const double ScaMax = 1e6,
5602 const bool bNameVisible = false,
5603 const int nRangeRings = 0,
5604 const double RangeDistance = 1.0,
5605 const int RangeRingSpaceUnits = 0, // 0:nm, 1:km
5606 const wxColor RangeColor = wxColor(255, 0, 0),
5607 const double WaypointArrivalRadius = 0.0,
5608 const bool ShowWaypointRangeRings = false,
5609 const double PlannedSpeed = 0.0,
5610 const wxString TideStation = wxEmptyString);
5611
5612 virtual ~PlugIn_Waypoint_ExV2();
5613
5625 bool GetFSStatus();
5626
5635 int GetRouteMembershipCount();
5636
5637 double m_lat;
5638 double m_lon;
5639 wxString m_GUID;
5640 wxString m_MarkName;
5642 wxDateTime m_CreateTime;
5645
5646 double scamin;
5649
5654
5655 wxString IconName;
5657
5663 Plugin_HyperlinkList *m_HyperlinkList;
5664
5665 // New fields that are not in PlugIn_Waypoint_Ex
5666 double scamax;
5671 wxDateTime m_ETD;
5674
5675protected:
5686 void InitDefaults();
5687};
5688
5689WX_DECLARE_LIST(PlugIn_Waypoint_ExV2, Plugin_WaypointExV2List);
5690
5713class DECL_EXP PlugIn_Route_Ex {
5714public:
5715 PlugIn_Route_Ex(void);
5716 ~PlugIn_Route_Ex(void);
5717
5718 wxString m_NameString;
5719 wxString m_StartString;
5720 wxString m_EndString;
5721 wxString m_GUID;
5724 wxString m_Description;
5725
5731 Plugin_WaypointExList *pWaypointList;
5732};
5733
5748class DECL_EXP PlugIn_Route_ExV2 {
5749public:
5751 virtual ~PlugIn_Route_ExV2();
5752
5753 wxString m_NameString;
5754 wxString m_StartString;
5755 wxString m_EndString;
5756 wxString m_GUID;
5759 wxString m_Description;
5760
5766 Plugin_WaypointExV2List *pWaypointList;
5767};
5768
5776extern DECL_EXP wxArrayString GetRouteGUIDArray(void);
5777
5785extern DECL_EXP wxArrayString GetTrackGUIDArray(void);
5786
5794extern DECL_EXP bool GetSingleWaypointEx(wxString GUID,
5795 PlugIn_Waypoint_Ex *pwaypoint);
5796
5804extern DECL_EXP bool GetSingleWaypointExV2(wxString GUID,
5805 PlugIn_Waypoint_ExV2 *pwaypoint);
5806
5814extern DECL_EXP bool AddSingleWaypointEx(PlugIn_Waypoint_Ex *pwaypoint,
5815 bool b_permanent = true);
5816
5824extern DECL_EXP bool AddSingleWaypointExV2(PlugIn_Waypoint_ExV2 *pwaypoint,
5825 bool b_permanent = true);
5826
5833extern DECL_EXP bool UpdateSingleWaypointEx(PlugIn_Waypoint_Ex *pwaypoint);
5834
5841extern DECL_EXP bool UpdateSingleWaypointExV2(PlugIn_Waypoint_ExV2 *pwaypoint);
5842
5850extern DECL_EXP bool AddPlugInRouteEx(PlugIn_Route_Ex *proute,
5851 bool b_permanent = true);
5852
5859extern DECL_EXP bool AddPlugInRouteExV2(PlugIn_Route_ExV2 *proute,
5860 bool b_permanent = true);
5861
5868extern DECL_EXP bool UpdatePlugInRouteEx(PlugIn_Route_Ex *proute);
5869
5878extern DECL_EXP bool UpdatePlugInRouteExV2(PlugIn_Route_ExV2 *proute);
5879
5888extern DECL_EXP std::unique_ptr<PlugIn_Waypoint_Ex> GetWaypointEx_Plugin(
5889 const wxString &GUID);
5890
5899extern DECL_EXP std::unique_ptr<PlugIn_Waypoint_ExV2> GetWaypointExV2_Plugin(
5900 const wxString &GUID);
5901
5910extern DECL_EXP std::unique_ptr<PlugIn_Route_Ex> GetRouteEx_Plugin(
5911 const wxString &GUID);
5912
5921extern DECL_EXP std::unique_ptr<PlugIn_Route_ExV2> GetRouteExV2_Plugin(
5922 const wxString &GUID);
5923
5929extern DECL_EXP wxString GetActiveWaypointGUID(void);
5930
5936extern DECL_EXP wxString GetActiveRouteGUID(void);
5937
5938// API 1.18
5939
5954extern DECL_EXP double OCPN_GetDisplayContentScaleFactor();
5955
5970extern DECL_EXP double OCPN_GetWinDIPScaleFactor();
5971
5979extern DECL_EXP std::vector<std::string> GetPriorityMaps();
5980
5985extern DECL_EXP void UpdateAndApplyPriorityMaps(std::vector<std::string> map);
5986
5994extern DECL_EXP std::vector<std::string> GetActivePriorityIdentifiers();
5995
6003extern DECL_EXP int GetGlobalWatchdogTimoutSeconds();
6004
6016
6017// FIXME (dave) Implement these
6034extern DECL_EXP wxArrayString GetRouteGUIDArray(OBJECT_LAYER_REQ req);
6035
6051extern DECL_EXP wxArrayString GetTrackGUIDArray(OBJECT_LAYER_REQ req);
6052
6070extern DECL_EXP wxArrayString GetWaypointGUIDArray(OBJECT_LAYER_REQ req);
6071
6074/* Listening to messages. */
6075class ObservableListener;
6076
6078class ObservedEvt;
6079
6080// This is a verbatim copy from observable_evt.h, don't define twice.
6081#ifndef OBSERVABLE_EVT_H
6082#define OBSERVABLE_EVT_H
6083
6084wxDECLARE_EVENT(obsNOTIFY, ObservedEvt);
6085
6100class ObservedEvt : public wxCommandEvent {
6101public:
6108 ObservedEvt(wxEventType commandType = obsNOTIFY, int id = 0)
6109 : wxCommandEvent(commandType, id) {}
6110 ObservedEvt(const ObservedEvt &event) : wxCommandEvent(event) {
6111 this->m_shared_ptr = event.m_shared_ptr;
6112 }
6113
6121 wxEvent *Clone() const { return new ObservedEvt(*this); }
6122
6128 std::shared_ptr<const void> GetSharedPtr() const { return m_shared_ptr; }
6129
6135 void SetSharedPtr(std::shared_ptr<const void> p) { m_shared_ptr = p; }
6136
6137private:
6138 std::shared_ptr<const void> m_shared_ptr;
6139};
6140
6141#endif // OBSERVABLE_EVT_H
6142
6143class ObservableListener;
6144
6152 const uint64_t id;
6157 NMEA2000Id(int value) : id(static_cast<uint64_t>(value)) {};
6158};
6159
6170extern DECL_EXP std::shared_ptr<ObservableListener> GetListener(
6171 NMEA2000Id id, wxEventType ev, wxEvtHandler *handler);
6172
6180 const std::string id;
6185 NMEA0183Id(const std::string &s) : id(s) {};
6186};
6187
6198extern DECL_EXP std::shared_ptr<ObservableListener> GetListener(
6199 NMEA0183Id id, wxEventType ev, wxEvtHandler *handler);
6200
6208 const std::string id;
6213 SignalkId(const std::string &s) : id(s) {};
6214};
6215
6226extern DECL_EXP std::shared_ptr<ObservableListener> GetListener(
6227 SignalkId id, wxEventType ev, wxEvtHandler *handler);
6228
6244extern DECL_EXP std::vector<uint8_t> GetN2000Payload(NMEA2000Id id,
6245 ObservedEvt ev);
6246
6263extern DECL_EXP std::shared_ptr<void> GetSignalkPayload(ObservedEvt ev);
6264
6269extern DECL_EXP std::string GetN2000Source(NMEA2000Id id, ObservedEvt ev);
6270
6272extern DECL_EXP std::string GetN0183Payload(NMEA0183Id id, ObservedEvt ev);
6273
6281 const int type;
6286 NavDataId() : type(0) {}
6287};
6288
6300extern DECL_EXP std::shared_ptr<ObservableListener> GetListener(
6301 NavDataId id, wxEventType ev, wxEvtHandler *handler);
6302
6310 double lat;
6311 double lon;
6312 double sog;
6313 double cog;
6314 double var;
6315 double hdt;
6316 time_t time;
6317};
6318
6320extern DECL_EXP PluginNavdata GetEventNavdata(ObservedEvt ev);
6321
6323/*
6324 * Plugins may access comm ports for direct output.
6325 * The general program flow for a plugin may look something like this
6326 * pseudo-code:
6327 * 1. Plugin will query OCPN core for a list of active comm drivers.
6328 * 2. Plugin will inspect the list, and query OCPN core for driver
6329 * attributes.
6330 * 3. Plugin will select a comm driver with appropriate attributes for output.
6331 * 4. Plugin will register a list of PGNs expected to be transmitted
6332 * (N2K specific)
6333 * 5. Plugin may then send a payload buffer to a specific comm driver for
6334 * output as soon as possible.
6335 *
6336 * The mechanism for specifying a particular comm driver uses the notion of
6337 * "handles". Each active comm driver has an associated opaque handle, managed
6338 * by OCPN core. All references by a plugin to a driver are by means of its
6339 * handle. Handles should be considered to be "opaque", meaning that the exact
6340 * contents of the handle are of no specific value to the plugin, and only
6341 * have meaning to the OCPN core management of drivers.
6342 */
6343
6345typedef std::string DriverHandle;
6346
6369
6371extern DECL_EXP std::vector<DriverHandle> GetActiveDrivers();
6372
6387extern DECL_EXP const std::unordered_map<std::string, std::string>
6389
6390/* Writing to a specific driver */
6410extern DECL_EXP CommDriverResult WriteCommDriver(
6411 DriverHandle handle, const std::shared_ptr<std::vector<uint8_t>> &payload);
6412
6414extern DECL_EXP CommDriverResult WriteCommDriverN2K(
6415 DriverHandle handle, int PGN, int destinationCANAddress, int priority,
6416 const std::shared_ptr<std::vector<uint8_t>> &payload);
6417
6460extern DECL_EXP CommDriverResult RegisterTXPGNs(DriverHandle handle,
6461 std::vector<int> &pgn_list);
6462
6463// API 1.20
6464//
6465
6502
6505 const std::string id;
6506 PluginMsgId(const std::string &s) : id(s) {};
6507};
6508
6513extern DECL_EXP std::shared_ptr<ObservableListener> GetListener(
6514 PluginMsgId id, wxEventType ev, wxEvtHandler *handler);
6515
6520extern DECL_EXP std::string GetPluginMsgPayload(PluginMsgId id, ObservedEvt ev);
6521
6527extern DECL_EXP void ExitOCPN();
6528
6537extern "C" DECL_EXP void RequestWindowRefresh(wxWindow *win,
6538 bool eraseBackground);
6539
6545extern DECL_EXP bool GetFullScreen();
6546
6552extern DECL_EXP void SetFullScreen(bool full_screen_on);
6553
6559extern DECL_EXP void EnableTouchMode(bool enable);
6560
6566extern DECL_EXP bool GetTouchMode();
6567
6575extern DECL_EXP void SetGlobalColor(std::string table, std::string name,
6576 wxColor color);
6577
6585extern DECL_EXP wxColor GetGlobalColorD(std::string map_name, std::string name);
6586
6592extern DECL_EXP void EnableStatusBar(bool enable);
6593
6599extern DECL_EXP void EnableMenu(bool enable);
6600
6606extern DECL_EXP bool GetEnableStatusBar();
6607
6613extern DECL_EXP bool GetEnableMenu();
6614
6624extern DECL_EXP void SetNavigationMode(PI_NavMode mode, int CanvasIndex);
6625
6632extern DECL_EXP PI_NavMode GetNavigationMode(int CanvasIndex);
6633
6641extern DECL_EXP void EnableLookaheadMode(bool enable, int CanvasIndex);
6642
6649extern DECL_EXP bool GetEnableLookaheadMode(int CanvasIndex);
6650
6657extern DECL_EXP void EnableMUIBar(bool enable, int CanvasIndex);
6658
6665extern DECL_EXP void EnableCompassGPSIcon(bool enable, int CanvasIndex);
6666
6673extern DECL_EXP void EnableChartBar(bool enable, int CanvasIndex);
6674
6681extern DECL_EXP bool GetEnableMUIBar(int CanvasIndex);
6682
6689extern DECL_EXP bool GetEnableCompassGPSIcon(int CanvasIndex);
6690
6697extern DECL_EXP bool GetEnableChartBar(int CanvasIndex);
6698
6706extern DECL_EXP void EnableCanvasFocusBar(bool enable, int CanvasIndex);
6707
6714extern DECL_EXP bool GetEnableCanvasFocusBar(int CanvasIndex);
6715
6716/*
6717 * Allow plugin control of "Chart Panel Options" dialog
6718 */
6719
6726extern DECL_EXP void EnableLatLonGrid(bool enable, int CanvasIndex);
6727
6734extern DECL_EXP void EnableChartOutlines(bool enable, int CanvasIndex);
6735
6742extern DECL_EXP void EnableDepthUnitDisplay(bool enable, int CanvasIndex);
6743
6750extern DECL_EXP void EnableAisTargetDisplay(bool enable, int CanvasIndex);
6751
6758extern DECL_EXP void EnableTideStationsDisplay(bool enable, int CanvasIndex);
6759
6766extern DECL_EXP void EnableCurrentStationsDisplay(bool enable, int CanvasIndex);
6767
6774extern DECL_EXP void EnableENCTextDisplay(bool enable, int CanvasIndex);
6775
6782extern DECL_EXP void EnableENCDepthSoundingsDisplay(bool enable,
6783 int CanvasIndex);
6784
6791extern DECL_EXP void EnableBuoyLightLabelsDisplay(bool enable, int CanvasIndex);
6792
6799extern DECL_EXP void EnableLightsDisplay(bool enable, int CanvasIndex);
6800
6807extern DECL_EXP void EnableLightDescriptionsDisplay(bool enable,
6808 int CanvasIndex);
6809
6816extern DECL_EXP void SetENCDisplayCategory(PI_DisCat cat, int CanvasIndex);
6817
6824extern DECL_EXP bool GetEnableLatLonGrid(int CanvasIndex);
6825
6832extern DECL_EXP bool GetEnableChartOutlines(int CanvasIndex);
6833
6840extern DECL_EXP bool GetEnableDepthUnitDisplay(int CanvasIndex);
6841
6848extern DECL_EXP bool GetEnableAisTargetDisplay(int CanvasIndex);
6849
6856extern DECL_EXP bool GetEnableTideStationsDisplay(int CanvasIndex);
6857
6864extern DECL_EXP bool GetEnableCurrentStationsDisplay(int CanvasIndex);
6865
6872extern DECL_EXP bool GetEnableENCTextDisplay(int CanvasIndex);
6873
6880extern DECL_EXP bool GetEnableENCDepthSoundingsDisplay(int CanvasIndex);
6881
6888extern DECL_EXP bool GetEnableBuoyLightLabelsDisplay(int CanvasIndex);
6889
6896extern DECL_EXP bool GetEnableLightsDisplay(int CanvasIndex);
6897
6904extern DECL_EXP bool GetEnableLightDescriptionsDisplay(int CanvasIndex);
6905
6916extern DECL_EXP PI_DisCat GetENCDisplayCategory(int CanvasIndex);
6917
6926extern DECL_EXP void PluginSetFollowMode(int CanvasIndex, bool enable_follow);
6927
6934extern DECL_EXP bool PluginGetFollowMode(int CanvasIndex);
6935
6943extern DECL_EXP void SetTrackingMode(bool enable);
6944
6950extern DECL_EXP bool GetTrackingMode();
6951
6959extern DECL_EXP void SetAppColorScheme(PI_ColorScheme cs);
6960
6966extern DECL_EXP PI_ColorScheme GetAppColorScheme();
6967
6976extern DECL_EXP void EnableSplitScreenLayout(bool enable = true);
6977
6978// ChartCanvas control utilities
6979
6987extern DECL_EXP void PluginZoomCanvas(int CanvasIndex, double factor);
6988
6994extern DECL_EXP bool GetEnableMainToolbar();
6995
7001extern DECL_EXP void SetEnableMainToolbar(bool enable);
7002
7007extern DECL_EXP void ShowGlobalSettingsDialog();
7008
7014extern DECL_EXP void PluginCenterOwnship(int CanvasIndex);
7015
7023extern DECL_EXP bool GetEnableTenHertzUpdate();
7024
7031extern DECL_EXP void EnableTenHertzUpdate(bool enable);
7032
7038extern DECL_EXP void ConfigFlushAndReload();
7039
7040/*
7041 * Reload and restore all connections by direct read of config file
7042 */
7043extern DECL_EXP void ReloadConfigConnections();
7044
7048enum class PI_NotificationSeverity : int {
7049 PI_kInformational = 0,
7050 PI_kWarning = 1,
7051 PI_kCritical = 2
7052};
7053
7055public:
7057 const std::string &_message, int _timeout_start,
7058 int _timeout_left, std::string _guid);
7059 virtual ~PI_Notification() {};
7060
7061 PI_NotificationSeverity severity;
7062 std::string message;
7063 int auto_timeout_left;
7064 int auto_timeout_start;
7065 std::string guid;
7066 std::string action_verb; // Either "ACK" or "POST", when set by a
7067 // PI_Notification message payload.
7068 // Empty otherwise
7069};
7070
7071extern DECL_EXP int GetActiveNotificationCount();
7072extern DECL_EXP PI_NotificationSeverity GetMaxActiveNotificationLevel();
7073extern DECL_EXP std::string RaiseNotification(
7074 const PI_NotificationSeverity _severity, const std::string &_message,
7075 int timeout_secs = -1);
7076extern DECL_EXP bool AcknowledgeNotification(const std::string &guid);
7077extern DECL_EXP std::vector<std::shared_ptr<PI_Notification>>
7078GetActiveNotifications();
7079extern DECL_EXP void EnableNotificationCanvasIcon(bool enable);
7080
7081/*
7082 * Messaging interface for Notification Framework
7083 *
7084 */
7085
7086/*
7087 * Typical use pattern
7088 *
7089 * 1) Establish listener
7090 wxDEFINE_EVENT(EVT_NOTIFICATION_FRAME, ObservedEvt);
7091 static std::shared_ptr<ObservableListener> listener_note;
7092 NotificationMsgId note_id = NotificationMsgId();
7093 listener_note = GetListener(note_id, EVT_NOTIFICATION_FRAME, this);
7094 Bind(EVT_NOTIFICATION_FRAME, [&](ObservedEvt ev) { HandleNotification(ev); });
7095 *
7096 *
7097 *
7098 * 2) Define actions on receipt
7099 static void HandleNotification(ObservedEvt &ev) {
7100 NotificationMsgId id;
7101 std::shared_ptr<PI_Notification>payload=GetNotificationMsgPayload(id, ev);
7102 if (payload->action_verb == "ACK"){
7103 // Do Acknowledge notification actions
7104 }
7105 else if (payload->action_verb == "POST") {
7106 // Do Add Notification actions
7107 }
7108 }
7109
7110*/
7113 const std::string id;
7114 NotificationMsgId(const std::string &s) : id(s) {};
7115 NotificationMsgId() {};
7116};
7117
7122extern DECL_EXP std::shared_ptr<ObservableListener> GetListener(
7123 NotificationMsgId id, wxEventType ev, wxEvtHandler *handler);
7124
7128extern DECL_EXP std::shared_ptr<PI_Notification> GetNotificationMsgPayload(
7130
7131// * Plugin polled Comm Status support
7132enum class PI_Conn_Bus : int { N0183 = 0, Signalk = 1, N2000 = 2 };
7133
7134enum class PI_Comm_State : int {
7135 Disabled = 0,
7136 NoStats = 1,
7137 NoData = 2,
7138 Unavailable = 3,
7139 Ok = 4
7140};
7141
7143public:
7144 PI_Comm_State state;
7145 unsigned rx_count;
7146 unsigned tx_count;
7147 unsigned error_count;
7148};
7149
7150extern DECL_EXP PI_Comm_Status GetConnState(const std::string &iface,
7151 PI_Conn_Bus _bus);
7152
7153extern "C" DECL_EXP int AddCanvasContextMenuItemExt(
7154 wxMenuItem *pitem, opencpn_plugin *pplugin, const std::string object_type);
7155
7156// Plugin API121 Utility functions
7157
7158extern DECL_EXP wxString DropMarkPI(double lat, double lon);
7159extern DECL_EXP wxString RouteCreatePI(int canvas_index, bool start);
7160extern DECL_EXP wxString NavToHerePI(double lat, double lon);
7161extern DECL_EXP bool ActivateRoutePI(wxString route_guid, bool activate);
7162
7163extern DECL_EXP void EnableDefaultConsole(bool enable);
7164extern DECL_EXP void EnableDefaultContextMenus(bool enable);
7165
7166extern DECL_EXP void SetMinZoomScale(double min_scale);
7167extern DECL_EXP void SetMaxZoomScale(double max_scale);
7168
7169extern DECL_EXP wxBitmap GetObjectIcon_PlugIn(const wxString &name);
7170
7171extern DECL_EXP void SetDepthUnitVisible(bool bviz);
7172extern DECL_EXP void SetOverzoomFlagVisible(bool bviz);
7173
7174extern DECL_EXP bool IsRouteActive(wxString route_guid);
7175extern DECL_EXP void SetBoatPosition(double zlat, double zlon);
7176
7177extern DECL_EXP void RouteInsertWaypoint(int canvas_index, wxString route_guid,
7178 double zlat, double zlon);
7179extern DECL_EXP void RouteAppendWaypoint(int canvas_index, wxString route_guid);
7180extern DECL_EXP void FinishRoute(int canvas_index);
7181extern DECL_EXP bool IsRouteBeingCreated(int canvas_index);
7182extern DECL_EXP bool AreRouteWaypointNamesVisible(wxString route_guid);
7183extern DECL_EXP void ShowRouteWaypointNames(wxString route_guid, bool show);
7184extern DECL_EXP void NavigateToWaypoint(wxString waypoint_guid);
7185extern DECL_EXP bool DoMeasurePI(int canvas_index, bool start);
7186extern DECL_EXP bool IsMeasureActive(int canvas_index);
7187extern DECL_EXP void CancelMeasure(int canvas_index);
7188
7189// AIS related
7190extern DECL_EXP bool IsAISTrackVisible(
7191 wxString ais_mmsi); // for Show/Hide Target Track
7192extern DECL_EXP void AISToggleShowTrack(
7193 wxString ais_mmsi); // for Show/Hide Target Track
7194extern DECL_EXP bool IsAIS_CPAVisible(
7195 wxString ais_mmsi); // for Show/Hide Target CPA
7196extern DECL_EXP void AISToggleShowCPA(
7197 wxString ais_mmsi); // for Show/Hide Target CPA
7198extern DECL_EXP void ShowAISTargetQueryDialog(
7199 int canvas_index,
7200 wxString ais_mmsi); // for Target Query
7201extern DECL_EXP void ShowAISTargetList(int canvas_index); // for Target List
7202
7203// Plugin Context Menu support
7204typedef enum _PI_ContextObjectType {
7205 OBJECT_CHART = 0,
7206 OBJECT_ROUTEPOINT,
7207 OBJECT_ROUTESEGMENT,
7208 OBJECT_AISTARGET,
7209 OBJECT_UNKNOWN
7210} PI_ContextObjectType;
7211
7212typedef struct _PI_PointContext {
7213 _PI_ContextObjectType object_type;
7214 std::string object_ident;
7216
7217extern DECL_EXP std::shared_ptr<PI_PointContext> GetContextAtPoint(
7218 int x, int y, int canvas_index);
7219
7220// Extended Chart table management support
7221extern DECL_EXP void AddNoShowDirectory(std::string chart_dir);
7222extern DECL_EXP void RemoveNoShowDirectory(std::string chart_dir);
7223extern DECL_EXP void ClearNoShowVector();
7224extern DECL_EXP const std::vector<std::string> &GetNoShowVector();
7225
7226#endif //_PLUGIN_H_
Keeps listening over its lifespan, removes itself on destruction.
Definition observable.h:155
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.
unsigned error_count
Number of detected errors since program start.
unsigned tx_count
Number of bytes sent since program start.
unsigned rx_count
Number of bytes received since program start.
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 [0-360).
double Lat
Latitude in decimal degrees.
double Hdm
Heading magnetic in degrees [0-360).
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 [0-360).
Basic position fix information.
double Cog
Course over ground in degrees [0-360).
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.
Enhanced route class for working with PlugIn_Waypoint_ExV2 waypoints.
bool m_isVisible
True if route should be displayed.
Plugin_WaypointExV2List * pWaypointList
List of waypoints making up this route in order.
wxString m_StartString
Description of route start point.
wxString m_Description
Optional route description/notes.
wxString m_NameString
User-visible name of the route.
bool m_isActive
True if this is the active route.
wxString m_GUID
Globally unique identifier.
wxString m_EndString
Description of route end point.
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)
wxDateTime m_ETD
Estimated departure time in UTC, or wxInvalidDateTime if not set.
wxString m_MarkDescription
Optional description text.
wxString m_GUID
Globally unique identifier.
wxString m_TideStation
Tide Station Identifier.
wxDateTime m_CreateTime
Creation timestamp in UTC.
bool m_bShowWaypointRangeRings
True to show range rings on chart.
wxString IconDescription
User-friendly description of icon.
double m_lat
Latitude in decimal degrees.
wxColour RangeRingColor
Color to draw range rings.
bool IsActive
Active state (e.g. destination)
Plugin_HyperlinkList * m_HyperlinkList
List of hyperlinks associated with this waypoint.
double scamin
Minimum display scale (1:X) for waypoint visibility.
double scamax
Maximum display scale (1:X) for waypoint visibility.
bool b_useScamin
True to enable scale-dependent visibility.
wxString IconName
Name of icon to use for waypoint symbol.
bool IsNameVisible
True to show waypoint name on chart.
double m_PlannedSpeed
Planned speed for next leg (knots)
double RangeRingSpace
Distance between range rings in preferred units.
double m_lon
Longitude in decimal degrees.
double m_WaypointArrivalRadius
Arrival radius in nautical miles.
int RangeRingSpaceUnits
Units for range ring spacing - 0:nm, 1:km.
wxString m_MarkName
Display name of waypoint.
bool IsVisible
Visibility state on chart.
int nrange_rings
Number of range rings to display around waypoint.
Extended waypoint class with additional navigation features.
wxDateTime m_CreateTime
Creation timestamp in UTC.
wxColour RangeRingColor
Color to draw range rings.
int nrange_rings
Number of range rings to display around waypoint.
wxString IconDescription
User-friendly description of icon.
bool b_useScamin
True to enable scale-dependent visibility.
double RangeRingSpace
Distance between range rings in preferred units.
Plugin_HyperlinkList * m_HyperlinkList
List of hyperlinks associated with this waypoint.
wxString m_MarkName
Display name of waypoint.
wxString m_GUID
Globally unique identifier.
double m_lon
Longitude in decimal degrees.
wxString IconName
Name of icon to use for waypoint symbol.
double scamin
Minimum display scale (1:X) for waypoint visibility.
bool IsNameVisible
True to show waypoint name on chart.
double m_lat
Latitude in decimal degrees.
wxString m_MarkDescription
Optional description text.
bool IsActive
Active state (e.g. destination)
bool IsVisible
Visibility state on chart.
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 in UTC.
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 in standard DC mode for multi-canvas support.
virtual bool RenderGLOverlayMultiCanvas(wxGLContext *pcontext, PlugIn_ViewPort *vp, int canvasIndex)
Renders plugin overlay graphics in OpenGL mode for multi-canvas support.
bool RenderGLOverlayMultiCanvas(wxGLContext *pcontext, PlugIn_ViewPort *vp, int canvas_ix) override
Renders plugin overlay graphics in OpenGL mode for multi-canvas support.
bool RenderOverlayMultiCanvas(wxDC &dc, PlugIn_ViewPort *vp, int canvas_ix) override
Renders plugin overlay graphics in standard DC mode for multi-canvas support.
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 std::unique_ptr< PlugIn_Route_Ex > GetRouteEx_Plugin(const wxString &GUID)
Gets extended route by GUID.
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 void UpdateAndApplyPriorityMaps(std::vector< std::string > map)
Sets and applies new priority mapping scheme.
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.
DECL_EXP bool GetSingleWaypointExV2(wxString GUID, PlugIn_Waypoint_ExV2 *pwaypoint)
Gets extended waypoint data by GUID.
enum ChartDepthUnitTypePI _ChartDepthUnitTypePI
Enumeration of depth unit types used in charts.
DECL_EXP std::unique_ptr< PlugIn_Waypoint_ExV2 > GetWaypointExV2_Plugin(const wxString &GUID)
Gets complete waypoint details by GUID.
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 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 download 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 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.
DECL_EXP PI_Comm_Status GetConnState(const std::string &iface, PI_Conn_Bus _bus)
Plugin polled Comm Status support.
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)
Remove 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 bool UpdatePlugInRouteExV2(PlugIn_Route_ExV2 *proute)
Updates existing route with V2 waypoints.
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 std::unique_ptr< PlugIn_Route_ExV2 > GetRouteExV2_Plugin(const wxString &GUID)
Gets route details with V2 waypoints by GUID.
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 bool AddPlugInRouteExV2(PlugIn_Route_ExV2 *proute, bool b_permanent=true)
Adds a new route with V2 waypoints.
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 bool UpdateSingleWaypointExV2(PlugIn_Waypoint_ExV2 *pwaypoint)
Updates an existing extended V2 waypoint.
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 starting 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 using Mercator projection.
DECL_EXP std::unique_ptr< PlugIn_Waypoint_Ex > GetWaypointEx_Plugin(const wxString &GUID)
Gets extended waypoint by GUID.
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 bool AddSingleWaypointExV2(PlugIn_Waypoint_ExV2 *pwaypoint, bool b_permanent=true)
Adds a waypoint with extended V2 properties.
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)
Returns an installed plugin's data directory given a plugin 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.
bool show_timezone
Whether to show timezone information in the formatted date/time string.
wxString format_string
The format string for date/time.
DateTimeFormatOptions & SetFormatString(const wxString &fmt)
Sets the date/time format pattern string.
DateTimeFormatOptions & SetShowTimezone(bool show)
Sets whether to show timezone information in the formatted output.
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.