Imagery.h 2.2 KB
Newer Older
1 2 3 4 5
#ifndef IMAGERY_H
#define IMAGERY_H

#include <inttypes.h>

6
#include "TextureCache.h"
7

8
class Imagery
9 10
{
public:
11
    Imagery();
12 13 14 15 16 17 18 19 20 21 22 23 24

    enum ImageryType
    {
        MAP = 0,
        SATELLITE = 1
    };

    void setImageryType(ImageryType type);
    void setOffset(double xOffset, double yOffset);

    void prefetch2D(double windowWidth, double windowHeight,
                    double zoom, double xOrigin, double yOrigin,
                    double viewXOffset, double viewYOffset,
25
                    const QString& utmZone);
26 27 28
    void draw2D(double windowWidth, double windowHeight,
                double zoom, double xOrigin, double yOrigin,
                double viewXOffset, double viewYOffset,
29
                const QString& utmZone);
30 31 32 33

    void prefetch3D(double radius, double imageResolution,
                    double xOrigin, double yOrigin,
                    double viewXOffset, double viewYOffset,
34
                    const QString& utmZone);
35 36 37
    void draw3D(double radius, double imageResolution,
                double xOrigin, double yOrigin,
                double viewXOffset, double viewYOffset,
38
                const QString& utmZone);
39 40 41

    bool update(void);

42
private:
43 44 45 46 47 48 49 50
    void imageBounds(int32_t x, int32_t y, double imageResolution,
                     double& x1, double& y1, double& x2, double& y2,
                     double& x3, double& y3, double& x4, double& y4);

    double tileYToLatitude(double y);
    double latitudeToTileY(double latitude);

    void UTMtoTile(double northing, double easting, const QString& utmZone,
51 52 53
                   double imageResolution, int32_t& tileX, int32_t& tileY,
                   int32_t& zoomLevel);

54
    QChar UTMLetterDesignator(double latitude);
55 56 57

    void LLtoUTM(const double latitude, const double longitude,
                 double& utmNorthing, double& utmEasting,
58
                 QString& utmZone);
59 60

    void UTMtoLL(const double utmNorthing, const double utmEasting,
61
                 const QString& utmZone,
62 63
                 double& latitude, double& longitude);

64 65
    QString getTileURL(int32_t x, int32_t y, int32_t zoomLevel);

66
    ImageryType currentImageryType;
67

68 69 70
    QScopedPointer<TextureCache> textureCache;

    double xOffset, yOffset;
71 72 73
};

#endif // IMAGERY_H