Choices are "individual features" (the default behavior) or "continuous
surface". The new Continuous Surface option is designed for vector
layers which represent a continuous elevation surface, e.g contour
lines or surveyed elevation points. When selected, the elevation
chart will be rendered as a surface instead of separate features
by joining the sampled elevation results into a continuous line.
There's also the same option exposed as for raster and mesh layers
where the appearance can be toggled from a single line to a "fill
below" symbol.
Fixes#48341
preprocessors
Since it's not possible to overwrite
QgsNetworkAccessManager::createRequest, the normal Qt approach for
adding custom handling for replies is not possible. This new API
adds a QgsNetworkAccessManager.setReplyPreprocessor() method
which allows clients to add a custom reply preprocessor for implementing
their own logic for replies.
For example:
def _on_ready_read(reply):
print(reply.peek(reply.bytesAvailable()))
def _my_preprocessor(request, reply):
if reply.operation() == QNetworkAccessManager.PutOperation:
reply.readyRead.connect(partial(_on_ready_read, reply))
QgsNetworkAccessManager.setReplyPreprocessor(_my_preprocessor)
Fixes#48169
to continuous elevation surfaces
When snapping to a surface we want to be very "grabby" in the height
axis but ungrabby in the distance axis. For points we should be equally
grabby on either axis.
For some layer types (rasters, point clouds) this gives a much better
experience vs generating the profile completely upfront. (I.e. even
with super-detailed DEM layers the profile is now basically instant
to generate).
using a fill symbol below the elevation surface
This can be easier to interpret in some cases, and helps match expected
symbology conventions in certain disciplines.
elevation profile source
And use this to just redraw the existing results whenever a setting
relating only to the appearance of the profile chart is changed,
instead of regenerating the whole chart
all frames from the animation to a temporary directory
This avoids lengthy delays when trying to render a specific frame
from the animation, as most animation formats require us to
iterate through all preceding frames in order to retrieve a specific
frame. By iterating once in advance and saving the results out we
gain instant access to any individual frame from the animation.
Unlike setting a font's style via setNamedStyle(), these settings
will ensure that a font is always rendered in bold or italic regardless
of whether the font family actually has a bold or italic variant. A
"faux bold" or slanted text effect will be emulated by Qt, which may
result in poor quality font rendering.
(For this reason it is greatly preferred to call setNamedStyle() instead.)
This API is being added so that QgsTextFormat/QgsTextRenderer can
replicate the same font behaviour as the base QFont/QPainter classes
do, where faux bold/italic effects are possible.
(It's not exposed anywhere for user control!)
Eg if a font is built by calling .setBold/.setItalic and not
by QFont::setStyleName then this method will attempt to return
the equivalent style name.
Results are very platform dependent and font dependent, depending
on Qt's internal matching logic (hence no unit tests)