From 411cdadf49a5a051d4eee74e7bd804e29ba1e579 Mon Sep 17 00:00:00 2001 From: Andrew Shkolik Date: Thu, 27 Feb 2025 00:28:20 -0600 Subject: [PATCH] Sketcher: Preference color added for External defining geometry --- .../Sketcher_Colors.cfg | 1 + src/Mod/Sketcher/Gui/EditModeCoinManager.cpp | 4 ++ .../Gui/EditModeCoinManagerParameters.cpp | 1 + .../Gui/EditModeCoinManagerParameters.h | 1 + .../Gui/EditModeGeometryCoinManager.cpp | 18 +++++++- src/Mod/Sketcher/Gui/SketcherSettings.cpp | 2 + .../Gui/SketcherSettingsAppearance.ui | 41 +++++++++++++++++-- 7 files changed, 62 insertions(+), 6 deletions(-) diff --git a/src/Gui/PreferencePackTemplates/Sketcher_Colors.cfg b/src/Gui/PreferencePackTemplates/Sketcher_Colors.cfg index 47b0f20ecd..34146e780d 100644 --- a/src/Gui/PreferencePackTemplates/Sketcher_Colors.cfg +++ b/src/Gui/PreferencePackTemplates/Sketcher_Colors.cfg @@ -9,6 +9,7 @@ + diff --git a/src/Mod/Sketcher/Gui/EditModeCoinManager.cpp b/src/Mod/Sketcher/Gui/EditModeCoinManager.cpp index 98b81d0623..9888733500 100644 --- a/src/Mod/Sketcher/Gui/EditModeCoinManager.cpp +++ b/src/Mod/Sketcher/Gui/EditModeCoinManager.cpp @@ -241,6 +241,10 @@ void EditModeCoinManager::ParameterObserver::initParameters() [this, drawingParameters = Client.drawingParameters](const std::string& param) { updateColor(drawingParameters.CurveExternalColor, param); }}, + {"ExternalDefiningColor", + [this, drawingParameters = Client.drawingParameters](const std::string& param) { + updateColor(drawingParameters.CurveExternalDefiningColor, param); + }}, {"HighlightColor", [this, drawingParameters = Client.drawingParameters](const std::string& param) { updateColor(drawingParameters.PreselectColor, param); diff --git a/src/Mod/Sketcher/Gui/EditModeCoinManagerParameters.cpp b/src/Mod/Sketcher/Gui/EditModeCoinManagerParameters.cpp index 9710afacf6..1573d2a16d 100644 --- a/src/Mod/Sketcher/Gui/EditModeCoinManagerParameters.cpp +++ b/src/Mod/Sketcher/Gui/EditModeCoinManagerParameters.cpp @@ -82,6 +82,7 @@ SbColor DrawingParameters::PreselectColor(0.88f, 0.88f, 0.0f); // #E1E SbColor DrawingParameters::SelectColor(0.11f, 0.68f, 0.11f); // #1CAD1C -> ( 28,173, 28) SbColor DrawingParameters::PreselectSelectedColor(0.36f, 0.48f, 0.11f); // #5D7B1C -> ( 93,123, 28) SbColor DrawingParameters::CurveExternalColor(0.8f, 0.2f, 0.6f); // #CC3399 -> (204, 51,153) +SbColor DrawingParameters::CurveExternalDefiningColor(1.0f, 0.5f, 0.69f); // #FF7FAF -> (255,127,175) SbColor DrawingParameters::CurveDraftColor(0.0f, 0.0f, 0.86f); // #0000DC -> ( 0, 0,220) SbColor DrawingParameters::FullyConstraintConstructionElementColor(0.56f, diff --git a/src/Mod/Sketcher/Gui/EditModeCoinManagerParameters.h b/src/Mod/Sketcher/Gui/EditModeCoinManagerParameters.h index 0e1082f417..2033cf7885 100644 --- a/src/Mod/Sketcher/Gui/EditModeCoinManagerParameters.h +++ b/src/Mod/Sketcher/Gui/EditModeCoinManagerParameters.h @@ -117,6 +117,7 @@ struct DrawingParameters PreselectSelectedColor; // Color used for pre-selection when geometry is already selected static SbColor SelectColor; // Color used for selected geometry static SbColor CurveExternalColor; // Color used for external geometry + static SbColor CurveExternalDefiningColor; // Color used for external defining geometry static SbColor CurveDraftColor; // Color used for construction geometry static SbColor FullyConstraintConstructionElementColor; // Color used for a fully constrained // construction element diff --git a/src/Mod/Sketcher/Gui/EditModeGeometryCoinManager.cpp b/src/Mod/Sketcher/Gui/EditModeGeometryCoinManager.cpp index b215874e0d..7afe5688e6 100644 --- a/src/Mod/Sketcher/Gui/EditModeGeometryCoinManager.cpp +++ b/src/Mod/Sketcher/Gui/EditModeGeometryCoinManager.cpp @@ -135,6 +135,16 @@ void EditModeGeometryCoinManager::updateGeometryColor(const GeoListFacade& geoli return false; }; + auto isExternalDefiningGeomPoint = [&geolistfacade](int GeoId) { + auto geom = geolistfacade.getGeometryFacadeFromGeoId(GeoId); + if (geom) { + auto egf = ExternalGeometryFacade::getFacade(geom->clone()); + auto ref = egf->getRef(); + return egf->testFlag(ExternalGeometryExtension::Defining); + } + return false; + }; + auto isCoincident = [&](int GeoId, Sketcher::PointPos PosId) { const std::vector& constraints = ViewProviderSketchCoinAttorney::getConstraints(viewProvider); @@ -202,7 +212,9 @@ void EditModeGeometryCoinManager::updateGeometryColor(const GeoListFacade& geoli pcolor[i] = drawingParameters.ConstrIcoColor; } else { - pcolor[i] = drawingParameters.CurveExternalColor; + pcolor[i] = isExternalDefiningGeomPoint(GeoId) + ? drawingParameters.CurveExternalDefiningColor + : drawingParameters.CurveExternalColor; } } else if (issketchinvalid) { @@ -423,7 +435,9 @@ void EditModeGeometryCoinManager::updateGeometryColor(const GeoListFacade& geoli color[i] = drawingParameters.InvalidSketchColor; } else { - color[i] = drawingParameters.CurveExternalColor; + color[i] = egf->testFlag(ExternalGeometryExtension::Defining) + ? drawingParameters.CurveExternalDefiningColor + : drawingParameters.CurveExternalColor; } for (int k = j; j < k + indexes; j++) { verts[j].getValue(x, y, z); diff --git a/src/Mod/Sketcher/Gui/SketcherSettings.cpp b/src/Mod/Sketcher/Gui/SketcherSettings.cpp index 0696f76b7d..7cb8fe1c8b 100644 --- a/src/Mod/Sketcher/Gui/SketcherSettings.cpp +++ b/src/Mod/Sketcher/Gui/SketcherSettings.cpp @@ -550,6 +550,7 @@ void SketcherSettingsAppearance::saveSettings() ui->EditedEdgeColor->onSave(); ui->ConstructionColor->onSave(); ui->ExternalColor->onSave(); + ui->ExternalDefiningColor->onSave(); ui->InvalidSketchColor->onSave(); ui->FullyConstrainedColor->onSave(); ui->InternalAlignedGeoColor->onSave(); @@ -599,6 +600,7 @@ void SketcherSettingsAppearance::loadSettings() ui->EditedEdgeColor->onRestore(); ui->ConstructionColor->onRestore(); ui->ExternalColor->onRestore(); + ui->ExternalDefiningColor->onRestore(); ui->InvalidSketchColor->onRestore(); ui->FullyConstrainedColor->onRestore(); ui->InternalAlignedGeoColor->onRestore(); diff --git a/src/Mod/Sketcher/Gui/SketcherSettingsAppearance.ui b/src/Mod/Sketcher/Gui/SketcherSettingsAppearance.ui index 2d6052949a..b1bb992cdb 100644 --- a/src/Mod/Sketcher/Gui/SketcherSettingsAppearance.ui +++ b/src/Mod/Sketcher/Gui/SketcherSettingsAppearance.ui @@ -555,7 +555,40 @@ - + + + + External defining geometry + + + + + + + + 0 + 0 + + + + Color of external defining geometry in edit mode + + + + 255 + 114 + 243 + + + + ExternalDefiningColor + + + View + + + + @@ -568,7 +601,7 @@ - + @@ -594,14 +627,14 @@ - + Invalid sketch - +