Skip to content
Snippets Groups Projects
Select Git revision
  • master default protected
  • ovm-v3-test
  • fixFaceColors
  • ovm-v3
4 results

PluginFunctionsHexahedralMesh.cc

Blame
  • PluginFunctionsHexahedralMesh.cc 6.58 KiB
    /*===========================================================================*\
    *                                                                            *
     *                              OpenFlipper                                   *
     *           Copyright (c) 2001-2015, RWTH-Aachen University                 *
     *           Department of Computer Graphics and Multimedia                  *
     *                          All rights reserved.                             *
     *                            www.openflipper.org                            *
     *                                                                           *
     *---------------------------------------------------------------------------*
     * This file is part of OpenFlipper.                                         *
     *---------------------------------------------------------------------------*
     *                                                                           *
     * Redistribution and use in source and binary forms, with or without        *
     * modification, are permitted provided that the following conditions        *
     * are met:                                                                  *
     *                                                                           *
     * 1. Redistributions of source code must retain the above copyright notice, *
     *    this list of conditions and the following disclaimer.                  *
     *                                                                           *
     * 2. Redistributions in binary form must reproduce the above copyright      *
     *    notice, this list of conditions and the following disclaimer in the    *
     *    documentation and/or other materials provided with the distribution.   *
     *                                                                           *
     * 3. Neither the name of the copyright holder nor the names of its          *
     *    contributors may be used to endorse or promote products derived from   *
     *    this software without specific prior written permission.               *
     *                                                                           *
     * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS       *
     * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED *
     * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A           *
     * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER *
     * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,  *
     * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,       *
     * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR        *
     * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF    *
     * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING      *
     * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS        *
     * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.              *
     *                                                                            *
     \*===========================================================================*/
    
    /*===========================================================================*\
    *                                                                            *
     *   $Revision: 13489 $                                                       *
     *   $LastChangedBy: kremer $                                                 *
     *   $Date: 2012-01-25 12:30:09 +0100 (Wed, 25 Jan 2012) $                    *
     *                                                                            *
     \*===========================================================================*/
    
    #include <OpenFlipper/common/Types.hh>
    
    #include <ObjectTypes/HexahedralMesh/PluginFunctionsHexahedralMesh.hh>
    
    namespace PluginFunctions {
    
    // ===============================================================================
    // Get source meshes
    // ===============================================================================
    
    
    bool getSourceMeshes( std::vector<HexahedralMesh*>& _meshes  )
    {
      _meshes.clear();
    
      for ( ObjectIterator o_it(PluginFunctions::SOURCE_OBJECTS,DATA_HEXAHEDRAL_MESH) ;
        o_it != PluginFunctions::objectsEnd(); ++o_it) {
        _meshes.push_back ( PluginFunctions::hexahedralMesh( *o_it ) );
        if( _meshes.back() == NULL)
          std::cerr << "ERROR: HexahedralMesh getSourceMeshes fatal error\n";
      }
    
      return ( !_meshes.empty() );
    }
    
    
    // ===============================================================================
    // Get target meshes
    // ===============================================================================
    
    
    bool getTargetMeshes( std::vector<HexahedralMesh*>& _meshes  )
    {
      _meshes.clear();
    
      for ( ObjectIterator o_it(PluginFunctions::TARGET_OBJECTS,DATA_HEXAHEDRAL_MESH ) ;
        o_it != PluginFunctions::objectsEnd(); ++o_it) {
        _meshes.push_back ( PluginFunctions::hexahedralMesh( *o_it ) );
        if( _meshes.back() == NULL)
          std::cerr << "ERROR: HexahedralMesh getTargetMeshes fatal error\n";
      }
    
      return ( !_meshes.empty() );
    }
    
    
    // ===============================================================================
    // Get objects
    // ===============================================================================
    
    bool getObject( int _identifier, HexahedralMeshObject*& _object ) {
    
      if ( _identifier == BaseObject::NOOBJECT ) {
        _object = 0;
        return false;
      }
    
      // Get object by using the map accelerated plugin function
      BaseObjectData* object = 0;
      PluginFunctions::getObject(_identifier,object);
    
      _object = object ? hexahedralMeshObject(object) : nullptr;
      return ( _object != 0 );
    }
    
    
    // ===============================================================================
    // Getting data from objects and casting between them
    // ===============================================================================
    
    HexahedralMesh* hexahedralMesh( BaseObjectData* _object ) {
    
      if ( _object->dataType(DATA_HEXAHEDRAL_MESH) ) {
        HexahedralMeshObject* object = static_cast< HexahedralMeshObject* >(_object);
        return object->mesh();
      } else
        return 0;
    }
    
    HexahedralMesh* hexahedralMesh( int _identifier ) {
      HexahedralMeshObject* object = hexahedralMeshObject(_identifier);
    
       if ( object == 0)
         return 0;
       else
         return object->mesh();
    }
    
    
    HexahedralMeshObject* hexahedralMeshObject( BaseObjectData* _object ) {
      if ( ! _object->dataType(DATA_HEXAHEDRAL_MESH) )
        return 0;
      return static_cast< HexahedralMeshObject* >( _object );
    }
    
    
    HexahedralMeshObject* hexahedralMeshObject( int _identifier )
    {
      HexahedralMeshObject* pol_obj;
      if(getObject(_identifier, pol_obj))
        return pol_obj;
      else
        return 0;
    }
    
    
    }