• 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
  • layers
GeometryLayer.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 2008-2009 Patrick Spendrin <ps_ml@gmx.de>
9 // Copyright 2010 Thibaut Gridel <tgridel@free.fr>
10 // Copyright 2011-2012 Bernhard Beschow <bbeschow@cs.tu-berlin.de>
11 //
12 
13 #include "GeometryLayer.h"
14 
15 // Marble
16 #include "GeoDataDocument.h"
17 #include "GeoDataFolder.h"
18 #include "GeoDataLineStyle.h"
19 #include "GeoDataMultiTrack.h"
20 #include "GeoDataObject.h"
21 #include "GeoDataPlacemark.h"
22 #include "GeoDataPolygon.h"
23 #include "GeoDataPolyStyle.h"
24 #include "GeoDataStyle.h"
25 #include "GeoDataStyleMap.h"
26 #include "GeoDataTrack.h"
27 #include "GeoDataTypes.h"
28 #include "MarbleDebug.h"
29 #include "GeoDataFeature.h"
30 #include "GeoPainter.h"
31 #include "ViewportParams.h"
32 #include "GeoGraphicsScene.h"
33 #include "GeoGraphicsItem.h"
34 #include "GeoLineStringGraphicsItem.h"
35 #include "GeoPolygonGraphicsItem.h"
36 #include "GeoTrackGraphicsItem.h"
37 #include "GeoDataPhotoOverlay.h"
38 #include "GeoDataScreenOverlay.h"
39 #include "GeoPhotoGraphicsItem.h"
40 #include "ScreenOverlayGraphicsItem.h"
41 #include "TileId.h"
42 #include "MarbleGraphicsItem.h"
43 #include "MarblePlacemarkModel.h"
44 
45 // Qt
46 #include <qmath.h>
47 #include <QAbstractItemModel>
48 #include <QModelIndex>
49 
50 namespace Marble
51 {
52 class GeometryLayerPrivate
53 {
54 public:
55  GeometryLayerPrivate( const QAbstractItemModel *model );
56 
57  void createGraphicsItems( const GeoDataObject *object );
58  void createGraphicsItemFromGeometry( const GeoDataGeometry *object, const GeoDataPlacemark *placemark );
59  void createGraphicsItemFromOverlay( const GeoDataOverlay *overlay );
60  void removeGraphicsItems( const GeoDataFeature *feature );
61 
62  static int maximumZoomLevel();
63 
64  const QAbstractItemModel *const m_model;
65  GeoGraphicsScene m_scene;
66  QString m_runtimeTrace;
67  QList<ScreenOverlayGraphicsItem*> m_items;
68 
69 private:
70  static void initializeDefaultValues();
71 
72  static int s_defaultZValues[GeoDataFeature::LastIndex];
73  static int s_defaultMinZoomLevels[GeoDataFeature::LastIndex];
74  static bool s_defaultValuesInitialized;
75  static int s_maximumZoomLevel;
76  static const int s_defaultZValue;
77 };
78 
79 int GeometryLayerPrivate::s_defaultZValues[GeoDataFeature::LastIndex];
80 int GeometryLayerPrivate::s_defaultMinZoomLevels[GeoDataFeature::LastIndex];
81 bool GeometryLayerPrivate::s_defaultValuesInitialized = false;
82 int GeometryLayerPrivate::s_maximumZoomLevel = 0;
83 const int GeometryLayerPrivate::s_defaultZValue = 50;
84 
85 GeometryLayerPrivate::GeometryLayerPrivate( const QAbstractItemModel *model )
86  : m_model( model )
87 {
88  initializeDefaultValues();
89 }
90 
91 int GeometryLayerPrivate::maximumZoomLevel()
92 {
93  return s_maximumZoomLevel;
94 }
95 
96 GeometryLayer::GeometryLayer( const QAbstractItemModel *model )
97  : d( new GeometryLayerPrivate( model ) )
98 {
99  const GeoDataObject *object = static_cast<GeoDataObject*>( d->m_model->index( 0, 0, QModelIndex() ).internalPointer() );
100  if ( object && object->parent() )
101  d->createGraphicsItems( object->parent() );
102 
103  connect( model, SIGNAL(dataChanged(QModelIndex,QModelIndex)),
104  this, SLOT(resetCacheData()) );
105  connect( model, SIGNAL(rowsInserted(QModelIndex,int,int)),
106  this, SLOT(addPlacemarks(QModelIndex,int,int)) );
107  connect( model, SIGNAL(rowsAboutToBeRemoved(QModelIndex,int,int)),
108  this, SLOT(removePlacemarks(QModelIndex,int,int)) );
109  connect( model, SIGNAL(modelReset()),
110  this, SLOT(resetCacheData()) );
111 }
112 
113 GeometryLayer::~GeometryLayer()
114 {
115  delete d;
116 }
117 
118 QStringList GeometryLayer::renderPosition() const
119 {
120  return QStringList( "HOVERS_ABOVE_SURFACE" );
121 }
122 
123 void GeometryLayerPrivate::initializeDefaultValues()
124 {
125  if ( s_defaultValuesInitialized )
126  return;
127 
128  for ( int i = 0; i < GeoDataFeature::LastIndex; i++ )
129  s_defaultZValues[i] = s_defaultZValue;
130 
131  for ( int i = 0; i < GeoDataFeature::LastIndex; i++ )
132  s_defaultMinZoomLevels[i] = 15;
133 
134  s_defaultZValues[GeoDataFeature::None] = 0;
135 
136  for ( int i = GeoDataFeature::LanduseAllotments; i <= GeoDataFeature::LanduseRetail; i++ )
137  s_defaultZValues[(GeoDataFeature::GeoDataVisualCategory)i] = s_defaultZValue - 16;
138 
139  s_defaultZValues[GeoDataFeature::NaturalWater] = s_defaultZValue - 16;
140  s_defaultZValues[GeoDataFeature::NaturalWood] = s_defaultZValue - 15;
141 
142  //Landuse
143 
144  s_defaultZValues[GeoDataFeature::LeisurePark] = s_defaultZValue - 14;
145 
146  s_defaultZValues[GeoDataFeature::TransportParking] = s_defaultZValue - 13;
147 
148  s_defaultZValues[GeoDataFeature::HighwayTertiaryLink] = s_defaultZValue - 12;
149  s_defaultZValues[GeoDataFeature::HighwaySecondaryLink]= s_defaultZValue - 12;
150  s_defaultZValues[GeoDataFeature::HighwayPrimaryLink] = s_defaultZValue - 12;
151  s_defaultZValues[GeoDataFeature::HighwayTrunkLink] = s_defaultZValue - 12;
152  s_defaultZValues[GeoDataFeature::HighwayMotorwayLink] = s_defaultZValue - 12;
153 
154  s_defaultZValues[GeoDataFeature::HighwayUnknown] = s_defaultZValue - 11;
155  s_defaultZValues[GeoDataFeature::HighwayPath] = s_defaultZValue - 10;
156  s_defaultZValues[GeoDataFeature::HighwayTrack] = s_defaultZValue - 9;
157  s_defaultZValues[GeoDataFeature::HighwaySteps] = s_defaultZValue - 8;
158  s_defaultZValues[GeoDataFeature::HighwayPedestrian] = s_defaultZValue - 8;
159  s_defaultZValues[GeoDataFeature::HighwayService] = s_defaultZValue - 7;
160  s_defaultZValues[GeoDataFeature::HighwayRoad] = s_defaultZValue - 6;
161  s_defaultZValues[GeoDataFeature::HighwayTertiary] = s_defaultZValue - 5;
162  s_defaultZValues[GeoDataFeature::HighwaySecondary] = s_defaultZValue - 4;
163  s_defaultZValues[GeoDataFeature::HighwayPrimary] = s_defaultZValue - 3;
164  s_defaultZValues[GeoDataFeature::HighwayTrunk] = s_defaultZValue - 2;
165  s_defaultZValues[GeoDataFeature::HighwayMotorway] = s_defaultZValue - 1;
166  s_defaultZValues[GeoDataFeature::RailwayRail] = s_defaultZValue - 1;
167 
168  s_defaultMinZoomLevels[GeoDataFeature::Default] = 1;
169  s_defaultMinZoomLevels[GeoDataFeature::NaturalWater] = 8;
170  s_defaultMinZoomLevels[GeoDataFeature::NaturalWood] = 8;
171  s_defaultMinZoomLevels[GeoDataFeature::Building] = 15;
172 
173  // OpenStreetMap highways
174  s_defaultMinZoomLevels[GeoDataFeature::HighwaySteps] = 15;
175  s_defaultMinZoomLevels[GeoDataFeature::HighwayUnknown] = 13;
176  s_defaultMinZoomLevels[GeoDataFeature::HighwayPath] = 13;
177  s_defaultMinZoomLevels[GeoDataFeature::HighwayTrack] = 13;
178  s_defaultMinZoomLevels[GeoDataFeature::HighwayPedestrian] = 14;
179  s_defaultMinZoomLevels[GeoDataFeature::HighwayService] = 14;
180  s_defaultMinZoomLevels[GeoDataFeature::HighwayRoad] = 13;
181  s_defaultMinZoomLevels[GeoDataFeature::HighwayTertiaryLink] = 10;
182  s_defaultMinZoomLevels[GeoDataFeature::HighwayTertiary] = 10;
183  s_defaultMinZoomLevels[GeoDataFeature::HighwaySecondaryLink]= 10;
184  s_defaultMinZoomLevels[GeoDataFeature::HighwaySecondary] = 9;
185  s_defaultMinZoomLevels[GeoDataFeature::HighwayPrimaryLink] = 10;
186  s_defaultMinZoomLevels[GeoDataFeature::HighwayPrimary] = 8;
187  s_defaultMinZoomLevels[GeoDataFeature::HighwayTrunkLink] = 10;
188  s_defaultMinZoomLevels[GeoDataFeature::HighwayTrunk] = 7;
189  s_defaultMinZoomLevels[GeoDataFeature::HighwayMotorwayLink] = 10;
190  s_defaultMinZoomLevels[GeoDataFeature::HighwayMotorway] = 6;
191 
192  //FIXME: Bad, better to expand this
193  for(int i = GeoDataFeature::AccomodationCamping; i <= GeoDataFeature::ReligionSikh; i++)
194  s_defaultMinZoomLevels[i] = 15;
195 
196  s_defaultMinZoomLevels[GeoDataFeature::LeisurePark] = 11;
197  s_defaultMinZoomLevels[GeoDataFeature::LanduseAllotments] = 11;
198  s_defaultMinZoomLevels[GeoDataFeature::LanduseBasin] = 11;
199  s_defaultMinZoomLevels[GeoDataFeature::LanduseCemetery] = 11;
200  s_defaultMinZoomLevels[GeoDataFeature::LanduseCommercial] = 11;
201  s_defaultMinZoomLevels[GeoDataFeature::LanduseConstruction] = 11;
202  s_defaultMinZoomLevels[GeoDataFeature::LanduseFarmland] = 11;
203  s_defaultMinZoomLevels[GeoDataFeature::LanduseFarmyard] = 11;
204  s_defaultMinZoomLevels[GeoDataFeature::LanduseGarages] = 11;
205  s_defaultMinZoomLevels[GeoDataFeature::LanduseGrass] = 11;
206  s_defaultMinZoomLevels[GeoDataFeature::LanduseIndustrial] = 11;
207  s_defaultMinZoomLevels[GeoDataFeature::LanduseLandfill] = 11;
208  s_defaultMinZoomLevels[GeoDataFeature::LanduseMeadow] = 11;
209  s_defaultMinZoomLevels[GeoDataFeature::LanduseMilitary] = 11;
210  s_defaultMinZoomLevels[GeoDataFeature::LanduseQuarry] = 11;
211  s_defaultMinZoomLevels[GeoDataFeature::LanduseRailway] = 11;
212  s_defaultMinZoomLevels[GeoDataFeature::LanduseReservoir] = 11;
213  s_defaultMinZoomLevels[GeoDataFeature::LanduseResidential] = 11;
214  s_defaultMinZoomLevels[GeoDataFeature::LanduseRetail] = 11;
215 
216  s_defaultMinZoomLevels[GeoDataFeature::RailwayRail] = 6;
217  s_defaultMinZoomLevels[GeoDataFeature::RailwayTram] = 13;
218  s_defaultMinZoomLevels[GeoDataFeature::RailwayLightRail] = 12;
219  s_defaultMinZoomLevels[GeoDataFeature::RailwayAbandoned] = 10;
220  s_defaultMinZoomLevels[GeoDataFeature::RailwaySubway] = 13;
221  s_defaultMinZoomLevels[GeoDataFeature::RailwayPreserved] = 13;
222  s_defaultMinZoomLevels[GeoDataFeature::RailwayMiniature] = 13;
223  s_defaultMinZoomLevels[GeoDataFeature::RailwayConstruction] = 10;
224  s_defaultMinZoomLevels[GeoDataFeature::RailwayMonorail] = 12;
225  s_defaultMinZoomLevels[GeoDataFeature::RailwayFunicular] = 13;
226 
227  s_defaultMinZoomLevels[GeoDataFeature::Satellite] = 0;
228 
229  for ( int i = 0; i < GeoDataFeature::LastIndex; ++i ) {
230  s_maximumZoomLevel = qMax( s_maximumZoomLevel, s_defaultMinZoomLevels[i] );
231  }
232 
233  s_defaultValuesInitialized = true;
234 }
235 
236 
237 bool GeometryLayer::render( GeoPainter *painter, ViewportParams *viewport,
238  const QString& renderPos, GeoSceneLayer * layer )
239 {
240  Q_UNUSED( renderPos )
241  Q_UNUSED( layer )
242 
243  painter->save();
244 
245  int maxZoomLevel = qMin<int>( qMax<int>( qLn( viewport->radius() *4 / 256 ) / qLn( 2.0 ), 1), GeometryLayerPrivate::maximumZoomLevel() );
246  QList<GeoGraphicsItem*> items = d->m_scene.items( viewport->viewLatLonAltBox(), maxZoomLevel );
247 
248  int painted = 0;
249  foreach( GeoGraphicsItem* item, items )
250  {
251  if ( item->latLonAltBox().intersects( viewport->viewLatLonAltBox() ) ) {
252  item->paint( painter, viewport );
253  ++painted;
254  }
255  }
256 
257  foreach( ScreenOverlayGraphicsItem* item, d->m_items ) {
258  item->paintEvent( painter, viewport );
259  }
260 
261  painter->restore();
262  d->m_runtimeTrace = QString( "Geometries: %1 Drawn: %2 Zoom: %3")
263  .arg( items.size() )
264  .arg( painted )
265  .arg( maxZoomLevel );
266  return true;
267 }
268 
269 RenderState GeometryLayer::renderState() const
270 {
271  return RenderState( "GeoGraphicsScene" );
272 }
273 
274 QString GeometryLayer::runtimeTrace() const
275 {
276  return d->m_runtimeTrace;
277 }
278 
279 void GeometryLayerPrivate::createGraphicsItems( const GeoDataObject *object )
280 {
281  if ( const GeoDataPlacemark *placemark = dynamic_cast<const GeoDataPlacemark*>( object ) )
282  {
283  createGraphicsItemFromGeometry( placemark->geometry(), placemark );
284  } else if ( const GeoDataOverlay* overlay = dynamic_cast<const GeoDataOverlay*>( object ) ) {
285  createGraphicsItemFromOverlay( overlay );
286  }
287 
288  // parse all child objects of the container
289  if ( const GeoDataContainer *container = dynamic_cast<const GeoDataContainer*>( object ) )
290  {
291  int rowCount = container->size();
292  for ( int row = 0; row < rowCount; ++row )
293  {
294  createGraphicsItems( container->child( row ) );
295  }
296  }
297 }
298 
299 void GeometryLayerPrivate::createGraphicsItemFromGeometry( const GeoDataGeometry* object, const GeoDataPlacemark *placemark )
300 {
301  GeoGraphicsItem *item = 0;
302  if ( object->nodeType() == GeoDataTypes::GeoDataLineStringType )
303  {
304  const GeoDataLineString* line = static_cast<const GeoDataLineString*>( object );
305  item = new GeoLineStringGraphicsItem( placemark, line );
306  }
307  else if ( object->nodeType() == GeoDataTypes::GeoDataLinearRingType )
308  {
309  const GeoDataLinearRing *ring = static_cast<const GeoDataLinearRing*>( object );
310  item = new GeoPolygonGraphicsItem( placemark, ring );
311  }
312  else if ( object->nodeType() == GeoDataTypes::GeoDataPolygonType )
313  {
314  const GeoDataPolygon *poly = static_cast<const GeoDataPolygon*>( object );
315  item = new GeoPolygonGraphicsItem( placemark, poly );
316  }
317  else if ( object->nodeType() == GeoDataTypes::GeoDataMultiGeometryType )
318  {
319  const GeoDataMultiGeometry *multigeo = static_cast<const GeoDataMultiGeometry*>( object );
320  int rowCount = multigeo->size();
321  for ( int row = 0; row < rowCount; ++row )
322  {
323  createGraphicsItemFromGeometry( multigeo->child( row ), placemark );
324  }
325  }
326  else if ( object->nodeType() == GeoDataTypes::GeoDataMultiTrackType )
327  {
328  const GeoDataMultiTrack *multitrack = static_cast<const GeoDataMultiTrack*>( object );
329  int rowCount = multitrack->size();
330  for ( int row = 0; row < rowCount; ++row )
331  {
332  createGraphicsItemFromGeometry( multitrack->child( row ), placemark );
333  }
334  }
335  else if ( object->nodeType() == GeoDataTypes::GeoDataTrackType )
336  {
337  const GeoDataTrack *track = static_cast<const GeoDataTrack*>( object );
338  item = new GeoTrackGraphicsItem( placemark, track );
339  }
340  if ( !item )
341  return;
342  item->setStyle( placemark->style() );
343  item->setVisible( placemark->isGloballyVisible() );
344  item->setZValue( s_defaultZValues[placemark->visualCategory()] );
345  item->setMinZoomLevel( s_defaultMinZoomLevels[placemark->visualCategory()] );
346  m_scene.addItem( item );
347 }
348 
349 void GeometryLayerPrivate::createGraphicsItemFromOverlay( const GeoDataOverlay *overlay )
350 {
351  GeoGraphicsItem* item = 0;
352  if ( overlay->nodeType() == GeoDataTypes::GeoDataPhotoOverlayType ) {
353  GeoDataPhotoOverlay const * photoOverlay = static_cast<GeoDataPhotoOverlay const *>( overlay );
354  GeoPhotoGraphicsItem *photoItem = new GeoPhotoGraphicsItem( overlay );
355  photoItem->setPhotoFile( photoOverlay->absoluteIconFile() );
356  photoItem->setPoint( photoOverlay->point() );
357  item = photoItem;
358  } else if ( overlay->nodeType() == GeoDataTypes::GeoDataScreenOverlayType ) {
359  GeoDataScreenOverlay const * screenOverlay = static_cast<GeoDataScreenOverlay const *>( overlay );
360  ScreenOverlayGraphicsItem *screenItem = new ScreenOverlayGraphicsItem ( screenOverlay );
361  m_items.push_back( screenItem );
362  }
363 
364  if ( item ) {
365  item->setStyle( overlay->style() );
366  item->setVisible( overlay->isGloballyVisible() );
367  m_scene.addItem( item );
368  }
369 }
370 
371 void GeometryLayerPrivate::removeGraphicsItems( const GeoDataFeature *feature )
372 {
373 
374  if( feature->nodeType() == GeoDataTypes::GeoDataPlacemarkType ) {
375  m_scene.removeItem( feature );
376  }
377  else if( feature->nodeType() == GeoDataTypes::GeoDataFolderType
378  || feature->nodeType() == GeoDataTypes::GeoDataDocumentType ) {
379  const GeoDataContainer *container = static_cast<const GeoDataContainer*>( feature );
380  foreach( const GeoDataFeature *child, container->featureList() ) {
381  removeGraphicsItems( child );
382  }
383  }
384  else if( feature->nodeType() == GeoDataTypes::GeoDataScreenOverlayType ) {
385  foreach( ScreenOverlayGraphicsItem *item, m_items ) {
386  if( item->screenOverlay() == feature ) {
387  m_items.removeAll( item );
388  }
389  }
390  }
391 }
392 
393 void GeometryLayer::addPlacemarks( QModelIndex parent, int first, int last )
394 {
395  Q_ASSERT( first < d->m_model->rowCount( parent ) );
396  Q_ASSERT( last < d->m_model->rowCount( parent ) );
397  for( int i=first; i<=last; ++i ) {
398  QModelIndex index = d->m_model->index( i, 0, parent );
399  Q_ASSERT( index.isValid() );
400  const GeoDataObject *object = qvariant_cast<GeoDataObject*>(index.data( MarblePlacemarkModel::ObjectPointerRole ) );
401  Q_ASSERT( object );
402  d->createGraphicsItems( object );
403  }
404  emit repaintNeeded();
405 
406 }
407 
408 void GeometryLayer::removePlacemarks( QModelIndex parent, int first, int last )
409 {
410  Q_ASSERT( last < d->m_model->rowCount( parent ) );
411  for( int i=first; i<=last; ++i ) {
412  QModelIndex index = d->m_model->index( i, 0, parent );
413  Q_ASSERT( index.isValid() );
414  const GeoDataObject *object = qvariant_cast<GeoDataObject*>(index.data( MarblePlacemarkModel::ObjectPointerRole ) );
415  const GeoDataFeature *feature = dynamic_cast<const GeoDataFeature*>( object );
416  Q_ASSERT( feature );
417  d->removeGraphicsItems( feature );
418  }
419  emit repaintNeeded();
420 
421 }
422 
423 void GeometryLayer::resetCacheData()
424 {
425  d->m_scene.eraseAll();
426  qDeleteAll( d->m_items );
427  d->m_items.clear();
428  const GeoDataObject *object = static_cast<GeoDataObject*>( d->m_model->index( 0, 0, QModelIndex() ).internalPointer() );
429  if ( object && object->parent() )
430  d->createGraphicsItems( object->parent() );
431  emit repaintNeeded();
432 }
433 
434 }
435 
436 #include "GeometryLayer.moc"
GeoDataDocument.h
Marble::GeoDataFeature::LastIndex
Definition: GeoDataFeature.h:271
QModelIndex
TileId.h
Marble::ScreenOverlayGraphicsItem
Definition: ScreenOverlayGraphicsItem.h:25
Marble::GeoDataFeature::RailwaySubway
Definition: GeoDataFeature.h:260
Marble::GeoDataFeature::HighwayMotorwayLink
Definition: GeoDataFeature.h:155
Marble::GeoDataTypes::GeoDataMultiGeometryType
const char * GeoDataMultiGeometryType
Definition: GeoDataTypes.cpp:60
Marble::GeoDataLatLonAltBox::intersects
virtual bool intersects(const GeoDataLatLonAltBox &) const
Check if this GeoDataLatLonAltBox intersects with the given one.
Definition: GeoDataLatLonAltBox.cpp:196
Marble::GeoDataTypes::GeoDataLinearRingType
const char * GeoDataLinearRingType
Definition: GeoDataTypes.cpp:52
ScreenOverlayGraphicsItem.h
Marble::GeoDataFeature::AccomodationCamping
Definition: GeoDataFeature.h:162
Marble::GeoDataFeature::HighwayMotorway
Definition: GeoDataFeature.h:156
Marble::GeoDataFeature::LanduseReservoir
Definition: GeoDataFeature.h:252
Marble::GeoDataFeature::RailwayMiniature
Definition: GeoDataFeature.h:262
Marble::GeoDataFeature::HighwayPedestrian
Definition: GeoDataFeature.h:144
Marble::GeoDataTypes::GeoDataPolygonType
const char * GeoDataPolygonType
Definition: GeoDataTypes.cpp:69
GeoPolygonGraphicsItem.h
GeoDataPolygon.h
Marble::GeometryLayer::render
virtual bool render(GeoPainter *painter, ViewportParams *viewport, const QString &renderPos="NONE", GeoSceneLayer *layer=0)
Renders the content provided by the layer on the viewport.
Definition: GeometryLayer.cpp:237
Marble::GeoDataFeature::HighwayTertiaryLink
Definition: GeoDataFeature.h:147
Marble::GeometryLayer::runtimeTrace
virtual QString runtimeTrace() const
Returns a debug line for perfo/tracing issues.
Definition: GeometryLayer.cpp:274
Marble::GeoPainter
A painter that allows to draw geometric primitives on the map.
Definition: GeoPainter.h:98
Marble::GeoGraphicsItem::paint
virtual void paint(GeoPainter *painter, const ViewportParams *viewport)=0
Paints the item using the given GeoPainter.
Marble::GeoDataFeature::Default
Definition: GeoDataFeature.h:79
Marble::GeoDataObject
A base class for all geodata objects.
Definition: GeoDataObject.h:48
Marble::GeometryLayer::~GeometryLayer
~GeometryLayer()
Definition: GeometryLayer.cpp:113
Marble::GeoDataFeature::HighwayRoad
Definition: GeoDataFeature.h:146
Marble::GeoDataTypes::GeoDataPlacemarkType
const char * GeoDataPlacemarkType
Definition: GeoDataTypes.cpp:66
Marble::GeoDataTypes::GeoDataDocumentType
const char * GeoDataDocumentType
Definition: GeoDataTypes.cpp:38
Marble::GeoDataFeature::RailwayLightRail
Definition: GeoDataFeature.h:258
Marble::GeoDataObject::parent
virtual GeoDataObject * parent() const
Provides the parent of the object in GeoDataContainers.
Definition: GeoDataObject.cpp:65
GeoDataStyle.h
QPainter::save
void save()
Marble::GeoDataFeature::HighwayUnknown
Definition: GeoDataFeature.h:141
Marble::GeoGraphicsItem
Definition: GeoGraphicsItem.h:30
Marble::ViewportParams::viewLatLonAltBox
const GeoDataLatLonAltBox & viewLatLonAltBox() const
Definition: ViewportParams.cpp:305
Marble::GeoDataFeature::RailwayFunicular
Definition: GeoDataFeature.h:265
GeoDataLineStyle.h
Marble::MarblePlacemarkModel::ObjectPointerRole
The pointer to a specific object.
Definition: MarblePlacemarkModel.h:62
MarbleDebug.h
GeoDataTrack.h
Marble::GeoDataFeature::RailwayPreserved
Definition: GeoDataFeature.h:261
Marble::GeoGraphicsItem::latLonAltBox
virtual const GeoDataLatLonAltBox & latLonAltBox() const
Returns the bounding box covered by the item.
Definition: GeoGraphicsItem.cpp:67
Marble::GeometryLayer::renderPosition
virtual QStringList renderPosition() const
Preferred level in the layer stack for the rendering.
Definition: GeometryLayer.cpp:118
Marble::GeoDataFeature::HighwayTrack
Definition: GeoDataFeature.h:143
Marble::GeoDataFeature::LanduseQuarry
Definition: GeoDataFeature.h:250
Marble::GeometryLayer::repaintNeeded
void repaintNeeded()
Marble::GeoDataFeature::HighwaySteps
Definition: GeoDataFeature.h:140
Marble::GeoDataFeature::LanduseBasin
Definition: GeoDataFeature.h:238
MarbleGraphicsItem.h
Marble::GeoDataFeature::LanduseMeadow
Definition: GeoDataFeature.h:248
QModelIndex::isValid
bool isValid() const
Marble::GeoDataTypes::GeoDataScreenOverlayType
const char * GeoDataScreenOverlayType
Definition: GeoDataTypes.cpp:88
GeoDataFeature.h
Marble::GeoDataFeature::LanduseResidential
Definition: GeoDataFeature.h:253
Marble::GeoDataFeature::HighwayTertiary
Definition: GeoDataFeature.h:148
Marble::GeoSceneLayer
Layer of a GeoScene document.
Definition: GeoSceneLayer.h:43
Marble::GeoDataFeature::HighwayPrimary
Definition: GeoDataFeature.h:152
Marble::GeometryLayer::removePlacemarks
void removePlacemarks(QModelIndex index, int first, int last)
Definition: GeometryLayer.cpp:408
Marble::GeoDataFeature::HighwayTrunk
Definition: GeoDataFeature.h:154
Marble::GeoDataFeature::RailwayTram
Definition: GeoDataFeature.h:257
Marble::GeometryLayer::renderState
RenderState renderState() const
Definition: GeometryLayer.cpp:269
Marble::GeoDataFeature::RailwayRail
Definition: GeoDataFeature.h:256
GeoDataObject.h
Marble::GeoDataTypes::GeoDataFolderType
const char * GeoDataFolderType
Definition: GeoDataTypes.cpp:42
Marble::GeoDataTypes::GeoDataMultiTrackType
const char * GeoDataMultiTrackType
Definition: GeoDataTypes.cpp:61
Marble::GeoDataFeature::LanduseIndustrial
Definition: GeoDataFeature.h:246
GeoPhotoGraphicsItem.h
Marble::GeometryLayer::resetCacheData
void resetCacheData()
Definition: GeometryLayer.cpp:423
Marble::GeoDataTypes::GeoDataLineStringType
const char * GeoDataLineStringType
Definition: GeoDataTypes.cpp:53
Marble::GeoDataFeature::LanduseAllotments
Definition: GeoDataFeature.h:237
QString
QList
MarblePlacemarkModel.h
GeoPainter.h
Marble::GeoDataFeature::RailwayConstruction
Definition: GeoDataFeature.h:263
GeoDataPlacemark.h
GeoLineStringGraphicsItem.h
Marble::RenderState
Definition: RenderState.h:22
GeometryLayer.h
GeoDataScreenOverlay.h
Marble::GeoDataFeature::LanduseGrass
Definition: GeoDataFeature.h:245
Marble::GeoDataFeature::NaturalWood
Definition: GeoDataFeature.h:137
QStringList
Marble::ViewportParams
A public class that controls what is visible in the viewport of a Marble map.
Definition: ViewportParams.h:44
GeoDataMultiTrack.h
GeoDataStyleMap.h
Marble::GeoDataFeature::NaturalWater
Definition: GeoDataFeature.h:136
Marble::GeometryLayer::addPlacemarks
void addPlacemarks(QModelIndex index, int first, int last)
Definition: GeometryLayer.cpp:393
Marble::GeoDataFeature::LanduseLandfill
Definition: GeoDataFeature.h:247
Marble::GeoDataFeature::HighwaySecondary
Definition: GeoDataFeature.h:150
ViewportParams.h
This file contains the headers for ViewportParams.
GeoGraphicsItem.h
Marble::GeoDataFeature::HighwayTrunkLink
Definition: GeoDataFeature.h:153
Marble::GeoDataFeature::LanduseGarages
Definition: GeoDataFeature.h:244
QPainter::restore
void restore()
Marble::GeoDataFeature::ReligionSikh
Definition: GeoDataFeature.h:233
Marble::GeometryLayer::GeometryLayer
GeometryLayer(const QAbstractItemModel *model)
Definition: GeometryLayer.cpp:96
Marble::GeoDataFeature::RailwayAbandoned
Definition: GeoDataFeature.h:259
GeoDataFolder.h
QModelIndex::data
QVariant data(int role) const
Marble::ViewportParams::radius
int radius() const
Definition: ViewportParams.cpp:195
Marble::GeoDataFeature::LanduseCommercial
Definition: GeoDataFeature.h:240
Marble::GeoDataFeature::Building
Definition: GeoDataFeature.h:159
Marble::GeoDataFeature
A base class for all geodata features.
Definition: GeoDataFeature.h:57
Marble::GeoDataFeature::LanduseConstruction
Definition: GeoDataFeature.h:241
Marble::GeoDataFeature::Satellite
Definition: GeoDataFeature.h:267
Marble::GeoDataFeature::LanduseFarmland
Definition: GeoDataFeature.h:242
Marble::GeoDataFeature::HighwayPath
Definition: GeoDataFeature.h:142
QAbstractItemModel
Marble::GeoDataFeature::LanduseRetail
Definition: GeoDataFeature.h:254
GeoGraphicsScene.h
Marble::MarbleGraphicsItem::paintEvent
bool paintEvent(QPainter *painter, const ViewportParams *viewport)
Paints the item on the screen in view coordinates.
Definition: MarbleGraphicsItem.cpp:38
Marble::GeoDataFeature::HighwaySecondaryLink
Definition: GeoDataFeature.h:149
Marble::GeoDataFeature::None
Definition: GeoDataFeature.h:78
Marble::GeoDataFeature::GeoDataVisualCategory
GeoDataVisualCategory
A categorization of a placemark as defined by ...FIXME.
Definition: GeoDataFeature.h:77
GeoDataTypes.h
Marble::GeoDataTypes::GeoDataTrackType
const char * GeoDataTrackType
Definition: GeoDataTypes.cpp:86
Marble::GeoDataFeature::HighwayService
Definition: GeoDataFeature.h:145
Marble::GeoDataFeature::LeisurePark
Definition: GeoDataFeature.h:235
QObject::connect
bool connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
GeoDataPhotoOverlay.h
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::GeoDataFeature::LanduseFarmyard
Definition: GeoDataFeature.h:243
GeoDataPolyStyle.h
Marble::GeoDataFeature::LanduseCemetery
Definition: GeoDataFeature.h:239
Marble::GeoDataFeature::LanduseRailway
Definition: GeoDataFeature.h:251
Marble::GeoDataFeature::LanduseMilitary
Definition: GeoDataFeature.h:249
Marble::GeoDataFeature::HighwayPrimaryLink
Definition: GeoDataFeature.h:151
Marble::GeoDataTypes::GeoDataPhotoOverlayType
const char * GeoDataPhotoOverlayType
Definition: GeoDataTypes.cpp:65
GeoTrackGraphicsItem.h
Marble::GeoDataFeature::TransportParking
Definition: GeoDataFeature.h:217
Marble::GeoDataFeature::RailwayMonorail
Definition: GeoDataFeature.h:264
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:13:39 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