diff --git a/src/Mod/Sketcher/Gui/EditModeCoinManager.cpp b/src/Mod/Sketcher/Gui/EditModeCoinManager.cpp index 28660f5b64..98b81d0623 100644 --- a/src/Mod/Sketcher/Gui/EditModeCoinManager.cpp +++ b/src/Mod/Sketcher/Gui/EditModeCoinManager.cpp @@ -175,7 +175,7 @@ void EditModeCoinManager::ParameterObserver::initParameters() }}, {"ExternalPattern", [this, &drawingParameters = Client.drawingParameters](const std::string& param) { - updatePattern(drawingParameters.ExternalPattern, param, 0b1110010011100100); + updatePattern(drawingParameters.ExternalPattern, param, 0b1111110011111100); }}, {"CreateLineColor", [this, drawingParameters = Client.drawingParameters](const std::string& param) { diff --git a/src/Mod/Sketcher/Gui/EditModeCoinManagerParameters.cpp b/src/Mod/Sketcher/Gui/EditModeCoinManagerParameters.cpp index 70c7bb1690..7f044b589f 100644 --- a/src/Mod/Sketcher/Gui/EditModeCoinManagerParameters.cpp +++ b/src/Mod/Sketcher/Gui/EditModeCoinManagerParameters.cpp @@ -22,11 +22,34 @@ #include "PreCompiled.h" +#include "Mod/Sketcher/App/ExternalGeometryFacade.h" + #include "EditModeCoinManagerParameters.h" using namespace SketcherGui; +int GeometryLayerParameters::getSubLayerIndex(const int geoId, + const Sketcher::GeometryFacade* geom) const +{ + bool isConstruction = geom->getConstruction(); + bool isInternal = geom->isInternalAligned(); + bool isExternal = geoId <= Sketcher::GeoEnum::RefExt; + if (isExternal) { + auto egf = Sketcher::ExternalGeometryFacade::getFacade(geom->clone()); + if (egf->testFlag(Sketcher::ExternalGeometryExtension::Defining)) { + // Defining external are added to the Normal sublayers because they + // share the same line style. + return static_cast(SubLayer::Normal); + } + } + + return static_cast(isExternal ? SubLayer::External + : isInternal ? SubLayer::Internal + : isConstruction ? SubLayer::Construction + : SubLayer::Normal); +} + 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) SbColor DrawingParameters::CrossColorH(0.8f, 0.4f, 0.4f); // #CC6666 -> (204,102,102) diff --git a/src/Mod/Sketcher/Gui/EditModeCoinManagerParameters.h b/src/Mod/Sketcher/Gui/EditModeCoinManagerParameters.h index bff79da439..877144c050 100644 --- a/src/Mod/Sketcher/Gui/EditModeCoinManagerParameters.h +++ b/src/Mod/Sketcher/Gui/EditModeCoinManagerParameters.h @@ -145,7 +145,7 @@ struct DrawingParameters unsigned int CurvePattern = 0b1111111111111111; // pattern of normal edges unsigned int ConstructionPattern = 0b1111110011111100; // pattern of construction edges unsigned int InternalPattern = 0b1111110011111100; // pattern of internal edges - unsigned int ExternalPattern = 0b1110010011100100; // pattern of external edges + unsigned int ExternalPattern = 0b1111110011111100; // pattern of external edges //@} }; @@ -304,17 +304,7 @@ public: return SubLayers; } - int inline getSubLayerIndex(const int geoId, const Sketcher::GeometryFacade* geom) const - { - bool isConstruction = geom->getConstruction(); - bool isInternal = geom->isInternalAligned(); - bool isExternal = geoId <= Sketcher::GeoEnum::RefExt; - - return static_cast(isExternal ? SubLayer::External - : isInternal ? SubLayer::Internal - : isConstruction ? SubLayer::Construction - : SubLayer::Normal); - } + int getSubLayerIndex(const int geoId, const Sketcher::GeometryFacade* geom) const; bool isNormalSubLayer(int t) const { diff --git a/src/Mod/Sketcher/Gui/EditModeGeometryCoinManager.cpp b/src/Mod/Sketcher/Gui/EditModeGeometryCoinManager.cpp index afcd044ccf..b215874e0d 100644 --- a/src/Mod/Sketcher/Gui/EditModeGeometryCoinManager.cpp +++ b/src/Mod/Sketcher/Gui/EditModeGeometryCoinManager.cpp @@ -402,6 +402,7 @@ void EditModeGeometryCoinManager::updateGeometryColor(const GeoListFacade& geoli ViewProviderSketchCoinAttorney::isCurveSelected(viewProvider, GeoId); bool preselected = (preselectcurve == GeoId); bool constrainedElement = isFullyConstraintElement(GeoId); + bool isExternal = GeoId < -1; if (selected || preselected) { color[i] = selected ? (preselected ? drawingParameters.PreselectSelectedColor @@ -414,16 +415,13 @@ void EditModeGeometryCoinManager::updateGeometryColor(const GeoListFacade& geoli SbVec3f(x, y, viewOrientationFactor * drawingParameters.zHighLine); } } - else if (geometryLayerParameters.isExternalSubLayer(t)) { + else if (isExternal) { auto geom = geolistfacade.getGeometryFacadeFromGeoId(GeoId); auto egf = ExternalGeometryFacade::getFacade(geom->clone()); auto ref = egf->getRef(); if (egf->testFlag(ExternalGeometryExtension::Missing)) { color[i] = drawingParameters.InvalidSketchColor; } - else if (egf->testFlag(ExternalGeometryExtension::Defining)) { - color[i] = drawingParameters.CurveColor; - } else { color[i] = drawingParameters.CurveExternalColor; } diff --git a/src/Mod/Sketcher/Gui/SketcherSettings.cpp b/src/Mod/Sketcher/Gui/SketcherSettings.cpp index 5ddf096770..c74c9e32f8 100644 --- a/src/Mod/Sketcher/Gui/SketcherSettings.cpp +++ b/src/Mod/Sketcher/Gui/SketcherSettings.cpp @@ -644,7 +644,7 @@ void SketcherSettingsAppearance::loadSettings() } ui->InternalPattern->setCurrentIndex(index); - pattern = hGrp->GetInt("ExternalPattern", 0b1110010011100100); + pattern = hGrp->GetInt("ExternalPattern", 0b1111110011111100); index = ui->ExternalPattern->findData(QVariant(pattern)); if (index < 0) { index = 0;