137 void FreeLineCacheRows(
int start = 0,
int end = -1);
138 bool HaveLineCacheRow(
int row);
141 virtual ThumbData *GetThumbData(
int tnx,
int tny,
float lat,
float lon);
142 virtual ThumbData *GetThumbData() {
return pThumbData; }
143 virtual bool UpdateThumbData(
double lat,
double lon);
145 int GetNativeScale() {
return m_Chart_Scale; }
146 double GetNormalScaleMin(
double canvas_scale_factor,
bool b_allow_overzoom);
147 double GetNormalScaleMax(
double canvas_scale_factor,
int canvas_width);
149 virtual InitReturn Init(
const wxString &name, ChartInitFlag init_flags);
151 virtual int latlong_to_pix_vp(
double lat,
double lon,
double &pixx,
153 virtual int vp_pix_to_latlong(
ViewPort &vp,
double pixx,
double pixy,
154 double *lat,
double *lon);
156 bool RenderRegionViewOnDC(wxMemoryDC &dc,
const ViewPort &VPoint,
159 virtual bool RenderRegionViewOnGL(
const wxGLContext &glc,
162 const LLRegion &Region);
177 virtual void GetValidCanvasRegion(
const ViewPort &VPoint,
179 virtual LLRegion GetValidRegion();
181 virtual bool GetChartExtent(
Extent *pext);
183 void SetColorScheme(ColorScheme cs,
bool bApplyImmediate);
187 void SetVPRasterParms(
const ViewPort &vpt);
189 virtual void ComputeSourceRectangle(
const ViewPort &vp, wxRect *pSourceRect);
190 virtual double GetRasterScaleFactor(
const ViewPort &vp);
191 virtual bool GetChartBits(wxRect &source,
unsigned char *pPix,
int sub_samp);
192 virtual int GetSize_X() {
return Size_X; }
193 virtual int GetSize_Y() {
return Size_Y; }
195 virtual void latlong_to_chartpix(
double lat,
double lon,
double &pixx,
197 virtual void chartpix_to_latlong(
double pixx,
double pixy,
double *plat,
200 double GetPPM() {
return m_ppm_avg; }
205 wxRect GetSourceRect() {
return Rsrc; }
207 virtual bool GetAndScaleData(
unsigned char *ppn,
size_t data_size,
208 wxRect &source,
int source_stride, wxRect &dest,
209 int dest_stride,
double scale_factor,
210 ScaleTypeEnum scale_type);
211 bool RenderViewOnDC(wxMemoryDC &dc,
const ViewPort &VPoint);
213 bool IsCacheValid() {
return cached_image_ok; }
214 void InvalidateCache() { cached_image_ok = 0; }
215 bool IsRenderCacheable(wxRect &source, wxRect &dest);
217 void CreatePaletteEntry(
char *buffer,
int palette_index);
218 PaletteDir GetPaletteDir(
void);
219 int *GetPalettePtr(BSB_Color_Capability);
233 double scale_factor_min,
234 double scale_factor_max);
236 virtual void InvalidateLineCache();
237 virtual bool CreateLineIndex(
void);
239 virtual wxBitmap *CreateThumbnail(
int tnx,
int tny, ColorScheme cs);
240 virtual int BSBGetScanline(
unsigned char *pLineBuf,
int y,
int xs,
int xl,
243 bool GetViewUsingCache(wxRect &source, wxRect &dest,
const OCPNRegion &Region,
244 ScaleTypeEnum scale_type);
245 bool GetView(wxRect &source, wxRect &dest, ScaleTypeEnum scale_type);
247 virtual int BSBScanScanline(wxInputStream *pinStream);
248 virtual int ReadBSBHdrLine(wxInputStream *,
char *,
int);
249 virtual int AnalyzeRefpoints(
bool b_testSolution =
true);
250 virtual bool AnalyzeSkew(
void);
252 virtual bool SetMinMax(
void);
254 InitReturn PreInit(
const wxString &name, ChartInitFlag init_flags,
256 InitReturn PostInit(
void);
258 double AdjustLongitude(
double lon);
267 double m_proj_parameter;
281 wxRect cache_rect_scaled;
282 bool cached_image_ok;
283 ScaleTypeEnum cache_scale_method;
284 double m_cached_scale_ppm;
285 wxRect m_last_vprect;
288 double m_raster_scale_factor;
298 wxInputStream *ifs_hdr;
299 wxInputStream *ifss_bitmap;
300 wxBufferedInputStream *ifs_bitmap;
302 wxString *pBitmapFilePath;
304 unsigned char *ifs_buf;
305 unsigned char *ifs_bufend;
307 unsigned char *ifs_lp;
309 int nFileOffsetDataStart;
314 double wpx[12], wpy[12], pwx[12], pwy[12];
315 int wpx_type, wpy_type, pwx_type, pwy_type;
316 int n_wpx, n_wpy, n_pwx, n_pwy;
317 bool bHaveEmbeddedGeoref;
321 BSB_Color_Capability m_mapped_color_index;
325 int m_bilinear_limit;
335 PaletteDir palette_direction;
345 double m_proj_lat, m_proj_lon;
349 wxCriticalSection m_critSect;
350 wxULongLong m_filesize;
398 virtual wxString GetFileSearchMask(
void);
400 virtual InitReturn Init(
const wxString &name, ChartInitFlag init_flags);
403 virtual ThumbData *GetThumbData(
int tnx,
int tny,
float lat,
float lon);
405 virtual bool UpdateThumbData(
double lat,
double lon);
407 double GetNormalScaleMin(
double canvas_scale_factor,
bool b_allow_overzoom);
408 double GetNormalScaleMax(
double canvas_scale_factor,
int canvas_width);
410 virtual bool GetChartExtent(
Extent *pext);
412 virtual bool RenderRegionViewOnDC(wxMemoryDC &dc,
const ViewPort &VPoint,
415 virtual bool RenderRegionViewOnGL(
const wxGLContext &glc,
418 const LLRegion &Region);
422 virtual void GetValidCanvasRegion(
const ViewPort &VPoint,
425 virtual void SetColorScheme(ColorScheme cs,
bool bApplyImmediate);
431 virtual int GetCOVREntries();
432 virtual int GetCOVRTablePoints(
int iTable);
433 virtual int GetCOVRTablenPoints(
int iTable);
434 virtual float *GetCOVRTableHead(
int iTable);
436 virtual int GetNoCOVREntries();
437 virtual int GetNoCOVRTablePoints(
int iTable);
438 virtual int GetNoCOVRTablenPoints(
int iTable);
439 virtual float *GetNoCOVRTableHead(
int iTable);
444 virtual void ComputeSourceRectangle(
const ViewPort &vp, wxRect *pSourceRect);
445 virtual double GetRasterScaleFactor(
const ViewPort &vp);
446 virtual bool GetChartBits(wxRect &source,
unsigned char *pPix,
int sub_samp);
447 virtual int GetSize_X();
448 virtual int GetSize_Y();
449 virtual void latlong_to_chartpix(
double lat,
double lon,
double &pixx,
451 virtual void chartpix_to_latlong(
double pixx,
double pixy,
double *plat,
455 virtual bool RenderRegionViewOnDCNoText(wxMemoryDC &dc,
459 virtual bool RenderRegionViewOnDCTextOnly(wxMemoryDC &dc,
463 virtual bool RenderRegionViewOnGLNoText(
const wxGLContext &glc,
466 const LLRegion &Region);
468 virtual bool RenderRegionViewOnGLTextOnly(
const wxGLContext &glc,
472 virtual void ClearPLIBTextList();
477 wxCriticalSection m_critSect;