110 {
return m_contentRev; }
121 QSGNode *
updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *)
override;
126 void noteContentChanged() { ++m_contentRev; update(); }
128 QPointer<SWMM2DResultsLayer> m_layer;
129 quint64 m_contentRev = 0;
135 double m_anchorX = 0.0;
136 double m_anchorY = 0.0;
143 quint64 m_builtLodKey = ~quint64(0);
144 QRectF m_builtCoverage;
145 int m_lastBucket = -1;
146 int m_lastZoomStep = std::numeric_limits<int>::min();
149 quint64 m_lastGeomRev = ~quint64(0);
150 QSet<int> m_lastHighlight;
155 int m_lastRenderedTime = -1;
159 quint64 m_chunksRev = ~quint64(0);
167 enum class SmoothFillMode { VertexColor, Shader };
168 SmoothFillMode m_smoothFillMode = SmoothFillMode::VertexColor;
172 QImage m_smoothLutImage;
183 quint64 paramsRev = 0;
185 quint64 geomRev = ~quint64(0);
189 return valid == o.valid && time == o.time && lo == o.lo
190 && hi == o.hi && bandCount == o.bandCount
191 && paramsRev == o.paramsRev && tris == o.tris
192 && geomRev == o.geomRev;
194 bool operator!=(
const ContourJobKey &o)
const {
return !(*
this == o); }
197 struct AsyncContourJob
201 quint64 inflightGen = 0;
202 ContourJobKey inflightKey;
203 ContourJobKey publishedKey;
204 bool relaunch =
false;
206 AsyncContourJob m_bandJob;
207 AsyncContourJob m_isoJob;
210 std::shared_ptr<const std::vector<OpenSWMM::Render::ContourJobInput::TriPos>>
212 quint64 m_contourPositionsRev = ~quint64(0);
215 std::shared_ptr<const std::vector<std::array<float, 3>>> m_contourScalars;
216 int m_contourScalarsTime = -1;
217 quint64 m_contourScalarsGeomRev = ~quint64(0);
219 void setupAsyncContourJob(AsyncContourJob &job);
225 mutable QHash<QString, QSGTexture *> m_labelTextureCache;
226 void clearLabelTextureCache();
232 int m_bandCacheTime = -1;
233 double m_bandCacheLo = 0.0;
234 double m_bandCacheHi = 0.0;
235 int m_bandCacheCount = -1;
236 size_t m_bandCacheTris = 0;
237 quint64 m_bandCacheRev = 0;
238 std::vector<OpenSWMM::Contour::IsoBandPolygon> m_cachedBands;
240 int m_isoCacheTime = -1;
241 double m_isoCacheLo = 0.0;
242 double m_isoCacheHi = 0.0;
243 quint64 m_isoCacheParams = 0;
244 size_t m_isoCacheTris = 0;
245 std::vector<OpenSWMM::Contour::IsoLineSegment> m_cachedSegs;
bool operator==(const InletDesignData &a, const InletDesignData &b)
Field-by-field equality — used by setDesign to suppress no-op notifications and by the undo commands ...
Definition inletprovider.cpp:11