Ejemplo n.º 1
0
//------------------------------------------------------------------------------
// updateData() - updates the values
//------------------------------------------------------------------------------
void MapPage::updateData(const LCreal dt)
{
   // find our nearest map page above us and get the data from it!
   MapPage* page = static_cast<MapPage*>(findContainerByType(typeid(MapPage)));
   if (page != nullptr) {
      setHeadingDeg(page->getHeadingDeg());
      setDisplacement(page->getDisplacement());
      setReferenceLatDeg(page->getReferenceLatDeg());
      setReferenceLonDeg(page->getReferenceLonDeg());
      setOuterRadius(page->getOuterRadius());
      setOuterRadiusDC(page->getOuterRadiusDC());
      setCentered(page->getCentered());
      setRange(page->getRange());
      setNorthUp(page->getNorthUp());
      nm2Screen = page->getScale();
   }
   // if we are the top map page, we do the calculations ourself
   else {
      // determine if we are centered or not, and set our displacement and radius accordingly
      if (isCentered) nm2Screen = outerRadius / range;
      else nm2Screen = outerRadiusDC / range;
   }

   // update base class stuff
   BaseClass::updateData(dt);
}
Ejemplo n.º 2
0
//------------------------------------------------------------------------------
// Moves our reference lat lon based on the distance moved.
//------------------------------------------------------------------------------
void MapPage::moveMap(const int startX, const int startY, const int endX, const int endY)
{
   double eLat = 0, eLon = 0, lat = 0, lon = 0, sLat = 0, sLon = 0, deltaLat = 0, deltaLon = 0;

   // figure our lat/lon positioning
   pixelsToLatLon(startX, startY, sLat, sLon);
   pixelsToLatLon(endX, endY, eLat, eLon);

   // get our delta movement
   deltaLat = sLat - eLat;
   deltaLon = sLon - eLon;

   lat = getReferenceLatDeg();
   lon = getReferenceLonDeg();

   lat += deltaLat;
   lon += deltaLon;

   // As the world turns.... we need to flip the maps!
   if (lon > 180) lon = -180;
   else if (lon < -180) lon = 180;
   if (lat > 90) lat = -90;
   else if (lat < -90) lat = 90;

   setReferenceLatDeg(lat);
   setReferenceLonDeg(lon);
}
Ejemplo n.º 3
0
void Display::mouseMotionEvent(const int x, const int y)
{
    if (dragging) {
        const auto page = static_cast<MapPage*>(subpage());
        if (page != nullptr) {
            // get our ref lat, because we won't go passed 70 degrees lat (either way);
            const double lat = page->getReferenceLatDeg();
            if (lat < 70 && lat > -70) {
                page->moveMap(startX, startY, x, y);
            } else {
                if (lat > 0) page->setReferenceLatDeg(65);
                else page->setReferenceLatDeg(-65);
            }
            startX = x;
            startY = y;
        }
    }
    setMouse(x, y);
}
Ejemplo n.º 4
0
//------------------------------------------------------------------------------
// setSlotRefLat() - sets ref lat from slot
//------------------------------------------------------------------------------
bool MapPage::setSlotRefLat(const Basic::Number* const x)
{
   bool ok = false;
   if (x != nullptr) ok = setReferenceLatDeg(x->getDouble());
   return ok;
}
Ejemplo n.º 5
0
//------------------------------------------------------------------------------
// onUpdateReferenceLat() - set our new reference latitude
//------------------------------------------------------------------------------
bool MapPage::onUpdateReferenceLat(const Basic::Number* const newOL)
{
   bool ok = false;
   if (newOL != nullptr) ok = setReferenceLatDeg(newOL->getDouble());
   return ok;
}