BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
gui2::LayerElementController Class Reference

Manages the whole appearance of a layer on the graphicsscene. More...

Inheritance diagram for gui2::LayerElementController:
[legend]
Collaboration diagram for gui2::LayerElementController:
[legend]

Signals

void heightChanged (std::string id, double value) const
 
void roughnessChanged (std::string id, double value) const
 
void widthChanged (std::string id, double value) const
 

Public Member Functions

 LayerElementController (LayerElementItem *layer_view_item)
 Constructor. More...
 
void autoPopulate ()
 Allow the population of the own elements. More...
 
void connectToModel () const
 Connect to the set item. More...
 
void deleteViewItems ()
 If loacally created the view elements nees to be locally destroyed. More...
 
void disconnectFormModel () const
 Disconnect from the set item. More...
 
HandleElementViewfirstSegmentHandle () const
 Return the side Segment view. More...
 
void handleViewMoved (HandleElementView *handle_view)
 The move logic for the handles associated to the segments. More...
 
LayerElementControllerlayerAbove () const
 Return the layer above the current one in relation. More...
 
LayerElementControllerlayerBelow () const
 Return the layer below the current one in relation. More...
 
LayerElementItemlayerElementItem () const
 Returns the pointer to the LayerElementItem in the model. More...
 
HandleElementViewleftRoughnessHandle () const
 Return the left roughness handle element view. More...
 
HandleElementViewrightRoughnessHandle () const
 Return the right roughness handle element view. More...
 
RoughnessElementViewroughness () const
 Return the roughness element view. More...
 
std::string sampleItemId () const
 Return the set sample item identifier. More...
 
GraphicsScenescene () const
 Return the current set scene. More...
 
HandleElementViewsecondSegmentHandle () const
 Return the top Segment view. More...
 
void segmentViewMoved (SegmentElementView *segment_view)
 The move logic for the segments. More...
 
void setLayerAbove (LayerElementController *layer_view_controller)
 Set the layer above the current one in relation. More...
 
void setLayerBelow (LayerElementController *layer_view_controller)
 Set the layer below the current one in relation. More...
 
void setRoughness (RoughnessElementView *roughness_view)
 Set the roughness element view. More...
 
void setRoughnessHandles (HandleElementView *first_handle_view, HandleElementView *second_handle_view)
 Set the roughness handle element views. More...
 
void setSampleItemId (std::string indentifier)
 Set the idenfier of the sample item to report. More...
 
void setScene (GraphicsScene *scene)
 Set the scene. More...
 
void setSegmentHandles (HandleElementView *first_handle, HandleElementView *secondHandle)
 Set the side segment elements. More...
 
void setSideSegment (SegmentElementView *segment_view)
 Set the side segment elements. More...
 
void setTopSegment (SegmentElementView *segment_view)
 Set the top segment elements. More...
 
SegmentElementViewsideSegment () const
 Return the side Segment view. More...
 
SegmentElementViewtopSegment () const
 Return the top Segment view. More...
 
void unsetLayerAbove (bool silent=true)
 Unset the layer above the current one in relation. More...
 
void unsetLayerBelow (bool silent=true)
 Unset the layer below the current one in relation. More...
 
void unsetRoughness ()
 Remove the roughness view element pointer. More...
 
void unsetRoughnessHandles ()
 Remove the handle pointers. More...
 
void unsetSampleItemId ()
 Unset the sample item identifier. More...
 
void unsetScene ()
 Set the scene. More...
 
void unsetSegmentHandles ()
 Unset the side segment elements. More...
 
void unsetSideSegment ()
 Unset the side segment elements. More...
 
void unsetTopSegment ()
 Unset the top segment elements. More...
 
void updateRoughness () const
 Update the whole roughness drawing. More...
 

Protected Member Functions

QRectF firstSegmentHandleRect () const
 Get the first segment handle rectangle. More...
 
void leftHandleMoved () const
 Handle the position variation of the left handle. More...
 
QRectF leftRoughnessHandleRect () const
 get the rectangle for the left roughness handles More...
 
QPainterPath leftRoughnessPath () const
 get the left painter path for the roughness view More...
 
void putRoughnessHandlesOnScene () const
 Put the roughness handles on the scene. More...
 
void putRoughnessOnScene () const
 Put the roughnes view on the scene. More...
 
void putSegementsOnScene () const
 Put segments on scene. More...
 
void putSegmentHandlesOnScene () const
 Put the segment handles on the secene. More...
 
void removeRoughnessFromScene () const
 Remove the roughness view item from the scene. More...
 
void removeRoughnessHandlesFromScene () const
 Remove the roughness handles from the sene. More...
 
void removeSegmentHandlesFromScene () const
 Remove the segment handles on the scene. More...
 
void removeSegmentsFromScene () const
 Remove the segments from the scene. More...
 
void rightHandleMoved () const
 Handle the position variation of the right handle. More...
 
QRectF rightRoughnessHandleRect () const
 get the rectangle for the right roughness handles More...
 
QPainterPath rightRoughnessPath () const
 get the right painter path for the roughness view More...
 
QRectF secondSegmentHandleRect () const
 Get the second segment handle rectangle. More...
 
void setRoughnessInLimits (double roughness, bool active=true) const
 Handle the position variation of the right handle. More...
 
void sideSegmentMoved () const
 Handle the position variation of the side segment. More...
 
QRectF sideSegmentRect () const
 Return the side segment rectangle. More...
 
void topSegmentMoved () const
 Handle the position variation of the top segment. More...
 
QRectF topSegmentRect () const
 Return the top segment rectangle. More...
 
void updateSegmentHandles () const
 Update the handles of the segment. More...
 
void updateSideSegment () const
 Update the view of the side segment. More...
 
void updateTopSegment () const
 Update the view of the top segment. More...
 

Private Member Functions

ModelView::SceneAdapterInterfacesceneAdapter () const
 Get the scene adapter to convert to axes. More...
 

Private Attributes

std::vector< HandleElementView * > m_handle_views = {nullptr, nullptr}
 
std::vector< HandleElementView * > m_rough_handles_views = {nullptr, nullptr}
 
std::string m_sample_item_id
 
std::vector< SegmentElementView * > m_segment_views = {nullptr, nullptr}
 
LayerElementControllerp_controller_above = nullptr
 
LayerElementControllerp_controller_below = nullptr
 
LayerElementItemp_model_item
 
RoughnessElementViewp_roughness_view = nullptr
 
GraphicsScenep_scene = nullptr
 

Detailed Description

Manages the whole appearance of a layer on the graphicsscene.

Definition at line 38 of file layerelementcontroller.h.

Constructor & Destructor Documentation

◆ LayerElementController()

gui2::LayerElementController::LayerElementController ( LayerElementItem layer_view_item)

Constructor.

Definition at line 32 of file layerelementcontroller.cpp.

33  : QObject(), p_model_item(layer_view_item), m_sample_item_id(" ")
34 {
35 }

Member Function Documentation

◆ autoPopulate()

void gui2::LayerElementController::autoPopulate ( )

Allow the population of the own elements.

Definition at line 44 of file layerelementcontroller.cpp.

45 {
46  setSideSegment(new SegmentElementView());
47  setTopSegment(new SegmentElementView());
48  setSegmentHandles(new HandleElementView(), new HandleElementView());
49  setRoughness(new RoughnessElementView());
50  setRoughnessHandles(new HandleElementView(), new HandleElementView());
51 }
void setRoughness(RoughnessElementView *roughness_view)
Set the roughness element view.
void setTopSegment(SegmentElementView *segment_view)
Set the top segment elements.
void setSideSegment(SegmentElementView *segment_view)
Set the side segment elements.
void setSegmentHandles(HandleElementView *first_handle, HandleElementView *secondHandle)
Set the side segment elements.
void setRoughnessHandles(HandleElementView *first_handle_view, HandleElementView *second_handle_view)
Set the roughness handle element views.

