134 void FreeLineCacheRows(
int start = 0,
int end = -1);
135 bool HaveLineCacheRow(
int row);
138 virtual ThumbData *GetThumbData(
int tnx,
int tny,
float lat,
float lon);
139 virtual ThumbData *GetThumbData() {
return pThumbData; }
140 virtual bool UpdateThumbData(
double lat,
double lon);
142 int GetNativeScale() {
return m_Chart_Scale; }
143 double GetNormalScaleMin(
double canvas_scale_factor,
bool b_allow_overzoom);
144 double GetNormalScaleMax(
double canvas_scale_factor,
int canvas_width);
146 virtual InitReturn Init(
const wxString &name, ChartInitFlag init_flags);
148 virtual int latlong_to_pix_vp(
double lat,
double lon,
double &pixx,
150 virtual int vp_pix_to_latlong(
ViewPort &vp,
double pixx,
double pixy,
151 double *lat,
double *lon);
153 bool RenderRegionViewOnDC(wxMemoryDC &dc,
const ViewPort &VPoint,
156 virtual bool RenderRegionViewOnGL(
const wxGLContext &glc,
159 const LLRegion &Region);
174 virtual void GetValidCanvasRegion(
const ViewPort &VPoint,
176 virtual LLRegion GetValidRegion();
178 virtual bool GetChartExtent(
Extent *pext);
180 void SetColorScheme(ColorScheme cs,
bool bApplyImmediate);
184 void SetVPRasterParms(
const ViewPort &vpt);
186 virtual void ComputeSourceRectangle(
const ViewPort &vp, wxRect *pSourceRect);
187 virtual double GetRasterScaleFactor(
const ViewPort &vp);
188 virtual bool GetChartBits(wxRect &source,
unsigned char *pPix,
int sub_samp);
189 virtual int GetSize_X() {
return Size_X; }
190 virtual int GetSize_Y() {
return Size_Y; }
192 virtual void latlong_to_chartpix(
double lat,
double lon,
double &pixx,
194 virtual void chartpix_to_latlong(
double pixx,
double pixy,
double *plat,
197 double GetPPM() {
return m_ppm_avg; }
202 wxRect GetSourceRect() {
return Rsrc; }
204 virtual bool GetAndScaleData(
unsigned char *ppn,
size_t data_size,
205 wxRect &source,
int source_stride, wxRect &dest,
206 int dest_stride,
double scale_factor,
207 ScaleTypeEnum scale_type);
208 bool RenderViewOnDC(wxMemoryDC &dc,
const ViewPort &VPoint);
210 bool IsCacheValid() {
return cached_image_ok; }
211 void InvalidateCache() { cached_image_ok = 0; }
212 bool IsRenderCacheable(wxRect &source, wxRect &dest);
214 void CreatePaletteEntry(
char *buffer,
int palette_index);
215 PaletteDir GetPaletteDir(
void);
216 int *GetPalettePtr(BSB_Color_Capability);
230 double scale_factor_min,
231 double scale_factor_max);
233 virtual void InvalidateLineCache();
234 virtual bool CreateLineIndex(
void);
236 virtual wxBitmap *CreateThumbnail(
int tnx,
int tny, ColorScheme cs);
237 virtual int BSBGetScanline(
unsigned char *pLineBuf,
int y,
int xs,
int xl,
240 bool GetViewUsingCache(wxRect &source, wxRect &dest,
const OCPNRegion &Region,
241 ScaleTypeEnum scale_type);
242 bool GetView(wxRect &source, wxRect &dest, ScaleTypeEnum scale_type);
244 virtual int BSBScanScanline(wxInputStream *pinStream);
245 virtual int ReadBSBHdrLine(wxInputStream *,
char *,
int);
246 virtual int AnalyzeRefpoints(
bool b_testSolution =
true);
247 virtual bool AnalyzeSkew(
void);
249 virtual bool SetMinMax(
void);
251 InitReturn PreInit(
const wxString &name, ChartInitFlag init_flags,
253 InitReturn PostInit(
void);
255 double AdjustLongitude(
double lon);
264 double m_proj_parameter;
278 wxRect cache_rect_scaled;
279 bool cached_image_ok;
280 ScaleTypeEnum cache_scale_method;
281 double m_cached_scale_ppm;
282 wxRect m_last_vprect;
285 double m_raster_scale_factor;
295 wxInputStream *ifs_hdr;
296 wxInputStream *ifss_bitmap;
297 wxBufferedInputStream *ifs_bitmap;
299 wxString *pBitmapFilePath;
301 unsigned char *ifs_buf;
302 unsigned char *ifs_bufend;
304 unsigned char *ifs_lp;
306 int nFileOffsetDataStart;
311 double wpx[12], wpy[12], pwx[12], pwy[12];
312 int wpx_type, wpy_type, pwx_type, pwy_type;
313 int n_wpx, n_wpy, n_pwx, n_pwy;
314 bool bHaveEmbeddedGeoref;
318 BSB_Color_Capability m_mapped_color_index;
322 int m_bilinear_limit;
332 PaletteDir palette_direction;
342 double m_proj_lat, m_proj_lon;
346 wxCriticalSection m_critSect;
347 wxULongLong m_filesize;
395 virtual wxString GetFileSearchMask(
void);
397 virtual InitReturn Init(
const wxString &name, ChartInitFlag init_flags);
400 virtual ThumbData *GetThumbData(
int tnx,
int tny,
float lat,
float lon);
402 virtual bool UpdateThumbData(
double lat,
double lon);
404 double GetNormalScaleMin(
double canvas_scale_factor,
bool b_allow_overzoom);
405 double GetNormalScaleMax(
double canvas_scale_factor,
int canvas_width);
407 virtual bool GetChartExtent(
Extent *pext);
409 virtual bool RenderRegionViewOnDC(wxMemoryDC &dc,
const ViewPort &VPoint,
412 virtual bool RenderRegionViewOnGL(
const wxGLContext &glc,
415 const LLRegion &Region);
419 virtual void GetValidCanvasRegion(
const ViewPort &VPoint,
422 virtual void SetColorScheme(ColorScheme cs,
bool bApplyImmediate);
428 virtual int GetCOVREntries();
429 virtual int GetCOVRTablePoints(
int iTable);
430 virtual int GetCOVRTablenPoints(
int iTable);
431 virtual float *GetCOVRTableHead(
int iTable);
433 virtual int GetNoCOVREntries();
434 virtual int GetNoCOVRTablePoints(
int iTable);
435 virtual int GetNoCOVRTablenPoints(
int iTable);
436 virtual float *GetNoCOVRTableHead(
int iTable);
441 virtual void ComputeSourceRectangle(
const ViewPort &vp, wxRect *pSourceRect);
442 virtual double GetRasterScaleFactor(
const ViewPort &vp);
443 virtual bool GetChartBits(wxRect &source,
unsigned char *pPix,
int sub_samp);
444 virtual int GetSize_X();
445 virtual int GetSize_Y();
446 virtual void latlong_to_chartpix(
double lat,
double lon,
double &pixx,
448 virtual void chartpix_to_latlong(
double pixx,
double pixy,
double *plat,
452 virtual bool RenderRegionViewOnDCNoText(wxMemoryDC &dc,
456 virtual bool RenderRegionViewOnDCTextOnly(wxMemoryDC &dc,
460 virtual bool RenderRegionViewOnGLNoText(
const wxGLContext &glc,
463 const LLRegion &Region);
465 virtual bool RenderRegionViewOnGLTextOnly(
const wxGLContext &glc,
469 virtual void ClearPLIBTextList();
474 wxCriticalSection m_critSect;