• 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
RenderState.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 2014 Dennis Nienhüser <earthwings@gentoo.org>
9 //
10 
11 #include "RenderState.h"
12 
13 #include <QList>
14 
15 namespace Marble {
16 
17 class RenderState::Private
18 {
19 public:
20  QString m_name;
21  QList<RenderState> m_children;
22  RenderStatus m_status;
23 
24  Private( const QString &name=QString(), RenderStatus status=Complete );
25  RenderStatus status() const;
26  RenderStatus minimumStatus( RenderStatus a, RenderStatus b ) const;
27  QString toString( const RenderState &state, int indent ) const;
28 };
29 
30 RenderState::RenderState( const QString &name, RenderStatus status ) :
31  d( new Private( name, status ) )
32 {
33  // nothing to do
34 }
35 
36 RenderState::RenderState( const RenderState &other ) :
37  d( new Private )
38 {
39  *d = *other.d;
40 }
41 
42 RenderState &RenderState::operator=( const RenderState &other )
43 {
44  *d = *other.d;
45  return *this;
46 }
47 
48 RenderState::~RenderState()
49 {
50  delete d;
51 }
52 
53 RenderStatus RenderState::status() const
54 {
55  return d->status();
56 }
57 
58 QString RenderState::name() const
59 {
60  return d->m_name;
61 }
62 
63 int RenderState::children() const
64 {
65  return d->m_children.size();
66 }
67 
68 RenderState RenderState::childAt( int index ) const
69 {
70  return d->m_children.at( index );
71 }
72 
73 void RenderState::addChild(const RenderState &child)
74 {
75  d->m_children.push_back( child );
76 }
77 
78 RenderState::operator QString() const
79 {
80  return d->toString( *this, 0 );
81 }
82 
83 RenderState::Private::Private( const QString &name, RenderStatus status ) :
84  m_name( name ),
85  m_status( status )
86 {
87  // nothing to do
88 }
89 
90 RenderStatus RenderState::Private::status() const
91 {
92  RenderStatus status = Complete;
93  foreach( const RenderState &child, m_children ) {
94  status = minimumStatus( status, child.status() );
95  }
96  return minimumStatus( status, m_status );
97 }
98 
99 RenderStatus RenderState::Private::minimumStatus( RenderStatus a, RenderStatus b ) const
100 {
101  if ( a == Incomplete || b == Incomplete ) {
102  return Incomplete;
103  }
104  if ( a == WaitingForData || b == WaitingForData ) {
105  return WaitingForData;
106  }
107  if ( a == WaitingForUpdate || b == WaitingForUpdate ) {
108  return WaitingForUpdate;
109  }
110 
111  Q_ASSERT( a == Complete || b == Complete );
112  return Complete;
113 }
114 
115 QString RenderState::Private::toString( const RenderState &state, int level ) const
116 {
117  QString const prefix = level > 0 ? "\n" : "";
118  QString indent;
119  for ( int i=0; i<level; ++i ) {
120  indent += " ";
121  }
122  QString status;
123  switch ( state.status() ) {
124  case Marble::Complete: status = "Complete"; break;
125  case Marble::WaitingForUpdate: status = "Waiting for update"; break;
126  case Marble::WaitingForData: status = "Waiting for data"; break;
127  case Marble::Incomplete: status = "Incomplete"; break;
128  }
129  QString const name = ( state.name().isEmpty() ? "Anonymous renderer" : state.name() );
130  QString result = QString("%1%2%3: %4").arg( prefix ).arg( indent ).arg( name ).arg( status );
131 
132  foreach( const RenderState &child, state.d->m_children ) {
133  result += toString( child, level+1 );
134  }
135  return result;
136 }
137 
138 }
Marble::WaitingForData
Rendering is based on no or partial data, more data was requested (e.g. pending network queries) ...
Definition: MarbleGlobal.h:194
Marble::RenderState::~RenderState
~RenderState()
Definition: RenderState.cpp:48
RenderState.h
Marble::RenderState::name
QString name() const
Definition: RenderState.cpp:58
QString
QList
Marble::RenderStatus
RenderStatus
Definition: MarbleGlobal.h:191
Marble::RenderState
Definition: RenderState.h:22
Marble::Incomplete
Data is missing and some error occurred when trying to retrieve it (e.g. network failure) ...
Definition: MarbleGlobal.h:195
Marble::RenderState::children
int children() const
Definition: RenderState.cpp:63
Marble::Complete
All data is there and up to date.
Definition: MarbleGlobal.h:192
QTest::toString
char * toString(const T &value)
Marble::RenderState::operator=
RenderState & operator=(const RenderState &other)
Definition: RenderState.cpp:42
Marble::RenderState::childAt
RenderState childAt(int index) const
Definition: RenderState.cpp:68
Marble::RenderState::RenderState
RenderState(const QString &name=QString(), RenderStatus status=Complete)
Definition: RenderState.cpp:30
Marble::WaitingForUpdate
Rendering is based on complete, but outdated data, data update was requested.
Definition: MarbleGlobal.h:193
QString::arg
QString arg(qlonglong a, int fieldWidth, int base, const QChar &fillChar) const
Marble::RenderState::addChild
void addChild(const RenderState &child)
Definition: RenderState.cpp:73
Marble::RenderState::status
RenderStatus status() const
Definition: RenderState.cpp:53
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