35#ifndef OPENSWMM_RENDER_CLASSIFICATIONSCHEME_H
36#define OPENSWMM_RENDER_CLASSIFICATIONSCHEME_H
104 [[nodiscard]] QString
rampName()
const {
return m_rampName; }
107 [[nodiscard]]
bool invertRamp()
const {
return m_invertRamp; }
112 [[nodiscard]] QColor
lowColor()
const {
return m_lowColor; }
114 [[nodiscard]] QColor
highColor()
const {
return m_highColor; }
137 [[nodiscard]]
double rangeMin()
const {
return m_rangeMin; }
139 [[nodiscard]]
double rangeMax()
const {
return m_rangeMax; }
158 [[nodiscard]] QPair<double, double>
effectiveRange(
double dataMin,
double dataMax)
const;
171 [[nodiscard]]
const QHash<int, QColor> &
colorOverrides()
const {
return m_colorOverrides; }
172 [[nodiscard]]
const QHash<int, QString> &
labelOverrides()
const {
return m_labelOverrides; }
188 [[nodiscard]] QVector<double>
levelEdges(
double dataMin,
double dataMax,
189 const QVector<double> &samples = {})
const;
192 [[nodiscard]] QVector<double>
interiorLevels(
double dataMin,
double dataMax,
193 const QVector<double> &samples = {})
const;
197 [[nodiscard]]
static int classIndexFor(
double value,
const QVector<double> &edges);
201 [[nodiscard]] QColor
colorAtF(
double f)
const;
209 [[nodiscard]] QColor
colorForValue(
double value,
double dataMin,
double dataMax)
const;
217 [[nodiscard]] QList<LegendSymbolItem>
legendItems(
double dataMin,
double dataMax,
218 const QVector<double> &samples = {})
const;
224 [[nodiscard]] quint64
revision()
const {
return m_revision; }
227 [[nodiscard]] QJsonObject
toJson()
const;
238 QString m_rampName = QStringLiteral(
"viridis");
240 bool m_hasCustomRamp =
false;
241 bool m_invertRamp =
false;
242 QColor m_lowColor = QColor(Qt::white);
243 QColor m_highColor = QColor(Qt::black);
244 bool m_useCustomRange =
false;
245 double m_rangeMin = 0.0;
246 double m_rangeMax = 1.0;
250 int m_labelPrecision = 3;
251 QHash<int, QColor> m_colorOverrides;
252 QHash<int, QString> m_labelOverrides;
253 quint64 m_revision = 0;
P2 — the static/dynamic styling spine.
Shared classification model: mode + binner + ramp + range + per-class overrides, with a revision stam...
Definition classificationscheme.h:61
void clearColorOverride(int classIndex)
Definition classificationscheme.cpp:230
QJsonObject toJson() const
Definition classificationscheme.cpp:425
QVector< double > interiorLevels(double dataMin, double dataMax, const QVector< double > &samples={}) const
Definition classificationscheme.cpp:338
static ClassificationScheme fromJson(const QJsonObject &j)
Definition classificationscheme.cpp:458
void clearCustomRamp()
Definition classificationscheme.cpp:117
ClassMode
Continuous = smooth ramp sampling (no discrete classes); Classified = discrete bands from the embedde...
Definition classificationscheme.h:67
QString labelOverride(int classIndex) const
Definition classificationscheme.cpp:236
void setColorOverride(int classIndex, const QColor &c)
Definition classificationscheme.cpp:222
void setMode(ClassMode m)
Definition classificationscheme.cpp:51
BinMethod method() const
Definition classificationscheme.h:92
void setBinner(const IntervalBinner &b)
Definition classificationscheme.cpp:58
void setManualBreaks(QVector< double > breaks)
Definition classificationscheme.cpp:82
const QHash< int, QString > & labelOverrides() const
Definition classificationscheme.h:172
ClassMode mode() const
Definition classificationscheme.h:85
LabelFormat labelFormat() const
Definition classificationscheme.h:146
bool useCustomRange() const
Definition classificationscheme.h:135
RasterColorRamp resolvedRamp() const
Definition classificationscheme.cpp:146
QColor highColor() const
Definition classificationscheme.h:114
void setClassCount(int n)
Definition classificationscheme.cpp:74
void setRangeMax(double v)
Definition classificationscheme.cpp:173
void setLabelPrecision(int digits)
Definition classificationscheme.cpp:194
const QVector< double > & manualBreaks() const
Definition classificationscheme.h:98
bool operator!=(const ClassificationScheme &o) const
Definition classificationscheme.h:231
void setMethod(BinMethod m)
Definition classificationscheme.cpp:67
int classCount() const
Definition classificationscheme.h:95
void setLabelOverride(int classIndex, const QString &label)
Definition classificationscheme.cpp:241
RangeMode rangeMode() const
Definition classificationscheme.h:142
QColor lowColor() const
Definition classificationscheme.h:112
const QHash< int, QColor > & colorOverrides() const
Definition classificationscheme.h:171
void setRangeMin(double v)
Definition classificationscheme.cpp:166
QString rampName() const
Definition classificationscheme.h:104
LabelFormat
How numeric class-edge values are rendered in legend / editor labels — fixed decimal places (GIS "pre...
Definition classificationscheme.h:77
@ Decimals
QString::number(v, 'f', labelPrecision)
@ SignificantFigures
QString::number(v, 'g', labelPrecision)
void setUseCustomRange(bool on)
Definition classificationscheme.cpp:159
QColor colorForValue(double value, double dataMin, double dataMax) const
Definition classificationscheme.cpp:380
static int classIndexFor(double value, const QVector< double > &edges)
Definition classificationscheme.cpp:348
void setInvertRamp(bool on)
Definition classificationscheme.cpp:125
const RasterColorRamp & customRamp() const
Definition classificationscheme.h:124
QString formatValue(double v) const
Definition classificationscheme.cpp:202
QColor colorAtF(double f) const
Definition classificationscheme.cpp:358
const IntervalBinner & binner() const
Definition classificationscheme.h:89
void setRangeMode(RangeMode m)
Definition classificationscheme.cpp:180
double rangeMin() const
Definition classificationscheme.h:137
double rangeMax() const
Definition classificationscheme.h:139
QColor colorOverride(int classIndex) const
Definition classificationscheme.cpp:217
void clearLabelOverride(int classIndex)
Definition classificationscheme.cpp:249
QPair< double, double > effectiveRange(double dataMin, double dataMax) const
Definition classificationscheme.cpp:210
int labelPrecision() const
Definition classificationscheme.h:148
QColor colorForClass(int classIndex) const
Definition classificationscheme.cpp:365
quint64 revision() const
Definition classificationscheme.h:224
QList< LegendSymbolItem > legendItems(double dataMin, double dataMax, const QVector< double > &samples={}) const
One legend row per class — value-labelled "lo – hi" (label overrides win), SimpleFill swatch from col...
Definition classificationscheme.cpp:388
void setCustomRamp(const RasterColorRamp &ramp, const QString &name)
Definition classificationscheme.cpp:103
void clearOverrides()
Definition classificationscheme.cpp:255
bool operator==(const ClassificationScheme &o) const
Definition classificationscheme.cpp:512
bool invertRamp() const
Definition classificationscheme.h:107
void setLabelFormat(LabelFormat f)
Definition classificationscheme.cpp:187
QVector< double > levelEdges(double dataMin, double dataMax, const QVector< double > &samples={}) const
Class edges over the effective range — classCount()+1 (for Manual: breaks-in-range + 2) ascending val...
Definition classificationscheme.cpp:263
bool hasCustomRamp() const
Definition classificationscheme.h:123
Computes break values + maps a value to a bin index.
Definition intervalbinner.h:49
int binCount() const
Definition intervalbinner.h:56
const QVector< double > & manualBreaks() const
Definition intervalbinner.h:59
BinMethod method() const
Definition intervalbinner.h:53
RasterColorRamp — gradient mapping from a normalised value in [0,1] to a display QColor.
const char * label
Human label for the filter entry.
Definition gdaldrivers.cpp:22
Slice BB-α — classifies a set of numeric samples into N bins.
One row in a layer's legend — label + swatch symbol + optional range.
MaskMode m
Definition maskspec.cpp:18
std::size_t n
Definition mesh2dresultsexport.cpp:426
int b
local residual indices, a < b
Definition meshquadmatch.cpp:46
Definition gisrasterlayer.h:40
RangeMode
Definition attributesource.h:39
BinMethod
How break values are computed from a sample set.
Definition intervalbinner.h:33
QVector< int > v
pool vertex indices
Definition pslgminsize.cpp:159
QString name
Definition sectionmodelbuilders.cpp:474
Gradient mapping from a normalised value in [0,1] to a QColor.
Definition colorramp.h:71
std::function< void(const QString &)> setRampName
Definition swmm2dresultsstylepanel.cpp:63
std::function< void(const QColor &)> setLowColor
Definition swmm2dresultsstylepanel.cpp:67
std::function< void(const QColor &)> setHighColor
Definition swmm2dresultsstylepanel.cpp:69