FEM Post: Remove unused files

This commit is contained in:
Stefan Tröger 2016-03-19 19:27:46 +01:00 committed by wmayer
parent 875e32607d
commit 294ce62bee
2 changed files with 0 additions and 434 deletions

View File

@ -1,337 +0,0 @@
/***************************************************************************
* Copyright (c) 2015 Stefan Tröger <stefantroeger@gmx.net> *
* *
* This file is part of the FreeCAD CAx development system. *
* *
* This library is free software; you can redistribute it and/or *
* modify it under the terms of the GNU Library General Public *
* License as published by the Free Software Foundation; either *
* version 2 of the License, or (at your option) any later version. *
* *
* This library is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU Library General Public License for more details. *
* *
* You should have received a copy of the GNU Library General Public *
* License along with this library; see the file COPYING.LIB. If not, *
* write to the Free Software Foundation, Inc., 59 Temple Place, *
* Suite 330, Boston, MA 02111-1307, USA *
* *
***************************************************************************/
#include "PreCompiled.h"
#ifdef FC_USE_VTK
#include "SoVTKActor.h"
#include "InventorAll.h"
#include <Base/Console.h>
#include <Inventor/SbViewportRegion.h>
#include <vtkMapper.h>
#include <vtkGeometryFilter.h>
#include <vtkProperty.h>
#include <vtkPolyDataMapper.h>
#include <vtkAlgorithmOutput.h>
#include <vtkCellArray.h>
#include <vtkPointData.h>
using namespace Gui;
SO_NODE_SOURCE(SoVTKActor);
void SoVTKActor::initClass()
{
SO_NODE_INIT_CLASS(SoVTKActor, SoSeparator, "VTKActor");
}
SoVTKActor::SoVTKActor() : SoSeparator(), m_mapper(NULL)
{
SO_NODE_CONSTRUCTOR(SoVTKActor);
//create the subnodes which do the visualization work
m_shapeHints = new SoShapeHints();
m_shapeHints->ref();
m_shapeHints->shapeType = SoShapeHints::UNKNOWN_SHAPE_TYPE;
m_coordinates = new SoCoordinate3();
m_coordinates->ref();
m_materialBinding = new SoMaterialBinding();
m_materialBinding->ref();
m_material = new SoMaterial();
m_material->ref();
m_normalBinding = new SoNormalBinding();
m_normalBinding->ref();
m_normals = new SoNormal();
m_normals->ref();
m_faces = new SoIndexedFaceSet();
m_faces->ref();
m_triangleStrips = new SoIndexedTriangleStripSet();
m_triangleStrips->ref();
m_markers = new SoIndexedMarkerSet();
m_markers->ref();
m_lines = new SoIndexedLineSet();
m_lines->ref();
addChild(m_shapeHints);
addChild(m_materialBinding);
addChild(m_material);
addChild(m_normalBinding);
addChild(m_normals);
addChild(m_coordinates);
addChild(m_markers);
addChild(m_lines);
addChild(m_faces);
addChild(m_triangleStrips);
}
SoVTKActor::~SoVTKActor()
{
}
void SoVTKActor::doAction(SoAction* action)
{
SoNode::doAction(action);
}
void SoVTKActor::setMapper(vtkMapper* m)
{
m_mapper = m;
vtkDataSet *ds;
vtkPolyData *pd;
vtkGeometryFilter *gf = NULL;
vtkPointData *pntData;
vtkPoints *points;
vtkDataArray *normals = NULL;
vtkDataArray *tcoords = NULL;
int i;
vtkProperty *prop;
double *tempd;
vtkCellArray *cells;
vtkIdType npts = 0;
vtkIdType *indx = 0;
float tempf2;
vtkPolyDataMapper *pm;
vtkUnsignedCharArray *colors;
double *p;
unsigned char *c;
vtkTransform *trans;
Base::Console().Message("render SoVTKActor\n");
// see if the actor has a mapper. it could be an assembly
if (m_mapper == NULL)
return;
ds = m_mapper->GetInput();
vtkAlgorithmOutput* pdProducer = 0;
// we really want polydata
if ( ds->GetDataObjectType() != VTK_POLY_DATA ) {
gf = vtkGeometryFilter::New();
gf->SetInputConnection(
m_mapper->GetInputConnection(0, 0));
gf->Update();
pd = gf->GetOutput();
pdProducer = gf->GetOutputPort();
}
else {
m_mapper->GetInputAlgorithm()->Update();
pd = static_cast<vtkPolyData *>(ds);
pdProducer = m_mapper->GetInputConnection(0, 0);
}
pm = vtkPolyDataMapper::New();
pm->SetInputConnection(pdProducer);
pm->SetScalarRange(m_mapper->GetScalarRange());
pm->SetScalarVisibility(m_mapper->GetScalarVisibility());
pm->SetLookupTable(m_mapper->GetLookupTable());
points = pd->GetPoints();
pntData = pd->GetPointData();
normals = pntData->GetNormals();
tcoords = pntData->GetTCoords();
colors = pm->MapScalars(1.0);
// write out point data if any
WritePointData(points, normals, tcoords, colors);
// write out polys if any
if (pd->GetNumberOfPolys() > 0) {
Base::Console().Message("render polys: %i\n", pd->GetNumberOfPolys());
m_faces->coordIndex.startEditing();
int soidx = 0;
cells = pd->GetPolys();
for (cells->InitTraversal(); cells->GetNextCell(npts,indx); ) {
for (i = 0; i < npts; i++) {
m_faces->coordIndex.set1Value(soidx, static_cast<int>(indx[i]));
++soidx;
}
m_faces->coordIndex.set1Value(soidx, -1);
++soidx;
}
m_faces->coordIndex.finishEditing();
}
// write out tstrips if any
if (pd->GetNumberOfStrips() > 0) {
Base::Console().Message("render strips\n");
int soidx = 0;
cells = pd->GetStrips();
m_triangleStrips->coordIndex.startEditing();
for (cells->InitTraversal(); cells->GetNextCell(npts,indx); ) {
for (i = 0; i < npts; i++) {
m_triangleStrips->coordIndex.set1Value(soidx, static_cast<int>(indx[i]));
++soidx;
}
m_triangleStrips->coordIndex.set1Value(soidx, -1);
++soidx;
}
m_triangleStrips->coordIndex.finishEditing();
}
// write out lines if any
if (pd->GetNumberOfLines() > 0) {
Base::Console().Message("render lines: %i\n", pd->GetNumberOfLines());
int soidx = 0;
cells = pd->GetLines();
m_lines->coordIndex.startEditing();
for (cells->InitTraversal(); cells->GetNextCell(npts,indx); ) {
for (i = 0; i < npts; i++) {
m_lines->coordIndex.set1Value(soidx, static_cast<int>(indx[i]));
++soidx;
}
m_lines->coordIndex.set1Value(soidx, -1);
++soidx;
}
m_lines->coordIndex.finishEditing();
}
// write out verts if any
// (more complex because there is no IndexedPointSet)
if (pd->GetNumberOfVerts() > 0){
Base::Console().Message("render verts\n");
int soidx = 0;
cells = pd->GetVerts();
m_markers->coordIndex.startEditing();
for (cells->InitTraversal(); cells->GetNextCell(npts,indx); ) {
for (i = 0; i < npts; i++) {
m_markers->coordIndex.set1Value(soidx, static_cast<int>(indx[i]));
++soidx;
}
m_markers->coordIndex.set1Value(soidx, -1);
++soidx;
}
m_markers->coordIndex.finishEditing();
}
if (gf)
gf->Delete();
pm->Delete();
}
vtkMapper* SoVTKActor::getMapper()
{
return m_mapper;
}
/*
void SoVTKActor::GLRender(SoGLRenderAction *action)
{
}*/
void SoVTKActor::WritePointData(vtkPoints *points, vtkDataArray *normals,
vtkDataArray *tcoords,
vtkUnsignedCharArray *colors)
{
double *p;
int i;
unsigned char *c;
if(!points)
return;
Base::Console().Message("render points: %i", points->GetNumberOfPoints());
if(colors)
Base::Console().Message(", colors: %i", colors->GetNumberOfTuples());
Base::Console().Message("\n");
m_coordinates->point.startEditing();
for (i = 0; i < points->GetNumberOfPoints(); i++) {
p = points->GetPoint(i);
m_coordinates->point.set1Value(i, p[0], p[1], p[2]);
}
m_coordinates->point.finishEditing();
// write out the point nrmal data
if (normals) {
Base::Console().Message("Write normals: %i\n", normals->GetNumberOfTuples());
m_normals->vector.startEditing();
for (i = 0; i < normals->GetNumberOfTuples(); i++) {
p = normals->GetTuple(i);
m_normals->vector.set1Value(i, SbVec3f(p[0], p[1], p[2]));
}
m_normals->vector.finishEditing();
m_normalBinding->value = SoNormalBinding::PER_VERTEX_INDEXED;
m_normalBinding->value.touch();
}
/*
// write out the point data
if (tcoords)
{
fprintf(fp,"%sTextureCoordinateBinding {\n",indent);
VTK_INDENT_MORE;
fprintf(fp,"%svalue PER_VERTEX_INDEXED\n",indent);
VTK_INDENT_LESS;
fprintf(fp,"%s}\n",indent);
fprintf(fp,"%sTextureCoordinate2 {\n", indent);
VTK_INDENT_MORE;
fprintf(fp,"%spoint [\n", indent);
VTK_INDENT_MORE;
for (i = 0; i < tcoords->GetNumberOfTuples(); i++)
{
p = tcoords->GetTuple(i);
fprintf (fp,"%s%g %g,\n", indent, p[0], p[1]);
}
fprintf(fp,"%s]\n", indent);
VTK_INDENT_LESS;
fprintf(fp,"%s}\n", indent);
VTK_INDENT_LESS;
}*/
// write out the point data
if (colors) {
m_material->diffuseColor.startEditing();
m_material->transparency.startEditing();
for (i = 0; i < colors->GetNumberOfTuples(); i++) {
c = colors->GetPointer(4*i);
m_material->diffuseColor.set1Value(i,static_cast<unsigned long>(c[3]),
static_cast<unsigned long>(c[2]),
static_cast<unsigned long>(c[1]));
m_material->transparency.set1Value(i, static_cast<unsigned long>(c[0]));
}
m_material->diffuseColor.finishEditing();
m_material->transparency.finishEditing();
m_materialBinding->value = SoMaterialBinding::PER_VERTEX_INDEXED;
m_materialBinding->touch();
}
}
#endif //FC_USE_VTK

