• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdeedu API Reference
  • KDE Home
  • Contact Us
 

marble

  • sources
  • kde-4.14
  • kdeedu
  • marble
  • src
  • lib
  • marble
MarbleAbstractPresenter.cpp
Go to the documentation of this file.
1 //
2 // This file is part of the Marble Virtual Globe.
3 //
4 // This program is free software licensed under the GNU LGPL. You can
5 // find a copy of this license in LICENSE.txt in the top directory of
6 // the source code.
7 //
8 // Copyright 2006-2007 Torsten Rahn <tackat@kde.org>
9 // Copyright 2007 Inge Wallin <ingwa@kde.org>
10 // Copyright 2010-2012 Bernhard Beschow <bbeschow@cs.tu-berlin.de>
11 // Copyright 2012 Mohammed Nafees <nafees.technocool@gmail.com>
12 // Copyright 2014 Adam Dabrowski <adamdbrw@gmail.com>
13 //
14 
15 #include <MarbleAbstractPresenter.h>
16 #if QT_VERSION >= 0x050000
17  #include <QtMath>
18 #else
19  #include <qmath.h>
20 #endif
21 #include <Quaternion.h>
22 #include <ViewportParams.h>
23 #include <MarbleLocale.h>
24 #include <Planet.h>
25 #include <GeoDataPlacemark.h>
26 #include <MarbleClock.h>
27 #include <MarbleDebug.h>
28 
29 namespace Marble
30 {
31  MarbleAbstractPresenter::MarbleAbstractPresenter() :
32  QObject()
33  ,m_model()
34  ,m_map(&m_model)
35  ,m_physics(this)
36  ,m_animationsEnabled(false)
37  ,m_logzoom(0)
38  ,m_zoomStep(MarbleGlobal::getInstance()->profiles() & MarbleGlobal::SmallScreen ? 60 : 40)
39  ,m_viewAngle(110)
40  {
41  }
42 
43  MarbleAbstractPresenter::~MarbleAbstractPresenter()
44  {
45  }
46 
47  qreal MarbleAbstractPresenter::zoom(qreal radius) const
48  {
49  return (200.0 * log(radius));
50  }
51 
52  qreal MarbleAbstractPresenter::radius(qreal zoom) const
53  {
54  return pow(M_E, (zoom / 200.0));
55  }
56 
57  void MarbleAbstractPresenter::rotateBy(const qreal deltaLon, const qreal deltaLat, FlyToMode mode)
58  {
59  Quaternion rotPhi(1.0, deltaLat / 180.0, 0.0, 0.0);
60  Quaternion rotTheta(1.0, 0.0, deltaLon / 180.0, 0.0);
61 
62  Quaternion axis = map()->viewport()->planetAxis();
63  qreal lon(0.0), lat(0.0);
64  axis.getSpherical(lon, lat);
65  axis = rotTheta * axis;
66  axis *= rotPhi;
67  axis.normalize();
68  lat = -axis.pitch();
69  lon = axis.yaw();
70 
71  GeoDataLookAt target = lookAt();
72  target.setLongitude(lon);
73  target.setLatitude(lat);
74  flyTo(target, mode);
75  }
76 
77  void MarbleAbstractPresenter::flyTo(const GeoDataLookAt &newLookAt, FlyToMode mode)
78  {
79  if (!m_animationsEnabled || mode == Instant)
80  {
81  const int radius = qRound(radiusFromDistance(newLookAt.range() * METER2KM));
82  qreal const zoomVal = zoom(radius);
83 
84  // Prevent exceeding zoom range. Note: Bounding to range is not useful here
85  if (qRound(zoomVal) >= minimumZoom() && qRound(zoomVal) <= maximumZoom())
86  {
87  map()->setRadius(radius);
88  m_logzoom = qRound(zoom(radius));
89 
90  GeoDataCoordinates::Unit deg = GeoDataCoordinates::Degree;
91  map()->centerOn(newLookAt.longitude(deg), newLookAt.latitude(deg));
92 
93  emit zoomChanged(m_logzoom);
94  emit distanceChanged(distanceString());
95 
96  emit updateRequired();
97  }
98  }
99  else
100  {
101  m_physics.flyTo(newLookAt, mode);
102  }
103  }
104 
105  QString MarbleAbstractPresenter::distanceString() const
106  {
107  qreal dist = distance();
108  QString distanceUnitString;
109 
110  const MarbleLocale::MeasurementSystem measurementSystem =
111  MarbleGlobal::getInstance()->locale()->measurementSystem();
112 
113  switch (measurementSystem)
114  {
115  case MarbleLocale::MetricSystem:
116  distanceUnitString = tr("km");
117  break;
118  case MarbleLocale::ImperialSystem:
119  dist *= KM2MI;
120  distanceUnitString = tr("mi");
121  break;
122  case MarbleLocale::NauticalSystem:
123  dist *= KM2NM;
124  distanceUnitString = tr("nm");
125  break;
126  }
127 
128  return QString("%L1 %2").arg(dist, 8, 'f', 1, QChar(' ')).arg(distanceUnitString);
129  }
130 
131  GeoDataLookAt MarbleAbstractPresenter::lookAt() const
132  {
133  GeoDataLookAt result;
134 
135  result.setLongitude(map()->viewport()->centerLongitude());
136  result.setLatitude(map()->viewport()->centerLatitude());
137  result.setAltitude(0.0);
138  result.setRange(distance() * KM2METER);
139 
140  return result;
141  }
142 
143  qreal MarbleAbstractPresenter::distance() const
144  {
145  return distanceFromRadius(radius());
146  }
147 
148  qreal MarbleAbstractPresenter::distanceFromRadius(qreal radius) const
149  {
150  // Due to Marble's orthographic projection ("we have no focus")
151  // it's actually not possible to calculate a "real" distance.
152  // Additionally the viewing angle of the earth doesn't adjust to
153  // the window's size.
154  //
155  // So the only possible workaround is to come up with a distance
156  // definition which gives a reasonable approximation of
157  // reality. Therefore we assume that the average window width
158  // (about 800 pixels) equals the viewing angle of a human being.
159 
160  return (model()->planet()->radius() * 0.4
161  / radius / tan(0.5 * m_viewAngle * DEG2RAD));
162  }
163 
164  qreal MarbleAbstractPresenter::radiusFromDistance(qreal distance) const
165  {
166  return model()->planet()->radius() /
167  (distance * tan(0.5 * m_viewAngle * DEG2RAD) / 0.4 );
168  }
169 
170  int MarbleAbstractPresenter::polarity() const
171  {
172  return map()->viewport()->polarity();
173  }
174 
175  int MarbleAbstractPresenter::zoom() const
176  {
177  return m_logzoom;
178  }
179 
180  int MarbleAbstractPresenter::minimumZoom() const
181  {
182  return map()->minimumZoom();
183  }
184 
185  int MarbleAbstractPresenter::maximumZoom() const
186  {
187  return map()->maximumZoom();
188  }
189 
190  void MarbleAbstractPresenter::setZoom(int newZoom, FlyToMode mode)
191  {
192  // It won't fly anyway. So we should do everything to keep the zoom value.
193  if (!m_animationsEnabled || mode == Instant)
194  {
195  // Check for under and overflow.
196  if (newZoom < minimumZoom())
197  newZoom = minimumZoom();
198  else if (newZoom > maximumZoom())
199  newZoom = maximumZoom();
200 
201  // Prevent infinite loops.
202  if (newZoom == m_logzoom)
203  return;
204 
205  map()->setRadius(radius(newZoom));
206  m_logzoom = newZoom;
207 
208  emit zoomChanged(m_logzoom);
209  emit distanceChanged(distanceString());
210  emit updateRequired();
211  }
212  else
213  {
214  GeoDataLookAt target = lookAt();
215  target.setRange(KM2METER * distanceFromZoom(newZoom));
216  flyTo(target, mode);
217  }
218  }
219 
220  void MarbleAbstractPresenter::zoomView(int zoom, FlyToMode mode)
221  {
222  setZoom(zoom, mode);
223  }
224 
225  void MarbleAbstractPresenter::zoomViewBy(int zoomStep, FlyToMode mode)
226  {
227  setZoom(zoom() + zoomStep, mode);
228  }
229 
230  void MarbleAbstractPresenter::zoomIn(FlyToMode mode)
231  {
232  if (map()->tileZoomLevel() < 0)
233  {
234  zoomViewBy(m_zoomStep, mode);
235  }
236  else
237  {
238  int radiusVal = map()->preferredRadiusCeil(map()->radius() * 1.05);
239  radiusVal = qMax<int>(radius(minimumZoom()), qMin<int>(radiusVal, radius(maximumZoom())));
240 
241  GeoDataLookAt target = lookAt();
242  target.setRange(KM2METER * distanceFromRadius(radiusVal));
243 
244  flyTo(target, mode);
245  }
246  }
247 
248  void MarbleAbstractPresenter::zoomOut(FlyToMode mode)
249  {
250  if (map()->tileZoomLevel() <= 0)
251  {
252  zoomViewBy(-m_zoomStep, mode);
253  }
254  else
255  {
256  int radiusVal = map()->preferredRadiusFloor(map()->radius() * 0.95);
257  radiusVal = qMax<int>(radius(minimumZoom()), qMin<int>(radiusVal, radius(maximumZoom())));
258 
259  GeoDataLookAt target = lookAt();
260  target.setRange(KM2METER * distanceFromRadius(radiusVal));
261 
262  flyTo(target, mode);
263  }
264  }
265 
266  qreal MarbleAbstractPresenter::distanceFromZoom(qreal zoom) const
267  {
268  return distanceFromRadius(radius(zoom));
269  }
270 
271  qreal MarbleAbstractPresenter::zoomFromDistance(qreal distance) const
272  {
273  return zoom(radiusFromDistance(distance));
274  }
275 
276  void MarbleAbstractPresenter::goHome(FlyToMode mode)
277  {
278  qreal homeLon = 0;
279  qreal homeLat = 0;
280  int homeZoom = 0;
281  model()->home(homeLon, homeLat, homeZoom);
282 
283  GeoDataLookAt target;
284  target.setLongitude(homeLon, GeoDataCoordinates::Degree);
285  target.setLatitude(homeLat, GeoDataCoordinates::Degree);
286  target.setRange(1000 * distanceFromZoom(homeZoom));
287 
288  flyTo(target, mode);
289  }
290 
291  void MarbleAbstractPresenter::moveByStep(int stepsRight, int stepsDown, FlyToMode mode)
292  {
293  int polarity = map()->viewport()->polarity();
294  qreal left = polarity * stepsRight * moveStep();
295  qreal down = stepsDown * moveStep();
296  rotateBy(left, down, mode);
297  }
298 
299  qreal MarbleAbstractPresenter::moveStep() const
300  {
301  int width = map()->width();
302  int height = map()->height();
303 
304  if (radius() < qSqrt((qreal)(width * width + height * height)))
305  return 180.0 * 0.1;
306  else
307  return 180.0 * qAtan((qreal)width
308  / (qreal)(2 * radius())) * 0.2;
309  }
310 
311  int MarbleAbstractPresenter::radius() const
312  {
313  return map()->radius();
314  }
315 
316  void MarbleAbstractPresenter::setRadius(int radiusVal)
317  {
318  Q_ASSERT(radiusVal >= 0);
319  bool adjustRadius = radiusVal != map()->radius();
320 
321  qreal const zoomVal = zoom(radiusVal);
322 
323  // Prevent exceeding zoom range
324  if (zoomVal < minimumZoom())
325  {
326  radiusVal = radius(minimumZoom());
327  adjustRadius = true;
328  }
329  else if (zoomVal > maximumZoom())
330  {
331  radiusVal = radius(maximumZoom());
332  adjustRadius = true;
333  }
334 
335  if (adjustRadius)
336  {
337  map()->setRadius(radiusVal);
338  m_logzoom = qRound(zoomVal);
339 
340  emit zoomChanged(m_logzoom);
341  emit distanceChanged(distanceString());
342  emit updateRequired();
343  }
344  }
345 
346 
347  //Moved from MarbleWidgetInputHandlerPrivate - fits more here now
348  void MarbleAbstractPresenter::zoomAt(const QPoint &pos, qreal newDistance)
349  {
350  Q_ASSERT(newDistance > 0.0);
351 
352  qreal destLat;
353  qreal destLon;
354  if (!map()->geoCoordinates(pos.x(), pos.y(), destLon, destLat, GeoDataCoordinates::Degree))
355  {
356  return;
357  }
358 
359  ViewportParams* now = map()->viewport();
360  qreal x(0), y(0);
361  if (!now->screenCoordinates(destLon * DEG2RAD, destLat * DEG2RAD, x, y))
362  {
363  return;
364  }
365 
366  ViewportParams soon;
367  soon.setProjection(now->projection());
368  soon.centerOn(now->centerLongitude(), now->centerLatitude());
369  soon.setSize(now->size());
370 
371  qreal newRadius = radiusFromDistance(newDistance);
372  soon.setRadius(newRadius);
373 
374  qreal mouseLon, mouseLat;
375  if (!soon.geoCoordinates(int(x), int(y), mouseLon, mouseLat, GeoDataCoordinates::Degree ))
376  {
377  return;
378  }
379 
380  const qreal lon = destLon - (mouseLon - map()->centerLongitude());
381  const qreal lat = destLat - (mouseLat - map()->centerLatitude());
382 
383  GeoDataLookAt lookAt;
384  lookAt.setLongitude(lon, GeoDataCoordinates::Degree);
385  lookAt.setLatitude(lat, GeoDataCoordinates::Degree);
386  lookAt.setAltitude(0.0);
387  lookAt.setRange(newDistance * KM2METER);
388 
389  map()->viewport()->setFocusPoint(GeoDataCoordinates(destLon, destLat, 0, GeoDataCoordinates::Degree));
390  flyTo(lookAt, Linear);
391  }
392 
393  void MarbleAbstractPresenter::moveTo(const QPoint &pos, qreal factor)
394  {
395  Q_ASSERT(factor > 0.0);
396 
397  qreal destLat;
398  qreal destLon;
399  map()->geoCoordinates(pos.x(), pos.y(), destLon, destLat, GeoDataCoordinates::Radian);
400 
401  GeoDataLookAt lookAt;
402  lookAt.setLongitude(destLon);
403  lookAt.setLatitude(destLat);
404  lookAt.setAltitude(0.0);
405  lookAt.setRange(distance() * factor * KM2METER);
406 
407  flyTo(lookAt);
408  }
409 
410  void MarbleAbstractPresenter::centerOn(const qreal lon, const qreal lat, bool animated)
411  {
412  GeoDataCoordinates target(lon, lat, 0.0, GeoDataCoordinates::Degree);
413  centerOn(target, animated);
414  }
415 
416  void MarbleAbstractPresenter::centerOn(const GeoDataCoordinates &position, bool animated)
417  {
418  GeoDataLookAt target = lookAt();
419  target.setCoordinates(position);
420  flyTo(target, animated ? Automatic : Instant);
421  }
422 
423  void MarbleAbstractPresenter::centerOn(const GeoDataLatLonBox &box, bool animated)
424  {
425  if (box.isEmpty())
426  {
427  return;
428  }
429 
430  int newRadius = radius();
431  ViewportParams* viewparams = map()->viewport();
432  //prevent divide by zero
433  if(box.height() && box.width())
434  {
435  //work out the needed zoom level
436  int const horizontalRadius = ( 0.25 * M_PI ) * (viewparams->height() / box.height());
437  int const verticalRadius = ( 0.25 * M_PI ) * (viewparams->width() / box.width());
438  newRadius = qMin<int>(horizontalRadius, verticalRadius );
439  newRadius = qMax<int>(radius(minimumZoom()), qMin<int>(newRadius, radius(maximumZoom())));
440  }
441 
442  //move the map
443  GeoDataLookAt target;
444  target.setCoordinates(box.center());
445  target.setAltitude(box.center().altitude());
446  target.setRange(KM2METER * distanceFromRadius(newRadius));
447  flyTo(target, animated ? Automatic : Instant);
448  }
449 
450  void MarbleAbstractPresenter::centerOn(const GeoDataPlacemark& placemark, bool animated)
451  {
452  const GeoDataLookAt *lookAt(placemark.lookAt());
453  if (lookAt)
454  {
455  flyTo(*lookAt, animated ? Automatic : Instant);
456  }
457  else
458  {
459  bool icon;
460  GeoDataCoordinates coords = placemark.coordinate(model()->clock()->dateTime(), &icon);
461  if (icon)
462  {
463  centerOn(coords, animated);
464  }
465  else
466  {
467  centerOn(placemark.geometry()->latLonAltBox(), animated);
468  }
469  }
470  }
471 
472  void MarbleAbstractPresenter::setCenterLatitude(qreal lat, FlyToMode mode)
473  {
474  centerOn(centerLongitude(), lat, mode);
475  }
476 
477  void MarbleAbstractPresenter::setCenterLongitude(qreal lon, FlyToMode mode)
478  {
479  centerOn(lon, centerLatitude(), mode);
480  }
481 
482  qreal MarbleAbstractPresenter::centerLatitude() const
483  {
484  return map()->centerLatitude();
485  }
486 
487  qreal MarbleAbstractPresenter::centerLongitude() const
488  {
489  return map()->centerLongitude();
490  }
491 
492  ViewContext MarbleAbstractPresenter::viewContext() const
493  {
494  return map()->viewContext();
495  }
496 
497  void MarbleAbstractPresenter::setViewContext(ViewContext viewContext)
498  {
499  if (map()->viewContext() != viewContext)
500  {
501  const MapQuality oldQuality = map()->mapQuality();
502  map()->setViewContext(viewContext);
503 
504  //TODO - set view context for routing layer
505  //m_routingLayer->setViewContext( viewContext );
506 
507  if (map()->mapQuality() != oldQuality)
508  {
509  emit updateRequired();
510  }
511  }
512  }
513 
514  bool MarbleAbstractPresenter::animationsEnabled() const
515  {
516  return m_animationsEnabled;
517  }
518 
519  void MarbleAbstractPresenter::setAnimationsEnabled(bool enabled)
520  {
521  m_animationsEnabled = enabled;
522  }
523 
524  int MarbleAbstractPresenter::logzoom() const
525  {
526  return m_logzoom;
527  }
528 
529  void MarbleAbstractPresenter::setLogzoom(int value)
530  {
531  m_logzoom = value;
532  }
533 
534  int MarbleAbstractPresenter::zoomStep() const
535  {
536  return m_zoomStep;
537  }
538 
539  qreal MarbleAbstractPresenter::viewAngle() const
540  {
541  return m_viewAngle;
542  }
543 
544  MarbleMap* MarbleAbstractPresenter::map()
545  {
546  return &m_map;
547  }
548 
549  const MarbleMap* MarbleAbstractPresenter::map() const
550  {
551  return &m_map;
552  }
553 
554  MarbleModel* MarbleAbstractPresenter::model()
555  {
556  return &m_model;
557  }
558 
559  const MarbleModel* MarbleAbstractPresenter::model() const
560  {
561  return &m_model;
562  }
563 
564  ViewportParams* MarbleAbstractPresenter::viewport()
565  {
566  return map()->viewport();
567  }
568 
569  const ViewportParams* MarbleAbstractPresenter::viewport() const
570  {
571  return map()->viewport();
572  }
573 
574  void MarbleAbstractPresenter::setDistance(qreal newDistance)
575  {
576  qreal minDistance = 0.001;
577 
578  if (newDistance <= minDistance)
579  {
580  mDebug() << "Invalid distance: 0 m";
581  newDistance = minDistance;
582  }
583 
584  int newRadius = radiusFromDistance(newDistance);
585  setRadius(newRadius);
586  }
587 
588  void MarbleAbstractPresenter::setSelection(const QRect& region)
589  {
590  QPoint tl = region.topLeft();
591  QPoint br = region.bottomRight();
592  mDebug() << "Selection region: (" << tl.x() << ", " << tl.y() << ") ("
593  << br.x() << ", " << br.y() << ")" << endl;
594 
595  GeoDataLatLonAltBox box = viewport()->latLonAltBox(region);
596 
597  // NOTE: coordinates as lon1, lat1, lon2, lat2 (or West, North, East, South)
598  // as left/top, right/bottom rectangle.
599  QList<double> coordinates;
600  coordinates << box.west(GeoDataCoordinates::Degree) << box.north(GeoDataCoordinates::Degree)
601  << box.east(GeoDataCoordinates::Degree) << box.south(GeoDataCoordinates::Degree);
602 
603  mDebug() << "West: " << coordinates[0] << " North: " << coordinates[1]
604  << " East: " << coordinates[2] << " South: " << coordinates[3] << endl;
605 
606  emit regionSelected(coordinates);
607  }
608 
609 }
610 
611 #include "MarbleAbstractPresenter.moc"
612 
Marble::GeoDataCoordinates::Unit
Unit
enum used constructor to specify the units used
Definition: GeoDataCoordinates.h:64
Marble::MarbleAbstractPresenter::zoomOut
void zoomOut(FlyToMode mode=Automatic)
Definition: MarbleAbstractPresenter.cpp:248
Marble::MarbleAbstractPresenter::moveStep
qreal moveStep() const
Definition: MarbleAbstractPresenter.cpp:299
Marble::MarbleAbstractPresenter::centerOn
void centerOn(const qreal lon, const qreal lat, bool animated=false)
Definition: MarbleAbstractPresenter.cpp:410
Quaternion.h
Marble::GeoDataLatLonBox::height
qreal height(GeoDataCoordinates::Unit unit=GeoDataCoordinates::Radian) const
Get the height of the latitude interval.
Definition: GeoDataLatLonBox.cpp:255
Marble::GeoDataPlacemark::lookAt
const GeoDataLookAt * lookAt() const
Returns GeoDataLookAt object if lookAt is setup earlier otherwise It will convert GeoDataCoordinates ...
Definition: GeoDataPlacemark.cpp:162
Marble::ViewportParams::latLonAltBox
GeoDataLatLonAltBox latLonAltBox(const QRect &screenRect) const
Definition: ViewportParams.cpp:317
Marble::GeoDataCoordinates
A 3d point representation.
Definition: GeoDataCoordinates.h:52
Marble::MarbleAbstractPresenter::updateRequired
void updateRequired()
Marble::Automatic
A sane value is chosen automatically depending on animation settings and the action.
Definition: MarbleGlobal.h:174
Marble::MarbleAbstractPresenter::viewport
ViewportParams * viewport()
Definition: MarbleAbstractPresenter.cpp:564
Marble::GeoDataCoordinates::Radian
Definition: GeoDataCoordinates.h:65
Marble::GeoDataLatLonBox::isEmpty
virtual bool isEmpty() const
Indicates whether the bounding box is not initialised (and contains nothing).
Definition: GeoDataLatLonBox.cpp:768
Marble::MarbleAbstractPresenter::zoomAt
void zoomAt(const QPoint &pos, qreal newDistance)
Definition: MarbleAbstractPresenter.cpp:348
Marble::GeoDataLatLonBox::width
qreal width(GeoDataCoordinates::Unit unit=GeoDataCoordinates::Radian) const
Get the width of the longitude interval.
Definition: GeoDataLatLonBox.cpp:236
Marble::ViewportParams::size
QSize size() const
Definition: ViewportParams.cpp:260
Marble::MarbleLocale::NauticalSystem
Definition: MarbleLocale.h:40
Marble::MarbleLocale::measurementSystem
MarbleLocale::MeasurementSystem measurementSystem() const
Definition: MarbleLocale.cpp:45
Marble::ViewportParams::setProjection
void setProjection(Projection newProjection)
Definition: ViewportParams.cpp:139
Marble::MarbleMap::centerLatitude
qreal centerLatitude() const
Return the latitude of the center point.
Definition: MarbleMap.cpp:406
Marble::MarblePhysics::flyTo
void flyTo(const GeoDataLookAt &target, FlyToMode mode=Instant)
Initiate an animation to the target according to the given mode.
Definition: MarblePhysics.cpp:123
Marble::GeoDataLookAt::longitude
qreal longitude(GeoDataCoordinates::Unit unit=GeoDataCoordinates::Radian) const
retrieves the longitude of the GeoDataLookAt object use the unit parameter to switch between Radian a...
Definition: GeoDataLookAt.cpp:104
Marble::ViewportParams::geoCoordinates
bool geoCoordinates(const int x, const int y, qreal &lon, qreal &lat, GeoDataCoordinates::Unit unit=GeoDataCoordinates::Degree) const
Get the earth coordinates corresponding to a pixel in the map.
Definition: ViewportParams.cpp:391
Marble::MarbleAbstractPresenter::rotateBy
void rotateBy(const qreal deltaLon, const qreal deltaLat, FlyToMode mode=Instant)
Definition: MarbleAbstractPresenter.cpp:57
Marble::MarbleAbstractPresenter::setRadius
void setRadius(int radius)
Definition: MarbleAbstractPresenter.cpp:316
Marble::MarbleMap::radius
int radius() const
Return the radius of the globe in pixels.
Definition: MarbleMap.cpp:364
QChar
Marble::KM2METER
const qreal KM2METER
Definition: MarbleGlobal.h:223
Marble::ViewContext
ViewContext
This enum is used to choose context in which map quality gets used.
Definition: MarbleGlobal.h:74
QRect::bottomRight
QPoint bottomRight() const
Marble::MarbleMap::preferredRadiusFloor
int preferredRadiusFloor(int radius)
Definition: MarbleMap.cpp:391
Marble::MarbleAbstractPresenter::model
MarbleModel * model()
Definition: MarbleAbstractPresenter.cpp:554
Marble::MarbleAbstractPresenter::moveTo
void moveTo(const QPoint &pos, qreal factor)
Definition: MarbleAbstractPresenter.cpp:393
Marble::GeoDataPlacemark::coordinate
GeoDataCoordinates coordinate(const QDateTime &dateTime=QDateTime(), bool *iconAtCoordinates=0) const
Return the coordinates of the placemark at time dateTime as a GeoDataCoordinates. ...
Definition: GeoDataPlacemark.cpp:172
Marble::MarbleAbstractPresenter::viewAngle
qreal viewAngle() const
Definition: MarbleAbstractPresenter.cpp:539
Marble::MarbleAbstractPresenter::distanceChanged
void distanceChanged(const QString &distanceString)
Marble::ViewportParams::setRadius
void setRadius(int radius)
Change the radius of the planet.
Definition: ViewportParams.cpp:200
Marble::MarbleAbstractPresenter::setCenterLongitude
void setCenterLongitude(qreal lon, FlyToMode mode)
Definition: MarbleAbstractPresenter.cpp:477
Marble::ViewportParams::projection
Projection projection() const
Definition: ViewportParams.cpp:129
Marble::MapQuality
MapQuality
This enum is used to choose the map quality shown in the view.
Definition: MarbleGlobal.h:82
QPoint
Marble::MarbleAbstractPresenter::distanceFromRadius
qreal distanceFromRadius(qreal radius) const
Definition: MarbleAbstractPresenter.cpp:148
Planet.h
Marble::MarbleAbstractPresenter::radius
int radius() const
Definition: MarbleAbstractPresenter.cpp:311
Marble::MarbleAbstractPresenter::animationsEnabled
bool animationsEnabled() const
Definition: MarbleAbstractPresenter.cpp:514
Marble::MarbleModel::planet
const Planet * planet() const
Returns the planet object for the current map.
Definition: MarbleModel.cpp:644
Marble::MarbleAbstractPresenter::goHome
void goHome(FlyToMode mode=Automatic)
Definition: MarbleAbstractPresenter.cpp:276
Marble::GeoDataLookAt::setLongitude
void setLongitude(qreal longitude, GeoDataCoordinates::Unit unit=GeoDataCoordinates::Radian)
set the longitude in a GeoDataLookAt object
Definition: GeoDataLookAt.cpp:98
MarbleDebug.h
Marble::MarbleLocale::MeasurementSystem
MeasurementSystem
Definition: MarbleLocale.h:37
QObject::tr
QString tr(const char *sourceText, const char *disambiguation, int n)
Marble::MarbleMap::setViewContext
void setViewContext(ViewContext viewContext)
Definition: MarbleMap.cpp:317
Marble::MarbleMap::viewport
ViewportParams * viewport()
Definition: MarbleMap.cpp:288
Marble::GeoDataLookAt::range
qreal range() const
Retrieve the distance (in meters) between the camera and the object looked at.
Definition: GeoDataLookAt.cpp:120
Marble::GeoDataCoordinates::Degree
Definition: GeoDataCoordinates.h:66
Marble::ViewportParams::height
int height() const
Definition: ViewportParams.cpp:255
QPoint::x
int x() const
QPoint::y
int y() const
Marble::MarbleAbstractPresenter::maximumZoom
int maximumZoom() const
Definition: MarbleAbstractPresenter.cpp:185
Marble::MarbleAbstractPresenter::moveByStep
void moveByStep(int stepsRight, int stepsDown, FlyToMode mode=Automatic)
Rotate the globe in the given direction in discrete steps.
Definition: MarbleAbstractPresenter.cpp:291
Marble::GeoDataPlacemark::geometry
GeoDataGeometry * geometry()
The geometry of the GeoDataPlacemark is to be rendered to the marble map along with the icon at the c...
Definition: GeoDataPlacemark.cpp:152
Marble::MarbleAbstractPresenter::~MarbleAbstractPresenter
virtual ~MarbleAbstractPresenter()
Definition: MarbleAbstractPresenter.cpp:43
Marble::GeoDataCoordinates::altitude
qreal altitude() const
return the altitude of the Point in meters
Definition: GeoDataCoordinates.cpp:1197
Marble::MarbleMap::width
int width() const
Definition: MarbleMap.cpp:354
Marble::GeoDataLatLonBox::north
qreal north(GeoDataCoordinates::Unit unit=GeoDataCoordinates::Radian) const
Get the northern boundary of the bounding box.
Definition: GeoDataLatLonBox.cpp:93
Marble::GeoDataLatLonBox::east
qreal east(GeoDataCoordinates::Unit unit=GeoDataCoordinates::Radian) const
Get the eastern boundary of the bounding box.
Definition: GeoDataLatLonBox.cpp:135
QRect
Marble::ViewportParams::setFocusPoint
void setFocusPoint(const GeoDataCoordinates &focusPoint)
Change the point of focus, overridding any previously set focus point.
Definition: ViewportParams.cpp:427
Marble::MarbleMap::maximumZoom
int maximumZoom() const
return the minimum zoom value for the current map theme.
Definition: MarbleMap.cpp:430
Marble::ViewportParams::width
int width() const
Definition: ViewportParams.cpp:250
Marble::MarbleAbstractPresenter::zoomChanged
void zoomChanged(int zoom)
Marble::GeoDataLookAt::setRange
void setRange(qreal range)
Change the distance (in meters) between the camera and the object looked at.
Definition: GeoDataLookAt.cpp:114
QObject
Marble::MarbleAbstractPresenter::flyTo
void flyTo(const GeoDataLookAt &newLookAt, FlyToMode mode=Automatic)
Definition: MarbleAbstractPresenter.cpp:77
Marble::MarbleAbstractPresenter::setAnimationsEnabled
void setAnimationsEnabled(bool enabled)
Definition: MarbleAbstractPresenter.cpp:519
Marble::MarbleModel::home
void home(qreal &lon, qreal &lat, int &zoom) const
get the home point
Definition: MarbleModel.cpp:446
Marble::MarbleAbstractPresenter::radiusFromDistance
qreal radiusFromDistance(qreal distance) const
Definition: MarbleAbstractPresenter.cpp:164
Marble::radius
static qreal radius(qreal zoom)
Definition: thumbnailer.cpp:99
Marble::MarbleMap::setRadius
void setRadius(int radius)
Set the radius of the globe in pixels.
Definition: MarbleMap.cpp:369
Marble::ViewportParams::screenCoordinates
bool screenCoordinates(const qreal lon, const qreal lat, qreal &x, qreal &y) const
Get the screen coordinates corresponding to geographical coordinates in the map.
Definition: ViewportParams.cpp:357
Marble::MarbleAbstractPresenter::polarity
int polarity() const
Definition: MarbleAbstractPresenter.cpp:170
Marble::GeoDataLookAt::latitude
qreal latitude(GeoDataCoordinates::Unit unit=GeoDataCoordinates::Radian) const
retrieves the latitude of the GeoDataLookAt object use the unit parameter to switch between Radian an...
Definition: GeoDataLookAt.cpp:93
Marble::ViewportParams::centerOn
void centerOn(qreal lon, qreal lat)
Definition: ViewportParams.cpp:210
Marble::MarbleAbstractPresenter::centerLatitude
qreal centerLatitude() const
Definition: MarbleAbstractPresenter.cpp:482
Marble::MarbleGlobal::locale
MarbleLocale * locale() const
Definition: MarbleGlobal.cpp:43
QString
QList
MarbleLocale.h
GeoDataPlacemark.h
Marble::ViewportParams::polarity
int polarity() const
Definition: ViewportParams.cpp:150
Marble::DEG2RAD
const qreal DEG2RAD
Definition: MarbleGlobal.h:219
Marble::MarbleMap::minimumZoom
int minimumZoom() const
return the minimum zoom value for the current map theme.
Definition: MarbleMap.cpp:422
Marble::METER2KM
const qreal METER2KM
Definition: MarbleGlobal.h:224
MarbleAbstractPresenter.h
Marble::MarbleMap
A class that can paint a view of the earth.
Definition: MarbleMap.h:91
Marble::ViewportParams
A public class that controls what is visible in the viewport of a Marble map.
Definition: ViewportParams.h:44
Marble::MarbleMap::geoCoordinates
bool geoCoordinates(int x, int y, qreal &lon, qreal &lat, GeoDataCoordinates::Unit=GeoDataCoordinates::Degree) const
Get the earth coordinates corresponding to a pixel in the map.
Definition: MarbleMap.cpp:686
Marble::GeoDataLatLonBox::center
virtual GeoDataCoordinates center() const
returns the center of this box
Definition: GeoDataLatLonBox.cpp:276
Marble::MarbleAbstractPresenter::setSelection
void setSelection(const QRect &region)
Definition: MarbleAbstractPresenter.cpp:588
Marble::KM2MI
const qreal KM2MI
Definition: MarbleGlobal.h:203
Marble::MarbleAbstractPresenter::minimumZoom
int minimumZoom() const
Definition: MarbleAbstractPresenter.cpp:180
MarbleClock.h
Marble::MarbleMap::height
int height() const
Definition: MarbleMap.cpp:359
ViewportParams.h
This file contains the headers for ViewportParams.
Marble::MarbleGlobal::getInstance
static MarbleGlobal * getInstance()
Definition: MarbleGlobal.cpp:37
Marble::GeoDataLookAt
Definition: GeoDataLookAt.h:23
Marble::ViewportParams::centerLatitude
qreal centerLatitude() const
Definition: ViewportParams.cpp:294
Marble::MarbleAbstractPresenter::zoomFromDistance
qreal zoomFromDistance(qreal distance) const
Definition: MarbleAbstractPresenter.cpp:271
Marble::FlyToMode
FlyToMode
Describes possible flight mode (interpolation between source and target camera positions) ...
Definition: MarbleGlobal.h:173
Marble::MarbleLocale::MetricSystem
Definition: MarbleLocale.h:38
Marble::MarbleAbstractPresenter::viewContext
ViewContext viewContext() const
Definition: MarbleAbstractPresenter.cpp:492
Marble::MarbleAbstractPresenter::distanceFromZoom
qreal distanceFromZoom(qreal zoom) const
Definition: MarbleAbstractPresenter.cpp:266
Marble::GeoDataLatLonBox::west
qreal west(GeoDataCoordinates::Unit unit=GeoDataCoordinates::Radian) const
Get the western boundary of the bounding box.
Definition: GeoDataLatLonBox.cpp:156
Marble::MarbleModel
The data model (not based on QAbstractModel) for a MarbleWidget.
Definition: MarbleModel.h:97
Marble::MarbleMap::centerLongitude
qreal centerLongitude() const
Return the longitude of the center point.
Definition: MarbleMap.cpp:414
Marble::Planet::radius
qreal radius() const
the radius of the planet, in metres
Definition: Planet.cpp:251
Marble::MarbleAbstractPresenter::MarbleAbstractPresenter
MarbleAbstractPresenter()
Definition: MarbleAbstractPresenter.cpp:31
Marble::MarbleAbstractPresenter::setZoom
void setZoom(int newZoom, FlyToMode mode=Instant)
Definition: MarbleAbstractPresenter.cpp:190
Marble::MarbleAbstractPresenter::distance
qreal distance() const
Definition: MarbleAbstractPresenter.cpp:143
Marble::ViewportParams::centerLongitude
qreal centerLongitude() const
Definition: ViewportParams.cpp:289
Marble::MarbleAbstractPresenter::logzoom
int logzoom() const
Definition: MarbleAbstractPresenter.cpp:524
Marble::Quaternion
Definition: Quaternion.h:41
Marble::MarbleAbstractPresenter::zoomIn
void zoomIn(FlyToMode mode=Automatic)
Definition: MarbleAbstractPresenter.cpp:230
Marble::MarbleAbstractPresenter::map
MarbleMap * map()
Definition: MarbleAbstractPresenter.cpp:544
Marble::GeoDataLatLonBox::south
qreal south(GeoDataCoordinates::Unit unit=GeoDataCoordinates::Radian) const
Get the southern boundary of the bounding box.
Definition: GeoDataLatLonBox.cpp:114
Marble::ViewportParams::planetAxis
Quaternion planetAxis() const
Definition: ViewportParams.cpp:240
Marble::MarbleAbstractPresenter::zoomView
void zoomView(int zoom, FlyToMode mode=Instant)
Definition: MarbleAbstractPresenter.cpp:220
QRect::topLeft
QPoint topLeft() const
Marble::MarbleAbstractPresenter::zoomViewBy
void zoomViewBy(int zoomStep, FlyToMode mode=Instant)
Definition: MarbleAbstractPresenter.cpp:225
M_PI
#define M_PI
Definition: GeoDataCoordinates.h:26
Marble::MarbleAbstractPresenter::setDistance
void setDistance(qreal newDistance)
Definition: MarbleAbstractPresenter.cpp:574
Marble::MarbleGlobal
Definition: MarbleGlobal.h:277
Marble::MarbleLocale::ImperialSystem
Definition: MarbleLocale.h:39
Marble::Instant
Change camera position immediately (no interpolation)
Definition: MarbleGlobal.h:175
Marble::KM2NM
const qreal KM2NM
Definition: MarbleGlobal.h:207
Marble::GeoDataGeometry::latLonAltBox
virtual const GeoDataLatLonAltBox & latLonAltBox() const
Definition: GeoDataGeometry.cpp:122
Marble::MarbleAbstractPresenter::zoom
int zoom() const
Definition: MarbleAbstractPresenter.cpp:175
Marble::MarbleMap::centerOn
void centerOn(const qreal lon, const qreal lat)
Center the view on a geographical point.
Definition: MarbleMap.cpp:643
Marble::MarbleAbstractPresenter::centerLongitude
qreal centerLongitude() const
Definition: MarbleAbstractPresenter.cpp:487
Marble::MarbleAbstractPresenter::zoomStep
int zoomStep() const
Definition: MarbleAbstractPresenter.cpp:534
Marble::Quaternion::getSpherical
void getSpherical(qreal &lon, qreal &lat) const
Definition: Quaternion.cpp:48
Marble::GeoDataLookAt::setAltitude
void setAltitude(qreal altitude)
set the altitude in a GeoDataLookAt object
Definition: GeoDataLookAt.cpp:76
Marble::MarbleAbstractPresenter::setLogzoom
void setLogzoom(int value)
Definition: MarbleAbstractPresenter.cpp:529
Marble::MarbleMap::viewContext
ViewContext viewContext() const
Definition: MarbleMap.cpp:331
Marble::MarbleAbstractPresenter::regionSelected
void regionSelected(const QList< double > &)
This signal is emitted when a new rectangle region is selected over the map The list of double values...
Marble::MarbleAbstractPresenter::setCenterLatitude
void setCenterLatitude(qreal lat, FlyToMode mode)
Definition: MarbleAbstractPresenter.cpp:472
Marble::MarbleAbstractPresenter::lookAt
GeoDataLookAt lookAt() const
Definition: MarbleAbstractPresenter.cpp:131
QString::arg
QString arg(qlonglong a, int fieldWidth, int base, const QChar &fillChar) const
Marble::GeoDataPlacemark
a class representing a point of interest on the map
Definition: GeoDataPlacemark.h:54
Marble::mDebug
QDebug mDebug()
a function to replace qDebug() in Marble library code
Definition: MarbleDebug.cpp:36
Marble::Quaternion::normalize
void normalize()
Definition: Quaternion.cpp:64
Marble::GeoDataLatLonAltBox
A class that defines a 3D bounding box for geographic data.
Definition: GeoDataLatLonAltBox.h:49
Marble::MarbleMap::preferredRadiusCeil
int preferredRadiusCeil(int radius)
Definition: MarbleMap.cpp:382
Marble::ViewportParams::setSize
void setSize(QSize newSize)
Definition: ViewportParams.cpp:276
Marble::GeoDataLookAt::setLatitude
void setLatitude(qreal latitude, GeoDataCoordinates::Unit unit=GeoDataCoordinates::Radian)
set the latitude in a GeoDataLookAt object
Definition: GeoDataLookAt.cpp:87
Marble::Linear
Linear interpolation of lon, lat and distance to ground.
Definition: MarbleGlobal.h:176
Marble::GeoDataLookAt::setCoordinates
void setCoordinates(const GeoDataCoordinates &coordinates)
set the GeoDataCoordinates object
Definition: GeoDataLookAt.cpp:66
Marble::GeoDataLatLonBox
A class that defines a 2D bounding box for geographic data.
Definition: GeoDataLatLonBox.h:51
Marble::MarbleAbstractPresenter::distanceString
QString distanceString() const
Definition: MarbleAbstractPresenter.cpp:105
Marble::MarbleAbstractPresenter::setViewContext
void setViewContext(ViewContext viewContext)
Definition: MarbleAbstractPresenter.cpp:497
Marble::MarbleMap::mapQuality
MapQuality mapQuality(ViewContext viewContext) const
Definition: MarbleMap.cpp:307
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:13:40 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

marble

Skip menu "marble"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kdeedu API Reference

Skip menu "kdeedu API Reference"
  • Analitza
  •     lib
  • kalgebra
  • kalzium
  •   libscience
  • kanagram
  • kig
  •   lib
  • klettres
  • marble
  • parley
  • rocs
  •   App
  •   RocsCore
  •   VisualEditor
  •   stepcore

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal