191 double transform_x_rate;
192 double transform_y_rate;
193 double transform_x_origin;
194 double transform_y_origin;
197 Object **pprelated_object_block;
198 unsigned char *attribute_block_top;
200 *edge_vector_descriptor_block;
205 int m_nvector_records;
206 int m_nfeature_records;
207 int m_n_point3d_records;
208 int m_n_point2d_records;
210 List_Of_M_COVR_Desc m_cell_mcovr_list;
212 bool b_have_user_offsets;
217 double min_lat, min_lon;
314 InitReturn Init(
const wxString &name, ChartInitFlag flags);
316 void ResetSubcellKey() { m_loadcell_key =
'0'; }
318 double GetNormalScaleMin(
double canvas_scale_factor,
bool b_allow_overzoom);
319 double GetNormalScaleMax(
double canvas_scale_factor,
int canvas_width);
322 void SetVPParms(
const ViewPort &vpt);
323 void GetPointPix(ObjRazRules *rzRules,
float northing,
float easting,
325 void GetPointPix(ObjRazRules *rzRules, wxPoint2DDouble *en, wxPoint *r,
327 void GetPixPoint(
int pixx,
int pixy,
double *plat,
double *plon,
331 void SetCM93Prefix(
const wxString &prefix) { m_prefix = prefix; }
332 void SetCM93Manager(
cm93manager *pManager) { m_pManager = pManager; }
335 bool IsPointInLoadedM_COVR(
double xc,
double yc);
336 covr_set *GetCoverSet() {
return m_pcovr_set; }
337 LLRegion GetValidRegion();
339 const wxString &GetLastFileName(
void)
const {
return m_LastFileName; }
341 std::vector<int> GetVPCellArray(
const ViewPort &vpt);
343 Array_Of_M_COVR_Desc_Ptr m_pcovr_array_loaded;
345 void SetUserOffsets(
int cell_index,
int object_id,
int subcell,
int xoff,
347 wxString GetScaleChar() {
return m_scalechar; }
349 wxPoint *GetDrawBuffer(
int nSize);
354 InitReturn CreateHeaderDataFromCM93Cell(
void);
356 Extended_Geometry *BuildGeom(
Object *pobject, wxFileOutputStream *postream,
359 S57Obj *CreateS57Obj(
int cell_index,
int iobject,
int subcell,
361 Extended_Geometry *xgeom,
double ref_lat,
double ref_lon,
362 double scale,
double view_scale_ppm);
364 void ProcessMCOVRObjects(
int cell_index,
char subcell);
366 void translate_colmar(
const wxString &sclass, S57attVal *pattValTmp);
368 int CreateObjChain(
int cell_index,
int subcell,
double view_scale_ppm);
370 void Unload_CM93_Cell(
void);
373 void Transform(
cm93_point *s,
double trans_x,
double trans_y,
double *lat,
376 int loadcell_in_sequence(
int,
char);
377 int loadsubcell(
int, wxChar);
378 void ProcessVectorEdges(
void);
380 wxPoint2DDouble FindM_COVROffset(
double lat,
double lon);
381 M_COVR_Desc *FindM_COVR_InWorkingSet(
double lat,
double lon);
392 wxString m_scalechar;
393 std::vector<int> m_cells_loaded_array;
395 int m_current_cell_vearray_offset;
396 int *m_pcontour_array;
397 int m_ncontour_alloc;
399 wxChar m_loadcell_key;
404 wxPoint *m_pDrawBuffer;
405 int m_nDrawBufferSize;
407 wxString m_LastFileName;
410 wxArrayString m_noFindArray;
429 InitReturn Init(
const wxString &name, ChartInitFlag flags);
432 void Deactivate(
void);
434 double GetNormalScaleMin(
double canvas_scale_factor,
bool b_allow_overzoom);
435 double GetNormalScaleMax(
double canvas_scale_factor,
int canvas_width);
436 int GetNativeScale(
void);
438 wxString GetPubDate();
440 void SetVPParms(
const ViewPort &vpt);
442 LLRegion GetValidRegion();
444 ThumbData *GetThumbData(
int tnx,
int tny,
float lat,
float lon);
449 bool RenderRegionViewOnDC(wxMemoryDC &dc,
const ViewPort &VPoint,
452 virtual bool RenderRegionViewOnGL(
const wxGLContext &glc,
455 const LLRegion &Region);
456 void SetColorScheme(ColorScheme cs,
bool bApplyImmediate);
460 void GetPointPix(ObjRazRules *rzRules,
float rlat,
float rlon, wxPoint *r);
461 void GetPixPoint(
int pixx,
int pixy,
double *plat,
double *plon,
463 void GetPointPix(ObjRazRules *rzRules, wxPoint2DDouble *en, wxPoint *r,
466 ListOfObjRazRules *GetObjRuleListAtLatLon(
float lat,
float lon,
469 int selection_mask = MASK_ALL);
472 std::unordered_map<unsigned, VE_Element *> &Get_ve_hash(
void);
473 std::unordered_map<unsigned, VC_Element *> &Get_vc_hash(
void);
476 void ForceEdgePriorityEvaluate(
void);
477 std::list<S57Obj *> *GetAssociatedObjects(S57Obj *obj);
478 cm93chart *GetCurrentSingleScaleChart() {
return m_pcm93chart_current; }
480 void SetSpecialOutlineCellIndex(
int cell_index,
int object_id,
int subcell) {
481 m_cell_index_special_outline = cell_index;
482 m_object_id_special_outline = object_id;
483 m_subcell_special_outline = subcell;
486 void SetSpecialCellIndexOffset(
int cell_index,
int object_id,
int subcell,
488 void CloseandReopenCurrentSubchart(
void);
490 void InvalidateCache();
493 void UpdateRenderRegions(
const ViewPort &VPoint);
497 bool RenderViewOnDC(wxMemoryDC &dc,
const ViewPort &VPoint);
499 InitReturn CreateHeaderData();
501 void FillScaleArray(
double lat,
double lon);
502 int PrepareChartScale(
const ViewPort &vpt,
int cmscale,
503 bool bOZ_protect =
true);
504 int GetCMScaleFromVP(
const ViewPort &vpt);
505 bool DoRenderRegionViewOnDC(wxMemoryDC &dc,
const ViewPort &VPoint,
508 bool DoRenderRegionViewOnGL(
const wxGLContext &glc,
const ViewPort &VPoint,
510 const LLRegion &Region);
521 bool m_bScale_Array[8];
525 wxString m_prefixComposite;
527 int m_current_cell_pub_date;
530 wxBitmap *m_pDummyBM;
531 int m_cell_index_special_outline;
532 int m_object_id_special_outline;
533 int m_subcell_special_outline;
534 int m_special_offset_x;
535 int m_special_offset_y;
549 DECLARE_EVENT_TABLE()
555 void OnClose(wxCloseEvent &event);
556 void OnOK(wxCommandEvent &event);
559 void SetColorScheme();
560 void UpdateMCOVRList(
const ViewPort &vpt);
563 Array_Of_M_COVR_Desc_Ptr m_pcovr_array;
565 wxString m_selected_chart_scale_char;
568 void OnCellSelected(wxListEvent &event);
569 void OnOffSetSet(wxCommandEvent &event);
571 void UpdateOffsets(
void);
573 wxSpinCtrl *m_pSpinCtrlXoff;
574 wxSpinCtrl *m_pSpinCtrlYoff;
575 wxButton *m_OKButton;
582 int m_selected_cell_index;
583 int m_selected_object_id;
584 int m_selected_subcell;
585 int m_selected_list_index;
586 double m_centerlat_cos;