LuciadCPillar 2024.0.04
|
This class can provide the Geometry
associated with a Feature
, and apply Geometry changes on that Feature.
More...
#include <luciad/models/features/IFeatureGeometryProvider.h>
Public Member Functions | |
virtual | ~IFeatureGeometryProvider ()=default |
virtual std::optional< Feature > | applyGeometry (Feature originalFeature, std::shared_ptr< Geometry > newGeometry)=0 |
Updates the original Feature using the modified Geometry, and returns it. More... | |
virtual std::shared_ptr< Geometry > | getGeometry (const Feature &feature)=0 |
Return the geometry for a Feature (for example a Geometry using which a Geometry can be edited or created). More... | |
This class can provide the Geometry
associated with a Feature
, and apply Geometry changes on that Feature.
this can for example be used to specify the Geometry that is used to edit or create a Feature.
See the related guide for an overview of the editing API.
See DefaultFeatureGeometryProvider
for a default implementation that works for Features that use GeometryDataAnnotation
.
The provided geometry is not necessarily the same geometry as the one used for painting. An example would be to modify the location and orientation of a vessel by editing it as an Ellipse, which also has a location and an orientation. This could be implemented by:
getGeometry
return an Ellipse geometry based on the location and orientation stored in a FeatureapplyGeometry
map the new Ellipse geometry back to a location and an orientation, and modify the Feature accordingly.Similarly, a vessel feature could be created by creating an Ellipse geometry.
|
virtualdefault |
|
pure virtual |
Updates the original Feature using the modified Geometry, and returns it.
This Geometry is not necessarily the same geometry as the one used for painting. See IFeatureGeometryProvider
for an example.
Implemented in luciad::DefaultFeatureGeometryProvider.
|
pure virtual |
Return the geometry for a Feature (for example a Geometry using which a Geometry can be edited or created).
This Geometry is not necessarily the same geometry as the one used for painting.
See IFeatureGeometryProvider
for more information.
feature | the Feature to edit |
nullptr
if the Feature can not be edited using a Geometry Implemented in luciad::DefaultFeatureGeometryProvider.