#ifndef GUI_MAPWIDGET_HXX
#define GUI_MAPWIDGET_HXX
+#include <map>
#include <simgear/compiler.h>
#include <simgear/math/SGMath.hxx>
#include <simgear/props/props.hxx>
// forward decls
class FGRouteMgr;
class FGRunway;
+class FGHelipad;
class FGAirport;
class FGNavRecord;
class FGFix;
void setProperty(SGPropertyNode_ptr prop);
private:
+ enum Projection {
+ PROJECTION_SAMSON_FLAMSTEED,
+ PROJECTION_ORTHO_AZIMUTH,
+ PROJECTION_SPHERICAL
+ };
+
+ int zoom() const;
+
void handlePan(int x, int y);
void pan(const SGVec2d& delta);
void paintAircraftLocation(const SGGeod& aircraftPos);
void paintRoute();
void paintRuler();
+ void drawFlightHistory();
void drawGPSData();
void drawNavRadio(SGPropertyNode_ptr radio);
int scoreAirportRunways(FGAirport* apt);
void drawRunwayPre(FGRunway* rwy);
void drawRunway(FGRunway* rwy);
+ void drawHelipad(FGHelipad* hp);
void drawILS(bool tuned, FGRunway* rwy);
void drawNavaids();
+ void drawPOIs();
void drawNDB(bool tuned, FGNavRecord* nav);
void drawVOR(bool tuned, FGNavRecord* nav);
void drawFix(FGFix* fix);
+
+ void drawCountries(FGNavRecord* rec);
+ void drawCities(FGNavRecord* rec);
+ void drawTowns(FGNavRecord* rec);
void drawTraffic();
void drawAIAircraft(const SGPropertyNode* model, const SGGeod& pos, double hdg);
MapData* getOrCreateDataForKey(void* key);
MapData* createDataForKey(void* key);
void setAnchorForKey(void* key, const SGVec2d& anchor);
+ void clearData();
SGVec2d project(const SGGeod& geod) const;
SGGeod unproject(const SGVec2d& p) const;
double currentScale() const;
+ int displayHeading(double trueHeading) const;
+
void circleAt(const SGVec2d& center, int nSides, double r);
void circleAtAlt(const SGVec2d& center, int nSides, double r, double r2);
+ void squareAt(const SGVec2d& center, double r);
void drawLine(const SGVec2d& p1, const SGVec2d& p2);
void drawLegendBox(const SGVec2d& pos, const std::string& t);
int _width, _height;
- int _zoom;
+ int _cachedZoom;
double _drawRangeNm;
double _upHeading; // true heading corresponding to +ve y-axis
bool _magneticHeadings;
+ bool _hasPanned;
SGGeod _projectionCenter;
+ Projection _projection;
SGGeod _aircraft;
SGGeod _clickGeod;
SGVec2d _hitLocation;