References setRoughness(), setRoughnessHandles(), setSegmentHandles(), setSideSegment(), and setTopSegment().

Here is the call graph for this function:

◆ connectToModel()

void gui2::LayerElementController::connectToModel ( ) const

Connect to the set item.

Definition at line 88 of file layerelementcontroller.cpp.

89 {
90  auto on_property_change = [this](ModelView::SessionItem* /*item*/, std::string property_name) {
91  if (property_name == LayerElementItem::P_X_POS) {
96  if (layerBelow())
99  layerElementItem()->property<double>(LayerElementItem::P_X_POS)
100  + layerElementItem()->property<double>(LayerElementItem::P_WIDTH));
101  }
102  if (property_name == LayerElementItem::P_HEIGHT) {
104  layerElementItem()->property<double>(LayerElementItem::P_HEIGHT));
108  updateRoughness();
109  if (layerBelow()) {
113  }
114  }
115  if (property_name == LayerElementItem::P_WIDTH) {
117  layerElementItem()->property<double>(LayerElementItem::P_WIDTH));
121  updateRoughness();
122  if (layerBelow())
125  layerElementItem()->property<double>(LayerElementItem::P_X_POS)
126  + layerElementItem()->property<double>(LayerElementItem::P_WIDTH));
127  }
128  if (property_name == LayerElementItem::P_ROUGHNESS) {
129  emit roughnessChanged(m_sample_item_id, layerElementItem()->property<double>(
131  updateRoughness();
132  }
133 
134  // Side segment update
135  if (property_name == LayerElementItem::P_SIDE_THICKNESS) {
137  }
138  if (property_name == LayerElementItem::P_SIDE_PEN_WIDTH) {
140  }
141  if (property_name == LayerElementItem::P_SIDE_PEN_COLOR) {
143  }
144  if (property_name == LayerElementItem::P_SIDE_BRUSH_COLOR) {
146  }
147 
148  // Top segment update
149  if (property_name == LayerElementItem::P_TOP_THICKNESS) {
151  }
152  if (property_name == LayerElementItem::P_TOP_PEN_WIDTH) {
154  }
155  if (property_name == LayerElementItem::P_TOP_PEN_COLOR) {
157  }
158  if (property_name == LayerElementItem::P_TOP_BRUSH_COLOR) {
160  }
161 
162  // Segment handle update
163  if (property_name == LayerElementItem::P_HANDLE_RADIUS) {
165  }
166  if (property_name == LayerElementItem::P_HANDLE_BRUSH_COLOR) {
168  }
169  if (property_name == LayerElementItem::P_HANDLE_PEN_WIDTH) {
171  }
172  if (property_name == LayerElementItem::P_HANDLE_PEN_COLOR) {
174  }
175 
176  // Roughness handles update
177  if (property_name == LayerElementItem::P_R_HANDLE_RADIUS) {
178  updateRoughness();
179  }
180  if (property_name == LayerElementItem::P_R_HANDLE_BRUSH_COLOR) {
181  updateRoughness();
182  }
183  if (property_name == LayerElementItem::P_R_HANDLE_PEN_WIDTH) {
184  updateRoughness();
185  }
186  if (property_name == LayerElementItem::P_R_HANDLE_PEN_COLOR) {
187  updateRoughness();
188  }
189 
190  // Roughness update
191  if (property_name == LayerElementItem::P_ROUGHNESS_BRUSH_COLOR) {
192  updateRoughness();
193  }
194  if (property_name == LayerElementItem::P_ROUGHNESS_PEN_WIDTH) {
195  updateRoughness();
196  }
197  if (property_name == LayerElementItem::P_ROUGHNESS_PEN_COLOR) {
198  updateRoughness();
199  }
200  };
201 
202  layerElementItem()->mapper()->setOnPropertyChange(on_property_change, this);
203 }
void setOnPropertyChange(Callbacks::item_str_t f, Callbacks::slot_t owner) override
Sets callback to be notified on item's property change.
Definition: itemmapper.cpp:189
The main object representing an editable/displayable/serializable entity.
Definition: sessionitem.h:38
ItemMapper * mapper()
Returns item mapper. Allows subscribing to various events happening to the item.
void setProperty(const std::string &tag, const T &value)
Sets value to property item.
Definition: sessionitem.h:190
void updateTopSegment() const
Update the view of the top segment.
LayerElementController * layerBelow() const
Return the layer below the current one in relation.
LayerElementItem * layerElementItem() const
Returns the pointer to the LayerElementItem in the model.
void widthChanged(std::string id, double value) const
void updateSegmentHandles() const
Update the handles of the segment.
void roughnessChanged(std::string id, double value) const
void updateSideSegment() const
Update the view of the side segment.
void heightChanged(std::string id, double value) const
void updateRoughness() const
Update the whole roughness drawing.
static const std::string P_SIDE_THICKNESS
static const std::string P_TOP_PEN_WIDTH
static const std::string P_R_HANDLE_RADIUS
static const std::string P_SIDE_BRUSH_COLOR
static const std::string P_ROUGHNESS_PEN_COLOR
static const std::string P_TOP_BRUSH_COLOR
static const std::string P_ROUGHNESS_PEN_WIDTH
static const std::string P_TOP_PEN_COLOR
static const std::string P_HEIGHT
static const std::string P_HANDLE_PEN_WIDTH
static const std::string P_TOP_THICKNESS
static const std::string P_R_HANDLE_BRUSH_COLOR
static const std::string P_SIDE_PEN_WIDTH
static const std::string P_HANDLE_RADIUS
static const std::string P_ROUGHNESS_BRUSH_COLOR
static const std::string P_WIDTH
static const std::string P_ROUGHNESS
static const std::string P_SIDE_PEN_COLOR
static const std::string P_X_POS
static const std::string P_R_HANDLE_PEN_COLOR
static const std::string P_R_HANDLE_PEN_WIDTH
static const std::string P_HANDLE_PEN_COLOR
static const std::string P_HANDLE_BRUSH_COLOR

References heightChanged(), layerBelow(), layerElementItem(), m_sample_item_id, ModelView::SessionItem::mapper(), gui2::LayerElementItem::P_HANDLE_BRUSH_COLOR, gui2::LayerElementItem::P_HANDLE_PEN_COLOR, gui2::LayerElementItem::P_HANDLE_PEN_WIDTH, gui2::LayerElementItem::P_HANDLE_RADIUS, gui2::LayerElementItem::P_HEIGHT, gui2::LayerElementItem::P_R_HANDLE_BRUSH_COLOR, gui2::LayerElementItem::P_R_HANDLE_PEN_COLOR, gui2::LayerElementItem::P_R_HANDLE_PEN_WIDTH, gui2::LayerElementItem::P_R_HANDLE_RADIUS, gui2::LayerElementItem::P_ROUGHNESS, gui2::LayerElementItem::P_ROUGHNESS_BRUSH_COLOR, gui2::LayerElementItem::P_ROUGHNESS_PEN_COLOR, gui2::LayerElementItem::P_ROUGHNESS_PEN_WIDTH, gui2::LayerElementItem::P_SIDE_BRUSH_COLOR, gui2::LayerElementItem::P_SIDE_PEN_COLOR, gui2::LayerElementItem::P_SIDE_PEN_WIDTH, gui2::LayerElementItem::P_SIDE_THICKNESS, gui2::LayerElementItem::P_TOP_BRUSH_COLOR, gui2::LayerElementItem::P_TOP_PEN_COLOR, gui2::LayerElementItem::P_TOP_PEN_WIDTH, gui2::LayerElementItem::P_TOP_THICKNESS, gui2::LayerElementItem::P_WIDTH, gui2::LayerElementItem::P_X_POS, roughnessChanged(), ModelView::ItemMapper::setOnPropertyChange(), ModelView::SessionItem::setProperty(), updateRoughness(), updateSegmentHandles(), updateSideSegment(), updateTopSegment(), and widthChanged().

