32 I_ASSIGN(m_slaveExtenderCompPtr,
"SlaveSceneExtender",
"Scene extender will be used to provide background shapes",
false,
"SlaveSceneExtender");
33 I_ASSIGN(m_sceneExtenderModeAttrPtr,
"ViewExtenderMode",
"Control how the view extender works:\n\t0 - combine slave with current shapes\n\t1 - use slave by direct calls only\n\t2 - use slave always and current shapes indirect only\n\t3 - use slave by direct calls only and current shapes indirect only",
true, 0);
34 I_ASSIGN_MULTI_0(m_idFiltersAttrPtr,
"SceneIdFilters",
"Optional scene ID filters allowing to ignore some scene providers",
false);
80 I_ATTR(
int, m_sceneExtenderModeAttrPtr);
81 I_MULTIATTR(
int, m_idFiltersAttrPtr);
89: m_isSlaveShown(false)
99 Q_ASSERT(providerPtr !=
nullptr);
104 bool showOwnShapes =
true;
105 bool showSlaveShapes =
true;
107 switch (*m_sceneExtenderModeAttrPtr){
108 case EM_SLAVE_DIRECT_ONLY:
109 showSlaveShapes = ((flags & SF_DIRECT) != 0);
112 case EM_OWN_SHAPES_INDIRECT:
113 showOwnShapes = ((flags & SF_DIRECT) == 0);
116 case EM_SLAVE_DIRECT_ONLY_OWN_SHAPES_INDIRECT:
117 showOwnShapes = ((flags & SF_DIRECT) == 0);
118 showSlaveShapes = ((flags & SF_DIRECT) != 0);
126 if ( showOwnShapes &&
127 (viewPtr !=
nullptr) &&
128 IsViewIdSupported(viewId) &&
129 (m_shapesMap.find(providerPtr) == m_shapesMap.end())){
130 Shapes& shapes = m_shapesMap[providerPtr];
132 bool isBackground = ((flags & SF_BACKGROUND) != 0);
133 CreateShapes(viewId, shapes);
135 int shapesCount = shapes.
GetCount();
136 for (
int i = 0; i < shapesCount; ++i){
138 if (shapePtr !=
nullptr){
143 if (shapeImplPtr !=
nullptr){
153 if (showSlaveShapes && m_slaveExtenderCompPtr !=
nullptr){
154 m_slaveExtenderCompPtr->AddItemsToScene(providerPtr, (flags | SF_BACKGROUND) & ~SF_DIRECT);
156 m_isSlaveShown =
true;
159 m_isSlaveShown =
false;
167 Q_ASSERT(providerPtr !=
nullptr);
170 Q_ASSERT(m_slaveExtenderCompPtr !=
nullptr);
172 m_slaveExtenderCompPtr->RemoveItemsFromScene(providerPtr);
175 ShapesMap::iterator iter = m_shapesMap.find(providerPtr);
176 if (iter != m_shapesMap.end()){
179 if (viewPtr !=
nullptr){
180 Shapes& shapes = iter.value();
182 int shapesCount = shapes.
GetCount();
183 for (
int i = 0; i < shapesCount; ++i){
185 if (shapePtr !=
nullptr){
191 m_shapesMap.erase(iter);
201 if (m_idFiltersAttrPtr.IsValid()){
202 int filtersCount = m_idFiltersAttrPtr.GetCount();
203 for (
int i = 0; i < filtersCount; ++i){
204 int filterId = m_idFiltersAttrPtr[i];
205 if (viewId == filterId){
227 for (ShapesMap::iterator iter = m_shapesMap.begin(); iter != m_shapesMap.end(); ++iter){
229 Q_ASSERT(viewProvderPtr !=
nullptr);
232 Q_ASSERT(viewPtr !=
nullptr);
242 for (ShapesMap::iterator iter = m_shapesMap.begin(); iter != m_shapesMap.end(); ++iter){
243 Shapes& shapes = iter.value();
245 int shapesCount = shapes.
GetCount();
246 for (
int i = 0; i < shapesCount; ++i){
248 if (shapePtr !=
nullptr){
Interface for GUI objects presenting its results using extern view objects.
Interface for GUI objects managing view.
virtual int GetViewId() const =0
Get ID indentifing this view.
virtual iview::IShapeView * GetView() const =0
Called when items should be removed from specified view.
void AddItemsToScene(IViewProvider *providerPtr, int flags) override
Called when items should be added to specified scene.
const ShapesMap & GetShapesMap() const
void SetAllShapesVisible(bool state=true)
Make all owned shapes visible or hidden.
bool IsViewIdSupported(int viewId) const
istd::TPointerVector< iview::IShape > Shapes
@ EM_SLAVE_DIRECT_ONLY_OWN_SHAPES_INDIRECT
QMap< IViewProvider *, Shapes > ShapesMap
void UpdateAllViews()
It calls Update for all used views.
virtual void CreateShapes(int viewId, Shapes &result)=0
Create shapes for the view.
void RemoveItemsFromScene(IViewProvider *providerPtr) override
Called when items should be removed from specified scene.
Implementation of a pointer container, which controls the live cycle of the pointer object.
Pointer * GetAt(int index) const
Get pointer at specified index.
int GetCount() const
Get number of stored elements.
Base class of standard shape implementation.
virtual bool AssignToLayer(int layerType)
Assign this shape to same layer.
Common interface for all display console shapes.
virtual void SetVisible(bool state=true)=0
Make shape to be visible or not.
virtual int GetLayerType() const =0
Get layer type of this shape object.
virtual bool DisconnectShape(IShape *shapePtr)=0
Disconnect shape object from view.
Common interface for a general shape view implementations.
virtual bool ConnectShape(IShape *shapePtr)=0
Connect shape object to view.
virtual void Update()=0
Updates all invalidates shapes.
@ LT_BACKGROUND
Background layer.
@ LT_INACTIVE
Layer with inactive shapes.
This package contains Qt based implementations for 2D graphic objects.