+ myVertexActor(GEOM_DeviceActor::New(),true),
+ myVertexSource(GEOM_VertexSource::New(),true),
+
+ myIsolatedEdgeActor(GEOM_DeviceActor::New(),true),
+ myIsolatedEdgeSource(GEOM_EdgeSource::New(),true),
+
+ myOneFaceEdgeActor(GEOM_DeviceActor::New(),true),
+ myOneFaceEdgeSource(GEOM_EdgeSource::New(),true),
+
+ mySharedEdgeActor(GEOM_DeviceActor::New(),true),
+ mySharedEdgeSource(GEOM_EdgeSource::New(),true),
+
+ myWireframeFaceActor(GEOM_DeviceActor::New(),true),
+ myWireframeFaceSource(GEOM_WireframeFace::New(),true),
+
+ myShadingFaceActor(GEOM_DeviceActor::New(),true),
+ myShadingFaceSource(GEOM_ShadingFace::New(),true),
+
+ myHighlightActor(GEOM_DeviceActor::New(),true),
+ myAppendFilter(vtkAppendPolyData::New(),true),
+ myPolyDataMapper(vtkPolyDataMapper::New(),true),
+
+ myHighlightProp(vtkProperty::New()),
+ myPreHighlightProp(vtkProperty::New()),
+ myShadingFaceProp(vtkProperty::New())
+{
+#ifdef MYDEBUG
+ MESSAGE (this<< " GEOM_Actor::GEOM_Actor");
+#endif
+
+ myPolyDataMapper->SetInput(myAppendFilter->GetOutput());
+ vtkProperty* aProperty;
+
+ myHighlightProp->SetAmbient(0.5);
+ myHighlightProp->SetDiffuse(0.3);
+ myHighlightProp->SetSpecular(0.2);
+ myHighlightProp->SetRepresentationToSurface();
+ myHighlightProp->SetAmbientColor(1, 1, 1);
+ myHighlightProp->SetDiffuseColor(1, 1, 1);
+ myHighlightProp->SetSpecularColor(0.5, 0.5, 0.5);
+ myHighlightProp->SetPointSize(SALOME_POINT_SIZE);
+ myHighlightActor->SetProperty(myHighlightProp.GetPointer());
+
+ this->myHighlightActor->SetInput(myAppendFilter->GetOutput(),false);
+
+ myPreHighlightProp->SetColor(0,1,1);
+ myPreHighlightProp->SetPointSize(SALOME_POINT_SIZE+2);
+ myPreHighlightProp->SetLineWidth(SALOME_LINE_WIDTH+1);
+ myPreHighlightProp->SetRepresentationToWireframe();
+
+ myAppendFilter->AddInput(myVertexSource->GetOutput());
+ myVertexActor->SetInput(myVertexSource->GetOutput(),false);
+ aProperty = myVertexActor->GetProperty();
+ aProperty->SetRepresentation(VTK_POINTS);
+ aProperty->SetPointSize(3);
+ aProperty->SetColor(1, 1, 0);
+
+ myAppendFilter->AddInput(myIsolatedEdgeSource->GetOutput());
+ myIsolatedEdgeActor->SetInput(myIsolatedEdgeSource->GetOutput(),false);
+ aProperty = myIsolatedEdgeActor->GetProperty();
+ aProperty->SetRepresentation(VTK_WIREFRAME);
+ aProperty->SetColor(1, 0, 0);
+
+ myAppendFilter->AddInput(myOneFaceEdgeSource->GetOutput());
+ myOneFaceEdgeActor->SetInput(myOneFaceEdgeSource->GetOutput(),false);
+ aProperty = myOneFaceEdgeActor->GetProperty();
+ aProperty->SetRepresentation(VTK_WIREFRAME);
+ aProperty->SetColor(0, 1, 0);
+
+ myAppendFilter->AddInput(mySharedEdgeSource->GetOutput());
+ mySharedEdgeActor->SetInput(mySharedEdgeSource->GetOutput(),false);
+ aProperty = mySharedEdgeActor->GetProperty();
+ aProperty->SetRepresentation(VTK_WIREFRAME);
+ aProperty->SetColor(1, 1, 0);
+
+ myAppendFilter->AddInput(myWireframeFaceSource->GetOutput());
+ myWireframeFaceActor->SetInput(myWireframeFaceSource->GetOutput(),false);
+ aProperty = myWireframeFaceActor->GetProperty();
+ aProperty->SetRepresentation(VTK_WIREFRAME);
+ aProperty->SetColor(0.5, 0.5, 0.5);
+
+ myShadingFaceActor->SetInput(myShadingFaceSource->GetOutput(),true);
+
+ myShadingFaceProp->SetRepresentation(VTK_SURFACE);
+ myShadingFaceProp->SetInterpolationToGouraud();
+ myShadingFaceProp->SetAmbient(1.0);
+ myShadingFaceProp->SetDiffuse(1.0);
+ myShadingFaceProp->SetSpecular(0.4);
+ myShadingFaceProp->SetAmbientColor(0.329412, 0.223529, 0.027451);
+ myShadingFaceProp->SetDiffuseColor(0.780392, 0.568627, 0.113725);
+ myShadingFaceProp->SetSpecularColor(0.992157, 0.941176, 0.807843);
+
+ myShadingFaceActor->SetProperty(myShadingFaceProp.GetPointer());
+
+ // Toggle display mode
+ setDisplayMode(0); // WIRE FRAME
+ SetVectorMode(0); //
+
+}
+
+
+GEOM_Actor::~GEOM_Actor()
+{
+#ifdef MYDEBUG
+ MESSAGE (this<< " ~GEOM_Actor::GEOM_Actor");
+#endif
+ myHighlightProp->Delete();
+ myPreHighlightProp->Delete();
+ myShadingFaceProp->Delete();
+}
+
+GEOM_Actor*
+GEOM_Actor::
+New()
+{
+ GEOM_Actor* anObject = new GEOM_Actor();
+ anObject->SetMapper(anObject->myPolyDataMapper.Get());
+ return anObject;
+}
+
+
+void Write(vtkPolyData* theDataSet, const char* theFileName){
+ vtkPolyDataWriter* aWriter = vtkPolyDataWriter::New();
+ MESSAGE ("Write - "<<theFileName<<"' : "<<theDataSet->GetNumberOfPoints()<<"; "<<theDataSet->GetNumberOfCells());
+ aWriter->SetInput(theDataSet);
+ aWriter->SetFileName(theFileName);
+ //aWriter->Write();
+ aWriter->Delete();
+}
+
+void
+GEOM_Actor::
+SetModified()
+{
+ this->myVertexSource->Modified();
+ this->myIsolatedEdgeSource->Modified();
+ this->myOneFaceEdgeSource->Modified();
+ this->mySharedEdgeSource->Modified();
+ this->myWireframeFaceSource->Modified();
+ this->myShadingFaceSource->Modified();
+}
+
+void
+GEOM_Actor::
+SetMapper(vtkMapper* theMapper)
+{
+ SALOME_Actor::SetMapper(theMapper);
+}
+
+void
+GEOM_Actor::
+AddToRender(vtkRenderer* theRenderer)
+{
+ //SALOME_Actor::AddToRender(theRenderer);
+
+ theRenderer->AddActor(this);
+
+ this->myHighlightActor->AddToRender(theRenderer);
+
+
+ myShadingFaceActor->AddToRender(theRenderer);
+ myWireframeFaceActor->AddToRender(theRenderer);
+
+ mySharedEdgeActor->AddToRender(theRenderer);
+ myOneFaceEdgeActor->AddToRender(theRenderer);
+ myIsolatedEdgeActor->AddToRender(theRenderer);
+
+ myVertexActor->AddToRender(theRenderer);
+}
+
+void
+GEOM_Actor::
+RemoveFromRender(vtkRenderer* theRenderer)