Here is the call graph for this function:

◆ deleteViewItems()

void gui2::LayerElementController::deleteViewItems ( )

If loacally created the view elements nees to be locally destroyed.

Definition at line 54 of file layerelementcontroller.cpp.

55 {
56  if (m_segment_views[0]) {
57  auto temp_ptr = m_segment_views[0];
59  delete temp_ptr;
60  }
61  if (m_segment_views[1]) {
62  auto temp_ptr = m_segment_views[1];
64  delete temp_ptr;
65  }
66  if (m_handle_views[0]) {
67  auto temp_ptr_0 = m_handle_views[0];
68  auto temp_ptr_1 = m_handle_views[1];
70  delete temp_ptr_0;
71  delete temp_ptr_1;
72  }
73  if (p_roughness_view) {
74  auto temp_ptr = p_roughness_view;
76  delete temp_ptr;
77  }
78  if (m_rough_handles_views[0]) {
79  auto temp_ptr_0 = m_rough_handles_views[0];
80  auto temp_ptr_1 = m_rough_handles_views[1];
82  delete temp_ptr_0;
83  delete temp_ptr_1;
84  }
85 }
void unsetSegmentHandles()
Unset the side segment elements.
void unsetRoughness()
Remove the roughness view element pointer.
std::vector< SegmentElementView * > m_segment_views
std::vector< HandleElementView * > m_handle_views
RoughnessElementView * p_roughness_view
void unsetRoughnessHandles()
Remove the handle pointers.
void unsetTopSegment()
Unset the top segment elements.
void unsetSideSegment()
Unset the side segment elements.
std::vector< HandleElementView * > m_rough_handles_views

References m_handle_views, m_rough_handles_views, m_segment_views, p_roughness_view, unsetRoughness(), unsetRoughnessHandles(), unsetSegmentHandles(), unsetSideSegment(), and unsetTopSegment().

Here is the call graph for this function:

◆ disconnectFormModel()

void gui2::LayerElementController::disconnectFormModel ( ) const

Disconnect from the set item.

Definition at line 206 of file layerelementcontroller.cpp.

207 {
208  layerElementItem()->mapper()->unsubscribe(this);
209 }
void unsubscribe(Callbacks::slot_t client) override
Removes given client from all subscriptions.
Definition: itemmapper.cpp:214

References layerElementItem(), ModelView::SessionItem::mapper(), and ModelView::ItemMapper::unsubscribe().

Here is the call graph for this function:

◆ firstSegmentHandle()

HandleElementView * gui2::LayerElementController::firstSegmentHandle ( ) const

Return the side Segment view.

Definition at line 528 of file layerelementcontroller.cpp.

529 {
530  return m_handle_views[0];
531 }

References m_handle_views.

◆ firstSegmentHandleRect()

QRectF gui2::LayerElementController::firstSegmentHandleRect ( ) const
protected

Get the first segment handle rectangle.

Definition at line 584 of file layerelementcontroller.cpp.

585 {
586  double pos = layerElementItem()->property<double>(LayerElementItem::P_X_POS);
587  double radius = layerElementItem()->property<double>(LayerElementItem::P_HANDLE_RADIUS);
588 
589  double above_height = 0;
590  if (layerAbove()) {
591  above_height =
593  }
594 
595  return QRectF(pos - radius, above_height - radius, 2 * radius, 2 * radius);
596 }
T property(const std::string &tag) const
Returns data stored in property item.
Definition: sessionitem.h:181
LayerElementController * layerAbove() const
Return the layer above the current one in relation.

References layerAbove(), layerElementItem(), gui2::LayerElementItem::P_HANDLE_RADIUS, gui2::LayerElementItem::P_HEIGHT, gui2::LayerElementItem::P_X_POS, and ModelView::SessionItem::property().

Referenced by updateSegmentHandles().

Here is the call graph for this function:

◆ handleViewMoved()

void gui2::LayerElementController::handleViewMoved ( HandleElementView handle_view)

The move logic for the handles associated to the segments.

Definition at line 552 of file layerelementcontroller.cpp.

553 {
554  if (handle_view == leftRoughnessHandle()) {
555  leftHandleMoved();
556  } else if (handle_view == rightRoughnessHandle()) {
558  }
559 }
void rightHandleMoved() const
Handle the position variation of the right handle.
HandleElementView * rightRoughnessHandle() const
Return the right roughness handle element view.
void leftHandleMoved() const
Handle the position variation of the left handle.
HandleElementView * leftRoughnessHandle() const
Return the left roughness handle element view.

References leftHandleMoved(), leftRoughnessHandle(), rightHandleMoved(), and rightRoughnessHandle().

Referenced by gui2::HandleElementView::mouseMoveEvent().

Here is the call graph for this function:

◆ heightChanged

void gui2::LayerElementController::heightChanged ( std::string  id,
double  value 
) const
signal

◆ layerAbove()

LayerElementController * gui2::LayerElementController::layerAbove ( ) const

◆ layerBelow()

LayerElementController * gui2::LayerElementController::layerBelow ( ) const

Return the layer below the current one in relation.

Definition at line 301 of file layerelementcontroller.cpp.

302 {
303  return p_controller_below;
304 }
LayerElementController * p_controller_below

References p_controller_below.

Referenced by connectToModel(), and setLayerAbove().

◆ layerElementItem()

◆ leftHandleMoved()

void gui2::LayerElementController::leftHandleMoved ( ) const
protected

Handle the position variation of the left handle.

Definition at line 865 of file layerelementcontroller.cpp.

866 {
867  double pos = layerElementItem()->property<double>(LayerElementItem::P_X_POS);
868  double roughness = pos - leftRoughnessHandle()->getLastPos().x();
870 }
QPointF getLastPos() const
Get the last position of the item.
RoughnessElementView * roughness() const
Return the roughness element view.
void setRoughnessInLimits(double roughness, bool active=true) const
Handle the position variation of the right handle.

References gui2::HandleElementView::getLastPos(), layerElementItem(), leftRoughnessHandle(), gui2::LayerElementItem::P_X_POS, ModelView::SessionItem::property(), roughness(), and setRoughnessInLimits().

Referenced by handleViewMoved().

Here is the call graph for this function:

◆ leftRoughnessHandle()

HandleElementView * gui2::LayerElementController::leftRoughnessHandle ( ) const

Return the left roughness handle element view.

Definition at line 665 of file layerelementcontroller.cpp.

666 {
667  return m_rough_handles_views[0];
668 }

References m_rough_handles_views.

Referenced by handleViewMoved(), and leftHandleMoved().

◆ leftRoughnessHandleRect()

QRectF gui2::LayerElementController::leftRoughnessHandleRect ( ) const
protected

get the rectangle for the left roughness handles

Definition at line 787 of file layerelementcontroller.cpp.

788 {
789  double pos_x = layerElementItem()->property<double>(LayerElementItem::P_X_POS);
790  double height = layerElementItem()->property<double>(LayerElementItem::P_HEIGHT);
793 
794  auto layer_above = layerAbove();
795  double lower_height = 0;
796  if (layer_above) {
797  lower_height =
798  layer_above->layerElementItem()->property<double>(LayerElementItem::P_HEIGHT);
799  }
800  double pos_y = (lower_height - height) / 2 + height;
801 
802  return QRectF(pos_x - roughness - radius, pos_y - radius, 2 * radius, 2 * radius);
803 }

