Branch data Line data Source code
1 : : /*************************************************************************** 2 : : qgsmultilinestring.h 3 : : ------------------------------------------------------------------- 4 : : Date : 28 Oct 2014 5 : : Copyright : (C) 2014 by Marco Hugentobler 6 : : email : marco.hugentobler at sourcepole dot com 7 : : *************************************************************************** 8 : : * * 9 : : * This program is free software; you can redistribute it and/or modify * 10 : : * it under the terms of the GNU General Public License as published by * 11 : : * the Free Software Foundation; either version 2 of the License, or * 12 : : * (at your option) any later version. * 13 : : * * 14 : : ***************************************************************************/ 15 : : 16 : : #ifndef QGSMULTILINESTRING_H 17 : : #define QGSMULTILINESTRING_H 18 : : 19 : : #include "qgis_core.h" 20 : : #include "qgis_sip.h" 21 : : #include "qgsmulticurve.h" 22 : : 23 : : class QgsLineString; 24 : : 25 : : /** 26 : : * \ingroup core 27 : : * \class QgsMultiLineString 28 : : * \brief Multi line string geometry collection. 29 : : * \since QGIS 2.10 30 : : */ 31 : 843 : class CORE_EXPORT QgsMultiLineString: public QgsMultiCurve 32 : : { 33 : : public: 34 : : 35 : : /** 36 : : * Constructor for an empty multilinestring geometry. 37 : : */ 38 : : QgsMultiLineString() SIP_HOLDGIL; 39 : : 40 : : 41 : : #ifndef SIP_RUN 42 : : 43 : : /** 44 : : * Returns the line string with the specified \a index. 45 : : * 46 : : * \since QGIS 3.16 47 : : */ 48 : : QgsLineString *lineStringN( int index ); 49 : : #else 50 : : 51 : : /** 52 : : * Returns the line string with the specified \a index. 53 : : * 54 : : * An IndexError will be raised if no line string with the specified index exists. 55 : : * 56 : : * \since QGIS 3.16 57 : : */ 58 : : SIP_PYOBJECT lineStringN( int index ) SIP_TYPEHINT( QgsLineString ); 59 : : % MethodCode 60 : : if ( a0 < 0 || a0 >= sipCpp->numGeometries() ) 61 : : { 62 : : PyErr_SetString( PyExc_IndexError, QByteArray::number( a0 ) ); 63 : : sipIsErr = 1; 64 : : } 65 : : else 66 : : { 67 : : return sipConvertFromType( sipCpp->lineStringN( a0 ), sipType_QgsLineString, NULL ); 68 : : } 69 : : % End 70 : : #endif 71 : : 72 : : #ifndef SIP_RUN 73 : : 74 : : /** 75 : : * Returns the line string with the specified \a index. 76 : : * 77 : : * \note Not available in Python bindings 78 : : * 79 : : * \since QGIS 3.16 80 : : */ 81 : : const QgsLineString *lineStringN( int index ) const; 82 : : #endif 83 : : 84 : : QString geometryType() const override SIP_HOLDGIL; 85 : : QgsMultiLineString *clone() const override SIP_FACTORY; 86 : : void clear() override; 87 : : bool fromWkt( const QString &wkt ) override; 88 : : QDomElement asGml2( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const override; 89 : : QDomElement asGml3( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const override; 90 : : json asJsonObject( int precision = 17 ) const override SIP_SKIP; 91 : : bool addGeometry( QgsAbstractGeometry *g SIP_TRANSFER ) override; 92 : : bool insertGeometry( QgsAbstractGeometry *g SIP_TRANSFER, int index ) override; 93 : : 94 : : /** 95 : : * Returns the geometry converted to the more generic curve type QgsMultiCurve 96 : : * \returns the converted geometry. Caller takes ownership 97 : : */ 98 : : QgsMultiCurve *toCurveType() const override SIP_FACTORY; 99 : : 100 : : #ifndef SIP_RUN 101 : : 102 : : /** 103 : : * Cast the \a geom to a QgsMultiLineString. 104 : : * Should be used by qgsgeometry_cast<QgsMultiLineString *>( geometry ). 105 : : * 106 : : * \note Not available in Python. Objects will be automatically be converted to the appropriate target type. 107 : : * \since QGIS 3.0 108 : : */ 109 : 8 : inline static const QgsMultiLineString *cast( const QgsAbstractGeometry *geom ) 110 : : { 111 : 8 : if ( geom && QgsWkbTypes::flatType( geom->wkbType() ) == QgsWkbTypes::MultiLineString ) 112 : 7 : return static_cast<const QgsMultiLineString *>( geom ); 113 : 1 : return nullptr; 114 : 8 : } 115 : : #endif 116 : : 117 : : QgsMultiLineString *createEmptyWithSameType() const override SIP_FACTORY; 118 : : 119 : : #ifdef SIP_RUN 120 : : SIP_PYOBJECT __repr__(); 121 : : % MethodCode 122 : : QString wkt = sipCpp->asWkt(); 123 : : if ( wkt.length() > 1000 ) 124 : : wkt = wkt.left( 1000 ) + QStringLiteral( "..." ); 125 : : QString str = QStringLiteral( "<QgsMultiLineString: %1>" ).arg( wkt ); 126 : : sipRes = PyUnicode_FromString( str.toUtf8().constData() ); 127 : : % End 128 : : #endif 129 : : 130 : : protected: 131 : : 132 : : bool wktOmitChildType() const override; 133 : : }; 134 : : 135 : : // clazy:excludeall=qstring-allocations 136 : : 137 : : #endif // QGSMULTILINESTRING_H