SWMMVis  6.0.0-alpha.4
Qt6/C++ GIS-based graphical user interface for the SWMMVis engine (6.0.0-alpha.4)
Loading...
Searching...
No Matches
featuregeometry.h File Reference
#include <QPointF>
#include <QPolygonF>
#include <QRectF>
#include <QString>
#include <QVector>
Include dependency graph for featuregeometry.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  openswmmvis::feature::Ring
 One ordered run of vertices, with optional per-vertex Z. More...
 
struct  openswmmvis::feature::Part
 One part of a geometry: a polygon (exterior + holes), a line run, or a single point. More...
 
class  openswmmvis::feature::FeatureGeometry
 A complete feature geometry: a type plus zero or more parts. More...
 

Namespaces

namespace  openswmmvis
 
namespace  openswmmvis::feature
 

Enumerations

enum class  openswmmvis::feature::GeometryType {
  openswmmvis::feature::None = 0 ,
  openswmmvis::feature::Point ,
  openswmmvis::feature::LineString ,
  openswmmvis::feature::Polygon ,
  openswmmvis::feature::MultiPoint ,
  openswmmvis::feature::MultiLineString ,
  openswmmvis::feature::MultiPolygon
}
 Geometry kinds an editable feature layer can hold. More...
 

Functions

QString openswmmvis::feature::geometryTypeLabel (GeometryType t)
 Human label for t, for combo boxes and metadata rows.
 
QString openswmmvis::feature::geometryTypeToken (GeometryType t)
 Stable token for t, for .oswp persistence. Round-trips through geometryTypeFromToken.
 
GeometryType openswmmvis::feature::geometryTypeFromToken (const QString &token)
 Inverse of geometryTypeToken; GeometryType::None when unknown.
 
bool openswmmvis::feature::isMultiType (GeometryType t)
 True when t is one of the Multi* kinds.
 
GeometryType openswmmvis::feature::toMultiType (GeometryType t)
 The Multi* kind corresponding to t (identity for Multi* inputs).
 

Detailed Description

Author
Caleb Buahin caleb.nosp@m..bua.nosp@m.hin@g.nosp@m.mail.nosp@m..com
Date
2026
License\n GPL-3.0-or-later

Editable vector geometry for user-authored feature layers (workplans/MESH_DIALOG_TABS_AND_FEATURE_LAYERS_PLAN_2026-09-07.md §3.1).

The GUI has three incompatible geometry vocabularies today: QPolygonF (mesh and SWMM sides, no hole concept), OGRGeometry (inside GISVectorLayer only, never surfaced), and QPainterPath (render-only). FeatureGeometry is the one value type the editing stack passes around; FeatureGeometry::fromOGR and FeatureGeometry::toOGR are the ONLY places OGR geometry is converted, so no other GUI code needs to include ogr_geometry.h.

Rings carry an optional parallel Z array. A ring is 2D when z is empty and 3D when z.size() == pts.size(); individual Z values may be NaN (sampled outside raster coverage — see ZPolicy). Callers must treat NaN as "unknown", never as zero: the mesh pipeline already distinguishes them via SteinerPoint::hasZ.

Ring validity (simple, orientation, containment) reuses the predicates already written for quad regions in mesh/meshquadregion.h rather than duplicating them; see validate.