References layerAbove(), layerElementItem(), gui2::LayerElementItem::P_HEIGHT, gui2::LayerElementItem::P_R_HANDLE_RADIUS, gui2::LayerElementItem::P_ROUGHNESS, gui2::LayerElementItem::P_X_POS, ModelView::SessionItem::property(), and roughness().

Referenced by updateRoughness().

Here is the call graph for this function:

◆ leftRoughnessPath()

QPainterPath gui2::LayerElementController::leftRoughnessPath ( ) const
protected

get the left painter path for the roughness view

Definition at line 740 of file layerelementcontroller.cpp.

741 {
742  double pos = layerElementItem()->property<double>(LayerElementItem::P_X_POS);
743  double height = layerElementItem()->property<double>(LayerElementItem::P_HEIGHT);
745 
746  auto path = QPainterPath();
747 
748  auto layer_above = layerAbove();
749  if (!layer_above) {
750  path.moveTo(pos, 0);
751  path.lineTo(pos - roughness, 0);
752  } else {
753  path.moveTo(pos - roughness,
754  layer_above->layerElementItem()->property<double>(LayerElementItem::P_HEIGHT));
755  }
756  path.lineTo(pos - roughness, height);
757  path.lineTo(pos, height);
758 
759  return path;
760 }

References layerAbove(), layerElementItem(), gui2::LayerElementItem::P_HEIGHT, gui2::LayerElementItem::P_ROUGHNESS, gui2::LayerElementItem::P_X_POS, ModelView::SessionItem::property(), and roughness().

Referenced by updateRoughness().

Here is the call graph for this function:

◆ putRoughnessHandlesOnScene()

void gui2::LayerElementController::putRoughnessHandlesOnScene ( ) const
protected

Put the roughness handles on the scene.

Definition at line 834 of file layerelementcontroller.cpp.

835 {
836  if (!scene())
837  return;
838  for (auto handle_roughness_view : m_rough_handles_views) {
839  if (handle_roughness_view)
840  scene()->addItem(handle_roughness_view);
841  }
842 }
GraphicsScene * scene() const
Return the current set scene.

References m_rough_handles_views, and scene().

Referenced by setScene().

Here is the call graph for this function:

◆ putRoughnessOnScene()

void gui2::LayerElementController::putRoughnessOnScene ( ) const
protected

Put the roughnes view on the scene.

Definition at line 825 of file layerelementcontroller.cpp.

826 {
827  if (!scene())
828  return;
829  if (p_roughness_view)
830  scene()->addItem(p_roughness_view);
831 }

References p_roughness_view, and scene().

Referenced by setScene().

Here is the call graph for this function:

◆ putSegementsOnScene()

void gui2::LayerElementController::putSegementsOnScene ( ) const
protected

Put segments on scene.

Definition at line 464 of file layerelementcontroller.cpp.

465 {
466  if (!scene())
467  return;
468  for (auto segment_view : m_segment_views) {
469  if (segment_view)
470  scene()->addItem(segment_view);
471  }
472 }

References m_segment_views, and scene().

Referenced by setScene().

Here is the call graph for this function:

◆ putSegmentHandlesOnScene()

void gui2::LayerElementController::putSegmentHandlesOnScene ( ) const
protected

Put the segment handles on the secene.

Definition at line 608 of file layerelementcontroller.cpp.

609 {
610  if (!scene())
611  return;
612  for (auto handle_view : m_handle_views) {
613  if (handle_view)
614  scene()->addItem(handle_view);
615  }
616 }

References m_handle_views, and scene().

Referenced by setScene().

Here is the call graph for this function:

◆ removeRoughnessFromScene()

void gui2::LayerElementController::removeRoughnessFromScene ( ) const
protected

Remove the roughness view item from the scene.

Definition at line 845 of file layerelementcontroller.cpp.

846 {
847  if (!scene())
848  return;
849  if (p_roughness_view && p_roughness_view->scene() == scene())
850  scene()->removeItem(p_roughness_view);
851 }

References p_roughness_view, and scene().

Referenced by unsetScene().

Here is the call graph for this function:

◆ removeRoughnessHandlesFromScene()

void gui2::LayerElementController::removeRoughnessHandlesFromScene ( ) const
protected

Remove the roughness handles from the sene.

Definition at line 854 of file layerelementcontroller.cpp.

855 {
856  if (!scene())
857  return;
858  for (auto handle_roughness_view : m_rough_handles_views) {
859  if (handle_roughness_view && handle_roughness_view->scene() == scene())
860  scene()->removeItem(handle_roughness_view);
861  }
862 }

References m_rough_handles_views, and scene().

Referenced by unsetScene().

Here is the call graph for this function:

◆ removeSegmentHandlesFromScene()

void gui2::LayerElementController::removeSegmentHandlesFromScene ( ) const
protected

Remove the segment handles on the scene.

Definition at line 619 of file layerelementcontroller.cpp.

620 {
621  if (!scene())
622  return;
623  for (auto handle_view : m_handle_views) {
624  if (handle_view && handle_view->scene() == scene())
625  scene()->removeItem(handle_view);
626  }
627 }

References m_handle_views, and scene().

Referenced by unsetScene().

Here is the call graph for this function:

◆ removeSegmentsFromScene()

void gui2::LayerElementController::removeSegmentsFromScene ( ) const
protected

Remove the segments from the scene.

Definition at line 475 of file layerelementcontroller.cpp.

476 {
477  if (!scene())
478  return;
479  for (auto segment_view : m_segment_views) {
480  if (segment_view && segment_view->scene() == scene())
481  scene()->removeItem(segment_view);
482  }
483 }

References m_segment_views, and scene().

Referenced by unsetScene().

Here is the call graph for this function:

◆ rightHandleMoved()

void gui2::LayerElementController::rightHandleMoved ( ) const
protected

Handle the position variation of the right handle.

Definition at line 873 of file layerelementcontroller.cpp.

874 {
875  double pos = layerElementItem()->property<double>(LayerElementItem::P_X_POS);
876  double roughness = rightRoughnessHandle()->getLastPos().x() - pos;
878 }

References gui2::HandleElementView::getLastPos(), layerElementItem(), gui2::LayerElementItem::P_X_POS, ModelView::SessionItem::property(), rightRoughnessHandle(), roughness(), and setRoughnessInLimits().

Referenced by handleViewMoved().

Here is the call graph for this function:

◆ rightRoughnessHandle()

HandleElementView * gui2::LayerElementController::rightRoughnessHandle ( ) const

Return the right roughness handle element view.

Definition at line 671 of file layerelementcontroller.cpp.

672 {
673  return m_rough_handles_views[1];
674 }

References m_rough_handles_views.

Referenced by handleViewMoved(), and rightHandleMoved().

◆ rightRoughnessHandleRect()

QRectF gui2::LayerElementController::rightRoughnessHandleRect ( ) const
protected

get the rectangle for the right roughness handles

Definition at line 806 of file layerelementcontroller.cpp.

807 {
808  double pos_x = layerElementItem()->property<double>(LayerElementItem::P_X_POS);
809  double height = layerElementItem()->property<double>(LayerElementItem::P_HEIGHT);
812 
813  auto layer_above = layerAbove();
814  double lower_height = 0;
815  if (layer_above) {
816  lower_height =
817  layer_above->layerElementItem()->property<double>(LayerElementItem::P_HEIGHT);
818  }
819  double pos_y = (lower_height - height) / 2 + height;
820 
821  return QRectF(pos_x + roughness - radius, pos_y - radius, 2 * radius, 2 * radius);
822 }

References layerAbove(), layerElementItem(), gui2::LayerElementItem::P_HEIGHT, gui2::LayerElementItem::P_R_HANDLE_RADIUS, gui2::LayerElementItem::P_ROUGHNESS, gui2::LayerElementItem::P_X_POS, ModelView::SessionItem::property(), and roughness().

