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
meshstagecache.h File Reference
#include "mesh/dtmthinner.h"
#include <QByteArray>
#include <QLoggingCategory>
#include <QPointF>
#include <QPolygonF>
#include <QRectF>
#include <QString>
#include <QVector>
Include dependency graph for meshstagecache.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  mesh::MeshStageCache
 
struct  mesh::MeshStageCache::FileIdentity
 
struct  mesh::MeshStageCache::BoundaryPrep
 
struct  mesh::MeshStageCache::TerrainPoints
 

Namespaces

namespace  mesh
 

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

Silent sidecar disk cache for the two expensive, rarely-changing stages of mesh generation, so parameter-tweaking re-runs skip minutes of recompute:

Stage A — prepared PSLG boundary: dissolved domains + prepared hole rings/seeds. Keyed by the boundary source identity (path + mtime + size + layer name, or a hash of the subcatchment vertices), both CRS WKTs, and the two ring-prep parameters. Stage B — terrain candidate points (DTM CRS, PRE-filter): the output of DTMThinner::generatePoints()/readPixels(). Keyed by the DEM identity + band + the thinning-relevant options + the sampled bbox. Poisson/boundary-filter/mesh-CRS parameters are deliberately NOT in the key — those passes are cheap and rerun on both paths, so tweaking them still hits the cache.

Entries live in <project dir>/.meshcache/ (sidecar convention, like .ovr and .oswp), one file per entry, written atomically via QSaveFile. Any read anomaly (bad magic/version/short read) is a miss. prune() keeps the newest N entries per stage. Keys embed a format-version salt, so bumping kFormatVersion invalidates everything at once.