Sketcher: Change the style of the curves in creation to match the construction/defining flag (#22407)
* Sketcher: Change EditCurvesDrawStyle to match either CurvesDrawStyle or CurvesConstructionDrawStyle in editDraw() * Match color as well * Match pattern scale as well * Use enum instead of boolean flag * Update src/Mod/Sketcher/Gui/Utils.h --------- Co-authored-by: Kacper Donat <kadet1090@gmail.com>
This commit is contained in:
@@ -185,10 +185,6 @@ void EditModeCoinManager::ParameterObserver::initParameters()
|
||||
[this, &drawingParameters = Client.drawingParameters](const std::string& param) {
|
||||
updatePattern(drawingParameters.ExternalDefiningPattern, param, 0b1111111111111111);
|
||||
}},
|
||||
{"CreateLineColor",
|
||||
[this, drawingParameters = Client.drawingParameters](const std::string& param) {
|
||||
updateColor(drawingParameters.CreateCurveColor, param);
|
||||
}},
|
||||
{"EditedEdgeColor",
|
||||
[this, drawingParameters = Client.drawingParameters](const std::string& param) {
|
||||
updateColor(drawingParameters.CurveColor, param);
|
||||
@@ -609,7 +605,8 @@ void EditModeCoinManager::drawEditMarkers(const std::vector<Base::Vector2d>& Edi
|
||||
editModeScenegraphNodes.EditMarkerSet->markerIndex.finishEditing();
|
||||
}
|
||||
|
||||
void EditModeCoinManager::drawEdit(const std::vector<Base::Vector2d>& EditCurve)
|
||||
void EditModeCoinManager::drawEdit(const std::vector<Base::Vector2d>& EditCurve,
|
||||
GeometryCreationMode mode)
|
||||
{
|
||||
editModeScenegraphNodes.EditCurveSet->numVertices.setNum(1);
|
||||
editModeScenegraphNodes.EditCurvesCoordinate->point.setNum(EditCurve.size());
|
||||
@@ -618,6 +615,8 @@ void EditModeCoinManager::drawEdit(const std::vector<Base::Vector2d>& EditCurve)
|
||||
int32_t* index = editModeScenegraphNodes.EditCurveSet->numVertices.startEditing();
|
||||
SbColor* color = editModeScenegraphNodes.EditCurvesMaterials->diffuseColor.startEditing();
|
||||
|
||||
setEditDrawStyle(mode);
|
||||
|
||||
int i = 0; // setting up the line set
|
||||
for (std::vector<Base::Vector2d>::const_iterator it = EditCurve.begin(); it != EditCurve.end();
|
||||
++it, i++) {
|
||||
@@ -625,7 +624,14 @@ void EditModeCoinManager::drawEdit(const std::vector<Base::Vector2d>& EditCurve)
|
||||
it->y,
|
||||
ViewProviderSketchCoinAttorney::getViewOrientationFactor(viewProvider)
|
||||
* drawingParameters.zEdit);
|
||||
color[i] = drawingParameters.CreateCurveColor;
|
||||
switch (mode) {
|
||||
case GeometryCreationMode::Normal:
|
||||
color[i] = drawingParameters.CurveColor;
|
||||
break;
|
||||
case GeometryCreationMode::Construction:
|
||||
color[i] = drawingParameters.CurveDraftColor;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
index[0] = EditCurve.size();
|
||||
@@ -634,7 +640,8 @@ void EditModeCoinManager::drawEdit(const std::vector<Base::Vector2d>& EditCurve)
|
||||
editModeScenegraphNodes.EditCurvesMaterials->diffuseColor.finishEditing();
|
||||
}
|
||||
|
||||
void EditModeCoinManager::drawEdit(const std::list<std::vector<Base::Vector2d>>& list)
|
||||
void EditModeCoinManager::drawEdit(const std::list<std::vector<Base::Vector2d>>& list,
|
||||
GeometryCreationMode mode)
|
||||
{
|
||||
int ncoords = 0;
|
||||
|
||||
@@ -649,6 +656,8 @@ void EditModeCoinManager::drawEdit(const std::list<std::vector<Base::Vector2d>>&
|
||||
int32_t* index = editModeScenegraphNodes.EditCurveSet->numVertices.startEditing();
|
||||
SbColor* color = editModeScenegraphNodes.EditCurvesMaterials->diffuseColor.startEditing();
|
||||
|
||||
setEditDrawStyle(mode);
|
||||
|
||||
int coordindex = 0;
|
||||
int indexindex = 0;
|
||||
for (const auto& v : list) {
|
||||
@@ -658,7 +667,16 @@ void EditModeCoinManager::drawEdit(const std::list<std::vector<Base::Vector2d>>&
|
||||
p.y,
|
||||
ViewProviderSketchCoinAttorney::getViewOrientationFactor(viewProvider)
|
||||
* drawingParameters.zEdit);
|
||||
color[coordindex] = drawingParameters.CreateCurveColor;
|
||||
|
||||
switch (mode) {
|
||||
case GeometryCreationMode::Normal:
|
||||
color[coordindex] = drawingParameters.CurveColor;
|
||||
break;
|
||||
case GeometryCreationMode::Construction:
|
||||
color[coordindex] = drawingParameters.CurveDraftColor;
|
||||
break;
|
||||
}
|
||||
|
||||
coordindex++;
|
||||
}
|
||||
index[indexindex] = v.size();
|
||||
@@ -960,8 +978,9 @@ void EditModeCoinManager::createEditModeInventorNodes()
|
||||
|
||||
editModeScenegraphNodes.EditCurvesDrawStyle = new SoDrawStyle;
|
||||
editModeScenegraphNodes.EditCurvesDrawStyle->setName("EditCurvesDrawStyle");
|
||||
editModeScenegraphNodes.EditCurvesDrawStyle->lineWidth =
|
||||
3 * drawingParameters.pixelScalingFactor;
|
||||
editModeScenegraphNodes.EditCurvesDrawStyle->lineWidth = 3
|
||||
* drawingParameters
|
||||
.pixelScalingFactor; // This default value will be overriden in drawEdit()
|
||||
editCurvesRoot->addChild(editModeScenegraphNodes.EditCurvesDrawStyle);
|
||||
|
||||
editModeScenegraphNodes.EditCurveSet = new SoLineSet;
|
||||
@@ -1046,6 +1065,24 @@ void EditModeCoinManager::redrawViewProvider()
|
||||
{
|
||||
viewProvider.draw(false, false);
|
||||
}
|
||||
void EditModeCoinManager::setEditDrawStyle(GeometryCreationMode mode)
|
||||
{
|
||||
SoDrawStyle* toCopy = nullptr;
|
||||
|
||||
switch (mode) {
|
||||
case GeometryCreationMode::Normal:
|
||||
toCopy = editModeScenegraphNodes.CurvesDrawStyle;
|
||||
break;
|
||||
case GeometryCreationMode::Construction:
|
||||
toCopy = editModeScenegraphNodes.CurvesConstructionDrawStyle;
|
||||
break;
|
||||
}
|
||||
|
||||
editModeScenegraphNodes.EditCurvesDrawStyle->lineWidth = toCopy->lineWidth;
|
||||
editModeScenegraphNodes.EditCurvesDrawStyle->linePattern = toCopy->linePattern;
|
||||
editModeScenegraphNodes.EditCurvesDrawStyle->linePatternScaleFactor =
|
||||
toCopy->linePatternScaleFactor;
|
||||
}
|
||||
|
||||
/************************ Delegated constraint public interface **********/
|
||||
|
||||
|
||||
Reference in New Issue
Block a user