Referenced by updateRoughness().

Here is the call graph for this function:

◆ rightRoughnessPath()

QPainterPath gui2::LayerElementController::rightRoughnessPath ( ) const
protected

get the right painter path for the roughness view

Definition at line 763 of file layerelementcontroller.cpp.

764 {
765  double pos = layerElementItem()->property<double>(LayerElementItem::P_X_POS);
766  double height = layerElementItem()->property<double>(LayerElementItem::P_HEIGHT);
768 
769  auto path = QPainterPath();
770 
771  auto layer_above = layerAbove();
772  if (!layer_above) {
773  path.moveTo(pos, 0);
774  path.lineTo(pos + roughness, 0);
775  } else {
776  path.moveTo(pos,
777  layer_above->layerElementItem()->property<double>(LayerElementItem::P_HEIGHT));
778  path.lineTo(pos + roughness,
779  layer_above->layerElementItem()->property<double>(LayerElementItem::P_HEIGHT));
780  }
781  path.lineTo(pos + roughness, height);
782 
783  return path;
784 }

References layerAbove(), layerElementItem(), gui2::LayerElementItem::P_HEIGHT, gui2::LayerElementItem::P_ROUGHNESS, gui2::LayerElementItem::P_X_POS, ModelView::SessionItem::property(), and roughness().

Referenced by updateRoughness().

Here is the call graph for this function:

◆ roughness()

RoughnessElementView * gui2::LayerElementController::roughness ( ) const

◆ roughnessChanged

void gui2::LayerElementController::roughnessChanged ( std::string  id,
double  value 
) const
signal

◆ sampleItemId()

std::string gui2::LayerElementController::sampleItemId ( ) const

Return the set sample item identifier.

Definition at line 251 of file layerelementcontroller.cpp.

252 {
253  return m_sample_item_id;
254 }

References m_sample_item_id.

◆ scene()

◆ sceneAdapter()

SceneAdapterInterface * gui2::LayerElementController::sceneAdapter ( ) const
private

Get the scene adapter to convert to axes.

Definition at line 263 of file layerelementcontroller.cpp.

264 {
265  if (!p_scene)
266  return nullptr;
267 
268  return p_scene->sceneAdapter();
269 }
ModelView::SceneAdapterInterface * sceneAdapter() const
Return the pointer of the scene adapter on request.

References p_scene, and gui2::GraphicsScene::sceneAdapter().

Here is the call graph for this function:

◆ secondSegmentHandle()

HandleElementView * gui2::LayerElementController::secondSegmentHandle ( ) const

Return the top Segment view.

Definition at line 534 of file layerelementcontroller.cpp.

535 {
536  return m_handle_views[1];
537 }

References m_handle_views.

◆ secondSegmentHandleRect()

QRectF gui2::LayerElementController::secondSegmentHandleRect ( ) const
protected

Get the second segment handle rectangle.

Definition at line 599 of file layerelementcontroller.cpp.

600 {
601  double pos = layerElementItem()->property<double>(LayerElementItem::P_X_POS);
602  double height = layerElementItem()->property<double>(LayerElementItem::P_HEIGHT);
603  double radius = layerElementItem()->property<double>(LayerElementItem::P_HANDLE_RADIUS);
604  return QRectF(pos - radius, height - radius, 2 * radius, 2 * radius);
605 }

References layerElementItem(), gui2::LayerElementItem::P_HANDLE_RADIUS, gui2::LayerElementItem::P_HEIGHT, gui2::LayerElementItem::P_X_POS, and ModelView::SessionItem::property().

Referenced by updateSegmentHandles().

Here is the call graph for this function:

◆ segmentViewMoved()

void gui2::LayerElementController::segmentViewMoved ( SegmentElementView segment_view)

The move logic for the segments.

Definition at line 385 of file layerelementcontroller.cpp.

386 {
387  if (segment_view == sideSegment()) {
389  } else if (segment_view == topSegment()) {
390  topSegmentMoved();
391  }
392 }
SegmentElementView * topSegment() const
Return the top Segment view.
void topSegmentMoved() const
Handle the position variation of the top segment.
SegmentElementView * sideSegment() const
Return the side Segment view.
void sideSegmentMoved() const
Handle the position variation of the side segment.

References sideSegment(), sideSegmentMoved(), topSegment(), and topSegmentMoved().

Referenced by gui2::SegmentElementView::mouseMoveEvent().

Here is the call graph for this function:

◆ setLayerAbove()

void gui2::LayerElementController::setLayerAbove ( LayerElementController layer_view_controller)

Set the layer above the current one in relation.

Definition at line 272 of file layerelementcontroller.cpp.

273 {
274  p_controller_above = layer_view_controller;
275 
276  if (layer_view_controller->layerBelow() != this)
277  layer_view_controller->setLayerBelow(this);
278 
279  double pos =
283 }
void setLayerBelow(LayerElementController *layer_view_controller)
Set the layer below the current one in relation.

References layerBelow(), layerElementItem(), p_controller_above, gui2::LayerElementItem::P_WIDTH, gui2::LayerElementItem::P_X_POS, ModelView::SessionItem::property(), setLayerBelow(), and ModelView::SessionItem::setProperty().

Referenced by setLayerBelow().

Here is the call graph for this function:

◆ setLayerBelow()

void gui2::LayerElementController::setLayerBelow ( LayerElementController layer_view_controller)

Set the layer below the current one in relation.

Definition at line 286 of file layerelementcontroller.cpp.

287 {
288  p_controller_below = layer_view_controller;
289 
290  if (layer_view_controller->layerAbove() != this)
291  layer_view_controller->setLayerAbove(this);
292 }
void setLayerAbove(LayerElementController *layer_view_controller)
Set the layer above the current one in relation.

References layerAbove(), p_controller_below, and setLayerAbove().

Referenced by setLayerAbove().

Here is the call graph for this function:

◆ setRoughness()

void gui2::LayerElementController::setRoughness ( RoughnessElementView roughness_view)

Set the roughness element view.

Definition at line 630 of file layerelementcontroller.cpp.

631 {
632  p_roughness_view = roughness_view;
633  updateRoughness();
634 
635  if (scene()) {
636  scene()->addItem(p_roughness_view);
637  }
638 }

References p_roughness_view, scene(), and updateRoughness().

Referenced by autoPopulate().

Here is the call graph for this function:

◆ setRoughnessHandles()

void gui2::LayerElementController::setRoughnessHandles ( HandleElementView first_handle_view,
HandleElementView second_handle_view 
)

Set the roughness handle element views.

Definition at line 641 of file layerelementcontroller.cpp.

643 {
644  m_rough_handles_views[0] = first_handle_view;
645  m_rough_handles_views[1] = second_handle_view;
646  m_rough_handles_views[0]->setFlag(QGraphicsItem::ItemIsMovable);
647  m_rough_handles_views[1]->setFlag(QGraphicsItem::ItemIsMovable);
648  m_rough_handles_views[0]->setLayerElementController(this);
649  m_rough_handles_views[1]->setLayerElementController(this);
650  updateRoughness();
651 
652  if (scene()) {
653  scene()->addItem(m_rough_handles_views[0]);
654  scene()->addItem(m_rough_handles_views[1]);
655  }
656 }

References m_rough_handles_views, scene(), and updateRoughness().

Referenced by autoPopulate().

Here is the call graph for this function:

◆ setRoughnessInLimits()

void gui2::LayerElementController::setRoughnessInLimits ( double  roughness,
bool  active = true 
) const
protected

Handle the position variation of the right handle.

Definition at line 881 of file layerelementcontroller.cpp.

