1//
2// Copyright 2008 Simon Edwards <simon@simonzone.com>
3//
4// This library is free software; you can redistribute it and/or
5// modify it under the terms of the GNU Lesser General Public
6// License as published by the Free Software Foundation; either
7// version 2.1 of the License, or (at your option) any later version.
8//
9// This library is distributed in the hope that it will be useful,
10// but WITHOUT ANY WARRANTY; without even the implied warranty of
11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12// Lesser General Public License for more details.
13//
14// You should have received a copy of the GNU Lesser General Public
15// License along with this library.  If not, see <http://www.gnu.org/licenses/>.
16//
17
18namespace Marble
19{
20
21class GeoDataLineString : Marble::GeoDataGeometry
22{
23%TypeHeaderCode
24#include <GeoDataLineString.h>
25%End
26
27public:
28//ig    typedef QVector<GeoDataCoordinates>::Iterator Iterator;
29
30//ig    typedef QVector<GeoDataCoordinates>::ConstIterator ConstIterator;
31
32                            GeoDataLineString (Marble::TessellationFlags f = Marble::NoTessellation);
33                            GeoDataLineString (const Marble::GeoDataGeometry& other);
34    virtual bool            isClosed () const;
35    bool                    tessellate () const;
36    void                    setTessellate (bool tessellate);
37    Marble::TessellationFlags  tessellationFlags () const;
38    void                    setTessellationFlags (Marble::TessellationFlags f);
39    Marble::GeoDataLatLonAltBox  latLonAltBox () const;
40    int                     size () const;
41//FIXME Add the needed Python list methods.
42//ig    Marble::GeoDataCoordinates&  at (int pos);
43    const Marble::GeoDataCoordinates&  at (int pos) const;
44//ig    Marble::GeoDataCoordinates&  operator [] (int pos);
45    const Marble::GeoDataCoordinates&  operator [] (int pos) const;
46//ig    Marble::GeoDataCoordinates&  first ();
47    const Marble::GeoDataCoordinates&  first () const;
48//ig    Marble::GeoDataCoordinates&  last ();
49    const Marble::GeoDataCoordinates&  last () const;
50    void                    append (const Marble::GeoDataCoordinates& position);
51    Marble::GeoDataLineString&  operator << (const Marble::GeoDataCoordinates& position);
52//ig    QVector<Marble::GeoDataCoordinates>::Iterator  begin ();
53//ig    QVector<Marble::GeoDataCoordinates>::Iterator  end ();
54//ig    QVector<Marble::GeoDataCoordinates>::ConstIterator  constBegin () const;
55//ig    QVector<Marble::GeoDataCoordinates>::ConstIterator  constEnd () const;
56    void                    clear ();
57    virtual void            pack (QDataStream& stream) const;
58    virtual void            unpack (QDataStream& stream);
59
60protected:
61//ig    Marble::GeoDataLineStringPrivate*  p () const;
62
63public:
64    virtual ~GeoDataLineString ();
65    virtual qreal           length (qreal planetRadius, int offset = 0) const;
66//ig    virtual QVector<Marble::GeoDataLineString*>  toRangeCorrected () const;
67    virtual Marble::GeoDataLineString  toNormalized () const;
68    virtual Marble::GeoDataLineString  toPoleCorrected () const;
69//ig    virtual QVector<Marble::GeoDataLineString*>  toDateLineCorrected () const;
70    bool                    isEmpty () const;
71//ig    Marble::GeoDataLineString&  operator << (const Marble::GeoDataLineString& lineString);
72//ig    QVector<GeoDataCoordinates>::Iterator  erase (QVector<GeoDataCoordinates>::Iterator position);
73//ig    QVector<GeoDataCoordinates>::Iterator  erase (QVector<GeoDataCoordinates>::Iterator begin, QVector<GeoDataCoordinates>::Iterator end);
74    void                    remove (int i);
75protected:
76//ig                            GeoDataLineString (GeoDataLineStringPrivate* priv);
77public:
78
79// FIXME
80//ig    QVector<GeoDataCoordinates>::ConstIterator  begin () const;
81//ig    QVector<GeoDataCoordinates>::ConstIterator  end () const;
82
83};
84// GeoDataLineString
85
86};
87// Marble
88