155 void SetupGlCanvas();
158 void OnKeyDown(wxKeyEvent &event);
159 void OnKeyUp(wxKeyEvent &event);
160 void OnKeyChar(wxKeyEvent &event);
161 void OnPaint(wxPaintEvent &event);
163 void Scroll(
int dx,
int dy);
164 void OnToolLeftClick(wxCommandEvent &event);
166 bool MouseEventOverlayWindows(wxMouseEvent &event);
167 bool MouseEventChartBar(wxMouseEvent &event);
168 bool MouseEventMUIBar(wxMouseEvent &event);
169 bool MouseEventToolbar(wxMouseEvent &event);
170 bool MouseEventIENCBar(wxMouseEvent &event);
172 bool MouseEventSetup(wxMouseEvent &event,
bool b_handle_dclick =
true);
173 bool MouseEventProcessObjects(wxMouseEvent &event);
190 void SetCanvasCursor(wxMouseEvent &event);
191 void OnKillFocus(wxFocusEvent &WXUNUSED(event));
192 void OnSetFocus(wxFocusEvent &WXUNUSED(event));
193#ifdef HAVE_WX_GESTURE_EVENTS
194 void OnZoom(wxZoomGestureEvent &event);
195 void OnLongPress(wxLongPressEvent &event);
196 void OnPressAndTap(wxPressAndTapEvent &event);
198 void OnLeftDown(wxMouseEvent &evt);
199 void OnLeftUp(wxMouseEvent &evt);
201 void OnRightUp(wxMouseEvent &event);
202 void OnRightDown(wxMouseEvent &event);
204 void OnDoubleLeftClick(wxMouseEvent &event);
206 void OnWheel(wxMouseEvent &event);
207 void OnMotion(wxMouseEvent &event);
210 void PopupMenuHandler(wxCommandEvent &event);
211 bool IsPrimaryCanvas() {
return (m_canvasIndex == 0); }
213 bool SetUserOwnship();
215 double GetCanvasRangeMeters();
216 void SetCanvasRangeMeters(
double range);
218 void EnablePaint(
bool b_enable);
219 virtual bool SetCursor(
const wxCursor &c);
220 virtual void Refresh(
bool eraseBackground =
true,
221 const wxRect *rect = (
const wxRect *)NULL);
222 virtual void Update();
224 void LostMouseCapture(wxMouseCaptureLostEvent &event);
226 void CancelMouseRoute();
247 bool SetVPScale(
double sc,
bool b_refresh =
true);
248 bool SetVPProjection(
int projection);
257 bool SetViewPointByCorners(
double latSW,
double lonSW,
double latNE,
273 bool SetViewPoint(
double lat,
double lon,
double scale_ppm,
double skew,
274 double rotation,
int projection = 0,
bool b_adjust =
true,
275 bool b_refresh =
true);
276 void ReloadVP(
bool b_adjust =
true);
277 void LoadVP(
ViewPort &vp,
bool b_adjust =
true);
279 ChartStack *GetpCurrentStack() {
return m_pCurrentStack; }
280 void SetGroupIndex(
int index,
bool autoswitch =
false);
281 bool CheckGroup(
int igroup);
282 void canvasRefreshGroupIndex(
void);
283 void canvasChartsRefresh(
int dbi_hint);
285 void CheckGroupValid(
bool showMessage =
true,
bool switchGroup0 =
true);
287 void UpdateCanvasS52PLIBConfig();
289 void TriggerDeferredFocus();
290 void OnDeferredFocusTimerEvent(wxTimerEvent &event);
291 void OnRouteFinishTimerEvent(wxTimerEvent &event);
293 void ClearS52PLIBStateHash() { m_s52StateHash = 0; }
294 void SetupCanvasQuiltMode(
void);
297 bool SetVPRotation(
double angle);
298 double GetVPRotation(
void) {
return GetVP().
rotation; }
299 double GetVPSkew(
void) {
return GetVP().
skew; }
300 double GetVPTilt(
void) {
return GetVP().
tilt; }
302 void ClearbFollow(
void);
303 void SetbFollow(
void);
304 void TogglebFollow(
void);
305 bool GetbFollow() {
return m_bFollow; }
308 void SetFirstAuto(
bool b_auto) { m_bFirstAuto = b_auto; }
395 void WarpPointerDeferred(
int x,
int y);
399 void ToggleCPAWarn();
401 bool IsMeasureActive() {
return m_bMeasure_Active; }
402 wxBitmap &GetTideBitmap() {
return m_cTideBitmap; }
405 int GetUpMode() {
return m_upMode; }
406 bool GetLookahead() {
return m_bLookAhead; }
409 void SetQuiltMode(
bool b_quilt);
410 bool GetQuiltMode(
void);
411 std::vector<int> GetQuiltIndexArray(
void);
412 bool IsQuiltDelta(
void);
413 void SetQuiltChartHiLiteIndex(
int dbIndex);
414 void SetQuiltChartHiLiteIndexArray(std::vector<int> hilite_array);
415 void ClearQuiltChartHiLiteIndexArray();
416 int GetQuiltReferenceChartIndex(
void);
417 double GetBestStartScale(
int dbi_hint,
const ViewPort &vp);
418 void ConfigureChartBar();
420 int GetNextContextMenuId();
422 TCWin *getTCWin() {
return pCwin; }
424 bool StartTimedMovement(
bool stoptimer =
true);
425 void DoTimedMovement();
426 void DoMovement(
long dt);
429 void StartTimedMovementVP(
double target_lat,
double target_lon,
int nstep);
430 void DoTimedMovementVP();
431 void StopMovementVP();
433 void StartTimedMovementTarget();
434 void DoTimedMovementTarget();
435 void StopMovementTarget();
437 void SetColorScheme(ColorScheme cs);
438 ColorScheme GetColorScheme() {
return m_cs; }
440 void CanvasApplyLocale();
441 void RebuildCursors();
444 int GetCanvasWidth() {
return m_canvas_width; }
445 int GetCanvasHeight() {
return m_canvas_height; }
464 double GetAbsoluteMinScalePpm() {
return m_absolute_min_scale_ppm; }
465 ViewPort *GetpVP() {
return &VPoint; }
469 Piano *GetPiano() {
return m_Piano; }
470 int GetPianoHeight();
472 bool isRouteEditing(
void) {
473 return m_bRouteEditing && m_pRoutePointEditTarget;
475 bool isMarkEditing(
void) {
return m_bMarkEditing && m_pRoutePointEditTarget; }
477 GSHHSChart *GetWorldBackgroundChart() {
return pWorldBackgroundChart; }
478 void ResetWorldBackgroundChart() { pWorldBackgroundChart->Reset(); }
480 void SetbTCUpdate(
bool f) { m_bTCupdate = f; }
481 bool GetbTCUpdate() {
return m_bTCupdate; }
482 void SetbShowCurrent(
bool f) { m_bShowCurrent = f; }
483 bool GetbShowCurrent() {
return m_bShowCurrent; }
484 void SetbShowTide(
bool f) { m_bShowTide = f; }
485 bool GetbShowTide() {
return m_bShowTide; }
486 void SetShowVisibleSectors(
bool val) { m_bShowVisibleSectors = val; }
487 bool GetShowVisibleSectors() {
return m_bShowVisibleSectors; }
491 void SetOwnShipState(ownship_state_t state) { m_ownship_state = state; }
492 void SetCursorStatus(
double cursor_lat,
double cursor_lon);
493 void GetCursorLatLon(
double *lat,
double *lon);
497 void StopAutoPan(
void);
517 void ZoomCanvas(
double factor,
bool can_zoom_to_cursor =
true,
518 bool stoptimer =
true);
546 void DoZoomCanvas(
double factor,
bool can_zoom_to_cursor =
true);
548 void RotateCanvas(
double dir);
549 void DoRotateCanvas(
double rotation);
550 void DoTiltCanvas(
double tilt);
552 void ShowAISTargetList(
void);
554 void ShowGoToPosition(
void);
555 void HideGlobalToolbar();
556 void ShowGlobalToolbar();
558 bool GetShowDepthUnits() {
return m_bShowDepthUnits; }
559 void SetShowDepthUnits(
bool show) { m_bShowDepthUnits = show; }
560 bool GetShowGrid() {
return m_bDisplayGrid; }
561 void SetShowGrid(
bool show) { m_bDisplayGrid = show; }
562 bool GetShowOutlines() {
return m_bShowOutlines; }
563 void SetShowOutlines(
bool show) { m_bShowOutlines = show; }
564 bool GetShowChartbar() {
return true; }
565 wxRect GetMUIBarRect();
566 void SetMUIBarPosition();
567 void DestroyMuiBar();
570 void ToggleChartOutlines(
void);
571 void ToggleCanvasQuiltMode(
void);
573 wxString GetScaleText() {
return m_scaleText; }
574 double GetScaleValue() {
return m_scaleValue; }
575 bool GetShowAIS() {
return m_bShowAIS; }
576 void SetShowAIS(
bool show);
577 bool GetAttenAIS() {
return m_bShowAISScaled; }
578 void SetAttenAIS(
bool show);
579 void SetShowFocusBar(
bool enable) { m_show_focus_bar = enable; }
580 bool GetShowFocusBar() {
return m_show_focus_bar; }
581 MUIBar *GetMUIBar() {
return m_muiBar; }
582 void SetAlertString(wxString str) { m_alertString = str; }
583 wxString GetAlertString() {
return m_alertString; }
584 bool GetShowENCText() {
return m_encShowText; }
585 void SetShowENCText(
bool show);
587 bool GetShowENCDepth() {
return m_encShowDepth; }
588 void SetShowENCDepth(
bool show);
590 bool GetShowENCLightDesc() {
return m_encShowLightDesc; }
591 void SetShowENCLightDesc(
bool show);
593 bool GetShowENCBuoyLabels() {
return m_encShowBuoyLabels; }
594 void SetShowENCBuoyLabels(
bool show);
596 bool GetShowENCLights() {
return m_encShowLights; }
597 void SetShowENCLights(
bool show);
602 bool GetShowENCAnchor() {
return m_encShowAnchor; }
603 void SetShowENCAnchor(
bool show);
605 bool GetShowENCDataQual() {
return m_encShowDataQual; }
606 void SetShowENCDataQual(
bool show);
608 void JaggyCircle(
ocpnDC &dc, wxPen pen,
int x,
int y,
int radius);
610 void ShowTides(
bool bShow);
611 void ShowCurrents(
bool bShow);
612 void SetUpMode(
int mode);
613 void ToggleLookahead();
614 void SetShowGPS(
bool show);
615 void UpdateFollowButtonState(
void);
617 bool IsTileOverlayIndexInYesShow(
int index);
618 bool IsTileOverlayIndexInNoShow(
int index);
619 void AddTileOverlayIndexToNoShow(
int index);
621 Route *m_pMouseRoute;
622 bool m_bMeasure_Active;
626 wxString FindValidUploadPort();
627 wxString m_active_upload_port;
635 int GetQuiltChartCount();
636 void InvalidateAllQuiltPatchs(
void);
637 void SetQuiltRefChart(
int dbIndex);
638 std::vector<int> GetQuiltCandidatedbIndexArray(
bool flag1 =
true,
640 std::vector<int> &GetQuiltExtendedStackdbIndexArray();
641 std::vector<int> &GetQuiltFullScreendbIndexArray();
642 std::vector<int> GetQuiltEclipsedStackdbIndexArray();
643 int GetQuiltRefChartdbIndex(
void);
644 void InvalidateQuilt(
void);
645 double GetQuiltMaxErrorFactor();
646 bool IsChartQuiltableRef(
int db_index);
648 int GetCanvasChartNativeScale();
649 int FindClosestCanvasChartdbIndex(
int scale);
650 void UpdateCanvasOnGroupChange(
void);
652 void ShowObjectQueryWindow(
int x,
int y,
float zlat,
float zlon);
653 void ShowMarkPropertiesDialog(
RoutePoint *markPoint);
654 void ShowRoutePropertiesDialog(wxString title,
Route *selected);
655 void ShowTrackPropertiesDialog(
Track *selected);
656 void DrawTCWindow(
int x,
int y,
void *pIDX);
658 void UpdateGPSCompassStatusBox(
bool b_force_new);
661 wxColour GetFogColor() {
return m_fog_color; }
663 void ShowChartInfoWindow(
int x,
int dbIndex);
664 void HideChartInfoWindow(
void);
665 void ShowCompositeInfoWindow(
int x,
int n_charts,
int scale,
666 const std::vector<int> &index_vector);
668 void StartMeasureRoute();
669 void CancelMeasureRoute();
671 bool DoCanvasUpdate(
void);
672 void SelectQuiltRefdbChart(
int db_index,
bool b_autoscale =
true);
673 void SelectQuiltRefChart(
int selected_index);
674 double GetBestVPScale(
ChartBase *pchart);
675 void selectCanvasChartDisplay(
int type,
int family);
676 void RemoveChartFromQuilt(
int dbIndex);
678 void HandlePianoClick(
int selected_index,
679 const std::vector<int> &selected_dbIndex_array);
680 void HandlePianoRClick(
int x,
int y,
int selected_index,
681 const std::vector<int> &selected_dbIndex_array);
682 void HandlePianoRollover(
int selected_index,
683 const std::vector<int> &selected_dbIndex_array,
684 int n_charts,
int scale);
685 void ClearPianoRollover();
686 void UpdateCanvasControlBar(
void);
687 void FormatPianoKeys(
void);
688 void PianoPopupMenu(
int x,
int y,
int selected_index,
689 const std::vector<int> &selected_dbIndex_array);
690 void OnPianoMenuDisableChart(wxCommandEvent &event);
691 void OnPianoMenuEnableChart(wxCommandEvent &event);
693 bool IsPianoContextMenuActive() {
return m_piano_ctx_menu != 0; }
694 bool DoCanvasCOGSet(
void);
695 void ApplyGlobalSettings();
696 void SetShowGPSCompassWindow(
bool bshow);
697 bool GetShowGPSCompassWindow() {
return m_bShowCompassWin; }
698 void FreezePiano() { m_pianoFrozen =
true; }
699 void ThawPiano() { m_pianoFrozen =
false; }
700 void StartChartDragInertia();
704 wxCursor *pCursorPencil;
705 wxCursor *pCursorArrow;
706 wxCursor *pCursorCross;
707 wxCursor *pPlugIn_Cursor;
709 wxBitmap *pscratch_bm;
710 bool m_brepaint_piano;
747 bool m_bShowNavobjects;
752#ifdef HAVE_WX_GESTURE_EVENTS
753 double m_oldVPSScale;
756 wxPoint m_zoomStartPoint;
759 void DrawBlinkObjects(
void);
761 void StartRoute(
void);
762 void FinishRoute(
void);
768 bool CheckEdgePan(
int x,
int y,
bool bdragging,
int margin,
int delta);
770 bool m_FinishRouteOnKillFocus;
771 bool m_bMeasure_DistCircle;
772 bool m_bAppendingRoute;
774 Route *m_pMeasureRoute;
777 int GetMinAvailableGshhgQuality() {
778 return pWorldBackgroundChart->GetMinAvailableQuality();
780 int GetMaxAvailableGshhgQuality() {
781 return pWorldBackgroundChart->GetMaxAvailableQuality();
783 Route *GetSelectedRoute()
const {
return m_pSelectedRoute; }
784 Track *GetSelectedTrack()
const {
return m_pSelectedTrack; }
785 RoutePoint *GetSelectedRoutePoint()
const {
return m_pFoundRoutePoint; }
787 void SetAISCanvasDisplayStyle(
int StyleIndx);
788 void TouchAISToolActive(
void);
789 void UpdateAISTBTool(
void);
791 void SelectChartFromStack(
int index,
bool bDir =
false,
792 ChartTypeEnum New_Type = CHART_TYPE_DONTCARE,
793 ChartFamilyEnum New_Family = CHART_FAMILY_DONTCARE);
794 void SelectdbChart(
int dbindex);
796 void DoCanvasStackDelta(
int direction);
798 void ProcessNewGUIScale();
800 bool m_b_paint_enable;
802 wxRect GetScaleBarRect() {
return m_scaleBarRect; }
803 void RenderAlertMessage(wxDC &dc,
const ViewPort &vp);
805 std::vector<int> m_tile_noshow_index_array;
806 std::vector<int> m_tile_yesshow_index_array;
807 std::vector<int> m_quilt_noshow_index_array;
809 std::vector<int> GetQuiltNoshowIindexArray() {
810 return m_quilt_noshow_index_array;
822 void ResetOwnshipOffset() { m_OSoffsetx = m_OSoffsety = 0; }
825 int AdjustQuiltRefChart();
827 bool UpdateS52State();
829 void CallPopupMenu(
int x,
int y);
831 bool IsTempMenuBarEnabled();
832 bool InvokeCanvasMenu(
int x,
int y,
int seltype);
835 void PositionConsole(
void);
837 wxColour PredColor();
838 wxColour ShipColor();
840 void ComputeShipScaleFactor(
float icon_hdt,
int ownShipWidth,
841 int ownShipLength, wxPoint2DDouble &lShipMidPoint,
842 wxPoint &GpsOffsetPixels,
843 wxPoint2DDouble lGPSPoint,
float &scale_factor_x,
844 float &scale_factor_y);
846 void ShipDrawLargeScale(
ocpnDC &dc, wxPoint2DDouble lShipMidPoint);
847 void ShipIndicatorsDraw(
ocpnDC &dc,
int img_height, wxPoint GPSOffsetPixels,
848 wxPoint2DDouble lGPSPoint);
856 wxString m_scaleText;
858 bool m_bShowScaleInStatusBar;
861 wxPoint LastShipPoint;
862 wxPoint LastPredPoint;
863 bool m_bDrawingRoute;
864 bool m_bRouteEditing;
866 bool m_bRoutePoinDragging;
868 bool m_bMayToggleMenuBar;
873 bool m_bChartDragging;
874 Route *m_pSelectedRoute;
875 Track *m_pSelectedTrack;
876 wxArrayPtrVoid *m_pEditRouteArray;
881 wxCursor *pCursorLeft;
882 wxCursor *pCursorRight;
884 wxCursor *pCursorDown;
886 wxCursor *pCursorUpLeft;
887 wxCursor *pCursorUpRight;
888 wxCursor *pCursorDownLeft;
889 wxCursor *pCursorDownRight;
893 wxBitmap *pThumbDIBShow;
894 wxBitmap *pThumbShowing;
896 bool bShowingCurrent;
905 double m_canvas_scale_factor;
908 double m_display_size_mm;
910 double m_absolute_min_scale_ppm;
912 bool singleClickEventIsValid;
913 wxMouseEvent singleClickEvent;
915 std::vector<s57Sector_t> extendedSectorLegs;
916 wxFont m_overzoomFont;
917 int m_overzoomTextWidth;
918 int m_overzoomTextHeight;
921 void OnActivate(wxActivateEvent &event);
922 void OnSize(wxSizeEvent &event);
923 void MouseTimedEvent(wxTimerEvent &event);
924 void MouseEvent(wxMouseEvent &event);
925 void ShipDraw(
ocpnDC &dc);
926 void DrawArrow(
ocpnDC &dc,
int x,
int y,
double rot_angle,
double scale);
927 void OnRolloverPopupTimerEvent(wxTimerEvent &event);
928 void FindRoutePointsAtCursor(
float selectRadius,
bool setBeingEdited);
930 void RotateTimerEvent(wxTimerEvent &event);
931 void PanTimerEvent(wxTimerEvent &event);
932 void MovementTimerEvent(wxTimerEvent &);
933 void MovementStopTimerEvent(wxTimerEvent &);
934 void OnCursorTrackTimerEvent(wxTimerEvent &event);
936 void MovementVPTimerEvent(wxTimerEvent &event);
938 void DrawAllTracksInBBox(
ocpnDC &dc, LLBBox &BltBBox);
939 void DrawActiveTrackInBBox(
ocpnDC &dc, LLBBox &BltBBox);
940 void DrawAllRoutesInBBox(
ocpnDC &dc, LLBBox &BltBBox);
941 void DrawActiveRouteInBBox(
ocpnDC &dc, LLBBox &BltBBox);
942 void DrawAllWaypointsInBBox(
ocpnDC &dc, LLBBox &BltBBox);
943 void DrawAnchorWatchPoints(
ocpnDC &dc);
944 double GetAnchorWatchRadiusPixels(
RoutePoint *pAnchorWatchPoint);
946 void DrawAllTidesInBBox(
ocpnDC &dc, LLBBox &BBox);
947 void DrawAllCurrentsInBBox(
ocpnDC &dc, LLBBox &BBox);
948 void RebuildTideSelectList(LLBBox &BBox);
949 void RebuildCurrentSelectList(LLBBox &BBox);
953 void RenderRouteLegs(
ocpnDC &dc);
954 void RenderVisibleSectorLights(
ocpnDC &dc);
956 void AlertDraw(
ocpnDC &dc);
958 void GridDraw(
ocpnDC &dc);
959 void ScaleBarDraw(
ocpnDC &dc);
961 void DrawOverlayObjects(
ocpnDC &dc,
const wxRegion &ru);
962 void RenderShipToActive(
ocpnDC &dc,
bool Use_Opengl);
965 emboss_data *CreateEmbossMapData(wxFont &font,
int width,
int height,
966 const wxString &str, ColorScheme cs);
967 void CreateDepthUnitEmbossMaps(ColorScheme cs);
968 wxBitmap CreateDimBitmap(wxBitmap &Bitmap,
double factor);
970 void CreateOZEmbossMapData(ColorScheme cs);
972 void SetOverzoomFont();
979 void ShowBrightnessLevelTimedPopup(
int brightness,
int min,
int max);
1003 wxTimer *pMovementStopTimer;
1005 wxTimer *pCurTrackTimer;
1007 wxTimer *pRotDefTimer;
1009 wxTimer *m_DoubleClickTimer;
1010 wxTimer m_routeFinishTimer;
1012 wxTimer m_RolloverPopupTimer;
1014 wxTimer m_VPMovementTimer;
1016 int m_wheelzoom_stop_oneshot;
1017 int m_last_wheel_dir;
1018 wxStopWatch m_wheelstopwatch;
1019 double m_zoom_target;
1021 int m_curtrack_timer_msec;
1022 int m_rollover_popup_timer_msec;
1027 wxBitmap *pss_overlay_bmp;
1028 wxMask *pss_overlay_mask;
1030 wxRect ship_draw_rect;
1031 wxRect ship_draw_last_rect;
1032 wxRect ais_draw_rect;
1033 wxRect alert_draw_rect;
1035 wxBitmap *proute_bm;
1036 wxMemoryDC m_dc_route;
1060 double m_true_scale_ppm;
1062 ownship_state_t m_ownship_state;
1066 wxBitmap m_bmTideDay;
1067 wxBitmap m_bmTideDusk;
1068 wxBitmap m_bmTideNight;
1069 wxBitmap m_bmCurrentDay;
1070 wxBitmap m_bmCurrentDusk;
1071 wxBitmap m_bmCurrentNight;
1072 wxBitmap m_cTideBitmap;
1073 wxBitmap m_cCurrentBitmap;
1081 wxImage m_os_image_red_day;
1082 wxImage m_os_image_red_dusk;
1083 wxImage m_os_image_red_night;
1084 wxImage m_os_image_grey_day;
1085 wxImage m_os_image_grey_dusk;
1086 wxImage m_os_image_grey_night;
1087 wxImage m_os_image_yellow_day;
1088 wxImage m_os_image_yellow_dusk;
1089 wxImage m_os_image_yellow_night;
1091 wxImage *m_pos_image_red;
1092 wxImage *m_pos_image_grey;
1093 wxImage *m_pos_image_yellow;
1095 wxImage *m_pos_image_user;
1096 wxImage *m_pos_image_user_grey;
1097 wxImage *m_pos_image_user_yellow;
1099 wxImage *m_pos_image_user_day;
1100 wxImage *m_pos_image_user_dusk;
1101 wxImage *m_pos_image_user_night;
1102 wxImage *m_pos_image_user_grey_day;
1103 wxImage *m_pos_image_user_grey_dusk;
1104 wxImage *m_pos_image_user_grey_night;
1105 wxImage *m_pos_image_user_yellow_day;
1106 wxImage *m_pos_image_user_yellow_dusk;
1107 wxImage *m_pos_image_user_yellow_night;
1109 wxImage m_ship_pix_image;
1111 bool m_cur_ship_pix_isgrey;
1112 ColorScheme m_ship_cs;
1115 wxBitmap *m_prot_bm;
1123 double m_wheel_lat, m_wheel_lon;
1124 int m_wheel_x, m_wheel_y;
1127 wxBitmap m_working_bm;
1128 wxBitmap m_cached_chart_bm;
1133 bool m_bzooming, m_bzooming_to_cursor;
1142 int m_panx, m_pany, m_modkeys;
1144 bool m_bmouse_key_mod;
1145 double m_zoom_factor, m_rotation_speed;
1148 wxDateTime m_last_movement_time;
1150 int m_AISRollover_MMSI;
1151 bool m_bsectors_shown;
1153 double m_displayed_scale_factor;
1155 wxColour m_fog_color;
1156 bool m_disable_edge_pan;
1157 wxFont *m_pgridFont;
1159 bool m_dragoffsetSet;
1163 double m_vLat, m_vLon;
1166 bool m_bpersistent_quilt;
1168 wxMenu *m_piano_ctx_menu;
1169 int menu_selected_dbIndex, menu_selected_index;
1174 wxRect m_mainlast_tb_rect;
1175 int m_restore_dbindex;
1176 int m_restore_group;
1179 wxSize m_muiBarHOSize;
1181 bool m_bShowOutlines;
1182 bool m_bDisplayGrid;
1183 bool m_bShowDepthUnits;
1185 bool m_bShowAISScaled;
1188 long m_s52StateHash;
1190 bool m_encShowDepth;
1191 bool m_encShowLightDesc;
1192 bool m_encShowBuoyLabels;
1193 int m_encDisplayCategory;
1194 bool m_encShowLights;
1195 bool m_encShowAnchor;
1196 bool m_encShowDataQual;
1198 wxTimer m_deferredFocusTimer;
1199 float m_focus_indicator_pix;
1203 double m_OSoffsetx, m_OSoffsety;
1204 bool m_MouseDragging;
1206 wxString m_alertString;
1207 wxRect m_scaleBarRect;
1208 bool m_bShowCompassWin;
1211 double m_sector_glat, m_sector_glon;
1212 std::vector<s57Sector_t> m_sectorlegsVisible;
1213 bool m_bShowVisibleSectors;
1215 double m_displayScale;
1216 bool m_show_focus_bar;
1218 double m_panx_target_final;
1219 double m_pany_target_final;
1220 double m_panx_target_now;
1221 double m_pany_target_now;
1223 double m_start_lat, m_start_lon;
1224 double m_target_lat, m_target_lon;
1225 double m_run_lat, m_run_lon;
1226 bool m_timed_move_vp_active;
1230 double meters_to_shift = 0;
1231 double dir_to_shift = 0;
1234 wxTimer m_chart_drag_inertia_timer;
1235 void OnChartDragInertiaTimer(wxTimerEvent &event);
1237 uint64_t m_last_drag_time;
1238 int m_chart_drag_total_x;
1239 int m_chart_drag_total_y;
1240 double m_chart_drag_total_time;
1241 double m_chart_drag_velocity_x;
1242 double m_chart_drag_velocity_y;
1243 wxLongLong m_chart_drag_inertia_time;
1244 wxLongLong m_chart_drag_inertia_start_time;
1245 bool m_chart_drag_inertia_active;
1246 double m_last_elapsed;
1247 std::vector<int> m_drag_vec_x;
1248 std::vector<int> m_drag_vec_y;
1249 std::vector<double> m_drag_vec_t;
1250 int m_inertia_last_drag_x;
1251 int m_inertia_last_drag_y;
1254 wxTimer m_easeTimer;
1255 wxLongLong m_animationStart;
1256 wxLongLong m_animationDuration;
1257 double m_startLat, m_startLon, m_startScale;
1258 double m_endLat, m_endLon, m_endScale;
1259 bool m_animationActive;
1260 void OnJumpEaseTimer(wxTimerEvent &event);
1261 bool StartSmoothJump(
double lat,
double lon,
double scale_ppm);
1263 DECLARE_EVENT_TABLE()