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 **********/
|
||||
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
|
||||
#include <App/Application.h>
|
||||
#include <Mod/Sketcher/App/GeoList.h>
|
||||
#include "GeometryCreationMode.h"
|
||||
|
||||
#include "EditModeCoinManagerParameters.h"
|
||||
|
||||
@@ -211,8 +212,8 @@ public:
|
||||
//@{
|
||||
void drawEditMarkers(const std::vector<Base::Vector2d>& EditMarkers,
|
||||
unsigned int augmentationlevel);
|
||||
void drawEdit(const std::vector<Base::Vector2d>& EditCurve);
|
||||
void drawEdit(const std::list<std::vector<Base::Vector2d>>& list);
|
||||
void drawEdit(const std::vector<Base::Vector2d>& EditCurve, GeometryCreationMode mode);
|
||||
void drawEdit(const std::list<std::vector<Base::Vector2d>>& list, GeometryCreationMode mode);
|
||||
void setPositionText(const Base::Vector2d& Pos, const SbString& txt);
|
||||
void setPositionText(const Base::Vector2d& Pos);
|
||||
void resetPositionText();
|
||||
@@ -278,6 +279,8 @@ private:
|
||||
// causes the ViewProvider to draw
|
||||
void redrawViewProvider();
|
||||
|
||||
void setEditDrawStyle(GeometryCreationMode mode);
|
||||
|
||||
int defaultApplicationFontSizePixels() const;
|
||||
|
||||
double getDevicePixelRatio() const;
|
||||
|
||||
@@ -52,7 +52,6 @@ int GeometryLayerParameters::getSubLayerIndex(const int geoId,
|
||||
}
|
||||
|
||||
SbColor DrawingParameters::InformationColor(0.0f, 1.0f, 0.0f); // #00FF00 -> ( 0,255, 0)
|
||||
SbColor DrawingParameters::CreateCurveColor(0.5f, 0.5f, 0.5f); // ##7f7f7f -> (127,127,127)
|
||||
|
||||
namespace
|
||||
{ // Anonymous namespace to avoid making those variables global
|
||||
|
||||
@@ -102,7 +102,6 @@ struct DrawingParameters
|
||||
/** @name Rendering Coin Colors **/
|
||||
//@{
|
||||
static SbColor InformationColor; // Information Overlay Color
|
||||
static SbColor CreateCurveColor; // Color for Edit Curves during creation
|
||||
static SbColor CrossColorH; // Color for the Horizontal Axis
|
||||
static SbColor CrossColorV; // Color for the Vertical Axis
|
||||
static SbColor InvalidSketchColor; // Color for rendering an invalid sketch
|
||||
|
||||
@@ -163,6 +163,11 @@ inline bool isEdge(int GeoId, Sketcher::PointPos PosId)
|
||||
|
||||
extern GeometryCreationMode geometryCreationMode; // defined in CommandCreateGeo.cpp
|
||||
|
||||
inline GeometryCreationMode currentGeometryCreationMode()
|
||||
{
|
||||
return geometryCreationMode;
|
||||
}
|
||||
|
||||
inline bool isConstructionMode()
|
||||
{
|
||||
return geometryCreationMode == GeometryCreationMode::Construction;
|
||||
|
||||
@@ -2879,12 +2879,12 @@ bool ViewProviderSketch::getIsShownVirtualSpace() const
|
||||
|
||||
void ViewProviderSketch::drawEdit(const std::vector<Base::Vector2d>& EditCurve)
|
||||
{
|
||||
editCoinManager->drawEdit(EditCurve);
|
||||
editCoinManager->drawEdit(EditCurve, currentGeometryCreationMode());
|
||||
}
|
||||
|
||||
void ViewProviderSketch::drawEdit(const std::list<std::vector<Base::Vector2d>>& list)
|
||||
{
|
||||
editCoinManager->drawEdit(list);
|
||||
editCoinManager->drawEdit(list, currentGeometryCreationMode());
|
||||
}
|
||||
|
||||
void ViewProviderSketch::drawEditMarkers(const std::vector<Base::Vector2d>& EditMarkers,
|
||||
|
||||
Reference in New Issue
Block a user