#pragma once //########################################################################## //# # //# CLOUDCOMPARE # //# # //# This program is free software; you can redistribute it and/or modify # //# it under the terms of the GNU General Public License as published by # //# the Free Software Foundation; version 2 or later of the License. # //# # //# This program is distributed in the hope that it will be useful, # //# but WITHOUT ANY WARRANTY; without even the implied warranty of # //# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # //# GNU General Public License for more details. # //# # //# COPYRIGHT: EDF R&D / TELECOM ParisTech (ENST-TSI) # //# # //########################################################################## struct ccRasterGrid; class ccPolyline; class ccScalarField; class QWidget; //CCCoreLib #include //system #include //! Contour lines generator class ccContourLinesGenerator { public: //! Contour lines generation parameters struct Parameters { double startAltitude = 0.0; double maxAltitude = 0.0; double step = 0.0; //gap between levels ccScalarField* altitudes = nullptr; //optional scalar field that stores the 'altitudes' (may be null, in which case the grid 'h' values are used directly) int minVertexCount = 3; //minimum number of vertices per contour line bool projectContourOnAltitudes = false; double emptyCellsValue = std::numeric_limits::quiet_NaN(); /* The parameters below are only required if GDAL is not required */ QWidget* parentWidget = nullptr; //for progress dialog bool ignoreBorders = false; }; //! Generates contour lines /** \warning contour lines are always generated in the XY plane **/ static bool GenerateContourLines( ccRasterGrid* rasterGrid, const CCVector2d& gridMinCornerXY, //grid min corner (2D) const Parameters& params, std::vector& contourLines); };