diff --git a/ApplicationLibCode/GeoMech/GeoMechVisualization/RivFemPartGeometryGenerator.cpp b/ApplicationLibCode/GeoMech/GeoMechVisualization/RivFemPartGeometryGenerator.cpp index fda6255651..3f318f77c6 100644 --- a/ApplicationLibCode/GeoMech/GeoMechVisualization/RivFemPartGeometryGenerator.cpp +++ b/ApplicationLibCode/GeoMech/GeoMechVisualization/RivFemPartGeometryGenerator.cpp @@ -27,6 +27,7 @@ #include "cvfOutlineEdgeExtractor.h" #include "cvfPrimitiveSetIndexedUInt.h" #include "cvfScalarMapper.h" +#include "cvfStructGridGeometryGenerator.h" #include #include @@ -84,8 +85,9 @@ ref RivFemPartGeometryGenerator::createMeshDrawable() ref geo = new DrawableGeo; geo->setVertexArray( m_quadVertices.p() ); - ref indices = lineIndicesFromQuadVertexArray( m_quadVertices.p() ); - ref prim = new PrimitiveSetIndexedUInt( PT_LINES ); + ref indices = cvf::StructGridGeometryGenerator::lineIndicesFromQuadVertexArray( m_quadVertices.p() ); + + ref prim = new PrimitiveSetIndexedUInt( PT_LINES ); prim->setIndices( indices.p() ); geo->addPrimitiveSet( prim.p() ); @@ -101,7 +103,7 @@ ref RivFemPartGeometryGenerator::createOutlineMeshDrawable( double cvf::OutlineEdgeExtractor ee( creaseAngle, *m_quadVertices ); - ref indices = lineIndicesFromQuadVertexArray( m_quadVertices.p() ); + ref indices = cvf::StructGridGeometryGenerator::lineIndicesFromQuadVertexArray( m_quadVertices.p() ); ee.addPrimitives( 4, *indices ); ref lineIndices = ee.lineIndices(); @@ -120,40 +122,6 @@ ref RivFemPartGeometryGenerator::createOutlineMeshDrawable( double return geo; } -//-------------------------------------------------------------------------------------------------- -/// -/// -/// -/// -//-------------------------------------------------------------------------------------------------- -ref RivFemPartGeometryGenerator::lineIndicesFromQuadVertexArray( const Vec3fArray* vertexArray ) -{ - CVF_ASSERT( vertexArray ); - - size_t numVertices = vertexArray->size(); - int numQuads = static_cast( numVertices / 4 ); - CVF_ASSERT( numVertices % 4 == 0 ); - - ref indices = new UIntArray; - indices->resize( numQuads * 8 ); - -#pragma omp parallel for - for ( int i = 0; i < numQuads; i++ ) - { - int idx = 8 * i; - indices->set( idx + 0, i * 4 + 0 ); - indices->set( idx + 1, i * 4 + 1 ); - indices->set( idx + 2, i * 4 + 1 ); - indices->set( idx + 3, i * 4 + 2 ); - indices->set( idx + 4, i * 4 + 2 ); - indices->set( idx + 5, i * 4 + 3 ); - indices->set( idx + 6, i * 4 + 3 ); - indices->set( idx + 7, i * 4 + 0 ); - } - - return indices; -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- @@ -336,8 +304,9 @@ cvf::ref ref geo = new DrawableGeo; geo->setVertexArray( quadVertices.p() ); - ref indices = lineIndicesFromQuadVertexArray( quadVertices.p() ); - ref prim = new PrimitiveSetIndexedUInt( PT_LINES ); + ref indices = cvf::StructGridGeometryGenerator::lineIndicesFromQuadVertexArray( quadVertices.p() ); + + ref prim = new PrimitiveSetIndexedUInt( PT_LINES ); prim->setIndices( indices.p() ); geo->addPrimitiveSet( prim.p() ); diff --git a/ApplicationLibCode/GeoMech/GeoMechVisualization/RivFemPartGeometryGenerator.h b/ApplicationLibCode/GeoMech/GeoMechVisualization/RivFemPartGeometryGenerator.h index 36b1539496..053f71b66b 100644 --- a/ApplicationLibCode/GeoMech/GeoMechVisualization/RivFemPartGeometryGenerator.h +++ b/ApplicationLibCode/GeoMech/GeoMechVisualization/RivFemPartGeometryGenerator.h @@ -96,8 +96,7 @@ public: const cvf::Vec3d& displayModelOffset ); private: - static cvf::ref lineIndicesFromQuadVertexArray( const cvf::Vec3fArray* vertexArray ); - void computeArrays(); + void computeArrays(); private: // Input diff --git a/ApplicationLibCode/ModelVisualization/RivBoxGeometryGenerator.cpp b/ApplicationLibCode/ModelVisualization/RivBoxGeometryGenerator.cpp index bbb9f3028e..d9b784bb68 100644 --- a/ApplicationLibCode/ModelVisualization/RivBoxGeometryGenerator.cpp +++ b/ApplicationLibCode/ModelVisualization/RivBoxGeometryGenerator.cpp @@ -56,7 +56,7 @@ cvf::ref RivBoxGeometryGenerator::createBoxFromVertices( const std::v geo->setVertexArray( cvfVertices.p() ); - cvf::ref indices = lineIndicesFromQuadVertexArray( cvfVertices.p() ); + cvf::ref indices = cvf::StructGridGeometryGenerator::lineIndicesFromQuadVertexArray( cvfVertices.p() ); cvf::ref prim = new cvf::PrimitiveSetIndexedUInt( cvf::PT_LINES ); prim->setIndices( indices.p() ); @@ -75,33 +75,3 @@ cvf::ref RivBoxGeometryGenerator::createBoxFromVertices( const std::v return part; } - -cvf::ref RivBoxGeometryGenerator::lineIndicesFromQuadVertexArray( const cvf::Vec3fArray* vertexArray ) -{ - // TODO - see issue #7890 - - CVF_ASSERT( vertexArray ); - - size_t numVertices = vertexArray->size(); - int numQuads = static_cast( numVertices / 4 ); - CVF_ASSERT( numVertices % 4 == 0 ); - - cvf::ref indices = new cvf::UIntArray; - indices->resize( numQuads * 8 ); - -#pragma omp parallel for - for ( int i = 0; i < numQuads; i++ ) - { - int idx = 8 * i; - indices->set( idx + 0, i * 4 + 0 ); - indices->set( idx + 1, i * 4 + 1 ); - indices->set( idx + 2, i * 4 + 1 ); - indices->set( idx + 3, i * 4 + 2 ); - indices->set( idx + 4, i * 4 + 2 ); - indices->set( idx + 5, i * 4 + 3 ); - indices->set( idx + 6, i * 4 + 3 ); - indices->set( idx + 7, i * 4 + 0 ); - } - - return indices; -} diff --git a/ApplicationLibCode/ModelVisualization/RivBoxGeometryGenerator.h b/ApplicationLibCode/ModelVisualization/RivBoxGeometryGenerator.h index fb2aba26d0..58952c2c31 100644 --- a/ApplicationLibCode/ModelVisualization/RivBoxGeometryGenerator.h +++ b/ApplicationLibCode/ModelVisualization/RivBoxGeometryGenerator.h @@ -36,8 +36,6 @@ class RivBoxGeometryGenerator public: static cvf::ref createBoxFromVertices( const std::vector& vertices, const cvf::Color3f color ); - static cvf::ref lineIndicesFromQuadVertexArray( const cvf::Vec3fArray* vertexArray ); - private: RivBoxGeometryGenerator(){}; }; diff --git a/ApplicationLibCode/ModelVisualization/RivFaultGeometryGenerator.cpp b/ApplicationLibCode/ModelVisualization/RivFaultGeometryGenerator.cpp index 55da4bf588..2e76b81f5a 100644 --- a/ApplicationLibCode/ModelVisualization/RivFaultGeometryGenerator.cpp +++ b/ApplicationLibCode/ModelVisualization/RivFaultGeometryGenerator.cpp @@ -79,8 +79,9 @@ cvf::ref RivFaultGeometryGenerator::createMeshDrawable() cvf::ref geo = new cvf::DrawableGeo; geo->setVertexArray( m_vertices.p() ); - cvf::ref indices = lineIndicesFromQuadVertexArray( m_vertices.p() ); - cvf::ref prim = new cvf::PrimitiveSetIndexedUInt( cvf::PT_LINES ); + cvf::ref indices = cvf::StructGridGeometryGenerator::lineIndicesFromQuadVertexArray( m_vertices.p() ); + + cvf::ref prim = new cvf::PrimitiveSetIndexedUInt( cvf::PT_LINES ); prim->setIndices( indices.p() ); geo->addPrimitiveSet( prim.p() ); @@ -96,7 +97,7 @@ cvf::ref RivFaultGeometryGenerator::createOutlineMeshDrawable( cvf::OutlineEdgeExtractor ee( creaseAngle, *m_vertices ); - cvf::ref indices = lineIndicesFromQuadVertexArray( m_vertices.p() ); + cvf::ref indices = cvf::StructGridGeometryGenerator::lineIndicesFromQuadVertexArray( m_vertices.p() ); ee.addPrimitives( 4, *indices ); cvf::ref lineIndices = ee.lineIndices(); @@ -115,37 +116,6 @@ cvf::ref RivFaultGeometryGenerator::createOutlineMeshDrawable( return geo; } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -cvf::ref RivFaultGeometryGenerator::lineIndicesFromQuadVertexArray( const cvf::Vec3fArray* vertexArray ) -{ - CVF_ASSERT( vertexArray ); - - size_t numVertices = vertexArray->size(); - int numQuads = static_cast( numVertices / 4 ); - CVF_ASSERT( numVertices % 4 == 0 ); - - cvf::ref indices = new cvf::UIntArray; - indices->resize( numQuads * 8 ); - -#pragma omp parallel for - for ( int i = 0; i < numQuads; i++ ) - { - int idx = 8 * i; - indices->set( idx + 0, i * 4 + 0 ); - indices->set( idx + 1, i * 4 + 1 ); - indices->set( idx + 2, i * 4 + 1 ); - indices->set( idx + 3, i * 4 + 2 ); - indices->set( idx + 4, i * 4 + 2 ); - indices->set( idx + 5, i * 4 + 3 ); - indices->set( idx + 6, i * 4 + 3 ); - indices->set( idx + 7, i * 4 + 0 ); - } - - return indices; -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ModelVisualization/RivFaultGeometryGenerator.h b/ApplicationLibCode/ModelVisualization/RivFaultGeometryGenerator.h index b027e1d16a..cdf24c0688 100644 --- a/ApplicationLibCode/ModelVisualization/RivFaultGeometryGenerator.h +++ b/ApplicationLibCode/ModelVisualization/RivFaultGeometryGenerator.h @@ -57,8 +57,6 @@ public: cvf::ref createMeshDrawable(); cvf::ref createOutlineMeshDrawable( double creaseAngle ); - static cvf::ref lineIndicesFromQuadVertexArray( const cvf::Vec3fArray* vertexArray ); - private: void computeArrays(); diff --git a/ApplicationLibCode/ModelVisualization/RivWellFracturePartMgr.cpp b/ApplicationLibCode/ModelVisualization/RivWellFracturePartMgr.cpp index c07e9ba601..bbc73d17ee 100644 --- a/ApplicationLibCode/ModelVisualization/RivWellFracturePartMgr.cpp +++ b/ApplicationLibCode/ModelVisualization/RivWellFracturePartMgr.cpp @@ -60,6 +60,7 @@ #include "cvfPrimitiveSetIndexedUInt.h" #include "cvfRenderStateDepth.h" #include "cvfScalarMapperContinuousLinear.h" +#include "cvfStructGridGeometryGenerator.h" #include "cvfTransform.h" #include @@ -1077,7 +1078,8 @@ cvf::ref cvf::ref stimPlanMeshGeo = new cvf::DrawableGeo; stimPlanMeshGeo->setVertexArray( stimPlanMeshVertexList ); - cvf::ref indices = RivFaultGeometryGenerator::lineIndicesFromQuadVertexArray( stimPlanMeshVertexList ); + cvf::ref indices = + cvf::StructGridGeometryGenerator::lineIndicesFromQuadVertexArray( stimPlanMeshVertexList ); cvf::ref prim = new cvf::PrimitiveSetIndexedUInt( cvf::PT_LINES ); prim->setIndices( indices.p() ); diff --git a/Fwk/AppFwk/CommonCode/cvfStructGridGeometryGenerator.cpp b/Fwk/AppFwk/CommonCode/cvfStructGridGeometryGenerator.cpp index 1aa7c68ef4..062de40632 100644 --- a/Fwk/AppFwk/CommonCode/cvfStructGridGeometryGenerator.cpp +++ b/Fwk/AppFwk/CommonCode/cvfStructGridGeometryGenerator.cpp @@ -324,12 +324,12 @@ ref StructGridGeometryGenerator::lineIndicesFromQuadVertexArray( cons CVF_ASSERT( numVertices % 4 == 0 ); ref indices = new UIntArray; - indices->resize( numQuads * 8 ); + indices->resize( (size_t)numQuads * 8 ); #pragma omp parallel for for ( int i = 0; i < numQuads; i++ ) { - int idx = 8 * i; + size_t idx = (size_t)i * 8; indices->set( idx + 0, i * 4 + 0 ); indices->set( idx + 1, i * 4 + 1 ); indices->set( idx + 2, i * 4 + 1 ); diff --git a/Fwk/AppFwk/CommonCode/cvfStructGridGeometryGenerator.h b/Fwk/AppFwk/CommonCode/cvfStructGridGeometryGenerator.h index 6dcb3e22c6..b5cb0ccc78 100644 --- a/Fwk/AppFwk/CommonCode/cvfStructGridGeometryGenerator.h +++ b/Fwk/AppFwk/CommonCode/cvfStructGridGeometryGenerator.h @@ -200,10 +200,10 @@ public: static ref createMeshDrawableFromSingleCell( const StructGridInterface* grid, size_t cellIndex, const cvf::Vec3d& displayModelOffset ); + static ref lineIndicesFromQuadVertexArray( const Vec3fArray* vertexArray ); private: - static ref lineIndicesFromQuadVertexArray( const Vec3fArray* vertexArray ); - bool isCellFaceVisible( size_t i, size_t j, size_t k, StructGridInterface::FaceType face ) const; + bool isCellFaceVisible( size_t i, size_t j, size_t k, StructGridInterface::FaceType face ) const; void computeArrays(); diff --git a/Fwk/AppFwk/cafVizExtensions/cafBoxManipulatorGeometryGenerator.cpp b/Fwk/AppFwk/cafVizExtensions/cafBoxManipulatorGeometryGenerator.cpp index c0734c9b21..329afc22de 100644 --- a/Fwk/AppFwk/cafVizExtensions/cafBoxManipulatorGeometryGenerator.cpp +++ b/Fwk/AppFwk/cafVizExtensions/cafBoxManipulatorGeometryGenerator.cpp @@ -5,6 +5,7 @@ #include "cvfDrawableGeo.h" #include "cvfGeometryBuilderFaceList.h" #include "cvfPrimitiveSetIndexedUInt.h" +#include "cvfStructGridGeometryGenerator.h" using namespace cvf; @@ -59,8 +60,9 @@ cvf::ref BoxManipulatorGeometryGenerator::createBoundingBoxMes cvf::ref geo = new cvf::DrawableGeo; geo->setVertexArray( m_vertices.p() ); - cvf::ref indices = lineIndicesFromQuadVertexArray( m_vertices.p() ); - cvf::ref prim = new cvf::PrimitiveSetIndexedUInt( cvf::PT_LINES ); + cvf::ref indices = cvf::StructGridGeometryGenerator::lineIndicesFromQuadVertexArray( m_vertices.p() ); + + cvf::ref prim = new cvf::PrimitiveSetIndexedUInt( cvf::PT_LINES ); prim->setIndices( indices.p() ); geo->addPrimitiveSet( prim.p() ); @@ -88,35 +90,4 @@ void BoxManipulatorGeometryGenerator::calculateArrays() // TODO: Rotate generated vertices } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -cvf::ref BoxManipulatorGeometryGenerator::lineIndicesFromQuadVertexArray( const cvf::Vec3fArray* vertexArray ) -{ - CVF_ASSERT( vertexArray ); - - size_t numVertices = vertexArray->size(); - int numQuads = static_cast( numVertices / 4 ); - CVF_ASSERT( numVertices % 4 == 0 ); - - cvf::ref indices = new cvf::UIntArray; - indices->resize( numQuads * 8 ); - -#pragma omp parallel for - for ( int i = 0; i < numQuads; i++ ) - { - int idx = 8 * i; - indices->set( idx + 0, i * 4 + 0 ); - indices->set( idx + 1, i * 4 + 1 ); - indices->set( idx + 2, i * 4 + 1 ); - indices->set( idx + 3, i * 4 + 2 ); - indices->set( idx + 4, i * 4 + 2 ); - indices->set( idx + 5, i * 4 + 3 ); - indices->set( idx + 6, i * 4 + 3 ); - indices->set( idx + 7, i * 4 + 0 ); - } - - return indices; -} - } // namespace caf diff --git a/Fwk/AppFwk/cafVizExtensions/cafBoxManipulatorGeometryGenerator.h b/Fwk/AppFwk/cafVizExtensions/cafBoxManipulatorGeometryGenerator.h index ae1f0f5a66..53bd363ef0 100644 --- a/Fwk/AppFwk/cafVizExtensions/cafBoxManipulatorGeometryGenerator.h +++ b/Fwk/AppFwk/cafVizExtensions/cafBoxManipulatorGeometryGenerator.h @@ -32,8 +32,6 @@ public: private: void calculateArrays(); - static cvf::ref lineIndicesFromQuadVertexArray( const cvf::Vec3fArray* vertexArray ); - private: cvf::Vec3d m_origin; cvf::Vec3d m_size;