Skip to content

Commit

Permalink
try to change color of mapped nodes
Browse files Browse the repository at this point in the history
doesn't work
  • Loading branch information
LafCorentin committed Aug 10, 2020
1 parent 67adf34 commit 8f5193b
Show file tree
Hide file tree
Showing 3 changed files with 70 additions and 10 deletions.
Expand Up @@ -220,8 +220,9 @@ Q_UNUSED(pShowWarning)

mMeshFileName = pFileName;
mZincWidget->changeSource(pFileName);
mMapMatch.clear();

return false;
return true;
}

//==============================================================================
Expand Down
74 changes: 66 additions & 8 deletions src/plugins/editing/MappingView/src/mappingviewzincwidget.cpp
Expand Up @@ -72,9 +72,12 @@ MappingViewZincWidget::MappingViewZincWidget(QWidget *pParent, const QString &pM
//TODO usefull ?
mZincSceneViewerDescription = sceneViewer().writeDescription();

setup();

initAuxFile();

setup();
mRegion = new OpenCMISS::Zinc::Region(mZincContext->getDefaultRegion());
setupRegion();
}

//==============================================================================
Expand All @@ -92,18 +95,21 @@ void MappingViewZincWidget::changeSource(const QString &pMainFileName)
{
mMainFileName = pMainFileName;
initAuxFile();
setup();
initializeGL();

qDebug(">>>zincwidget charging %s",qPrintable(mMainFileName));
mRegion = new OpenCMISS::Zinc::Region(mZincContext->createRegion());
mZincContext->setDefaultRegion(*mRegion);

setupRegion();

draw();
}

//==============================================================================

void MappingViewZincWidget::initializeGL()
{
ZincWidget::initializeGL();

//TODO usefull ?
//mSceneViewer.readDescription(mZincSceneViewerDescription);

// background colour
Expand Down Expand Up @@ -184,6 +190,30 @@ void MappingViewZincWidget::dropEvent(QDropEvent *pEvent)
pEvent->acceptProposedAction();

mEditingWidget->setNodeValue(mIdSelectedNode,"component: "+splitText[1]+", variable: "+splitText.first());

OpenCMISS::Zinc::Node node = mFieldModule.findNodesetByFieldDomainType(OpenCMISS::Zinc::Field::DOMAIN_TYPE_NODES).findNodeByIdentifier(mIdSelectedNode);
// select the node to highlight graphics

mFieldModule.beginChange();

if (node.isValid()){
OpenCMISS::Zinc::Nodeset nodes = mFieldModule.findNodesetByFieldDomainType(OpenCMISS::Zinc::Field::DOMAIN_TYPE_NODES);
OpenCMISS::Zinc::FieldNodeGroup nodeGroupField = mMappedSelectionGroup.getFieldNodeGroup(nodes);

if (!nodeGroupField.isValid()) {
nodeGroupField = mMappedSelectionGroup.createFieldNodeGroup(nodes);
}

OpenCMISS::Zinc::NodesetGroup nodesetGroup = nodeGroupField.getNodesetGroup();
nodesetGroup.addNode(node);

} else {
if (mMappedSelectionGroup.isValid()) {
mScene->setSelectionField(OpenCMISS::Zinc::Field());
}
}
mFieldModule.endChange();

}

//==============================================================================
Expand All @@ -198,10 +228,12 @@ void MappingViewZincWidget::setup()
mZincContext->getGlyphmodule().defineStandardGlyphs();

setContext(mZincContext);
}

void MappingViewZincWidget::setupRegion()
{
//Create and initialize region and scene

mRegion = new OpenCMISS::Zinc::Region(mZincContext->getDefaultRegion());
mScene = new OpenCMISS::Zinc::Scene(mRegion->getScene());

// Create and initialize scenePicker with a filter (improvable)
Expand Down Expand Up @@ -246,6 +278,10 @@ void MappingViewZincWidget::draw()

mFieldModule.beginChange();
OpenCMISS::Zinc::Field coordinates = mFieldModule.findFieldByName("Coordinates");

mMappedSelectionGroup = mFieldModule.createFieldGroup();
mMappedSelectionGroup.setName("Mapped");

mFieldModule.endChange();

mScene->beginChange();
Expand All @@ -256,15 +292,15 @@ void MappingViewZincWidget::draw()
OpenCMISS::Zinc::GraphicsLines lines = mScene->createGraphicsLines();

lines.setCoordinateField(coordinates);
lines.setMaterial(materialModule.findMaterialByName("red"));
lines.setMaterial(materialModule.findMaterialByName("black"));

// Green spheres limiting our scene

mNodePoints = mScene->createGraphicsPoints();

mNodePoints.setCoordinateField(coordinates);
mNodePoints.setFieldDomainType(OpenCMISS::Zinc::Field::DOMAIN_TYPE_NODES);
mNodePoints.setMaterial(materialModule.findMaterialByName("green"));
mNodePoints.setMaterial(materialModule.findMaterialByName("grey"));

// Size of our green spheres

Expand All @@ -273,6 +309,27 @@ void MappingViewZincWidget::draw()
pointAttr.setBaseSize(1, &mNodeSize);
pointAttr.setGlyphShapeType(OpenCMISS::Zinc::Glyph::SHAPE_TYPE_SPHERE);

// create "mapped" group

OpenCMISS::Zinc::GraphicsPoints points = mScene->createGraphicsPoints();
points.setFieldDomainType(OpenCMISS::Zinc::Field::DOMAIN_TYPE_NODES);

points.setSubgroupField(mMappedSelectionGroup);

points.setMaterial(materialModule.findMaterialByName("green"));
points.setSelectedMaterial(materialModule.findMaterialByName("orange"));

pointAttr = points.getGraphicspointattributes();

double sizeMappedNode = mNodeSize*1.1;
pointAttr.setBaseSize(1, &sizeMappedNode);
pointAttr.setGlyphShapeType(OpenCMISS::Zinc::Glyph::SHAPE_TYPE_SPHERE);

//TEST
//TODO remove it
OpenCMISS::Zinc::Node node_test = mFieldModule.findNodesetByFieldDomainType(OpenCMISS::Zinc::Field::DOMAIN_TYPE_NODES).findNodeByIdentifier(112);


mScene->endChange();

// adding view all command
Expand Down Expand Up @@ -308,6 +365,7 @@ void MappingViewZincWidget::click(int pX, int pY, bool pCanDiscard)
if (!selectionGroup.isValid()) {
selectionGroup = mFieldModule.createFieldGroup();
selectionGroup.setName("Selection");

mScene->setSelectionField(selectionGroup);
}

Expand Down
3 changes: 2 additions & 1 deletion src/plugins/editing/MappingView/src/mappingviewzincwidget.h
Expand Up @@ -67,7 +67,6 @@ class MappingViewZincWidget : public ZincWidget::ZincWidget
static constexpr double nodeSixeExp = 1.1;

public slots:
//TODO keep slot here or manage signal through parent class ?
void setNodeSizes(int pSize);

protected:
Expand Down Expand Up @@ -107,10 +106,12 @@ public slots:
OpenCMISS::Zinc::Region *mRegion;
OpenCMISS::Zinc::Scenepicker *mScenePicker;

OpenCMISS::Zinc::FieldGroup mMappedSelectionGroup;
OpenCMISS::Zinc::GraphicsPoints mNodePoints;

void initAuxFile();
void setup();
void setupRegion();
void draw();

void click(int pX, int pY, bool pCanDiscard = true);
Expand Down

0 comments on commit 8f5193b

Please sign in to comment.