133 void FreeLineCacheRows(
int start = 0,
int end = -1);
134 bool HaveLineCacheRow(
int row);
137 virtual ThumbData *GetThumbData(
int tnx,
int tny,
float lat,
float lon);
138 virtual ThumbData *GetThumbData() {
return pThumbData; }
139 virtual bool UpdateThumbData(
double lat,
double lon);
141 int GetNativeScale() {
return m_Chart_Scale; }
142 double GetNormalScaleMin(
double canvas_scale_factor,
bool b_allow_overzoom);
143 double GetNormalScaleMax(
double canvas_scale_factor,
int canvas_width);
145 virtual InitReturn Init(
const wxString &name, ChartInitFlag init_flags);
147 virtual int latlong_to_pix_vp(
double lat,
double lon,
double &pixx,
149 virtual int vp_pix_to_latlong(
ViewPort &vp,
double pixx,
double pixy,
150 double *lat,
double *lon);
152 bool RenderRegionViewOnDC(wxMemoryDC &dc,
const ViewPort &VPoint,
155 virtual bool RenderRegionViewOnGL(
const wxGLContext &glc,
158 const LLRegion &Region);
173 virtual void GetValidCanvasRegion(
const ViewPort &VPoint,
175 virtual LLRegion GetValidRegion();
177 virtual bool GetChartExtent(
Extent *pext);
179 void SetColorScheme(ColorScheme cs,
bool bApplyImmediate);
183 void SetVPRasterParms(
const ViewPort &vpt);
185 virtual void ComputeSourceRectangle(
const ViewPort &vp, wxRect *pSourceRect);
186 virtual double GetRasterScaleFactor(
const ViewPort &vp);
187 virtual bool GetChartBits(wxRect &source,
unsigned char *pPix,
int sub_samp);
188 virtual int GetSize_X() {
return Size_X; }
189 virtual int GetSize_Y() {
return Size_Y; }
191 virtual void latlong_to_chartpix(
double lat,
double lon,
double &pixx,
193 virtual void chartpix_to_latlong(
double pixx,
double pixy,
double *plat,
196 double GetPPM() {
return m_ppm_avg; }
201 wxRect GetSourceRect() {
return Rsrc; }
203 virtual bool GetAndScaleData(
unsigned char *ppn,
size_t data_size,
204 wxRect &source,
int source_stride, wxRect &dest,
205 int dest_stride,
double scale_factor,
206 ScaleTypeEnum scale_type);
207 bool RenderViewOnDC(wxMemoryDC &dc,
const ViewPort &VPoint);
209 bool IsCacheValid() {
return cached_image_ok; }
210 void InvalidateCache() { cached_image_ok = 0; }
211 bool IsRenderCacheable(wxRect &source, wxRect &dest);
213 void CreatePaletteEntry(
char *buffer,
int palette_index);
214 PaletteDir GetPaletteDir(
void);
215 int *GetPalettePtr(BSB_Color_Capability);
229 double scale_factor_min,
230 double scale_factor_max);
232 virtual void InvalidateLineCache();
233 virtual bool CreateLineIndex(
void);
235 virtual wxBitmap *CreateThumbnail(
int tnx,
int tny, ColorScheme cs);
236 virtual int BSBGetScanline(
unsigned char *pLineBuf,
int y,
int xs,
int xl,
239 bool GetViewUsingCache(wxRect &source, wxRect &dest,
const OCPNRegion &Region,
240 ScaleTypeEnum scale_type);
241 bool GetView(wxRect &source, wxRect &dest, ScaleTypeEnum scale_type);
243 virtual int BSBScanScanline(wxInputStream *pinStream);
244 virtual int ReadBSBHdrLine(wxInputStream *,
char *,
int);
245 virtual int AnalyzeRefpoints(
bool b_testSolution =
true);
246 virtual bool AnalyzeSkew(
void);
248 virtual bool SetMinMax(
void);
250 InitReturn PreInit(
const wxString &name, ChartInitFlag init_flags,
252 InitReturn PostInit(
void);
254 double AdjustLongitude(
double lon);
263 double m_proj_parameter;
277 wxRect cache_rect_scaled;
278 bool cached_image_ok;
279 ScaleTypeEnum cache_scale_method;
280 double m_cached_scale_ppm;
281 wxRect m_last_vprect;
284 double m_raster_scale_factor;
294 wxInputStream *ifs_hdr;
295 wxInputStream *ifss_bitmap;
296 wxBufferedInputStream *ifs_bitmap;
298 wxString *pBitmapFilePath;
300 unsigned char *ifs_buf;
301 unsigned char *ifs_bufend;
303 unsigned char *ifs_lp;
305 int nFileOffsetDataStart;
310 double wpx[12], wpy[12], pwx[12], pwy[12];
311 int wpx_type, wpy_type, pwx_type, pwy_type;
312 int n_wpx, n_wpy, n_pwx, n_pwy;
313 bool bHaveEmbeddedGeoref;
317 BSB_Color_Capability m_mapped_color_index;
321 int m_bilinear_limit;
331 PaletteDir palette_direction;
341 double m_proj_lat, m_proj_lon;
345 wxCriticalSection m_critSect;
346 wxULongLong m_filesize;
394 virtual wxString GetFileSearchMask(
void);
396 virtual InitReturn Init(
const wxString &name, ChartInitFlag init_flags);
399 virtual ThumbData *GetThumbData(
int tnx,
int tny,
float lat,
float lon);
401 virtual bool UpdateThumbData(
double lat,
double lon);
403 double GetNormalScaleMin(
double canvas_scale_factor,
bool b_allow_overzoom);
404 double GetNormalScaleMax(
double canvas_scale_factor,
int canvas_width);
406 virtual bool GetChartExtent(
Extent *pext);
408 virtual bool RenderRegionViewOnDC(wxMemoryDC &dc,
const ViewPort &VPoint,
411 virtual bool RenderRegionViewOnGL(
const wxGLContext &glc,
414 const LLRegion &Region);
418 virtual void GetValidCanvasRegion(
const ViewPort &VPoint,
421 virtual void SetColorScheme(ColorScheme cs,
bool bApplyImmediate);
427 virtual int GetCOVREntries();
428 virtual int GetCOVRTablePoints(
int iTable);
429 virtual int GetCOVRTablenPoints(
int iTable);
430 virtual float *GetCOVRTableHead(
int iTable);
432 virtual int GetNoCOVREntries();
433 virtual int GetNoCOVRTablePoints(
int iTable);
434 virtual int GetNoCOVRTablenPoints(
int iTable);
435 virtual float *GetNoCOVRTableHead(
int iTable);
440 virtual void ComputeSourceRectangle(
const ViewPort &vp, wxRect *pSourceRect);
441 virtual double GetRasterScaleFactor(
const ViewPort &vp);
442 virtual bool GetChartBits(wxRect &source,
unsigned char *pPix,
int sub_samp);
443 virtual int GetSize_X();
444 virtual int GetSize_Y();
445 virtual void latlong_to_chartpix(
double lat,
double lon,
double &pixx,
447 virtual void chartpix_to_latlong(
double pixx,
double pixy,
double *plat,
451 virtual bool RenderRegionViewOnDCNoText(wxMemoryDC &dc,
455 virtual bool RenderRegionViewOnDCTextOnly(wxMemoryDC &dc,
459 virtual bool RenderRegionViewOnGLNoText(
const wxGLContext &glc,
462 const LLRegion &Region);
464 virtual bool RenderRegionViewOnGLTextOnly(
const wxGLContext &glc,
468 virtual void ClearPLIBTextList();
473 wxCriticalSection m_critSect;