View File

@ -1,97 +0,0 @@
/***************************************************************************
* Copyright (c) 2015 Stefan Tröger <stefantroeger@gmx.net> *
* *
* This file is part of the FreeCAD CAx development system. *
* *
* This library is free software; you can redistribute it and/or *
* modify it under the terms of the GNU Library General Public *
* License as published by the Free Software Foundation; either *
* version 2 of the License, or (at your option) any later version. *
* *
* This library is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU Library General Public License for more details. *
* *
* You should have received a copy of the GNU Library General Public *
* License along with this library; see the file COPYING.LIB. If not, *
* write to the Free Software Foundation, Inc., 59 Temple Place, *
* Suite 330, Boston, MA 02111-1307, USA *
* *
***************************************************************************/
#ifndef GUI_SOVTKACTOR_H
#define GUI_SOVTKACTOR_H
#ifdef FC_USE_VTK
#include <Inventor/nodes/SoSeparator.h>
#include <Inventor/nodes/SoCoordinate3.h>
#include <Inventor/nodes/SoIndexedMarkerSet.h>
#include <Inventor/nodes/SoIndexedLineSet.h>
#include <Inventor/nodes/SoIndexedFaceSet.h>
#include <Inventor/nodes/SoIndexedTriangleStripSet.h>
#include <Inventor/nodes/SoPackedColor.h>
#include <Inventor/nodes/SoMaterialBinding.h>
#include <Inventor/nodes/SoShapeHints.h>
#include <Inventor/nodes/SoMaterial.h>
#include <Inventor/nodes/SoNormalBinding.h>
#include <Inventor/nodes/SoNormal.h>
class vtkPoints;
class vtkDataArray;
class vtkUnsignedCharArray;
class vtkMapper;
class SoGLCoordinateElement;
class SoTextureCoordinateBundle;
namespace Gui {
class GuiExport SoVTKActor : public SoSeparator {
SO_NODE_HEADER(SoVTKActor);
public:
static void initClass();
SoVTKActor();
//vtkActor functions
static SoVTKActor *New();
void setMapper(vtkMapper* m);
vtkMapper* getMapper();
protected:
virtual ~SoVTKActor();
//SoNode functions
/*
virtual void GLRender(SoGLRenderAction *action);
virtual void GLRenderBelowPath(SoGLRenderAction* action);
virtual void GLRenderInPath(SoGLRenderAction* action);
virtual void GLRenderOffPath(SoGLRenderAction* action);*/
virtual void doAction(SoAction* action);
void WritePointData(vtkPoints *points, vtkDataArray *normals,
vtkDataArray *tcoords,
vtkUnsignedCharArray *colors);
vtkMapper* m_mapper;
SoCoordinate3* m_coordinates;
SoIndexedMarkerSet* m_markers;
SoIndexedLineSet* m_lines;
SoIndexedFaceSet* m_faces;
SoIndexedTriangleStripSet* m_triangleStrips;
SoMaterialBinding* m_materialBinding;
SoShapeHints* m_shapeHints;
SoMaterial* m_material;
SoNormalBinding* m_normalBinding;
SoNormal* m_normals;
};
} // namespace PartGui
#endif // FC_USE_VTK
#endif // GUI_SOVTKACTOR_H