• 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
  • geodata
  • scene
GeoSceneLayer.cpp
Go to the documentation of this file.
1 /*
2  Copyright (C) 2008 Torsten Rahn <rahn@kde.org>
3 
4  This file is part of the KDE project
5 
6  This library is free software you can redistribute it and/or
7  modify it under the terms of the GNU Library General Public
8  License as published by the Free Software Foundation either
9  version 2 of the License, or (at your option) any later version.
10 
11  This library is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14  Library General Public License for more details.
15 
16  You should have received a copy of the GNU Library General Public License
17  aint with this library see the file COPYING.LIB. If not, write to
18  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
19  Boston, MA 02110-1301, USA.
20 */
21 
22 #include "GeoSceneLayer.h"
23 
24 #include "GeoSceneAbstractDataset.h"
25 #include "GeoSceneFilter.h"
26 #include "GeoSceneTypes.h"
27 
28 namespace Marble
29 {
30 
31 class GeoSceneLayerPrivate
32 {
33  public:
34  GeoSceneLayerPrivate(){}
35  ~GeoSceneLayerPrivate(){}
36 
37  const char* nodeType() const
38  {
39  return GeoSceneTypes::GeoSceneLayerType;
40  }
41 };
42 
43 GeoSceneLayer::GeoSceneLayer( const QString& name )
44  : m_filter( 0 ),
45  m_name( name ),
46  m_backend(),
47  m_role(),
48  m_tiled( true ),
49  d( new GeoSceneLayerPrivate )
50 {
51 }
52 
53 GeoSceneLayer::~GeoSceneLayer()
54 {
55  qDeleteAll( m_datasets );
56  delete d;
57 }
58 
59 const char* GeoSceneLayer::nodeType() const
60 {
61  return d->nodeType();
62 }
63 
64 void GeoSceneLayer::addDataset( GeoSceneAbstractDataset* dataset )
65 {
66  // Remove any dataset that has the same name
67  QVector<GeoSceneAbstractDataset *>::iterator it = m_datasets.begin();
68  while (it != m_datasets.end()) {
69  GeoSceneAbstractDataset * currentAbstractDataset = *it;
70  if ( currentAbstractDataset->name() == dataset->name() ) {
71  delete currentAbstractDataset;
72  it = m_datasets.erase(it);
73  break;
74  }
75  else {
76  ++it;
77  }
78  }
79 
80  if ( dataset ) {
81  m_datasets.append( dataset );
82  }
83 }
84 
85 const GeoSceneAbstractDataset* GeoSceneLayer::dataset( const QString& name ) const
86 {
87  GeoSceneAbstractDataset* dataset = 0;
88 
89  QVector<GeoSceneAbstractDataset*>::const_iterator it = m_datasets.constBegin();
90  QVector<GeoSceneAbstractDataset*>::const_iterator end = m_datasets.constEnd();
91  for (; it != end; ++it) {
92  if ( (*it)->name() == name ) {
93  dataset = *it;
94  break;
95  }
96  }
97  return dataset;
98 }
99 
100 // implement non-const method by means of const method,
101 // for details, see "Effective C++" (third edition)
102 GeoSceneAbstractDataset* GeoSceneLayer::dataset( const QString& name )
103 {
104  return const_cast<GeoSceneAbstractDataset*>
105  ( static_cast<GeoSceneLayer const *>( this )->dataset( name ));
106 }
107 
108 const GeoSceneAbstractDataset * GeoSceneLayer::groundDataset() const
109 {
110  if ( m_datasets.isEmpty() )
111  return 0;
112 
113  return m_datasets.first();
114 }
115 
116 // implement non-const method by means of const method,
117 // for details, see "Effective C++" (third edition)
118 GeoSceneAbstractDataset * GeoSceneLayer::groundDataset()
119 {
120  return const_cast<GeoSceneAbstractDataset*>
121  ( static_cast<GeoSceneLayer const *>( this )->groundDataset() );
122 }
123 
124 QVector<GeoSceneAbstractDataset *> GeoSceneLayer::datasets() const
125 {
126  return m_datasets;
127 }
128 
129 QString GeoSceneLayer::name() const
130 {
131  return m_name;
132 }
133 
134 QString GeoSceneLayer::backend() const
135 {
136  return m_backend;
137 }
138 
139 void GeoSceneLayer::setBackend( const QString& backend )
140 {
141  m_backend = backend;
142 }
143 
144 bool GeoSceneLayer::isTiled() const
145 {
146  return m_tiled;
147 }
148 
149 void GeoSceneLayer::setTiled( bool tiled )
150 {
151  m_tiled = tiled;
152 }
153 
154 QString GeoSceneLayer::role() const
155 {
156  return m_role;
157 }
158 
159 void GeoSceneLayer::setRole( const QString& role )
160 {
161  m_role = role;
162 }
163 
164 const GeoSceneFilter* GeoSceneLayer::filter() const
165 {
166  return m_filter;
167 }
168 
169 GeoSceneFilter* GeoSceneLayer::filter()
170 {
171  return m_filter;
172 }
173 
174 void GeoSceneLayer::addFilter( GeoSceneFilter * filter )
175 {
176  m_filter = filter;
177 }
178 
179 void GeoSceneLayer::removeFilter( GeoSceneFilter * filter )
180 {
181  if ( filter == m_filter ) {
182  m_filter = 0;
183  }
184 }
185 
186 }
GeoSceneTypes.h
Marble::GeoSceneLayer::groundDataset
const GeoSceneAbstractDataset * groundDataset() const
Definition: GeoSceneLayer.cpp:108
Marble::GeoSceneLayer::isTiled
bool isTiled() const
returns whether the data is organized in quad tiles.
Definition: GeoSceneLayer.cpp:144
Marble::GeoSceneLayer::~GeoSceneLayer
~GeoSceneLayer()
Definition: GeoSceneLayer.cpp:53
Marble::GeoSceneLayer::dataset
const GeoSceneAbstractDataset * dataset(const QString &) const
Definition: GeoSceneLayer.cpp:85
Marble::GeoSceneLayer::setBackend
void setBackend(const QString &plugin)
Definition: GeoSceneLayer.cpp:139
Marble::GeoSceneLayer::filter
const GeoSceneFilter * filter() const
Definition: GeoSceneLayer.cpp:164
Marble::GeoSceneLayer::removeFilter
void removeFilter(GeoSceneFilter *filter)
Definition: GeoSceneLayer.cpp:179
Marble::GeoSceneLayer::addDataset
void addDataset(GeoSceneAbstractDataset *)
Add a section to the legend.
Definition: GeoSceneLayer.cpp:64
Marble::GeoSceneAbstractDataset
Contents used inside a layer.
Definition: GeoSceneAbstractDataset.h:37
Marble::GeoSceneAbstractDataset::name
QString name() const
Definition: GeoSceneAbstractDataset.cpp:38
Marble::GeoSceneTypes::GeoSceneLayerType
const char * GeoSceneLayerType
Definition: GeoSceneTypes.cpp:25
Marble::GeoSceneLayer::addFilter
void addFilter(GeoSceneFilter *filter)
Definition: GeoSceneLayer.cpp:174
Marble::GeoSceneLayer
Layer of a GeoScene document.
Definition: GeoSceneLayer.h:43
Marble::GeoSceneLayer::name
QString name() const
Definition: GeoSceneLayer.cpp:129
GeoSceneFilter.h
Marble::GeoSceneLayer::GeoSceneLayer
GeoSceneLayer(const QString &name)
Definition: GeoSceneLayer.cpp:43
Marble::GeoSceneLayer::backend
QString backend() const
Definition: GeoSceneLayer.cpp:134
GeoSceneAbstractDataset.h
Marble::GeoSceneFilter
Filter of a GeoScene document.
Definition: GeoSceneFilter.h:39
Marble::GeoSceneLayer::datasets
QVector< GeoSceneAbstractDataset * > datasets() const
Definition: GeoSceneLayer.cpp:124
Marble::GeoSceneLayer::nodeType
virtual const char * nodeType() const
Definition: GeoSceneLayer.cpp:59
Marble::GeoSceneLayer::setTiled
void setTiled(bool)
Definition: GeoSceneLayer.cpp:149
Marble::GeoSceneLayer::setRole
void setRole(const QString &type)
Definition: GeoSceneLayer.cpp:159
Marble::GeoSceneLayer::role
QString role() const
Definition: GeoSceneLayer.cpp:154
GeoSceneLayer.h
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