LuciadCPillar 2026.0
Loading...
Searching...
No Matches
luciad::FeatureStateManager Class Referenceabstract

Manages feature states. More...

#include <luciad/layers/features/FeatureStateManager.h>

Classes

class  Change
 This class is used to build feature state changes. More...

Public Member Functions

virtual ~FeatureStateManager ()=default
virtual void addObserver (std::shared_ptr< IFeatureStateObserver > observer, bool seedObserver=false)=0
 Adds an observer that allows to inspect feature state changes.
virtual void applyStateChange (const Change &featureStateChange)=0
 Applies the given state change.
virtual void clearEnabledStates (const LayerFeatureId &layerFeatureId)=0
 Clears (i.e.
virtual std::vector< FeatureIdgetFeaturesWithStateEnabled (LayerId layerId, const FeatureState &featureState) const =0
 Returns the collection of feature IDs of the given layer for which the given feature state is enabled.
virtual bool isStateEnabled (LayerFeatureId layerFeatureId, const FeatureState &featureState) const =0
 Checks if the given feature state is enabled for the given feature identifier.
virtual void removeObserver (const std::shared_ptr< IFeatureStateObserver > &observer)=0
 Removes the given observer.

Detailed Description

Manages feature states.

In essence, it keeps a mapping of enabled/disabled states for each feature for specific FeatureState instances. This class can for example manage which features are selected.

Example

// Create and add a selection observer that prints which feature is selected or deselected
auto selectionObserver = IFeatureStateObserver::create([](const FeatureStateEvent& changeEvent) {
for (auto changedFeature : changeEvent.getChangedFeatures(FeatureState::selected())) {
bool selected = changeEvent.getChange(FeatureState::selected(), changedFeature);
std::string selectedMessage = selected ? "Selected" : "Deselected";
std::cout << "Feature " << changedFeature.featureId << " => " << selectedMessage << std::endl;
}
});
featureStateManager->addObserver(selectionObserver);
// Apply a state change.
change->clearState(FeatureState::selected());
change->setState(feature1, FeatureState::selected(), true);
featureStateManager->applyStateChange(*change);
// Assuming that feature 2 was already selected before, the output will be:
// Feature 2 => Deselected
// Feature 1 => Selected
featureStateManager->removeObserver(selectionObserver);

Constructor & Destructor Documentation

◆ ~FeatureStateManager()

virtual luciad::FeatureStateManager::~FeatureStateManager ( )
virtualdefault

Member Function Documentation

◆ addObserver()

virtual void luciad::FeatureStateManager::addObserver ( std::shared_ptr< IFeatureStateObserver > observer,
bool seedObserver = false )
pure virtual

Adds an observer that allows to inspect feature state changes.

Note: this method should only be called on the UI thread

Parameters
observeran observer
seedObserverwhether to inform the observer about the features for which a FeatureState is currently enabled
Exceptions
InvalidArgumentExceptionif the observer is already added.
NullArgumentExceptionif observer is nullptr.

◆ applyStateChange()

virtual void luciad::FeatureStateManager::applyStateChange ( const Change & featureStateChange)
pure virtual

Applies the given state change.

After this call, the FeatureStateManager::isStateEnabled method will reflect the given changes, and the registered observers will have been notified of the concrete changes for each feature.

Note: this method should only be called on the UI thread

Parameters
featureStateChangea feature state change

◆ clearEnabledStates()

virtual void luciad::FeatureStateManager::clearEnabledStates ( const LayerFeatureId & layerFeatureId)
pure virtual

Clears (i.e.

sets to false) all enabled stated for the given feature.

Note: this method should only be called on the UI thread

Parameters
layerFeatureIdthe feature for which to clear all enabled states.

◆ getFeaturesWithStateEnabled()

virtual std::vector< FeatureId > luciad::FeatureStateManager::getFeaturesWithStateEnabled ( LayerId layerId,
const FeatureState & featureState ) const
pure virtual

Returns the collection of feature IDs of the given layer for which the given feature state is enabled.

Note: this method should only be called on the UI thread

Parameters
layerIda layer
featureStatea feature state
Returns
the collection of feature IDs of the given layer for which the given feature state is enabled.
Since
2025.0

◆ isStateEnabled()

virtual bool luciad::FeatureStateManager::isStateEnabled ( LayerFeatureId layerFeatureId,
const FeatureState & featureState ) const
pure virtual

Checks if the given feature state is enabled for the given feature identifier.

Note: this method can be called on any thread.

Parameters
layerFeatureIda feature identifier
featureStatea feature state
Returns
if the given feature state is enabled for the given feature identifier.

◆ removeObserver()

virtual void luciad::FeatureStateManager::removeObserver ( const std::shared_ptr< IFeatureStateObserver > & observer)
pure virtual

Removes the given observer.

Note: this method should only be called on the UI thread

Parameters
observeran observer
Exceptions
InvalidArgumentExceptionif the observer was not added.
NullArgumentExceptionif observer is nullptr.