Sketcher: External: Change style to : defining are solid lines. Non-defining dashed. Both use external color.

This commit is contained in:
PaddleStroke
2024-11-12 11:38:35 +01:00
committed by WandererFan
parent 1d0373f40f
commit 50c4e2b4e1
5 changed files with 29 additions and 18 deletions

View File

@@ -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) {

View File

@@ -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<int>(SubLayer::Normal);
}
}
return static_cast<int>(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)

View File

@@ -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<int>(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
{

View File

@@ -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;
}

View File

@@ -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;