183 double transform_x_rate;
184 double transform_y_rate;
185 double transform_x_origin;
186 double transform_y_origin;
189 Object **pprelated_object_block;
190 unsigned char *attribute_block_top;
192 *edge_vector_descriptor_block;
197 int m_nvector_records;
198 int m_nfeature_records;
199 int m_n_point3d_records;
200 int m_n_point2d_records;
202 List_Of_M_COVR_Desc m_cell_mcovr_list;
204 bool b_have_user_offsets;
209 double min_lat, min_lon;
306 InitReturn Init(
const wxString &name, ChartInitFlag flags);
308 void ResetSubcellKey() { m_loadcell_key =
'0'; }
310 double GetNormalScaleMin(
double canvas_scale_factor,
bool b_allow_overzoom);
311 double GetNormalScaleMax(
double canvas_scale_factor,
int canvas_width);
314 void SetVPParms(
const ViewPort &vpt);
315 void GetPointPix(ObjRazRules *rzRules,
float northing,
float easting,
317 void GetPointPix(ObjRazRules *rzRules, wxPoint2DDouble *en, wxPoint *r,
319 void GetPixPoint(
int pixx,
int pixy,
double *plat,
double *plon,
323 void SetCM93Prefix(
const wxString &prefix) { m_prefix = prefix; }
324 void SetCM93Manager(
cm93manager *pManager) { m_pManager = pManager; }
327 bool IsPointInLoadedM_COVR(
double xc,
double yc);
328 covr_set *GetCoverSet() {
return m_pcovr_set; }
329 LLRegion GetValidRegion();
331 const wxString &GetLastFileName(
void)
const {
return m_LastFileName; }
333 std::vector<int> GetVPCellArray(
const ViewPort &vpt);
335 Array_Of_M_COVR_Desc_Ptr m_pcovr_array_loaded;
337 void SetUserOffsets(
int cell_index,
int object_id,
int subcell,
int xoff,
339 wxString GetScaleChar() {
return m_scalechar; }
341 wxPoint *GetDrawBuffer(
int nSize);
346 InitReturn CreateHeaderDataFromCM93Cell(
void);
348 Extended_Geometry *BuildGeom(
Object *pobject, wxFileOutputStream *postream,
351 S57Obj *CreateS57Obj(
int cell_index,
int iobject,
int subcell,
353 Extended_Geometry *xgeom,
double ref_lat,
double ref_lon,
354 double scale,
double view_scale_ppm);
356 void ProcessMCOVRObjects(
int cell_index,
char subcell);
358 void translate_colmar(
const wxString &sclass, S57attVal *pattValTmp);
360 int CreateObjChain(
int cell_index,
int subcell,
double view_scale_ppm);
362 void Unload_CM93_Cell(
void);
365 void Transform(
cm93_point *s,
double trans_x,
double trans_y,
double *lat,
368 int loadcell_in_sequence(
int,
char);
369 int loadsubcell(
int, wxChar);
370 void ProcessVectorEdges(
void);
372 wxPoint2DDouble FindM_COVROffset(
double lat,
double lon);
373 M_COVR_Desc *FindM_COVR_InWorkingSet(
double lat,
double lon);
384 wxString m_scalechar;
385 std::vector<int> m_cells_loaded_array;
387 int m_current_cell_vearray_offset;
388 int *m_pcontour_array;
389 int m_ncontour_alloc;
391 wxChar m_loadcell_key;
396 wxPoint *m_pDrawBuffer;
397 int m_nDrawBufferSize;
399 wxString m_LastFileName;
402 wxArrayString m_noFindArray;
421 InitReturn Init(
const wxString &name, ChartInitFlag flags);
424 void Deactivate(
void);
426 double GetNormalScaleMin(
double canvas_scale_factor,
bool b_allow_overzoom);
427 double GetNormalScaleMax(
double canvas_scale_factor,
int canvas_width);
428 int GetNativeScale(
void);
430 wxString GetPubDate();
432 void SetVPParms(
const ViewPort &vpt);
434 LLRegion GetValidRegion();
436 ThumbData *GetThumbData(
int tnx,
int tny,
float lat,
float lon);
441 bool RenderRegionViewOnDC(wxMemoryDC &dc,
const ViewPort &VPoint,
444 virtual bool RenderRegionViewOnGL(
const wxGLContext &glc,
447 const LLRegion &Region);
448 void SetColorScheme(ColorScheme cs,
bool bApplyImmediate);
452 void GetPointPix(ObjRazRules *rzRules,
float rlat,
float rlon, wxPoint *r);
453 void GetPixPoint(
int pixx,
int pixy,
double *plat,
double *plon,
455 void GetPointPix(ObjRazRules *rzRules, wxPoint2DDouble *en, wxPoint *r,
458 ListOfObjRazRules *GetObjRuleListAtLatLon(
float lat,
float lon,
461 int selection_mask = MASK_ALL);
464 std::unordered_map<unsigned, VE_Element *> &Get_ve_hash(
void);
465 std::unordered_map<unsigned, VC_Element *> &Get_vc_hash(
void);
468 void ForceEdgePriorityEvaluate(
void);
469 std::list<S57Obj *> *GetAssociatedObjects(S57Obj *obj);
470 cm93chart *GetCurrentSingleScaleChart() {
return m_pcm93chart_current; }
472 void SetSpecialOutlineCellIndex(
int cell_index,
int object_id,
int subcell) {
473 m_cell_index_special_outline = cell_index;
474 m_object_id_special_outline = object_id;
475 m_subcell_special_outline = subcell;
478 void SetSpecialCellIndexOffset(
int cell_index,
int object_id,
int subcell,
480 void CloseandReopenCurrentSubchart(
void);
482 void InvalidateCache();
485 void UpdateRenderRegions(
const ViewPort &VPoint);
489 bool RenderViewOnDC(wxMemoryDC &dc,
const ViewPort &VPoint);
491 InitReturn CreateHeaderData();
493 void FillScaleArray(
double lat,
double lon);
494 int PrepareChartScale(
const ViewPort &vpt,
int cmscale,
495 bool bOZ_protect =
true);
496 int GetCMScaleFromVP(
const ViewPort &vpt);
497 bool DoRenderRegionViewOnDC(wxMemoryDC &dc,
const ViewPort &VPoint,
500 bool DoRenderRegionViewOnGL(
const wxGLContext &glc,
const ViewPort &VPoint,
502 const LLRegion &Region);
513 bool m_bScale_Array[8];
517 wxString m_prefixComposite;
519 int m_current_cell_pub_date;
522 wxBitmap *m_pDummyBM;
523 int m_cell_index_special_outline;
524 int m_object_id_special_outline;
525 int m_subcell_special_outline;
526 int m_special_offset_x;
527 int m_special_offset_y;
541 DECLARE_EVENT_TABLE()
547 void OnClose(wxCloseEvent &event);
548 void OnOK(wxCommandEvent &event);
551 void SetColorScheme();
552 void UpdateMCOVRList(
const ViewPort &vpt);
555 Array_Of_M_COVR_Desc_Ptr m_pcovr_array;
557 wxString m_selected_chart_scale_char;
560 void OnCellSelected(wxListEvent &event);
561 void OnOffSetSet(wxCommandEvent &event);
563 void UpdateOffsets(
void);
565 wxSpinCtrl *m_pSpinCtrlXoff;
566 wxSpinCtrl *m_pSpinCtrlYoff;
567 wxButton *m_OKButton;
574 int m_selected_cell_index;
575 int m_selected_object_id;
576 int m_selected_subcell;
577 int m_selected_list_index;
578 double m_centerlat_cos;