882 {
883  if (roughness < 0) {
885  return;
886  }
887 
888  double width = layerElementItem()->property<double>(LayerElementItem::P_WIDTH);
889  if (width == 0)
890  width = 1e6;
891 
892  auto layer_above = layerAbove();
893  if (layer_above) {
894  double second_width =
895  layer_above->layerElementItem()->property<double>(LayerElementItem::P_WIDTH);
896  if (second_width == 0)
897  second_width = 1e6;
898 
899  if (second_width < width)
900  width = second_width;
901  }
902 
903  if (roughness > width / 2.) {
905  return;
906  }
907 
908  if (active)
910 }

References layerAbove(), layerElementItem(), gui2::LayerElementItem::P_ROUGHNESS, gui2::LayerElementItem::P_WIDTH, ModelView::SessionItem::property(), roughness(), and ModelView::SessionItem::setProperty().

Referenced by leftHandleMoved(), rightHandleMoved(), and updateRoughness().

Here is the call graph for this function:

◆ setSampleItemId()

void gui2::LayerElementController::setSampleItemId ( std::string  indentifier)

Set the idenfier of the sample item to report.

Definition at line 245 of file layerelementcontroller.cpp.

246 {
247  m_sample_item_id = identifier;
248 }

References m_sample_item_id.

◆ setScene()

void gui2::LayerElementController::setScene ( GraphicsScene scene)

Set the scene.

Definition at line 212 of file layerelementcontroller.cpp.

213 {
214  if (!scene)
215  return;
216 
217  p_scene = scene;
218 
223 }
void putRoughnessOnScene() const
Put the roughnes view on the scene.
void putSegmentHandlesOnScene() const
Put the segment handles on the secene.
void putSegementsOnScene() const
Put segments on scene.
void putRoughnessHandlesOnScene() const
Put the roughness handles on the scene.

References p_scene, putRoughnessHandlesOnScene(), putRoughnessOnScene(), putSegementsOnScene(), putSegmentHandlesOnScene(), and scene().

Here is the call graph for this function:

◆ setSegmentHandles()

void gui2::LayerElementController::setSegmentHandles ( HandleElementView first_handle,
HandleElementView secondHandle 
)

Set the side segment elements.

Definition at line 512 of file layerelementcontroller.cpp.

514 {
515  m_handle_views[0] = first_handle;
516  m_handle_views[1] = second_handle;
517  m_handle_views[0]->setLayerElementController(this);
518  m_handle_views[1]->setLayerElementController(this);
520 
521  if (scene()) {
522  scene()->addItem(m_handle_views[0]);
523  scene()->addItem(m_handle_views[1]);
524  }
525 }

References m_handle_views, scene(), and updateSegmentHandles().

Referenced by autoPopulate().

Here is the call graph for this function:

◆ setSideSegment()

void gui2::LayerElementController::setSideSegment ( SegmentElementView segment_view)

Set the side segment elements.

Definition at line 331 of file layerelementcontroller.cpp.

332 {
333  m_segment_views[0] = segment_view;
334  m_segment_views[0]->adaptW(false);
335  m_segment_views[0]->setLayerElementController(this);
337 
338  if (scene())
339  scene()->addItem(m_segment_views[0]);
340 }

References m_segment_views, scene(), and updateSideSegment().

Referenced by autoPopulate().

Here is the call graph for this function:

◆ setTopSegment()

void gui2::LayerElementController::setTopSegment ( SegmentElementView segment_view)

Set the top segment elements.

Definition at line 343 of file layerelementcontroller.cpp.

344 {
345  m_segment_views[1] = segment_view;
346  m_segment_views[1]->adaptH(false);
347  m_segment_views[1]->setLayerElementController(this);
349 
350  if (scene())
351  scene()->addItem(m_segment_views[1]);
352 }

References m_segment_views, scene(), and updateTopSegment().

Referenced by autoPopulate().

Here is the call graph for this function:

◆ sideSegment()

SegmentElementView * gui2::LayerElementController::sideSegment ( ) const

Return the side Segment view.

Definition at line 355 of file layerelementcontroller.cpp.

356 {
357  return m_segment_views[0];
358 }

References m_segment_views.

Referenced by segmentViewMoved(), and sideSegmentMoved().

◆ sideSegmentMoved()

void gui2::LayerElementController::sideSegmentMoved ( ) const
protected

Handle the position variation of the side segment.

Definition at line 486 of file layerelementcontroller.cpp.

487 {
488  double x = sideSegment()->getLastPos().x();
489  if (layerAbove()) {
490  double w = 0;
491  auto item = layerAbove()->layerElementItem();
492  if (x < item->property<double>(LayerElementItem::P_X_POS)) {
493  x = item->property<double>(LayerElementItem::P_X_POS) + w;
494  } else {
495  w = x - item->property<double>(LayerElementItem::P_X_POS);
496  }
497  item->setProperty(LayerElementItem::P_WIDTH, w);
498  }
500 }
QPointF getLastPos() const
Get the last position of the item.

References gui2::SegmentElementView::getLastPos(), layerAbove(), layerElementItem(), gui2::LayerElementItem::P_WIDTH, gui2::LayerElementItem::P_X_POS, ModelView::SessionItem::property(), ModelView::SessionItem::setProperty(), and sideSegment().

Referenced by segmentViewMoved().

Here is the call graph for this function:

◆ sideSegmentRect()

QRectF gui2::LayerElementController::sideSegmentRect ( ) const
protected

Return the side segment rectangle.

Definition at line 431 of file layerelementcontroller.cpp.

432 {
433  double this_pos = layerElementItem()->property<double>(LayerElementItem::P_X_POS);
434  double this_height = layerElementItem()->property<double>(LayerElementItem::P_HEIGHT);
435  double this_thickness =
437 
438  double above_height = 0;
439  if (layerAbove()) {
440  above_height =
442  }
443 
444  if (above_height > this_height) {
445  return QRectF(this_pos - this_thickness / 2., this_height, this_thickness,
446  above_height - this_height);
447  } else {
448  return QRectF(this_pos - this_thickness / 2., above_height, this_thickness,
449  this_height - above_height);
450  }
451 }

References layerAbove(), layerElementItem(), gui2::LayerElementItem::P_HEIGHT, gui2::LayerElementItem::P_SIDE_THICKNESS, gui2::LayerElementItem::P_X_POS, and ModelView::SessionItem::property().

Referenced by updateSideSegment().

Here is the call graph for this function:

◆ topSegment()

SegmentElementView * gui2::LayerElementController::topSegment ( ) const

Return the top Segment view.

Definition at line 361 of file layerelementcontroller.cpp.

362 {
363  return m_segment_views[1];
364 }

References m_segment_views.

Referenced by segmentViewMoved(), and topSegmentMoved().

◆ topSegmentMoved()

void gui2::LayerElementController::topSegmentMoved ( ) const
protected

Handle the position variation of the top segment.

Definition at line 503 of file layerelementcontroller.cpp.

504 {
505  double y = topSegment()->getLastPos().y();
506  if (y < 0)
507  y = 0;
509 }

References gui2::SegmentElementView::getLastPos(), layerElementItem(), gui2::LayerElementItem::P_HEIGHT, ModelView::SessionItem::setProperty(), and topSegment().

Referenced by segmentViewMoved().

Here is the call graph for this function:

◆ topSegmentRect()

QRectF gui2::LayerElementController::topSegmentRect ( ) const
protected

Return the top segment rectangle.

Definition at line 454 of file layerelementcontroller.cpp.

455 {
456  double pos = layerElementItem()->property<double>(LayerElementItem::P_X_POS);
457  double height = layerElementItem()->property<double>(LayerElementItem::P_HEIGHT);
458  double width = layerElementItem()->property<double>(LayerElementItem::P_WIDTH);
459  double thickness = layerElementItem()->property<double>(LayerElementItem::P_TOP_THICKNESS);
460  return QRectF(pos, height - thickness / 2., width, thickness);
461 }

