Handles scaling of input values to output values by using
a curve created from smoothly joining a number of set
control points.
This 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.
And add a new CLANG_TIDY_EXE cmake option. If this is set to the
path to the clang_tidy executable then a bunch of clang-tidy
checks will be run during compilation.
A new class QgsPathResolver is introduced for conversion between absolute
and relative paths when reading/writing XML.
Cleaned up code in layer definition file support (.qlr) to better handle
relative/absolute path conversion.
This allows users to set a timer interval in layer properties
for individual layers. These layers will be automatically refreshed
at a matching interval.
Canvas updates are deferred in order to avoid refreshing multiple
times if more than one layer has an auto update interval set.
Additionally, logic has been added to skip any auto redraws of
the canvas while the canvas is already being redrawn. This avoids
issues caused by setting a layer auto refresh to a shorter time than
is required to redraw the canvas.
By calling QgsMapLayer::triggerRepaint( true ) any cached
version of the layer will be invalidated, but a map canvas
refresh won't automatically be triggered
This allows invalidation of cached images while deferring
the actual map update until the next canvas refresh.
Motivations:
- consistency - we generally use expanded names, and this also
matches Qt API which uses Database instead of Db
- avoids unpredictable capitalization throughout API (mix of "Db"
and "DB")
In some cases the render result for a layer may depend on more than
one layer.
This changes QgsMapRendererCache to use "cache keys" instead of layer ids
to identify images within the cache. When setting an image inside the
cache, a new list parameter is used to specify all layers on which
that image depends.
QgsMapRendererJob and subclasses are not designed to be subclassed
outside of core QGIS code. Marking them private API allows us to
change them after API is frozen again.