2 * Copyright (C) 2013 HERE Global B.V. All rights reserved.
3 * This software, including documentation, is protected by copyright controlled by
4 * HERE Global B.V. (“Software”). All rights are reserved. Copying, including reproducing,
5 * storing, adapting or translating, any or all of this material requires the prior
6 * written consent of HERE Global B.V. You may use this
7 * Software in accordance with the terms and conditions defined in the
8 * HERE Location Platform Services Terms and Conditions, available at
9 * http://developer.here.com/terms-conditions-base
11 * As an additional permission to the above, you may distribute Software,
12 * in object code format as part of an Application, according to, and subject to, terms and
13 * conditions defined in the Tizen Software Development kit (“SDK”) License Agreement.
14 * You may distribute such object code format Application under terms of your choice,
15 * provided that the header and source files of the Software have not been modified.
18 #ifndef GEOPROJECTION_H
19 #define GEOPROJECTION_H
23 #include "common/HereMaps_global.h"
25 #ifdef TIZEN_MIGRATION
26 #include "graphic/DoubleMatrix4.h"
27 #include "graphic/Dimension.h"
28 #include "graphic/Point.h"
30 #include <FGraphics.h>
31 #include <FBaseDoubleMatrix4.h>
34 HERE_MAPS_BEGIN_NAMESPACE
39 class GeoProjectionNode;
45 virtual ~GeoProjection();
47 virtual Tizen::Maps::Point geoToPixel(const GeoCoordinates& geo) const = 0;
48 virtual GeoCoordinates pixelToGeo(const Tizen::Maps::Point& pixel) const = 0;
50 virtual std::vector<GeoProjectionNode*> projectRoot();
51 virtual GeoProjectionNode* projectQuad(GeoProjectionNode* parent, int quad);
53 virtual void setTileSize(const Tizen::Maps::Dimension& size);
54 Tizen::Maps::Dimension tileSize() const;
56 virtual void setScreenSize(const Tizen::Maps::Dimension& size);
57 Tizen::Maps::Dimension screenSize() const;
59 virtual void setLevel(double value);
62 virtual void setMaximumLevel(double value);
63 double maximumLevel() const;
65 virtual void setMinimumLevel(double value);
66 double minimumLevel() const;
68 virtual void setHeading(double value);
69 double heading() const;
71 virtual void setGeoCenter(const GeoCoordinates& value);
72 GeoCoordinates geoCenter() const;
74 virtual bool setGeoCenterInPx(const Tizen::Maps::Point& value);
75 Tizen::Maps::Point screenCenter() const;
77 DoublePoint projectPoint(const DoublePoint& point) const;
80 virtual void filter(GeoProjectionNode& transform,const std::vector<DoublePoint3>& points) = 0;
81 virtual DoublePoint3 projectPoint(double x, double y, double z=0) const = 0;
83 Tizen::Maps::DoubleMatrix4& GetMatrix();
84 const Tizen::Maps::DoubleMatrix4& GetMatrix() const;
85 Tizen::Maps::DoubleMatrix4& GetInverse();
86 const Tizen::Maps::DoubleMatrix4& GetInverse() const;
88 Tizen::Maps::Dimension& GetTileSize();
89 Tizen::Maps::Dimension& GetScreenSize();
90 GeoCoordinates& GetGeoCenter();
92 #ifdef TIZEN_MIGRATION
95 void setScale(double scale);
100 HERE_MAPS_NO_COPY_NO_ASSIGN(GeoProjection);
101 friend class TestGeoProjection;
103 class GeoProjectionImpl;
104 GeoProjectionImpl* m_pImpl;
107 HERE_MAPS_END_NAMESPACE
109 #endif // GEOPROJECTION_P_H