QgsCurveTransform class
Handles scaling of input values to output values by using a curve created from smoothly joining a number of set control points.
Contents
QgsCurveTransform assists in creation of curve type transforms, typically seen in raster image editing software (eg the curves dialog in GIMP or Photoshop). Transforms are created by passing a number of set control points through which the transform curve must pass. The curve is guaranteed to exactly pass through these control points. Between control points the curve is smoothly interpolated so that no disjoint sections or "corners" are present.
If the first or last control point are not located at x = 0 and x = 1 respectively, then values outside this range will be mapped to the y value of either the first or last control point. In other words, the curve will have a flat segment for values outside of the control point range.
Constructors, destructors, conversion operators
- QgsCurveTransform()
- Constructs a default QgsCurveTransform which linearly maps values between 0 and 1 unchanged.
- QgsCurveTransform(const QList<QgsPointXY>& controlPoints)
- Constructs a QgsCurveTransform using a specified list of controlPoints.
- QgsCurveTransform(const QgsCurveTransform& other)
- Copy constructor.
Public functions
- void addControlPoint(double x, double y)
- Adds a control point to the transform.
- auto controlPoints() const -> QList<QgsPointXY>
- Returns a list of the control points for the transform.
- auto loadVariant(const QVariant& transformer) -> bool
- Load this curve transformer from a QVariantMap, wrapped in a QVariant.
- auto readXml(const QDomElement& elem, const QDomDocument& doc) -> bool
- Reads the curve's state from an XML element.
- void removeControlPoint(double x, double y)
- Removes a control point from the transform.
- void setControlPoints(const QList<QgsPointXY>& points)
- Sets the list of control points for the transform.
- auto toVariant() const -> QVariant
- Saves this curve transformer to a QVariantMap, wrapped in a QVariant.
- auto writeXml(QDomElement& transformElem, QDomDocument& doc) const -> bool
- Writes the current state of the transform into an XML element.
- auto y(double x) const -> double
- Returns the mapped y value corresponding to the specified x value.
- auto y(const QVector<double>& x) const -> QVector<double>
- Returns a list of y values corresponding to a list of x values.
Function documentation
QgsCurveTransform:: QgsCurveTransform()
Constructs a default QgsCurveTransform which linearly maps values between 0 and 1 unchanged.
I.e. y == x.
QgsCurveTransform:: QgsCurveTransform(const QList<QgsPointXY>& controlPoints)
Constructs a QgsCurveTransform using a specified list of controlPoints.
Behavior is undefined if duplicate x values exist in the control points list.
void QgsCurveTransform:: addControlPoint(double x,
double y)
Adds a control point to the transform.
Behavior is undefined if duplicate x values exist in the control points list.
QList<QgsPointXY> QgsCurveTransform:: controlPoints() const
Returns a list of the control points for the transform.
bool QgsCurveTransform:: loadVariant(const QVariant& transformer)
Load this curve transformer from a QVariantMap, wrapped in a QVariant.
You can use QgsXmlUtils::
bool QgsCurveTransform:: readXml(const QDomElement& elem,
const QDomDocument& doc)
Reads the curve's state from an XML element.
| Parameters | |
|---|---|
| elem | source DOM element for transform's state |
| doc | DOM document |
void QgsCurveTransform:: removeControlPoint(double x,
double y)
Removes a control point from the transform.
This will have no effect if a matching control point does not exist.
void QgsCurveTransform:: setControlPoints(const QList<QgsPointXY>& points)
Sets the list of control points for the transform.
Any existing points are removed.
QVariant QgsCurveTransform:: toVariant() const
Saves this curve transformer to a QVariantMap, wrapped in a QVariant.
You can use QgsXmlUtils::
bool QgsCurveTransform:: writeXml(QDomElement& transformElem,
QDomDocument& doc) const
Writes the current state of the transform into an XML element.
| Parameters | |
|---|---|
| transformElem | destination element for the transform's state |
| doc | DOM document |
QVector<double> QgsCurveTransform:: y(const QVector<double>& x) const
Returns a list of y values corresponding to a list of x values.
Calling this method is faster then calling the double variant multiple times.