References layerElementItem(), gui2::LayerElementItem::P_HEIGHT, gui2::LayerElementItem::P_TOP_THICKNESS, gui2::LayerElementItem::P_WIDTH, gui2::LayerElementItem::P_X_POS, and ModelView::SessionItem::property().

Referenced by updateTopSegment().

Here is the call graph for this function:

◆ unsetLayerAbove()

void gui2::LayerElementController::unsetLayerAbove ( bool  silent = true)

Unset the layer above the current one in relation.

Definition at line 307 of file layerelementcontroller.cpp.

308 {
309  if (!p_controller_above)
310  return;
311 
312  if (silent)
314 
315  p_controller_above = nullptr;
316 }
void unsetLayerBelow(bool silent=true)
Unset the layer below the current one in relation.

References p_controller_above, and unsetLayerBelow().

Referenced by unsetLayerBelow().

Here is the call graph for this function:

◆ unsetLayerBelow()

void gui2::LayerElementController::unsetLayerBelow ( bool  silent = true)

Unset the layer below the current one in relation.

Definition at line 319 of file layerelementcontroller.cpp.

320 {
321  if (!p_controller_below)
322  return;
323 
324  if (silent)
326 
327  p_controller_below = nullptr;
328 }
void unsetLayerAbove(bool silent=true)
Unset the layer above the current one in relation.

References p_controller_below, and unsetLayerAbove().

Referenced by unsetLayerAbove().

Here is the call graph for this function:

◆ unsetRoughness()

void gui2::LayerElementController::unsetRoughness ( )

Remove the roughness view element pointer.

Definition at line 677 of file layerelementcontroller.cpp.

678 {
679  if (p_roughness_view && scene() && p_roughness_view->scene() == scene())
680  scene()->removeItem(p_roughness_view);
681  p_roughness_view = nullptr;
682 }

References p_roughness_view, and scene().

Referenced by deleteViewItems().

Here is the call graph for this function:

◆ unsetRoughnessHandles()

void gui2::LayerElementController::unsetRoughnessHandles ( )

Remove the handle pointers.

Definition at line 685 of file layerelementcontroller.cpp.

686 {
687  if (m_rough_handles_views[0] && scene() && m_rough_handles_views[0]->scene() == scene())
688  scene()->removeItem(m_rough_handles_views[0]);
689  if (m_rough_handles_views[1] && scene() && m_rough_handles_views[1]->scene() == scene())
690  scene()->removeItem(m_rough_handles_views[1]);
691 
692  m_rough_handles_views[0] = nullptr;
693  m_rough_handles_views[1] = nullptr;
694 }

References m_rough_handles_views, and scene().

Referenced by deleteViewItems().

Here is the call graph for this function:

◆ unsetSampleItemId()

void gui2::LayerElementController::unsetSampleItemId ( )

Unset the sample item identifier.

Definition at line 257 of file layerelementcontroller.cpp.

258 {
259  m_sample_item_id = " ";
260 }

References m_sample_item_id.

◆ unsetScene()

void gui2::LayerElementController::unsetScene ( )

Set the scene.

Definition at line 232 of file layerelementcontroller.cpp.

233 {
234  if (!scene())
235  return;
236 
241  p_scene = nullptr;
242 }
void removeRoughnessFromScene() const
Remove the roughness view item from the scene.
void removeRoughnessHandlesFromScene() const
Remove the roughness handles from the sene.
void removeSegmentHandlesFromScene() const
Remove the segment handles on the scene.
void removeSegmentsFromScene() const
Remove the segments from the scene.

References p_scene, removeRoughnessFromScene(), removeRoughnessHandlesFromScene(), removeSegmentHandlesFromScene(), removeSegmentsFromScene(), and scene().

Here is the call graph for this function:

◆ unsetSegmentHandles()

void gui2::LayerElementController::unsetSegmentHandles ( )

Unset the side segment elements.

Definition at line 540 of file layerelementcontroller.cpp.

541 {
542  if (m_handle_views[0] && scene() && m_handle_views[0]->scene() == scene())
543  scene()->removeItem(m_handle_views[0]);
544  if (m_handle_views[1] && scene() && m_handle_views[1]->scene() == scene())
545  scene()->removeItem(m_handle_views[1]);
546 
547  m_handle_views[0] = nullptr;
548  m_handle_views[1] = nullptr;
549 }

References m_handle_views, and scene().

Referenced by deleteViewItems().

Here is the call graph for this function:

◆ unsetSideSegment()

void gui2::LayerElementController::unsetSideSegment ( )

Unset the side segment elements.

Definition at line 367 of file layerelementcontroller.cpp.

368 {
369  if (m_segment_views[0] && scene() && m_segment_views[0]->scene() == scene())
370  scene()->removeItem(m_segment_views[0]);
371 
372  m_segment_views[0] = nullptr;
373 }

References m_segment_views, and scene().

Referenced by deleteViewItems().

Here is the call graph for this function:

◆ unsetTopSegment()

void gui2::LayerElementController::unsetTopSegment ( )

Unset the top segment elements.

Definition at line 376 of file layerelementcontroller.cpp.

377 {
378  if (m_segment_views[1] && scene() && m_segment_views[1]->scene() == scene())
379  scene()->removeItem(m_segment_views[1]);
380 
381  m_segment_views[1] = nullptr;
382 }

References m_segment_views, and scene().

Referenced by deleteViewItems().

Here is the call graph for this function:

◆ updateRoughness()

void gui2::LayerElementController::updateRoughness ( ) const

Update the whole roughness drawing.

Definition at line 697 of file layerelementcontroller.cpp.

698 {
699  // Test the roughness
701  // double width = layerElementItem()->property<double>(LayerElementItem::P_WIDTH);
703 
704  // Perform the painting
705  auto pen = QPen();
706  auto brush = QBrush();
707 
708  // Take care of the rounghnessview
709  pen.setStyle(Qt::PenStyle::DashLine);
710  pen.setColor(layerElementItem()->property<QColor>(LayerElementItem::P_ROUGHNESS_PEN_COLOR));
711  pen.setWidthF(layerElementItem()->property<double>(LayerElementItem::P_ROUGHNESS_PEN_WIDTH));
712  brush.setColor(layerElementItem()->property<QColor>(LayerElementItem::P_ROUGHNESS_BRUSH_COLOR));
713  if (p_roughness_view) {
714  p_roughness_view->setPen(pen);
715  p_roughness_view->setBrush(brush);
718  }
719 
720  // Take care of the handles
721  pen.setStyle(Qt::PenStyle::SolidLine);
722  pen.setColor(layerElementItem()->property<QColor>(LayerElementItem::P_R_HANDLE_PEN_COLOR));
723  pen.setWidthF(layerElementItem()->property<double>(LayerElementItem::P_R_HANDLE_PEN_WIDTH));
724  brush.setColor(layerElementItem()->property<QColor>(LayerElementItem::P_R_HANDLE_BRUSH_COLOR));
725  brush.setStyle(Qt::SolidPattern);
726 
727  if (m_rough_handles_views[0]) {
728  m_rough_handles_views.at(0)->setPen(pen);
729  m_rough_handles_views.at(0)->setBrush(brush);
730  m_rough_handles_views.at(0)->setRectangle(leftRoughnessHandleRect());
731  }
732  if (m_rough_handles_views[1]) {
733  m_rough_handles_views.at(1)->setPen(pen);
734  m_rough_handles_views.at(1)->setBrush(brush);
735  m_rough_handles_views.at(1)->setRectangle(rightRoughnessHandleRect());
736  }
737 }
QRectF leftRoughnessHandleRect() const
get the rectangle for the left roughness handles
QPainterPath rightRoughnessPath() const
get the right painter path for the roughness view
QPainterPath leftRoughnessPath() const
get the left painter path for the roughness view
QRectF rightRoughnessHandleRect() const
get the rectangle for the right roughness handles
void setRightPath(QPainterPath right_path)
Set the draw path for the right side.
void setBrush(QBrush brush)
Set the brush.
void setPen(QPen pen)
Set the pen.
void setLeftPath(QPainterPath left_path)
Set the draw path for the left side.

