and add new QgsGeometry::fromPolyline which uses QgsPoint
We want to encourage people not to use the QgsPointXY method, as it drops
Z/M values. So it's moved across to a different name to make way
for a new QgsGeometry::fromPolyline which uses a QgsPoint list
instead of QgsPointXY, thus keeping Z/M values intact.
Similarly, QgsPolyline now is a list of QgsPoint (keeping z/m values)
and the old 2d QgsPolyline type was renamed to QgsPolylineXY.
Making the QgsPoint method the "preferred" method and making linestrings
just as easy to create from z/m dimensioned points as 2d points is
important to push people to write code which does not discard
these important dimensions.
As a bonus, the QgsPoint methods are more efficient anyway, since
they don't require creation of a temporary list.
This change ensures that searching for algorithms always returns
native algorithms before matching 3rd party algorithms
TODO: we really need to replace the toolbox tree with a proper
model and redo the sorting/filtering using a sort/filter proxy
model.
Previously we took a harsher approach to filtering which inputs
were acceptable for child algorithm parameters. E.g. a child algorithm
with a vector layer input would only show outputs from other algorithms
which generated a vector layer output.
But this can needlessly restrict what's possible in models. E.g.
an algorithm which outputs a QgsProcessingOutputFile or
QgsProcessingOutputString could potentially be a valid source
to a vector layer. So we should allow these as possible
inputs for vector layer parameters too.
This commit adds many extra acceptable input types for
child parameters. It will probably expose "corner cases" where
algorithms may get unexpected input types, but these will
not affect existing model stability and can be fixed when
identified.
The payoff is a much more flexible modeler.
This algorithm assigns a new projection to a vector layer.
It creates a new layer with the exact same features and
geometries as the input one, but assigned to a new CRS.
E.g. the geometries are not reprojected, they are just
assigned to a different CRS.
This algorithm can be used to repair layers which have
been assigned an incorrect projection.