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

marble

  • sources
  • kde-4.12
  • 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 QString GeometryLayer::runtimeTrace() const
270 {
271  return d->m_runtimeTrace;
272 }
273 
274 void GeometryLayerPrivate::createGraphicsItems( const GeoDataObject *object )
275 {
276  if ( const GeoDataPlacemark *placemark = dynamic_cast<const GeoDataPlacemark*>( object ) )
277  {
278  createGraphicsItemFromGeometry( placemark->geometry(), placemark );
279  } else if ( const GeoDataOverlay* overlay = dynamic_cast<const GeoDataOverlay*>( object ) ) {
280  createGraphicsItemFromOverlay( overlay );
281  }
282 
283  // parse all child objects of the container
284  if ( const GeoDataContainer *container = dynamic_cast<const GeoDataContainer*>( object ) )
285  {
286  int rowCount = container->size();
287  for ( int row = 0; row < rowCount; ++row )
288  {
289  createGraphicsItems( container->child( row ) );
290  }
291  }
292 }
293 
294 void GeometryLayerPrivate::createGraphicsItemFromGeometry( const GeoDataGeometry* object, const GeoDataPlacemark *placemark )
295 {
296  GeoGraphicsItem *item = 0;
297  if ( object->nodeType() == GeoDataTypes::GeoDataLineStringType )
298  {
299  const GeoDataLineString* line = static_cast<const GeoDataLineString*>( object );
300  item = new GeoLineStringGraphicsItem( placemark, line );
301  }
302  else if ( object->nodeType() == GeoDataTypes::GeoDataLinearRingType )
303  {
304  const GeoDataLinearRing *ring = static_cast<const GeoDataLinearRing*>( object );
305  item = new GeoPolygonGraphicsItem( placemark, ring );
306  }
307  else if ( object->nodeType() == GeoDataTypes::GeoDataPolygonType )
308  {
309  const GeoDataPolygon *poly = static_cast<const GeoDataPolygon*>( object );
310  item = new GeoPolygonGraphicsItem( placemark, poly );
311  }
312  else if ( object->nodeType() == GeoDataTypes::GeoDataMultiGeometryType )
313  {
314  const GeoDataMultiGeometry *multigeo = static_cast<const GeoDataMultiGeometry*>( object );
315  int rowCount = multigeo->size();
316  for ( int row = 0; row < rowCount; ++row )
317  {
318  createGraphicsItemFromGeometry( multigeo->child( row ), placemark );
319  }
320  }
321  else if ( object->nodeType() == GeoDataTypes::GeoDataMultiTrackType )
322  {
323  const GeoDataMultiTrack *multitrack = static_cast<const GeoDataMultiTrack*>( object );
324  int rowCount = multitrack->size();
325  for ( int row = 0; row < rowCount; ++row )
326  {
327  createGraphicsItemFromGeometry( multitrack->child( row ), placemark );
328  }
329  }
330  else if ( object->nodeType() == GeoDataTypes::GeoDataTrackType )
331  {
332  const GeoDataTrack *track = static_cast<const GeoDataTrack*>( object );
333  item = new GeoTrackGraphicsItem( placemark, track );
334  }
335  if ( !item )
336  return;
337  item->setStyle( placemark->style() );
338  item->setVisible( placemark->isGloballyVisible() );
339  item->setZValue( s_defaultZValues[placemark->visualCategory()] );
340  item->setMinZoomLevel( s_defaultMinZoomLevels[placemark->visualCategory()] );
341  m_scene.addItem( item );
342 }
343 
344 void GeometryLayerPrivate::createGraphicsItemFromOverlay( const GeoDataOverlay *overlay )
345 {
346  GeoGraphicsItem* item = 0;
347  if ( overlay->nodeType() == GeoDataTypes::GeoDataPhotoOverlayType ) {
348  GeoDataPhotoOverlay const * photoOverlay = static_cast<GeoDataPhotoOverlay const *>( overlay );
349  GeoPhotoGraphicsItem *photoItem = new GeoPhotoGraphicsItem( overlay );
350  photoItem->setPhotoFile( photoOverlay->absoluteIconFile() );
351  photoItem->setPoint( photoOverlay->point() );
352  item = photoItem;
353  } else if ( overlay->nodeType() == GeoDataTypes::GeoDataScreenOverlayType ) {
354  GeoDataScreenOverlay const * screenOverlay = static_cast<GeoDataScreenOverlay const *>( overlay );
355  ScreenOverlayGraphicsItem *screenItem = new ScreenOverlayGraphicsItem ( screenOverlay );
356  m_items.push_back( screenItem );
357  }
358 
359  if ( item ) {
360  item->setStyle( overlay->style() );
361  item->setVisible( overlay->isGloballyVisible() );
362  m_scene.addItem( item );
363  }
364 }
365 
366 void GeometryLayerPrivate::removeGraphicsItems( const GeoDataFeature *feature )
367 {
368 
369  if( feature->nodeType() == GeoDataTypes::GeoDataPlacemarkType ) {
370  m_scene.removeItem( feature );
371  }
372  else if( feature->nodeType() == GeoDataTypes::GeoDataFolderType
373  || feature->nodeType() == GeoDataTypes::GeoDataDocumentType ) {
374  const GeoDataContainer *container = static_cast<const GeoDataContainer*>( feature );
375  foreach( const GeoDataFeature *child, container->featureList() ) {
376  removeGraphicsItems( child );
377  }
378  }
379  else if( feature->nodeType() == GeoDataTypes::GeoDataScreenOverlayType ) {
380  foreach( ScreenOverlayGraphicsItem *item, m_items ) {
381  if( item->screenOverlay() == feature ) {
382  m_items.removeAll( item );
383  }
384  }
385  }
386 }
387 
388 void GeometryLayer::addPlacemarks( QModelIndex parent, int first, int last )
389 {
390  Q_ASSERT( first < d->m_model->rowCount( parent ) );
391  Q_ASSERT( last < d->m_model->rowCount( parent ) );
392  for( int i=first; i<=last; ++i ) {
393  QModelIndex index = d->m_model->index( i, 0, parent );
394  Q_ASSERT( index.isValid() );
395  const GeoDataObject *object = qvariant_cast<GeoDataObject*>(index.data( MarblePlacemarkModel::ObjectPointerRole ) );
396  Q_ASSERT( object );
397  d->createGraphicsItems( object );
398  }
399  emit repaintNeeded();
400 
401 }
402 
403 void GeometryLayer::removePlacemarks( QModelIndex parent, int first, int last )
404 {
405  Q_ASSERT( last < d->m_model->rowCount( parent ) );
406  for( int i=first; i<=last; ++i ) {
407  QModelIndex index = d->m_model->index( i, 0, parent );
408  Q_ASSERT( index.isValid() );
409  const GeoDataObject *object = qvariant_cast<GeoDataObject*>(index.data( MarblePlacemarkModel::ObjectPointerRole ) );
410  const GeoDataFeature *feature = dynamic_cast<const GeoDataFeature*>( object );
411  Q_ASSERT( feature );
412  d->removeGraphicsItems( feature );
413  }
414  emit repaintNeeded();
415 
416 }
417 
418 void GeometryLayer::resetCacheData()
419 {
420  d->m_scene.eraseAll();
421  qDeleteAll( d->m_items );
422  d->m_items.clear();
423  const GeoDataObject *object = static_cast<GeoDataObject*>( d->m_model->index( 0, 0, QModelIndex() ).internalPointer() );
424  if ( object && object->parent() )
425  d->createGraphicsItems( object->parent() );
426  emit repaintNeeded();
427 }
428 
429 }
430 
431 #include "GeometryLayer.moc"
GeoDataDocument.h
Marble::GeoDataFeature::LastIndex
Definition: GeoDataFeature.h:269
TileId.h
Marble::ScreenOverlayGraphicsItem
Definition: ScreenOverlayGraphicsItem.h:25
Marble::GeoDataFeature::RailwaySubway
Definition: GeoDataFeature.h:258
Marble::GeoDataFeature::HighwayMotorwayLink
Definition: GeoDataFeature.h:153
Marble::GeoDataTypes::GeoDataMultiGeometryType
const char * GeoDataMultiGeometryType
Definition: GeoDataTypes.cpp:56
Marble::GeoDataLatLonAltBox::intersects
virtual bool intersects(const GeoDataLatLonAltBox &) const
Check if this GeoDataLatLonAltBox intersects with the given one.
Definition: GeoDataLatLonAltBox.cpp:197
Marble::GeoDataTypes::GeoDataLinearRingType
const char * GeoDataLinearRingType
Definition: GeoDataTypes.cpp:48
ScreenOverlayGraphicsItem.h
Marble::GeoDataFeature::AccomodationCamping
Definition: GeoDataFeature.h:160
Marble::GeoDataFeature::HighwayMotorway
Definition: GeoDataFeature.h:154
Marble::GeoDataFeature::LanduseReservoir
Definition: GeoDataFeature.h:250
Marble::GeoDataFeature::RailwayMiniature
Definition: GeoDataFeature.h:260
Marble::GeoDataFeature::HighwayPedestrian
Definition: GeoDataFeature.h:142
Marble::GeoDataTypes::GeoDataPolygonType
const char * GeoDataPolygonType
Definition: GeoDataTypes.cpp:65
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:145
Marble::GeometryLayer::runtimeTrace
virtual QString runtimeTrace() const
Returns a debug line for perfo/tracing issues.
Definition: GeometryLayer.cpp:269
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:77
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:144
Marble::GeoDataTypes::GeoDataPlacemarkType
const char * GeoDataPlacemarkType
Definition: GeoDataTypes.cpp:62
Marble::GeoDataTypes::GeoDataDocumentType
const char * GeoDataDocumentType
Definition: GeoDataTypes.cpp:34
Marble::GeoDataFeature::RailwayLightRail
Definition: GeoDataFeature.h:256
Marble::GeoDataObject::parent
virtual GeoDataObject * parent() const
Provides the parent of the object in GeoDataContainers.
Definition: GeoDataObject.cpp:65
GeoDataStyle.h
Marble::GeoDataFeature::HighwayUnknown
Definition: GeoDataFeature.h:139
Marble::GeoGraphicsItem
Definition: GeoGraphicsItem.h:30
Marble::ViewportParams::viewLatLonAltBox
const GeoDataLatLonAltBox & viewLatLonAltBox() const
Definition: ViewportParams.cpp:305
Marble::GeoDataFeature::RailwayFunicular
Definition: GeoDataFeature.h:263
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:259
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:141
Marble::GeoDataFeature::LanduseQuarry
Definition: GeoDataFeature.h:248
Marble::GeometryLayer::repaintNeeded
void repaintNeeded()
Marble::GeoDataFeature::HighwaySteps
Definition: GeoDataFeature.h:138
Marble::GeoDataFeature::LanduseBasin
Definition: GeoDataFeature.h:236
MarbleGraphicsItem.h
Marble::GeoDataFeature::LanduseMeadow
Definition: GeoDataFeature.h:246
Marble::GeoDataTypes::GeoDataScreenOverlayType
const char * GeoDataScreenOverlayType
Definition: GeoDataTypes.cpp:79
GeoDataFeature.h
Marble::GeoDataFeature::LanduseResidential
Definition: GeoDataFeature.h:251
Marble::GeoDataFeature::HighwayTertiary
Definition: GeoDataFeature.h:146
Marble::GeoSceneLayer
Layer of a GeoScene document.
Definition: GeoSceneLayer.h:43
Marble::GeoDataFeature::HighwayPrimary
Definition: GeoDataFeature.h:150
Marble::GeometryLayer::removePlacemarks
void removePlacemarks(QModelIndex index, int first, int last)
Definition: GeometryLayer.cpp:403
Marble::GeoDataFeature::HighwayTrunk
Definition: GeoDataFeature.h:152
Marble::GeoDataFeature::RailwayTram
Definition: GeoDataFeature.h:255
Marble::GeoDataFeature::RailwayRail
Definition: GeoDataFeature.h:254
GeoDataObject.h
Marble::GeoDataTypes::GeoDataFolderType
const char * GeoDataFolderType
Definition: GeoDataTypes.cpp:38
Marble::GeoDataTypes::GeoDataMultiTrackType
const char * GeoDataMultiTrackType
Definition: GeoDataTypes.cpp:57
Marble::GeoDataFeature::LanduseIndustrial
Definition: GeoDataFeature.h:244
GeoPhotoGraphicsItem.h
Marble::GeometryLayer::resetCacheData
void resetCacheData()
Definition: GeometryLayer.cpp:418
Marble::GeoDataTypes::GeoDataLineStringType
const char * GeoDataLineStringType
Definition: GeoDataTypes.cpp:49
Marble::GeoDataFeature::LanduseAllotments
Definition: GeoDataFeature.h:235
MarblePlacemarkModel.h
GeoPainter.h
Marble::GeoDataFeature::RailwayConstruction
Definition: GeoDataFeature.h:261
GeoDataPlacemark.h
GeoLineStringGraphicsItem.h
GeometryLayer.h
GeoDataScreenOverlay.h
Marble::GeoDataFeature::LanduseGrass
Definition: GeoDataFeature.h:243
Marble::GeoDataFeature::NaturalWood
Definition: GeoDataFeature.h:135
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:134
QAbstractItemModel
Marble::GeometryLayer::addPlacemarks
void addPlacemarks(QModelIndex index, int first, int last)
Definition: GeometryLayer.cpp:388
Marble::GeoDataFeature::LanduseLandfill
Definition: GeoDataFeature.h:245
Marble::GeoDataFeature::HighwaySecondary
Definition: GeoDataFeature.h:148
ViewportParams.h
This file contains the headers for ViewportParams.
GeoGraphicsItem.h
Marble::GeoDataFeature::HighwayTrunkLink
Definition: GeoDataFeature.h:151
Marble::GeoDataFeature::LanduseGarages
Definition: GeoDataFeature.h:242
Marble::GeoDataFeature::ReligionSikh
Definition: GeoDataFeature.h:231
Marble::GeometryLayer::GeometryLayer
GeometryLayer(const QAbstractItemModel *model)
Definition: GeometryLayer.cpp:96
Marble::GeoDataFeature::RailwayAbandoned
Definition: GeoDataFeature.h:257
GeoDataFolder.h
Marble::ViewportParams::radius
int radius() const
Definition: ViewportParams.cpp:195
Marble::GeoDataFeature::LanduseCommercial
Definition: GeoDataFeature.h:238
Marble::GeoDataFeature::Building
Definition: GeoDataFeature.h:157
Marble::GeoDataFeature
A base class for all geodata features.
Definition: GeoDataFeature.h:55
Marble::GeoDataFeature::LanduseConstruction
Definition: GeoDataFeature.h:239
Marble::GeoDataFeature::Satellite
Definition: GeoDataFeature.h:265
Marble::GeoDataFeature::LanduseFarmland
Definition: GeoDataFeature.h:240
Marble::GeoDataFeature::HighwayPath
Definition: GeoDataFeature.h:140
Marble::GeoDataFeature::LanduseRetail
Definition: GeoDataFeature.h:252
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:147
Marble::GeoDataFeature::None
Definition: GeoDataFeature.h:76
Marble::GeoDataFeature::GeoDataVisualCategory
GeoDataVisualCategory
A categorization of a placemark as defined by ...FIXME.
Definition: GeoDataFeature.h:75
GeoDataTypes.h
Marble::GeoDataTypes::GeoDataTrackType
const char * GeoDataTrackType
Definition: GeoDataTypes.cpp:77
Marble::GeoDataFeature::HighwayService
Definition: GeoDataFeature.h:143
Marble::GeoDataFeature::LeisurePark
Definition: GeoDataFeature.h:233
GeoDataPhotoOverlay.h
Marble::GeoDataPlacemark
a class representing a point of interest on the map
Definition: GeoDataPlacemark.h:54
Marble::GeoDataFeature::LanduseFarmyard
Definition: GeoDataFeature.h:241
GeoDataPolyStyle.h
Marble::GeoDataFeature::LanduseCemetery
Definition: GeoDataFeature.h:237
Marble::GeoDataFeature::LanduseRailway
Definition: GeoDataFeature.h:249
Marble::GeoDataFeature::LanduseMilitary
Definition: GeoDataFeature.h:247
Marble::GeoDataFeature::HighwayPrimaryLink
Definition: GeoDataFeature.h:149
Marble::GeoDataTypes::GeoDataPhotoOverlayType
const char * GeoDataPhotoOverlayType
Definition: GeoDataTypes.cpp:61
GeoTrackGraphicsItem.h
Marble::GeoDataFeature::TransportParking
Definition: GeoDataFeature.h:215
Marble::GeoDataFeature::RailwayMonorail
Definition: GeoDataFeature.h:262
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:38:50 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
  • kstars
  • libkdeedu
  •   keduvocdocument
  • 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