//------------------------------------------------------------------------------ // 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); }
// ---------------------------------------------------------------------------- // mouseMotionEvent() override this to move our map. // ---------------------------------------------------------------------------- void MapDisplay::mouseMotionEvent(const int x, const int y) { if (dragging) { MapPage* page = static_cast<MapPage*>(subpage()); if (page != 0) { // get our ref lat, because we won't go passed 70 degrees lat (either way); double lat = page->getReferenceLatDeg(); if ((-70 < lat) && (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); }