Qt Virtual Chart Table (QVCT)
CChartGDAL.hpp
Go to the documentation of this file.
1 // INDENTING (emacs/vi): -*- mode:c++; tab-width:2; c-basic-offset:2; intent-tabs-mode:nil; -*- ex: set tabstop=2 expandtab:
2 
3 /*
4  * Qt Virtual Chart Table (QVCT)
5  * Copyright (C) 2012 Cedric Dufour <http://cedric.dufour.name>
6  * Author: Cedric Dufour <http://cedric.dufour.name>
7  *
8  * The Qt Virtual Chart Table (QVCT) is free software:
9  * you can redistribute it and/or modify it under the terms of the GNU General
10  * Public License as published by the Free Software Foundation, Version 3.
11  *
12  * The Qt Virtual Chart Table (QVCT) is distributed in the hope
13  * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
14  * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
15  *
16  * See the GNU General Public License for more details.
17  */
18 
19 #ifndef QVCT_CCHARTGDAL_HPP
20 #define QVCT_CCHARTGDAL_HPP
21 
22 // QT
23 #include <QColor>
24 #include <QPainter>
25 #include <QPixmap>
26 #include <QRect>
27 #include <QString>
28 #include <QVector>
29 
30 // GDAL
31 #include <gdal_priv.h>
32 
33 // QVCT
34 #include "QVCT.hpp"
35 class CDataPosition;
36 
37 
39 
53 {
54 
55  //------------------------------------------------------------------------------
56  // CONSTANTS
57  //------------------------------------------------------------------------------
58 
59 public:
63 
64 
65  //------------------------------------------------------------------------------
66  // FIELDS
67  //------------------------------------------------------------------------------
68 
69 protected:
70  //
71  // THIS
72  //
73 
77  QString qsFileName;
87  double fdZoomWished;
89  double fdZoomActual;
90 
91  //
92  // GDAL
93  //
94 
96  GDALDataset* poGDALDataset;
101 
102  //
103  // Qt
104  //
105 
107  QPixmap qPixmapBuffer;
109  QVector<QRgb> qColorTable;
110 
111 
112  //------------------------------------------------------------------------------
113  // CONSTRUCTORS / DESTRUCTOR
114  //------------------------------------------------------------------------------
115 
116 protected:
117  CChartGDAL();
118  virtual ~CChartGDAL();
119 
120 protected:
122  void open( const QString& _rqsFileName );
123 
124 
125  //------------------------------------------------------------------------------
126  // METHODS
127  //------------------------------------------------------------------------------
128 
129  // GETTERS
130 public:
132  QVCT::EStatus getStatus() const { return eStatus; };
134  QString getFileName() const { return qsFileName; };
136  QRect getDatGeometry() const { return qRectGeometry; };
140  QPointF getDatPosition() const { return qPointFDatPositionActual; };
142  double getZoom() const { return fdZoomActual; };
143 
144  // OTHER
145 public:
147  CDataPosition toGeoPosition( const QPointF& _rqPointFDatPosition ) const;
149  QPointF toDatPosition( const CDataPosition& _roGeoPosition ) const;
151  double getResolution( const QPointF& _rqPointFDatPosition ) const;
153  void draw( QPainter* _pqPainter, const QPointF& _rqPointFDatPosition, double _fdZoom );
155  void move( const QPointF& _rqPointFDatPosition, double _fdZoom );
156 
157 protected:
159  virtual void rasterBuffer( QImage* _pqImage, const QVector<quint16>& _rqVector ) const;
161  virtual void rasterBuffer( QImage* _pqImage, const QVector<qint16>& _rqVector ) const;
163  virtual void rasterBuffer( QImage* _pqImage, const QVector<quint32>& _rqVector ) const;
165  virtual void rasterBuffer( QImage* _pqImage, const QVector<qint32>& _rqVector ) const;
167  virtual void rasterBuffer( QImage* _pqImage, const QVector<float>& _rqVector ) const;
169  virtual void rasterBuffer( QImage* _pqImage, const QVector<double>& _rqVector ) const;
170 
171 };
172 
173 #endif // QVCT_CCHARTGDAL_HPP
Generic GDAL-based dataset.
Definition: CChartGDAL.hpp:53
virtual void rasterBuffer(QImage *_pqImage, const QVector< quint16 > &_rqVector) const
Rasterizes UInt16 buffer.
Definition: CChartGDAL.cpp:690
QString qsFileName
Chart (GDAL dataset) file name.
Definition: CChartGDAL.hpp:77
void open(const QString &_rqsFileName)
Opens the underlying GDAL dataset.
Definition: CChartGDAL.cpp:61
EColorEncoding getColorEncoding() const
Returns the chart (GDAL dataset) color encoding.
Definition: CChartGDAL.hpp:138
QPointF getDatPosition() const
Returns the last drawn chart (GDAL dataset) center pixel position.
Definition: CChartGDAL.hpp:140
EColorEncoding
Underlying GDAL dataset color encoding IDs.
Definition: CChartGDAL.hpp:61
QRect getDatGeometry() const
Returns the chart (GDAL dataset) geometry (size)
Definition: CChartGDAL.hpp:136
void draw(QPainter *_pqPainter, const QPointF &_rqPointFDatPosition, double _fdZoom)
Draws chart, centered on given chart (GDAL dataset) point [px] and zoomed according to given factor.
Definition: CChartGDAL.cpp:392
CDataPosition toGeoPosition(const QPointF &_rqPointFDatPosition) const
Converts the given chart pixel position to geographical position.
Definition: CChartGDAL.cpp:356
void move(const QPointF &_rqPointFDatPosition, double _fdZoom)
Moves the chart, centered on given chart (GDAL dataset) point [px] and zoomed according to given fact...
Definition: CChartGDAL.cpp:683
QVCT::EStatus getStatus() const
Returns the chart internal status (after constructing object)
Definition: CChartGDAL.hpp:132
void * pGDALProjectionTransformer
Underlying GDAL dataset projection transformer (to internal WGS84)
Definition: CChartGDAL.hpp:98
int * piGDALBandMap
Underlying GDAL dataset band mapping (for ARGB/RGB/YUV color encodings)
Definition: CChartGDAL.hpp:100
double getResolution(const QPointF &_rqPointFDatPosition) const
Returns the resolution at given chart (GDAL dataset) point [px], in meters per pixel [m/px].
Definition: CChartGDAL.cpp:383
QPointF qPointFDatPositionActual
Last drawn chart (GDAL dataset) center pixel position (actually rendered)
Definition: CChartGDAL.hpp:85
double fdZoomActual
Last drawn chart (GDAL dataset) zoom factor (actually rendered)
Definition: CChartGDAL.hpp:89
QRect qRectGeometry
Chart (GDAL dataset) geometry (size)
Definition: CChartGDAL.hpp:79
EColorEncoding eColorEncoding
Chart (GDAL dataset) color encoding.
Definition: CChartGDAL.hpp:81
QPixmap qPixmapBuffer
Pixmap buffer where the chart (GDAL dataset) is rendered (rasterized)
Definition: CChartGDAL.hpp:107
QPointF toDatPosition(const CDataPosition &_roGeoPosition) const
Converts the given (geographical) position [long,lat,elev] to chart (GDAL dataset) point [px].
Definition: CChartGDAL.cpp:368
double fdZoomWished
Last drawn chart (GDAL dataset) zoom factor (requested by user)
Definition: CChartGDAL.hpp:87
QString getFileName() const
Returns the chart (GDAL dataset) file name.
Definition: CChartGDAL.hpp:134
virtual ~CChartGDAL()
Definition: CChartGDAL.cpp:54
double getZoom() const
Returns the last drawn chart (GDAL dataset) zoom factor.
Definition: CChartGDAL.hpp:142
QVCT::EStatus eStatus
Chart internal status.
Definition: CChartGDAL.hpp:75
GDALDataset * poGDALDataset
Underlying GDAL dataset.
Definition: CChartGDAL.hpp:96
QVector< QRgb > qColorTable
Color table (for GRAY/PALETTE_* color encodings)
Definition: CChartGDAL.hpp:109
QPointF qPointFDatPositionWished
Last drawn chart (GDAL dataset) center pixel position (requested by user)
Definition: CChartGDAL.hpp:83
(Geographical) Position data [long,lat,elev]
EStatus
Definition: QVCT.hpp:41