• 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
  • plugins
  • render
  • positionmarker
PositionMarker.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 2007 Andrew Manson <g.real.ate@gmail.com>
9 // Copyright 2009 Eckhart Wörner <ewoerner@kde.org>
10 // Copyright 2010 Thibaut Gridel <tgridel@free.fr>
11 // Copyright 2010 Daniel Marth <danielmarth@gmx.at>
12 //
13 
14 #include "PositionMarker.h"
15 
16 #include "MarbleDebug.h"
17 #include <QRect>
18 #include <qmath.h>
19 #include <QFileDialog>
20 #include <QPushButton>
21 #include <QColorDialog>
22 #include <QTransform>
23 
24 #include <cmath>
25 
26 #include "ui_PositionMarkerConfigWidget.h"
27 #include "MarbleModel.h"
28 #include "MarbleDirs.h"
29 #include "GeoPainter.h"
30 #include "PositionTracking.h"
31 #include "ViewportParams.h"
32 
33 namespace Marble
34 {
35 
36 const int PositionMarker::sm_defaultSizeStep = 2;
37 const float PositionMarker::sm_resizeSteps[] = { 0.25, 0.5, 1.0, 2.0, 4.0 };
38 const int PositionMarker::sm_numResizeSteps = sizeof( sm_resizeSteps ) / sizeof( sm_resizeSteps[0] );
39 
40 PositionMarker::PositionMarker( const MarbleModel *marbleModel )
41  : RenderPlugin( marbleModel ),
42  m_isInitialized( false ),
43  m_useCustomCursor( false ),
44  m_defaultCursorPath( MarbleDirs::path( "svg/track_turtle.svg" ) ),
45  m_lastBoundingBox(),
46  ui_configWidget( 0 ),
47  m_configDialog( 0 ),
48  m_cursorPath( m_defaultCursorPath ),
49  m_cursorSize( 1.0 ),
50  m_accuracyColor( Oxygen::brickRed4 ),
51  m_trailColor( 0, 0, 255 ),
52  m_heading( 0.0 ),
53  m_showTrail ( false )
54 {
55  const bool smallScreen = MarbleGlobal::getInstance()->profiles() & MarbleGlobal::SmallScreen;
56  m_accuracyColor.setAlpha( smallScreen ? 80 : 40 );
57 }
58 
59 PositionMarker::~PositionMarker ()
60 {
61  delete ui_configWidget;
62  delete m_configDialog;
63 }
64 
65 QStringList PositionMarker::renderPosition() const
66 {
67  return QStringList( "HOVERS_ABOVE_SURFACE" );
68 }
69 
70 QString PositionMarker::renderPolicy() const
71 {
72  return "ALWAYS";
73 }
74 
75 QStringList PositionMarker::backendTypes() const
76 {
77  return QStringList( "positionmarker" );
78 }
79 
80 QString PositionMarker::name() const
81 {
82  return tr( "Position Marker" );
83 }
84 
85 QString PositionMarker::guiString() const
86 {
87  return tr( "&Position Marker" );
88 }
89 
90 QString PositionMarker::nameId() const
91 {
92  return QString( "positionMarker" );
93 }
94 
95 QString PositionMarker::version() const
96 {
97  return "1.0";
98 }
99 
100 QString PositionMarker::description() const
101 {
102  return tr( "draws a marker at the current position" );
103 }
104 
105 QString PositionMarker::copyrightYears() const
106 {
107  return "2009, 2010";
108 }
109 
110 QList<PluginAuthor> PositionMarker::pluginAuthors() const
111 {
112  return QList<PluginAuthor>()
113  << PluginAuthor( "Andrew Manson", "g.real.ate@gmail.com" )
114  << PluginAuthor( "Eckhart Woerner", "ewoerner@kde.org" )
115  << PluginAuthor( "Thibaut Gridel", "tgridel@free.fr" )
116  << PluginAuthor( "Daniel Marth", "danielmarth@gmx.at" );
117 }
118 
119 QIcon PositionMarker::icon() const
120 {
121  return QIcon(":/icons/positionmarker.png");
122 }
123 
124 QDialog *PositionMarker::configDialog()
125 {
126  if ( !m_configDialog ) {
127  // Initializing configuration dialog
128  m_configDialog = new QDialog();
129  ui_configWidget = new Ui::PositionMarkerConfigWidget;
130  ui_configWidget->setupUi( m_configDialog );
131  ui_configWidget->m_resizeSlider->setMaximum( sm_numResizeSteps - 1 );
132  readSettings();
133  connect( ui_configWidget->m_buttonBox, SIGNAL(accepted()),
134  SLOT(writeSettings()) );
135  connect( ui_configWidget->m_buttonBox, SIGNAL(rejected()),
136  SLOT(readSettings()) );
137  connect( ui_configWidget->m_buttonBox->button( QDialogButtonBox::RestoreDefaults ), SIGNAL(clicked()),
138  SLOT(restoreDefaultSettings()) );
139  QPushButton *applyButton = ui_configWidget->m_buttonBox->button( QDialogButtonBox::Apply );
140  connect( applyButton, SIGNAL(clicked()),
141  SLOT(writeSettings()) );
142  connect( ui_configWidget->m_fileChooserButton, SIGNAL(clicked()),
143  SLOT(chooseCustomCursor()) );
144  connect( ui_configWidget->m_resizeSlider, SIGNAL(valueChanged(int)),
145  SLOT(resizeCursor(int)) );
146  connect( ui_configWidget->m_acColorChooserButton, SIGNAL(clicked()),
147  SLOT(chooseColor()) );
148  connect( ui_configWidget->m_trailColorChooserButton, SIGNAL(clicked()),
149  SLOT(chooseColor()) );
150  }
151  return m_configDialog;
152 }
153 
154 void PositionMarker::initialize()
155 {
156  if ( marbleModel() ) {
157  connect( marbleModel()->positionTracking(), SIGNAL(gpsLocation(GeoDataCoordinates,qreal)),
158  this, SLOT(setPosition(GeoDataCoordinates)) );
159  m_isInitialized = true;
160  }
161  loadDefaultCursor();
162 }
163 
164 bool PositionMarker::isInitialized() const
165 {
166  return m_isInitialized;
167 }
168 
169 bool PositionMarker::render( GeoPainter *painter,
170  ViewportParams *viewport,
171  const QString& renderPos,
172  GeoSceneLayer * layer )
173 {
174  Q_UNUSED( renderPos )
175  Q_UNUSED( layer )
176 
177  bool const gpsActive = marbleModel()->positionTracking()->positionProviderPlugin() != 0;
178  if ( gpsActive ) {
179  m_lastBoundingBox = viewport->viewLatLonAltBox();
180 
181  if( m_currentPosition != m_previousPosition ) {
182  qreal screenPositionX, screenPositionY;
183  viewport->screenCoordinates( m_currentPosition, screenPositionX, screenPositionY );
184  const GeoDataCoordinates top( m_currentPosition.longitude(), m_currentPosition.latitude()+0.1 );
185  qreal screenTopX, screenTopY;
186  viewport->screenCoordinates( top, screenTopX, screenTopY );
187  qreal const correction = -90.0 + RAD2DEG * atan2( screenPositionY -screenTopY, screenPositionX - screenTopX );
188  const qreal rotation = m_heading + correction;
189 
190  if ( m_useCustomCursor ) {
191  QTransform transform;
192  transform.rotate( rotation );
193  bool const highQuality = painter->mapQuality() == HighQuality || painter->mapQuality() == PrintQuality;
194  Qt::TransformationMode const mode = highQuality ? Qt::SmoothTransformation : Qt::FastTransformation;
195  m_customCursorTransformed = m_customCursor.transformed( transform, mode );
196  } else {
197  // Calculate the scaled arrow shape
198  const QPointF baseX( m_cursorSize, 0.0 );
199  const QPointF baseY( 0.0, m_cursorSize );
200  const QPointF relativeLeft = - ( baseX * 9 ) + ( baseY * 9 );
201  const QPointF relativeRight = ( baseX * 9 ) + ( baseY * 9 );
202  const QPointF relativeTip = - ( baseY * 19.0 );
203  m_arrow = QPolygonF() << QPointF( 0.0, 0.0 ) << relativeLeft << relativeTip << relativeRight;
204 
205  // Rotate the shape according to the current direction and move it to the screen center
206  QMatrix transformation;
207  transformation.translate( screenPositionX, screenPositionY );
208  transformation.rotate( rotation );
209  m_arrow = m_arrow * transformation;
210 
211  m_dirtyRegion = QRegion();
212  m_dirtyRegion += ( m_arrow.boundingRect().toRect() );
213  m_dirtyRegion += ( m_previousArrow.boundingRect().toRect() );
214  }
215 
216  }
217 
218  painter->save();
219 
220  GeoDataAccuracy accuracy = marbleModel()->positionTracking()->accuracy();
221  if ( accuracy.horizontal > 0 && accuracy.horizontal < 1000 ) {
222  // Paint a circle indicating the position accuracy
223  painter->setPen( Qt::transparent );
224  int width = qRound( accuracy.horizontal * viewport->radius() / EARTH_RADIUS );
225  if ( MarbleGlobal::getInstance()->profiles() & MarbleGlobal::SmallScreen ) {
226  int arrowSize = qMax<int>( m_arrow.boundingRect().width(), m_arrow.boundingRect().height() );
227  width = qMax<int>( width, arrowSize + 10 );
228  }
229 
230  painter->setBrush( m_accuracyColor );
231  painter->drawEllipse( m_currentPosition, width, width );
232  }
233 
234  // Draw trail if requested.
235  if( m_showTrail ) {
236  painter->save();
237 
238  // Use selected color to draw trail.
239  painter->setBrush( m_trailColor );
240  painter->setPen( m_trailColor );
241 
242  // we don't draw m_trail[0] which is current position
243  for( int i = 1; i < m_trail.size(); ++i ) {
244  // Get screen coordinates from coordinates on the map.
245  qreal trailPointX, trailPointY;
246  viewport->screenCoordinates( m_trail[i], trailPointX, trailPointY );
247 
248  const int size = ( sm_numTrailPoints - i ) * 3;
249  QRectF trailRect;
250  trailRect.setX( trailPointX - size / 2.0 );
251  trailRect.setY( trailPointY - size / 2.0 );
252  trailRect.setWidth( size );
253  trailRect.setHeight( size );
254 
255  const qreal opacity = 1.0 - 0.15 * ( i - 1 );
256  painter->setOpacity( opacity );
257  painter->drawEllipse( trailRect );
258  }
259 
260  painter->restore();
261  }
262 
263  if( m_useCustomCursor)
264  {
265  painter->drawPixmap( m_currentPosition, m_customCursorTransformed );
266  }
267  else
268  {
269  painter->setPen( Qt::black );
270  painter->setBrush( Qt::white );
271  painter->drawPolygon( m_arrow );
272  }
273 
274  painter->restore();
275  m_previousArrow = m_arrow;
276  }
277  return true;
278 }
279 
280 QHash<QString,QVariant> PositionMarker::settings() const
281 {
282  QHash<QString, QVariant> settings = RenderPlugin::settings();
283 
284  settings.insert( "useCustomCursor", m_useCustomCursor );
285  settings.insert( "cursorPath", m_cursorPath );
286  settings.insert( "cursorSize", m_cursorSize );
287  settings.insert( "acColor", m_accuracyColor );
288  settings.insert( "trailColor", m_trailColor );
289  settings.insert( "showTrail", m_showTrail );
290 
291  return settings;
292 }
293 
294 void PositionMarker::setSettings( const QHash<QString, QVariant> &settings )
295 {
296  RenderPlugin::setSettings( settings );
297 
298  const bool smallScreen = MarbleGlobal::getInstance()->profiles() & MarbleGlobal::SmallScreen;
299  QColor defaultColor = Oxygen::brickRed4;
300  defaultColor.setAlpha( smallScreen ? 80 : 40 );
301 
302  m_useCustomCursor = settings.value( "useCustomCursor", false ).toBool();
303  m_cursorPath = settings.value( "cursorPath", m_defaultCursorPath ).toString();
304  m_cursorSize = settings.value( "cursorSize", 1.0 ).toFloat();
305  loadCustomCursor( m_cursorPath, m_useCustomCursor );
306 
307  m_accuracyColor = settings.value( "acColor", defaultColor ).value<QColor>();
308  m_trailColor = settings.value( "trailColor", QColor( 0, 0, 255 ) ).value<QColor>();
309  m_showTrail = settings.value( "showTrail", false ).toBool();
310 
311  readSettings();
312 }
313 
314 void PositionMarker::readSettings()
315 {
316  if ( !m_configDialog ) {
317  return;
318  }
319 
320  if( m_useCustomCursor )
321  ui_configWidget->m_customCursor->click();
322  else
323  ui_configWidget->m_originalCursor->click();
324 
325  bool found = false;
326  float cursorSize = m_cursorSize;
327  for( int i = 0; i < sm_numResizeSteps && !found; i++ )
328  {
329  if( sm_resizeSteps[i] == cursorSize )
330  {
331  ui_configWidget->m_resizeSlider->setValue( i );
332  found = true;
333  }
334  }
335  if( !found )
336  {
337  ui_configWidget->m_resizeSlider->setValue( sm_defaultSizeStep );
338  cursorSize = sm_resizeSteps[sm_defaultSizeStep];
339  }
340 
341  ui_configWidget->m_sizeLabel->setText( tr( "Cursor Size: %1" ).arg( cursorSize ) );
342  QPalette palette = ui_configWidget->m_acColorChooserButton->palette();
343  palette.setColor( QPalette::Button, m_accuracyColor );
344  ui_configWidget->m_acColorChooserButton->setPalette( palette );
345  palette = ui_configWidget->m_trailColorChooserButton->palette();
346  palette.setColor( QPalette::Button, m_trailColor );
347  ui_configWidget->m_trailColorChooserButton->setPalette( palette );
348  ui_configWidget->m_trailCheckBox->setChecked( m_showTrail );
349 }
350 
351 void PositionMarker::writeSettings()
352 {
353  if ( !m_configDialog ) {
354  return;
355  }
356 
357  m_useCustomCursor = ui_configWidget->m_customCursor->isChecked();
358  m_cursorPath = m_cursorPath;
359  m_cursorSize = sm_resizeSteps[ui_configWidget->m_resizeSlider->value()];
360  m_accuracyColor = m_accuracyColor;
361  m_trailColor = m_trailColor;
362  m_showTrail = ui_configWidget->m_trailCheckBox->isChecked();
363 
364  emit settingsChanged( nameId() );
365 }
366 
367 void PositionMarker::setPosition( const GeoDataCoordinates &position )
368 {
369  m_previousPosition = m_currentPosition;
370  m_currentPosition = position;
371  m_heading = marbleModel()->positionTracking()->direction();
372  // Update the trail
373  m_trail.push_front( m_currentPosition );
374  for( int i = sm_numTrailPoints + 1; i< m_trail.size(); ++i ) {
375  m_trail.pop_back();
376  }
377  if ( m_lastBoundingBox.contains( m_currentPosition ) )
378  {
379  emit repaintNeeded( m_dirtyRegion );
380  }
381 }
382 
383 void PositionMarker::chooseCustomCursor()
384 {
385  QString filename = QFileDialog::getOpenFileName( NULL, tr( "Choose Custom Cursor" ) );
386  if( !filename.isEmpty() )
387  loadCustomCursor( filename, true );
388 }
389 
390 void PositionMarker::loadCustomCursor( const QString& filename, bool useCursor )
391 {
392  m_customCursor = QPixmap( filename ).scaled( 22 * m_cursorSize, 22 * m_cursorSize, Qt::KeepAspectRatio, Qt::SmoothTransformation );
393  if( !m_customCursor.isNull() )
394  {
395  if( m_configDialog )
396  {
397  if( useCursor )
398  ui_configWidget->m_customCursor->click();
399  ui_configWidget->m_fileChooserButton->setIconSize( QSize( m_customCursor.width(), m_customCursor.height() ) );
400  ui_configWidget->m_fileChooserButton->setIcon( QIcon( m_customCursor ) );
401  }
402  m_cursorPath = filename;
403  }
404  else
405  {
406  mDebug() << "Unable to load custom cursor from " << filename << ". "
407  << "The default cursor will be used instead";
408  if ( m_configDialog )
409  ui_configWidget->m_fileChooserButton->setIcon( QIcon( m_defaultCursor ) );
410  m_customCursor = m_defaultCursor;
411  m_cursorPath = m_defaultCursorPath;
412  }
413 }
414 
415 void PositionMarker::loadDefaultCursor()
416 {
417  m_defaultCursor = QPixmap( m_defaultCursorPath ).scaled( 22 * m_cursorSize, 22 * m_cursorSize, Qt::KeepAspectRatio, Qt::SmoothTransformation );
418 }
419 
420 void PositionMarker::chooseColor()
421 {
422  QColor initialColor;
423  if( sender() == ui_configWidget->m_acColorChooserButton ) {
424  initialColor = m_accuracyColor;
425  }
426  else if( sender() == ui_configWidget->m_trailColorChooserButton ) {
427  initialColor = m_trailColor;
428  }
429  QColor color = QColorDialog::getColor( initialColor, NULL,
430  tr( "Please choose a color" ),
431  QColorDialog::ShowAlphaChannel );
432  if( color.isValid() )
433  {
434  QPalette palette;
435  if( sender() == ui_configWidget->m_acColorChooserButton ) {
436  m_accuracyColor = color;
437  palette = ui_configWidget->m_acColorChooserButton->palette();
438  palette.setColor( QPalette::Button, m_accuracyColor );
439  ui_configWidget->m_acColorChooserButton->setPalette( palette );
440  }
441  else if( sender() == ui_configWidget->m_trailColorChooserButton ) {
442  m_trailColor = color;
443  palette = ui_configWidget->m_trailColorChooserButton->palette();
444  palette.setColor( QPalette::Button, m_trailColor );
445  ui_configWidget->m_trailColorChooserButton->setPalette( palette );
446  }
447  }
448 }
449 
450 void PositionMarker::resizeCursor( int step )
451 {
452  m_cursorSize = sm_resizeSteps[step];
453  float newSize = 22 * m_cursorSize;
454  m_customCursor = QPixmap( m_cursorPath ).scaled( newSize, newSize, Qt::KeepAspectRatio, Qt::SmoothTransformation );
455  ui_configWidget->m_sizeLabel->setText( tr( "Cursor Size: %1" ).arg( m_cursorSize ) );
456  if( !m_customCursor.isNull() )
457  {
458  ui_configWidget->m_fileChooserButton->setIconSize( QSize( m_customCursor.width(), m_customCursor.height() ) );
459  ui_configWidget->m_fileChooserButton->setIcon( QIcon( m_customCursor ) );
460  }
461  loadDefaultCursor();
462 }
463 
464 qreal PositionMarker::zValue() const
465 {
466  return 1.0;
467 }
468 
469 }
470 
471 Q_EXPORT_PLUGIN2( PositionMarker, Marble::PositionMarker )
472 
473 #include "PositionMarker.moc"
Marble::PositionTracking::positionProviderPlugin
PositionProviderPlugin positionProviderPlugin
Definition: PositionTracking.h:35
QTransform
Marble::RAD2DEG
const qreal RAD2DEG
Definition: MarbleGlobal.h:220
Marble::PositionTracking::direction
qreal direction() const
provides direction of the gps device in degrees with geographical north
Definition: PositionTracking.cpp:234
QPainter::setOpacity
void setOpacity(qreal opacity)
Marble::PositionMarker::resizeCursor
void resizeCursor(int step)
Definition: PositionMarker.cpp:450
Marble::GeoDataCoordinates
A 3d point representation.
Definition: GeoDataCoordinates.h:52
QHash::insert
iterator insert(const Key &key, const T &value)
Marble::GeoPainter::drawPolygon
void drawPolygon(const GeoDataLinearRing &linearRing, Qt::FillRule fillRule=Qt::OddEvenFill)
Draws a given linear ring (a "polygon without holes").
Definition: GeoPainter.cpp:560
QRectF::toRect
QRect toRect() const
QPixmap::width
int width() const
Marble::PositionMarker::backendTypes
QStringList backendTypes() const
Returns the name(s) of the backend that the plugin can render This method should return the name of t...
Definition: PositionMarker.cpp:75
QPalette::setColor
void setColor(ColorGroup group, ColorRole role, const QColor &color)
Marble::RenderPlugin::repaintNeeded
void repaintNeeded(QRegion dirtyRegion=QRegion())
This signal is emitted if an update of the view is needed.
Marble::PositionMarker::settings
virtual QHash< QString, QVariant > settings() const
Definition: PositionMarker.cpp:280
Marble::GeoPainter
A painter that allows to draw geometric primitives on the map.
Definition: GeoPainter.h:98
QObject::sender
QObject * sender() const
MarbleModel.h
This file contains the headers for MarbleModel.
Marble::PluginAuthor
Definition: PluginInterface.h:28
Marble::PositionMarker::configDialog
QDialog * configDialog()
Returns a pointer to the configuration dialog of the plugin.
Definition: PositionMarker.cpp:124
QPainter::save
void save()
Marble::PositionMarker
Definition: PositionMarker.h:35
Marble::ViewportParams::viewLatLonAltBox
const GeoDataLatLonAltBox & viewLatLonAltBox() const
Definition: ViewportParams.cpp:305
QColor::setAlpha
void setAlpha(int alpha)
Marble::RenderPlugin::restoreDefaultSettings
void restoreDefaultSettings()
Passes an empty set of settings to the plugin.
Definition: RenderPlugin.cpp:221
Marble::PrintQuality
Print quality.
Definition: MarbleGlobal.h:87
Marble::PositionMarker::PositionMarker
PositionMarker(const MarbleModel *marbleModel=0)
Definition: PositionMarker.cpp:40
Marble::GeoDataCoordinates::latitude
qreal latitude(GeoDataCoordinates::Unit unit=GeoDataCoordinates::Radian) const
retrieves the latitude of the GeoDataCoordinates object use the unit parameter to switch between Radi...
Definition: GeoDataCoordinates.cpp:751
Marble::GeoPainter::drawEllipse
void drawEllipse(const GeoDataCoordinates &centerPosition, qreal width, qreal height, bool isGeoProjected=false)
Draws an ellipse at the given position. The ellipse is placed with its center located at the given ce...
Definition: GeoPainter.cpp:289
Marble::GeoDataLatLonAltBox::contains
virtual bool contains(const GeoDataCoordinates &) const
Definition: GeoDataLatLonAltBox.cpp:170
MarbleDebug.h
QObject::tr
QString tr(const char *sourceText, const char *disambiguation, int n)
Marble::PositionMarker::chooseCustomCursor
void chooseCustomCursor()
Definition: PositionMarker.cpp:383
Marble::PositionMarker::pluginAuthors
QList< PluginAuthor > pluginAuthors() const
Definition: PositionMarker.cpp:110
Marble::PositionTracking::accuracy
GeoDataAccuracy accuracy() const
Returns the estimated accuracy of the current position.
Definition: PositionTracking.cpp:384
QRectF::setHeight
void setHeight(qreal height)
QPointF
Marble::PositionMarker::copyrightYears
QString copyrightYears() const
Definition: PositionMarker.cpp:105
Marble::PositionMarker::setSettings
virtual void setSettings(const QHash< QString, QVariant > &settings)
Set the settings of the item.
Definition: PositionMarker.cpp:294
Marble::GeoSceneLayer
Layer of a GeoScene document.
Definition: GeoSceneLayer.h:43
Marble::EARTH_RADIUS
const qreal EARTH_RADIUS
Definition: MarbleGlobal.h:257
Marble::PositionMarker::nameId
QString nameId() const
Returns the unique name of the plugin.
Definition: PositionMarker.cpp:90
QHash< QString, QVariant >
QPainter::setPen
void setPen(const QColor &color)
Marble::RenderPlugin::settingsChanged
void settingsChanged(QString nameId)
This signal is emitted if the settings of the RenderPlugin changed.
QMatrix::translate
QMatrix & translate(qreal dx, qreal dy)
Marble::PositionMarker::renderPosition
QStringList renderPosition() const
Preferred level in the layer stack for the rendering.
Definition: PositionMarker.cpp:65
MarbleDirs.h
QString::isEmpty
bool isEmpty() const
Marble::MarbleModel::positionTracking
PositionTracking * positionTracking() const
Definition: MarbleModel.cpp:512
Marble::MarbleDirs
A class that manages data look-up for Marble.
Definition: MarbleDirs.h:79
Marble::GeoDataAccuracy::horizontal
qreal horizontal
Horizontal accuracy in meters.
Definition: GeoDataAccuracy.h:49
Marble::PositionMarker::guiString
QString guiString() const
String that should be displayed in GUI.
Definition: PositionMarker.cpp:85
Marble::PositionMarker::render
bool render(GeoPainter *painter, ViewportParams *viewport, const QString &renderPos, GeoSceneLayer *layer=0)
Renders the content provided by the layer on the viewport.
Definition: PositionMarker.cpp:169
QPainter::setBrush
void setBrush(const QBrush &brush)
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
QPixmap::scaled
QPixmap scaled(int width, int height, Qt::AspectRatioMode aspectRatioMode, Qt::TransformationMode transformMode) const
QString
QList
QColor
GeoPainter.h
PositionMarker.h
QStringList
Marble::ViewportParams
A public class that controls what is visible in the viewport of a Marble map.
Definition: ViewportParams.h:44
QPixmap
Q_EXPORT_PLUGIN2
#define Q_EXPORT_PLUGIN2(a, b)
Definition: marble_export.h:34
Marble::PositionMarker::writeSettings
void writeSettings()
Definition: PositionMarker.cpp:351
Marble::PositionMarker::readSettings
void readSettings()
Definition: PositionMarker.cpp:314
QHash::value
const T value(const Key &key) const
QPixmap::isNull
bool isNull() const
Marble::PositionMarker::description
QString description() const
Returns a user description of the plugin.
Definition: PositionMarker.cpp:100
Marble::GeoDataCoordinates::longitude
qreal longitude(GeoDataCoordinates::Unit unit=GeoDataCoordinates::Radian) const
retrieves the longitude of the GeoDataCoordinates object use the unit parameter to switch between Rad...
Definition: GeoDataCoordinates.cpp:739
QSize
QPixmap::height
int height() const
QColorDialog::getColor
QColor getColor(const QColor &initial, QWidget *parent, const QString &title, QFlags< QColorDialog::ColorDialogOption > options)
ViewportParams.h
This file contains the headers for ViewportParams.
Marble::MarbleGlobal::SmallScreen
Definition: MarbleGlobal.h:287
Marble::MarbleGlobal::getInstance
static MarbleGlobal * getInstance()
Definition: MarbleGlobal.cpp:37
Marble::PositionMarker::chooseColor
void chooseColor()
Definition: PositionMarker.cpp:420
Marble::PositionMarker::isInitialized
bool isInitialized() const
Definition: PositionMarker.cpp:164
QPainter::restore
void restore()
QTransform::rotate
QTransform & rotate(qreal angle, Qt::Axis axis)
Marble::Oxygen::brickRed4
QColor const brickRed4
Definition: MarbleColors.h:32
QMatrix::rotate
QMatrix & rotate(qreal degrees)
Marble::MarbleModel
The data model (not based on QAbstractModel) for a MarbleWidget.
Definition: MarbleModel.h:97
QPolygonF::boundingRect
QRectF boundingRect() const
QRectF::width
qreal width() const
Marble::PositionMarker::icon
QIcon icon() const
Returns an icon for the plugin.
Definition: PositionMarker.cpp:119
QPixmap::transformed
QPixmap transformed(const QMatrix &matrix, Qt::TransformationMode mode) const
Marble::ViewportParams::radius
int radius() const
Definition: ViewportParams.cpp:195
Marble::HighQuality
High quality (e.g. antialiasing for lines)
Definition: MarbleGlobal.h:86
Marble::PositionMarker::zValue
virtual qreal zValue() const
Returns the z value of the layer (default: 0.0).
Definition: PositionMarker.cpp:464
Marble::PositionMarker::version
QString version() const
Definition: PositionMarker.cpp:95
QRectF
QRectF::setWidth
void setWidth(qreal width)
QMatrix
Marble::MarbleGlobal::profiles
Profiles profiles() const
Definition: MarbleGlobal.cpp:48
Marble::PositionMarker::name
QString name() const
Returns the user-visible name of the plugin.
Definition: PositionMarker.cpp:80
QDialog
QRectF::height
qreal height() const
QPushButton
Marble::GeoPainter::mapQuality
MapQuality mapQuality() const
Returns the map quality.
Definition: GeoPainter.cpp:191
QFileDialog::getOpenFileName
QString getOpenFileName(QWidget *parent, const QString &caption, const QString &dir, const QString &filter, QString *selectedFilter, QFlags< QFileDialog::Option > options)
QRectF::setX
void setX(qreal x)
QRectF::setY
void setY(qreal y)
PositionTracking.h
Marble::PositionMarker::~PositionMarker
~PositionMarker()
Definition: PositionMarker.cpp:59
Marble::RenderPlugin::marbleModel
const MarbleModel * marbleModel() const
Access to the MarbleModel.
Definition: RenderPlugin.cpp:83
Marble::GeoDataAccuracy
Definition: GeoDataAccuracy.h:22
QObject::connect
bool connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
Marble::RenderPlugin::settings
virtual QHash< QString, QVariant > settings() const
Settings of the plugin.
Definition: RenderPlugin.cpp:185
Marble::PositionMarker::renderPolicy
QString renderPolicy() const
Return how the plugin settings should be used.
Definition: PositionMarker.cpp:70
Marble::PositionMarker::initialize
void initialize()
Definition: PositionMarker.cpp:154
Marble::mDebug
QDebug mDebug()
a function to replace qDebug() in Marble library code
Definition: MarbleDebug.cpp:36
Marble::PositionMarker::setPosition
void setPosition(const GeoDataCoordinates &position)
Definition: PositionMarker.cpp:367
Marble::GeoPainter::drawPixmap
void drawPixmap(const GeoDataCoordinates &centerPosition, const QPixmap &pixmap)
Draws a pixmap at the given position. The pixmap is placed with its center located at the given cente...
Definition: GeoPainter.cpp:452
Marble::RenderPlugin
The abstract class that creates a renderable item.
Definition: RenderPlugin.h:43
Marble::RenderPlugin::setSettings
virtual void setSettings(const QHash< QString, QVariant > &settings)
Set the settings of the plugin.
Definition: RenderPlugin.cpp:195
QPalette
QRegion
QIcon
QColor::isValid
bool isValid() const
QPolygonF
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:13:41 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