Sketcher: Grid rework. Include:

- Adding 'auto spacing' option.
    - Drawing grid dynamically on viewer area only.
    - Moving code to coinManager.
    - Adding a 'grid tool' to sketcher-edit-mode toolbar.
This commit is contained in:
Paddle
2022-11-21 09:34:32 +01:00
committed by abdullahtahiriyo
parent a1d0d1dd76
commit 40271a29ea
23 changed files with 3205 additions and 125 deletions

View File

@@ -57,6 +57,14 @@
#include "ViewProviderSketch.h"
#include "ViewProviderSketchCoinAttorney.h"
#include "EditModeGridCoinManager.h"
#include "EditModeGeometryCoinManager.h"
#include "EditModeConstraintCoinManager.h"
#include "EditModeCoinManager.h"
#include "Utils.h"
using namespace SketcherGui;
using namespace Sketcher;
@@ -342,6 +350,9 @@ EditModeCoinManager::EditModeCoinManager(ViewProviderSketch &vp):viewProvider(vp
analysisResults,
editModeScenegraphNodes,
coinMapping);
pEditModeGridCoinManager = std::make_unique<EditModeGridCoinManager>( viewProvider,
editModeScenegraphNodes);
// Create Edit Mode Scenograph
createEditModeInventorNodes();
@@ -573,8 +584,6 @@ void EditModeCoinManager::processGeometryConstraintsInformationOverlay(const Geo
updateAxesLength();
updateGridExtent();
pEditModeConstraintCoinManager->processConstraints(geolistfacade);
}
@@ -613,13 +622,6 @@ void EditModeCoinManager::updateAxesLength()
editModeScenegraphNodes.RootCrossCoordinate->point.set1Value(3,SbVec3f(0.0f, analysisResults.boundingBoxMagnitudeOrder, zCrossH));
}
void EditModeCoinManager::updateGridExtent()
{
float dMagF = analysisResults.boundingBoxMagnitudeOrder;
ViewProviderSketchCoinAttorney::updateGridExtent(viewProvider,-dMagF, dMagF, -dMagF, dMagF);
}
void EditModeCoinManager::updateColor()
{
auto geolistfacade = ViewProviderSketchCoinAttorney::getGeoListFacade(viewProvider);
@@ -657,6 +659,14 @@ void EditModeCoinManager::createEditModeInventorNodes()
ViewProviderSketchCoinAttorney::addNodeToRoot(viewProvider, editModeScenegraphNodes.EditRoot);
editModeScenegraphNodes.EditRoot->renderCaching = SoSeparator::OFF ;
// Create Grid Coin nodes ++++++++++++++++++++++++++++++++++++++++++
editModeScenegraphNodes.GridRoot = new SoSeparator();
editModeScenegraphNodes.GridRoot->ref();
editModeScenegraphNodes.GridRoot->setName("GridRoot");
editModeScenegraphNodes.EditRoot->addChild(editModeScenegraphNodes.GridRoot);
if (viewProvider.ShowGrid.getValue())
pEditModeGridCoinManager->createGrid();
// Create Geometry Coin nodes ++++++++++++++++++++++++++++++++++++++
pEditModeGeometryCoinManager->createEditModeInventorNodes();
@@ -804,6 +814,13 @@ void EditModeCoinManager::updateVirtualSpace()
pEditModeConstraintCoinManager->updateVirtualSpace();
}
void EditModeCoinManager::drawGrid(bool cameraUpdate) {
if (viewProvider.ShowGrid.getValue())
pEditModeGridCoinManager->createGrid(cameraUpdate);
else
Gui::coinRemoveAllChildren(editModeScenegraphNodes.GridRoot);
}
/************************ Resizing of coin nodes ************************/
int EditModeCoinManager::defaultApplicationFontSizePixels() const {