References layerElementItem(), leftRoughnessHandleRect(), leftRoughnessPath(), m_rough_handles_views, gui2::LayerElementItem::P_R_HANDLE_BRUSH_COLOR, gui2::LayerElementItem::P_R_HANDLE_PEN_COLOR, gui2::LayerElementItem::P_R_HANDLE_PEN_WIDTH, gui2::LayerElementItem::P_ROUGHNESS, gui2::LayerElementItem::P_ROUGHNESS_BRUSH_COLOR, gui2::LayerElementItem::P_ROUGHNESS_PEN_COLOR, gui2::LayerElementItem::P_ROUGHNESS_PEN_WIDTH, p_roughness_view, ModelView::SessionItem::property(), rightRoughnessHandleRect(), rightRoughnessPath(), roughness(), gui2::RoughnessElementView::setBrush(), gui2::RoughnessElementView::setLeftPath(), gui2::RoughnessElementView::setPen(), gui2::RoughnessElementView::setRightPath(), and setRoughnessInLimits().

Referenced by connectToModel(), setRoughness(), and setRoughnessHandles().

Here is the call graph for this function:

◆ updateSegmentHandles()

void gui2::LayerElementController::updateSegmentHandles ( ) const
protected

Update the handles of the segment.

Definition at line 562 of file layerelementcontroller.cpp.

563 {
564  auto pen = QPen();
565  pen.setColor(layerElementItem()->property<QColor>(LayerElementItem::P_HANDLE_PEN_COLOR));
566  pen.setWidthF(layerElementItem()->property<double>(LayerElementItem::P_HANDLE_PEN_WIDTH));
567 
568  auto brush = QBrush(Qt::SolidPattern);
569  brush.setColor(layerElementItem()->property<QColor>(LayerElementItem::P_HANDLE_BRUSH_COLOR));
570 
571  if (m_handle_views[0]) {
572  m_handle_views.at(0)->setPen(pen);
573  m_handle_views.at(0)->setBrush(brush);
574  m_handle_views.at(0)->setRectangle(firstSegmentHandleRect());
575  }
576  if (m_handle_views[1]) {
577  m_handle_views.at(1)->setPen(pen);
578  m_handle_views.at(1)->setBrush(brush);
579  m_handle_views.at(1)->setRectangle(secondSegmentHandleRect());
580  }
581 }
QRectF firstSegmentHandleRect() const
Get the first segment handle rectangle.
QRectF secondSegmentHandleRect() const
Get the second segment handle rectangle.

References firstSegmentHandleRect(), layerElementItem(), m_handle_views, gui2::LayerElementItem::P_HANDLE_BRUSH_COLOR, gui2::LayerElementItem::P_HANDLE_PEN_COLOR, gui2::LayerElementItem::P_HANDLE_PEN_WIDTH, and secondSegmentHandleRect().

Referenced by connectToModel(), and setSegmentHandles().

Here is the call graph for this function:

◆ updateSideSegment()

void gui2::LayerElementController::updateSideSegment ( ) const
protected

Update the view of the side segment.

Definition at line 395 of file layerelementcontroller.cpp.

396 {
397  if (!m_segment_views[0])
398  return;
399 
400  auto pen = QPen();
401  pen.setColor(layerElementItem()->property<QColor>(LayerElementItem::P_SIDE_PEN_COLOR));
402  pen.setWidthF(layerElementItem()->property<double>(LayerElementItem::P_SIDE_PEN_WIDTH));
403  m_segment_views.at(0)->setPen(pen);
404 
405  auto brush = QBrush(Qt::SolidPattern);
406  brush.setColor(layerElementItem()->property<QColor>(LayerElementItem::P_SIDE_BRUSH_COLOR));
407  m_segment_views.at(0)->setBrush(brush);
408 
409  m_segment_views.at(0)->setRectangle(sideSegmentRect());
410 }
QRectF sideSegmentRect() const
Return the side segment rectangle.

References layerElementItem(), m_segment_views, gui2::LayerElementItem::P_SIDE_BRUSH_COLOR, gui2::LayerElementItem::P_SIDE_PEN_COLOR, gui2::LayerElementItem::P_SIDE_PEN_WIDTH, and sideSegmentRect().

Referenced by connectToModel(), and setSideSegment().

Here is the call graph for this function:

◆ updateTopSegment()

void gui2::LayerElementController::updateTopSegment ( ) const
protected

Update the view of the top segment.

Definition at line 413 of file layerelementcontroller.cpp.

414 {
415  if (!m_segment_views[1])
416  return;
417 
418  auto pen = QPen();
419  pen.setColor(layerElementItem()->property<QColor>(LayerElementItem::P_TOP_PEN_COLOR));
420  pen.setWidthF(layerElementItem()->property<double>(LayerElementItem::P_TOP_PEN_WIDTH));
421  m_segment_views.at(1)->setPen(pen);
422 
423  auto brush = QBrush(Qt::SolidPattern);
424  brush.setColor(layerElementItem()->property<QColor>(LayerElementItem::P_TOP_BRUSH_COLOR));
425  m_segment_views.at(1)->setBrush(brush);
426 
427  m_segment_views.at(1)->setRectangle(topSegmentRect());
428 }
QRectF topSegmentRect() const
Return the top segment rectangle.

References layerElementItem(), m_segment_views, gui2::LayerElementItem::P_TOP_BRUSH_COLOR, gui2::LayerElementItem::P_TOP_PEN_COLOR, gui2::LayerElementItem::P_TOP_PEN_WIDTH, and topSegmentRect().

Referenced by connectToModel(), and setTopSegment().

Here is the call graph for this function:

◆ widthChanged

void gui2::LayerElementController::widthChanged ( std::string  id,
double  value 
) const
signal

Member Data Documentation

◆ m_handle_views

std::vector<HandleElementView*> gui2::LayerElementController::m_handle_views = {nullptr, nullptr}
private

◆ m_rough_handles_views

std::vector<HandleElementView*> gui2::LayerElementController::m_rough_handles_views = {nullptr, nullptr}
private

◆ m_sample_item_id

std::string gui2::LayerElementController::m_sample_item_id
private

◆ m_segment_views

std::vector<SegmentElementView*> gui2::LayerElementController::m_segment_views = {nullptr, nullptr}
private

◆ p_controller_above

LayerElementController* gui2::LayerElementController::p_controller_above = nullptr
private

Definition at line 154 of file layerelementcontroller.h.

Referenced by layerAbove(), setLayerAbove(), and unsetLayerAbove().

◆ p_controller_below

LayerElementController* gui2::LayerElementController::p_controller_below = nullptr
private

Definition at line 155 of file layerelementcontroller.h.

Referenced by layerBelow(), setLayerBelow(), and unsetLayerBelow().

◆ p_model_item

LayerElementItem* gui2::LayerElementController::p_model_item
private

Definition at line 145 of file layerelementcontroller.h.

Referenced by layerElementItem().

◆ p_roughness_view

RoughnessElementView* gui2::LayerElementController::p_roughness_view = nullptr
private

◆ p_scene

GraphicsScene* gui2::LayerElementController::p_scene = nullptr
private

Definition at line 146 of file layerelementcontroller.h.

Referenced by scene(), sceneAdapter(), setScene(), and unsetScene().


The documentation for this class was generated from the following files: