From 82e9a49ab38bbde97e0e8a22fa9906b2edadb886 Mon Sep 17 00:00:00 2001 From: Abdullah Tahiri Date: Sat, 25 Feb 2023 08:02:04 +0100 Subject: [PATCH] Sketcher: Grid - Imperial ========================= Fix grid calculation in Imperial units in Auto mode (wrong scaling). Remove observer as unit does not need to be observed. --- .../Part/Gui/ViewProviderGridExtension.cpp | 29 ++----------------- 1 file changed, 2 insertions(+), 27 deletions(-) diff --git a/src/Mod/Part/Gui/ViewProviderGridExtension.cpp b/src/Mod/Part/Gui/ViewProviderGridExtension.cpp index 5712e6c52e..ea5b2848c6 100644 --- a/src/Mod/Part/Gui/ViewProviderGridExtension.cpp +++ b/src/Mod/Part/Gui/ViewProviderGridExtension.cpp @@ -64,7 +64,7 @@ App::PropertyQuantityConstraint::Constraints ViewProviderGridExtension::GridSize namespace PartGui { -class GridExtensionP : public ParameterGrp::ObserverType { +class GridExtensionP { public: explicit GridExtensionP(ViewProviderGridExtension *); ~GridExtensionP(); @@ -89,12 +89,6 @@ public: unsigned int GridLineColor; unsigned int GridDivLineColor; - // VP Independent parameters through observer - int unitsUserSchema = 0; - - /** Observer for parameter group. */ - void OnChange(Base::Subject &rCaller, const char * sReason) override; - private: void computeGridSize(const Gui::View3DInventorViewer* viewer); void createGrid(bool cameraUpdate = false); @@ -134,19 +128,12 @@ GridExtensionP::GridExtensionP(ViewProviderGridExtension * vp): GridDivLineColor = GridLineColor; createEditModeInventorNodes(); - - ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Units"); - unitsUserSchema = hGrp->GetInt("UserSchema", 0); //2 3 5 7 are imperial schemas. 2 3 inches, 5 7 feet - hGrp->Attach(this); } GridExtensionP::~GridExtensionP() { Gui::coinRemoveAllChildren(GridRoot); GridRoot->unref(); - - ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Units"); - hGrp->Detach(this); } double GridExtensionP::getGridSize() const @@ -216,13 +203,11 @@ void GridExtensionP::computeGridSize(const Gui::View3DInventorViewer* viewer) int numberOfLines = static_cast(std::max(pixelWidth, pixelHeight)) / GridSizePixelThreshold; - double unitMultiplier = (unitsUserSchema == 2 || unitsUserSchema == 3) ? 25.4 : (unitsUserSchema == 5 || unitsUserSchema == 7) ? 304.8 : 1; - // If number of subdivision is 1, grid auto spacing can't work as it uses it as a factor // In such case, we apply a default factor of 10 auto safeGridNumberSubdivision = GridNumberSubdivision <= 1 ? 10 : GridNumberSubdivision; - computedGridValue = vp->GridSize.getValue() * safeGridNumberSubdivision * unitMultiplier * pow(safeGridNumberSubdivision, floor(log(camMaxDimension / unitMultiplier / numberOfLines / vp->GridSize.getValue()) / log(safeGridNumberSubdivision))); + computedGridValue = vp->GridSize.getValue() * pow(safeGridNumberSubdivision, 1 + floor(log(camMaxDimension / numberOfLines / vp->GridSize.getValue()) / log(safeGridNumberSubdivision))); //cap the grid size capGridSize(computedGridValue); @@ -399,16 +384,6 @@ void GridExtensionP::drawGrid(bool cameraUpdate) { } } -void GridExtensionP::OnChange(Base::Subject &rCaller, const char * sReason) -{ - (void) rCaller; - - if (strcmp(sReason, "UserSchema") == 0) { - ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Units"); - unitsUserSchema = hGrp->GetInt("UserSchema", 0); //2 3 5 7 are imperial schemas. 2 3 inches, 5 7 feet - } -} - ViewProviderGridExtension::ViewProviderGridExtension() {