Commit cab852a8 authored by Jan Möbius's avatar Jan Möbius

Merge branch 'Updated_windows_build_doc' into 'master'

Updated windows build doc

See merge request !137
parents a323631a 5181c888
......@@ -51,48 +51,64 @@ directory.
\subsection cmake_bwin Building OpenFlipper under Windows
<ul>
<li> Get Visual Studio 2015 or higher (We recommend 2017) </li>
<li> Get and Install Qt ( >= 5.9) , Visual Studio Version matching your installation ) </li>
<li> Set the QTDIR Variable to your Qt Installation directory:<br />
<li> For Qt5, you need to add the value "%QTDIR%/bin" to the "Path" variable. Keep in mind: The "QTDIR" variable is the path which includes the "bin", "include", "lib", ... directories.
<br />
<b>Windows Vista/7/10:</b> <br />
Open the Control Panel<br />
Select System and Security -> System -> Advanced System settings<br />
Click on "Advanced" tab<br />
At the bottom click on "Environment Variables"<br />
In the bottom window,check if there is already a QTDIR entry and modify it or use "Add" to create it<br />
Set the path to your QT installation directory<br />
<br />
</li>
<li> Extract OpenFlipper source code. ( If you want to use svn you can get a free svn client from http://tortoisesvn.net/downloads ) </li>
<li>Get Visual Studio 2015 or higher (We recommend 2017) </li>
<li> Get cmake for windows from http://www.cmake.org/cmake/resources/software.html </li>
<li> Start the cmake gui and select the OpenFlipper toplevel directory as source directory </li>
\image html cmake-source.png
<li> Choose a build directory (e.g. a subdirectory called \c build-release in OpenFlipper's root dir)</li>
\image html cmake-builddir.png
<li> Click on configure </li>
\image html cmake-configuregenerate.png
<li>Choose a generator for Visual Studio (according to your Visual Studio version)....</li>
\image html cmake-generator.png
<li>
If the configuration fails because of libraries and/or headers which have not been found, an error message will be printed in the bottom window.
You can adjust the paths in cmake-gui manually in the large window. Note that some build variables are only visible in Advanced Mode.
You can change view modes of cmake-gui via the select box on the top. </li>
<li>Rerun configure until everything is configured correctly and no more red rows or errors are shown.</li>
<li> Click generate to create the visual studio project files </li>
<li> You can now find a Visual Studio solution file (OpenFlipper.sln) in the <b>build directory</b> directory you chose in cmake.</li>
<li> Now you can build OpenFlipper from within Visual Studio using the newly created project file by starting Build Solution. </li>
</ul>
<li>Get and Install Qt ( >= 5.9) , Visual Studio Version matching your installation ) </li>
<li>Download and install git (https://git-scm.com/downloads)</li>
<li>Start git gui</li>
<li>Choose "Clone Existing Repository"</li>
\image html 01_clone_1.png
<li>Enter the source location: "https://www.graphics.rwth-aachen.de:9000/OpenFlipper-Free/OpenFlipper-Free" and a target directory (We assume "C:\Development\OpenFlipper" as the target directory).</li>
\image html 02_clone_2.png
<li>Git Gui will now download the source code</li>
\image html 03_clone_3.png
<li>After download you can close the following window</li>
\image html 04_clone_finished.png
<li>Now start cmake-gui and enter the location of the source code ("C:\Development\OpenFlipper" in our case).</li>
\image html 05_cmake_gui_1.png
<li>Enter the target build directory ("C:\Development\Build" in our case).</li>
\image html 05_cmake_gui_2.png
<li>Click configure.</li> \image html 05_cmake_gui_3.png
<li>CMake now asks what generator we want to use.</li>
\image html 06_choose_generator_a.png
<li>We will use Visual Studio 2017 64-bit mode.</li>
\image html 06_choose_generator_b.png
<li>After selection, the window should look like this.</li>
\image html 06_choose_generator_c.png
<li>Afterwards, cmake will ask if we want to create the build directory, if it did not exist before. Choose yes here.</li>
\image html 06_create_folder.png
<li>Now cmake will configure the project. Depending on install locations, it might not find your Qt installation automatically. Then you will get the error shown in the image.</li>
\image html 07_cmake_error_b.png
<li>To fix this, search for QT5 in the search box. If nothing shows up, you have to enable the checkbox called "Advanced". You should find a variable called QT5_INSTALL_PATH. Click on the three dots on the right of the input box.</li>
\image html 08_set_qt5_install_path.png
<li>Navigate to your Qt installation directory. Choose the qt version folder matching your generator (In our case, Visual Studio 2017 64-bit and therefore msvc2017_64) and click "Select folder".</li>
\image html 09_set_qt5_install_path_2.png
<li>The path should now be set correctly.</li>
\image html 10_set_qt5_install_path_3.png
<li>Run configure again.</li>
\image html 11_configure_again.png
<li>After configuring, you should see "Configuring done" in the output. Now click on "Generate".</li>
\image html 11_configure_done.png
<li>If everything went fine, you should also have a "Generating done" in the log.</li>
\image html 12_generation_done.png
<li>Now you can open the generated Visual Studio project. Either by pressing the "Open Project" Button"</li>
\image html 13_open_project.png
<li>Or by navigating with the explorer to the build folder and opening the "OpenFlipper.sln" file.</li>
\image html 13_navigate_to_solution_file.png
<li>Make sure that OpenFlipper is the startup project.</li>
\image html 14_set_as_startup_project.png
<li>At the top, you can choose the build type for your project.</li>
\image html 15_choose_build_type.png
<li>Now you can build the solution. This will compile OpenFlipper and all plugins. </li>
\image html 16_build_solution.png
<li>If everything has been compiled, you can start OpenFlipper by clicking on the run button at the top. </li>
\image html 17_local_windows_debugger.png
</ul>
\note If you want to build OpenFlipper as release on windows, you don't have to set the CMAKE_BUILD_TYPE variable to "Release" before configuring generating the Visual Studio solution file. Instead, choose the build type "Release" in Visual Studio and build the solution. Console outputs are only available in Visual Studio, when the "Debug" configuration is selected, or the -c option is passed as command line option.
\note If you want to use the intel 16 compiler with VS2013 or newer you can do so by specifying the toolset for cmake and enabling c++11 for intel 16 (e.g. set CXXFLAGS="/Qstd=c++0x" and run cmake with the command line argument -T"Intel C++ Compiler 16.0")
Don't forget setting up the "OpenFlipper" target as startup project as shown in the image below to run the debugger with OpenFlipper right out of Visual Studio.
\image html windows_build_set_as_startup.png
\subsection cmake_bmacos Building OpenFlipper under MacOS X
<ul>
......
......@@ -4,12 +4,12 @@
- <b>OpenFlipper 4.0 ( 25/02/2019 )</b>
- <b>Breaking changes</b>
- Picking functions use size_t instead of unsigned int now (Required to get rid of a lot of warnings during compilation)
- Enabled AUTOMOC in cmake for QT ( If you get redefinition errors, guard the corresponding headers with a #pragma once ; If you get gl.h before glew.h errors, move your widgets not using OpenGL into a subdir and add that to the DIRS macro in your CMakeLists.txt)
- Enabled AUTOMOC in cmake for QT ( If you get redefinition errors, guard the corresponding headers with a pragma once ; If you get gl.h before glew.h errors, move your widgets not using OpenGL into a subdir and add that to the DIRS macro in your CMakeLists.txt)
- Enabled AUTOUIC in cmake for QT ( If you get trouble finding generated ui_*.hh headers, change your include to ui_*.h to get them generated correctly)
- Removed a lot of Scenegraph includes in BaseObjectData to reduce gl qt collisions and replaced them with forward declarations. (You have to include the scenegraph headers yourself now!)
- Removed a lot of unnecessary large QT includes from the Interfaces (Mostly QtWidgets). You have to add your own include statements in your plugins now.
- Removed WhatsThisGenerator include from BaseInterface. You have to include it in the plugins now if you use it.
- Removed the classical ObjectTypes CMake search. Please use the nex style ( Type-<Typename>/ObjectTypes/<Typename> + Type-<Typename>/Plugin-Type<TypeName> ) scheme
- Removed the classical ObjectTypes CMake search. Please use the new style ( Type-Typename/ObjectTypes/<Typename> + Type-Typename/Plugin-TypeTypeName ) scheme
- Removed GlutExaminer and GlutViewer from ACG library
- Removed glut from OpenFlipper
- Shipping with integrated glew to simplify build process
......
......@@ -13,7 +13,7 @@
* OpenGL Options:\n
* -profile < compat | core > : request Compatibility or %Core context ( Default = %Core )\n
* -glVersion <int.int> : request specified OpenGL version (Default = 3.2)\n
* -samples <int> : request MSAA with <int> samples (Default = 16)\n
* -samples <int> : request MSAA with given number of samples (Default = 16)\n
* -glStereo <true | false> : request creation of stereo buffers
* \note The OpenGL command line parameters override stored settings temporarily. To permanently store an OpenGL setting, use the options dialog.
*
......
......@@ -846,8 +846,10 @@ RECURSIVE = YES
# run.
EXCLUDE = @CMAKE_SOURCE_DIR@/OpenFlipper/Documentation/UserHelpSources \
@CMAKE_SOURCE_DIR@/libs_required/OpenMesh/src/OpenMesh/Core/Mesh/gen \
@CMAKE_SOURCE_DIR@/libs_required/OpenMesh/src/OpenMesh/Apps/Unsupported \
@CMAKE_SOURCE_DIR@/OpenFlipper/libs_required/OpenMesh/src/OpenMesh/Core/Mesh/gen \
@CMAKE_SOURCE_DIR@/OpenFlipper/libs_required/OpenMesh/src/OpenMesh/Apps/Unsupported \
@CMAKE_SOURCE_DIR@/OpenFlipper/libs_required/glew-cmake \
@CMAKE_SOURCE_DIR@/OpenFlipper/libs_required/pybind11 \
@CMAKE_SOURCE_DIR@/MacOS
# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
......@@ -886,9 +888,9 @@ EXCLUDE_SYMBOLS =
# command).
EXAMPLE_PATH = @CMAKE_SOURCE_DIR@/OpenFlipper/Documentation/DeveloperHelpSources/example/ \
@CMAKE_SOURCE_DIR@/libs_required/OpenMesh/Doc/Examples \
@CMAKE_SOURCE_DIR@/libs_required/OpenMesh/Doc/Tutorial \
@CMAKE_SOURCE_DIR@/libs_required/OpenVolumeMesh/documentation/examples
@CMAKE_SOURCE_DIR@/OpenFlipper/libs_required/OpenMesh/Doc/Examples \
@CMAKE_SOURCE_DIR@/OpenFlipper/libs_required/OpenMesh/Doc/Tutorial \
@CMAKE_SOURCE_DIR@/Type-OpenVolumeMesh/libs/OpenVolumeMesh/documentation/examples
# If the value of the EXAMPLE_PATH tag contains directories, you can use the
# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and
......@@ -910,9 +912,11 @@ EXAMPLE_RECURSIVE = NO
IMAGE_PATH = @CMAKE_SOURCE_DIR@/OpenFlipper/Documentation/DeveloperHelpSources/pics/ \
@CMAKE_SOURCE_DIR@/OpenFlipper/Documentation/DeveloperHelpSources/screenshots/ \
@CMAKE_SOURCE_DIR@/libs_required/OpenMesh/Doc/images/ \
@CMAKE_SOURCE_DIR@/libs_required/OpenVolumeMesh/documentation/images/ \
@CMAKE_SOURCE_DIR@/ObjectTypes/Skeleton/doc/pics/
@CMAKE_SOURCE_DIR@/OpenFlipper/Documentation/DeveloperHelpSources/building-screenshots/ \
@CMAKE_SOURCE_DIR@/OpenFlipper/libs_required/OpenMesh/Doc/images/ \
@CMAKE_SOURCE_DIR@/OpenFlipper/libs_required/ACG/Docu/ \
@CMAKE_SOURCE_DIR@/Type-OpenVolumeMesh/libs/OpenVolumeMesh/documentation/images/ \
@CMAKE_SOURCE_DIR@/Type-Skeleton/ObjectTypes/Skeleton/doc/pics/
# The INPUT_FILTER tag can be used to specify a program that doxygen should
# invoke to filter for each input file. Doxygen will invoke the filter program
......@@ -1995,8 +1999,8 @@ SEARCH_INCLUDES = YES
# This tag requires that the tag SEARCH_INCLUDES is set to YES.
INCLUDE_PATH = @CMAKE_SOURCE_DIR@ \
@CMAKE_SOURCE_DIR@/ACG \
@CMAKE_SOURCE_DIR@/libs_required/OpenMesh/src
@CMAKE_SOURCE_DIR@/OpenFlipper/libs_required/ACG \
@CMAKE_SOURCE_DIR@/OpenFlipper/libs_required/OpenMesh/src
# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
# patterns (like *.h and *.hpp) to filter out the header-files in the
......
......@@ -846,8 +846,10 @@ RECURSIVE = YES
# run.
EXCLUDE = @CMAKE_SOURCE_DIR@/OpenFlipper/Documentation/UserHelpSources \
@CMAKE_SOURCE_DIR@/libs_required/OpenMesh/src/OpenMesh/Core/Mesh/gen \
@CMAKE_SOURCE_DIR@/libs_required/OpenMesh/src/OpenMesh/Apps/Unsupported \
@CMAKE_SOURCE_DIR@/OpenFlipper/libs_required/OpenMesh/src/OpenMesh/Core/Mesh/gen \
@CMAKE_SOURCE_DIR@/OpenFlipper/libs_required/OpenMesh/src/OpenMesh/Apps/Unsupported \
@CMAKE_SOURCE_DIR@/OpenFlipper/libs_required/glew-cmake \
@CMAKE_SOURCE_DIR@/OpenFlipper/libs_required/pybind11 \
@CMAKE_SOURCE_DIR@/MacOS
# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
......@@ -886,9 +888,9 @@ EXCLUDE_SYMBOLS =
# command).
EXAMPLE_PATH = @CMAKE_SOURCE_DIR@/OpenFlipper/Documentation/DeveloperHelpSources/example/ \
@CMAKE_SOURCE_DIR@/libs_required/OpenMesh/Doc/Examples \
@CMAKE_SOURCE_DIR@/libs_required/OpenMesh/Doc/Tutorial \
@CMAKE_SOURCE_DIR@/libs_required/OpenVolumeMesh/documentation/examples
@CMAKE_SOURCE_DIR@/OpenFlipper/libs_required/OpenMesh/Doc/Examples \
@CMAKE_SOURCE_DIR@/OpenFlipper/libs_required/OpenMesh/Doc/Tutorial \
@CMAKE_SOURCE_DIR@/Type-OpenVolumeMesh/libs/OpenVolumeMesh/documentation/examples
# If the value of the EXAMPLE_PATH tag contains directories, you can use the
# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and
......@@ -910,9 +912,11 @@ EXAMPLE_RECURSIVE = NO
IMAGE_PATH = @CMAKE_SOURCE_DIR@/OpenFlipper/Documentation/DeveloperHelpSources/pics/ \
@CMAKE_SOURCE_DIR@/OpenFlipper/Documentation/DeveloperHelpSources/screenshots/ \
@CMAKE_SOURCE_DIR@/libs_required/OpenMesh/Doc/images/ \
@CMAKE_SOURCE_DIR@/libs_required/OpenVolumeMesh/documentation/images/ \
@CMAKE_SOURCE_DIR@/ObjectTypes/Skeleton/doc/pics/
@CMAKE_SOURCE_DIR@/OpenFlipper/Documentation/DeveloperHelpSources/building-screenshots/ \
@CMAKE_SOURCE_DIR@/OpenFlipper/libs_required/OpenMesh/Doc/images/ \
@CMAKE_SOURCE_DIR@/OpenFlipper/libs_required/ACG/Docu/ \
@CMAKE_SOURCE_DIR@/Type-OpenVolumeMesh/libs/OpenVolumeMesh/documentation/images/ \
@CMAKE_SOURCE_DIR@/Type-Skeleton/ObjectTypes/Skeleton/doc/pics/
# The INPUT_FILTER tag can be used to specify a program that doxygen should
# invoke to filter for each input file. Doxygen will invoke the filter program
......@@ -1995,8 +1999,8 @@ SEARCH_INCLUDES = YES
# This tag requires that the tag SEARCH_INCLUDES is set to YES.
INCLUDE_PATH = @CMAKE_SOURCE_DIR@ \
@CMAKE_SOURCE_DIR@/ACG \
@CMAKE_SOURCE_DIR@/libs_required/OpenMesh/src
@CMAKE_SOURCE_DIR@/OpenFlipper/libs_required/ACG \
@CMAKE_SOURCE_DIR@/OpenFlipper/libs_required/OpenMesh/src
# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
# patterns (like *.h and *.hpp) to filter out the header-files in the
......
......@@ -435,9 +435,12 @@ set (PREFOUND_PACKAGES "${LOADED_PACKAGES}" CACHE INTERNAL "List of packages tha
# ========================================================================
add_subdirectory (OpenFlipper/CoreApp)
set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT ${OPENFLIPPER_PRODUCT_STRING} )
GROUP_PROJECT(${OPENFLIPPER_PRODUCT_STRING} ${OPENFLIPPER_PRODUCT_STRING})
# ========================================================================
# Bundle generation
# ========================================================================
......
......@@ -73,6 +73,7 @@ namespace MeshNavigation {
/**
For Valence 6 Vertices Only!! iterates 3 Halfedges around from Vertex of _he. Returns the he on the other side
@param _mesh Mesh to work on
@param _he Outgoing halfedge of Vertex to iterate around
@return Halfedge on the opposite side
*/
......@@ -81,6 +82,17 @@ inline
typename MeshT::HalfedgeHandle
opposite_halfedge(MeshT& _mesh , typename MeshT::HalfedgeHandle _he);
/** \brief Find the closest boundary vertex to another vertex.
*
* This function will start at a single vertex and walk across the edges of the mesh to find a
* vertex on the boundary. The vertex at the boundary with the minimal number of edges to be traversed
* to reach the starting vertex is returned. If no vertex is found (i.e. no boundary), an invalid
* VertexHandle is returned.
*
* @param _mesh Mesh to work on
* @param _vh Start vertex handle
* @return Closest vertex at the boundary
*/
template < typename MeshT >
typename MeshT::VertexHandle
findClosestBoundary(MeshT* _mesh , typename MeshT::VertexHandle _vh);
......
......@@ -76,135 +76,167 @@ namespace MeshSelection {
* @{ */
//===========================================================================
/// Select given vertices of a mesh
/** \brief Select given vertices of a mesh
* @param _mesh Mesh to work on
* @param _vertices Vertex index to select
*/
template< typename MeshT >
inline
void selectVertices(MeshT* _mesh, const std::vector< int >& _vertices);
/// Unselect given vertices of a mesh
/** \brief Unselect given vertices of a mesh
* @param _mesh Mesh to work on
* @param _vertices Vertex index to unselect
*/
template< typename MeshT >
inline
void unselectVertices(MeshT* _mesh, const std::vector< int >& _vertices);
/// Select all vertices of a mesh
/** \brief Select all vertices of a mesh
* @param _mesh Mesh to work on
*/
template< typename MeshT >
inline
void selectAllVertices(MeshT* _mesh);
/// Set all vertices to unselected
/** \brief Set all vertices to unselected
* @param _mesh Mesh to work on
*/
template< typename MeshT >
inline
void clearVertexSelection(MeshT* _mesh);
/// invert vertex selection
/** \brief invert vertex selection
* @param _mesh Mesh to work on
*/
template< typename MeshT >
inline
void invertVertexSelection(MeshT* _mesh);
/** Select all vertices of the mesh which are boundary vertices
/** \brief Select all vertices of the mesh which are boundary vertices
*
* @param _mesh Mesh to work on
*/
template< typename MeshT >
inline
void selectBoundaryVertices(MeshT* _mesh);
/** shrink the vertex selection
/** \brief Shrink vertex selection
* @param _mesh Mesh to work on
*/
template< typename MeshT >
inline
void shrinkVertexSelection(MeshT* _mesh) ;
/** grow the vertex selection
/** \brief Grow vertex selection
* @param _mesh Mesh to work on
*/
template< typename MeshT >
inline
void growVertexSelection(MeshT* _mesh);
/** Get the current vertex selection
/** \brief Get the current vertex selection
*
* @param _mesh Mesh to work on
* @return vector of selected vertex indices
*/
template< typename MeshT >
inline
std::vector< int > getVertexSelection(MeshT* _mesh);
/** Get the current vertex selection
*
* @param _mesh Mesh to work on
* @param _invert if true : vector has been inverted to save mem
*/
template< typename MeshT >
inline
std::vector< int > getVertexSelection(MeshT* _mesh, bool& _invert);
/** Select all vertices belonging to the same boundary as _vh
/** \brief Select all vertices belonging to the same boundary as _vh
*
* This function gets one vertex that has to be on a boundary.
* Than the function will follow the boundary and mark all vertices
* at it as selected.
*
* @param _mesh Mesh to work on
* @param _vh handle of a boundary vertex
*/
template< typename MeshT >
inline
void selectBoundaryVertices(MeshT* _mesh, const typename MeshT::VertexHandle& _vh);
/**
* Select for each vertex in _vertices all incident edges
/** \brief Select for each vertex in _vertices all incident edges
*
* @param _mesh Mesh to work on
* @param _vertices List of vertices to be converted
*/
template< typename MeshT >
inline
void convertVertexToEdgeSelection(MeshT* _mesh, const std::vector< int >& _vertices);
/**
* For each selected vertex select all incident edges
/** \brief For each selected vertex select all incident edges
*
* @param _mesh Mesh to work on
*/
template< typename MeshT >
inline
void convertVertexToEdgeSelection(MeshT* _mesh);
/**
* Select for each vertex in _vertices all incident halfedges
/** \brief Select for each vertex in _vertices all incident halfedges
*
* @param _mesh Mesh to work on
* @param _vertices List of vertices to be converted
*/
template< typename MeshT >
inline
void convertVertexToHalfedgeSelection(MeshT* _mesh, const std::vector< int >& _vertices);
/**
* For each selected vertex select all incident halfedges
/** \brief For each selected vertex select all incident halfedges
*
* @param _mesh Mesh to work on
*/
template< typename MeshT >
inline
void convertVertexToHalfedgeSelection(MeshT* _mesh);
/**
* Select for each vertex in _vertices all adjacent faces
/** \brief Select for each vertex in _vertices all adjacent faces
*
* @param _mesh Mesh to work on
* @param _vertices List of vertices to be converted
*/
template< typename MeshT >
inline
void convertVertexToFaceSelection(MeshT* _mesh, const std::vector< int >& _vertices);
/**
* For each selected vertex select all adjacent faces
/** \brief For each selected vertex select all adjacent faces
*
* @param _mesh Mesh to work on
*/
template< typename MeshT >
inline
void convertVertexToFaceSelection(MeshT* _mesh);
/**
* Convert vertex selection to feature selection
/** \brief Convert vertex selection to feature selection
*
* @param _mesh Mesh to work on
*/
template< typename MeshT >
inline
void convertVertexSelectionToFeatureVertices(MeshT* _mesh);
/**
* Convert feature selection to vertex selection
/** \brief Convert feature selection to vertex selection
*
* @param _mesh Mesh to work on
*/
template< typename MeshT >
inline
void convertFeatureVerticesToVertexSelection(MeshT* _mesh);
/**
* Clear all features
/** \brief Clear all features
*
* @param _mesh Mesh to work on
*/
template< typename MeshT >
inline
......@@ -217,16 +249,22 @@ void clearFeatureVertices(MeshT* _mesh);
* @{ */
//===========================================================================
/** Set the area bit for all defined vertices
/** \brief Set the area bit for all defined vertices
*
* @param _mesh Mesh to work on
* @param _vertices The vertices belonging to the modeling area
* @param _type Bit to be changed ( Normally Modeling area is OpenMesh::Attributes::UNUSED << 1 )
* @param _state New state to be set
* */
template< typename MeshT >
inline
void setArea(MeshT* _mesh, const std::vector< int >& _vertices , unsigned int _type, bool _state);
/** Reset Modeling Status for vertices
/** \brief Reset Modeling Status for vertices
*
* @param _mesh Mesh to work on
* @param _type Bit to be changed ( Normally Modeling area is OpenMesh::Attributes::UNUSED << 1 )
* @param _state New state to be set
* */
template< typename MeshT >
inline
......@@ -239,6 +277,9 @@ inline
std::vector< int > getArea(MeshT* _mesh, unsigned int _type);
/** Get the current vertex selection
*
* @param _mesh Mesh to work on
* @param _type Bit to be changed ( Normally Modeling area is OpenMesh::Attributes::UNUSED << 1 )
* @param _invert if true : vector has been inverted to save mem
*/
template< typename MeshT >
......@@ -293,6 +334,7 @@ inline
std::vector< int > getEdgeSelection(MeshT* _mesh);
/** Get the current edge selection
* @param _mesh Mesh to work on
* @param _invert if true : vector has been inverted to save mem
*/
template< typename MeshT >
......@@ -301,6 +343,7 @@ std::vector< int > getEdgeSelection(MeshT* _mesh, bool& _invert);
/**
* Select for each edge in _edges all incident vertices
* @param _mesh Mesh to work on
* @param _edges List of edges to be converted
*/
template< typename MeshT >
......@@ -316,6 +359,7 @@ void convertEdgeToVertexSelection(MeshT* _mesh);
/**
* Select for each edge in _edges all adjacent faces
* @param _mesh Mesh to work on
* @param _edges List of edges to be converted
*/
template< typename MeshT >
......@@ -478,6 +522,8 @@ inline
std::vector< int > getFaceSelection(MeshT* _mesh);
/** Get the current face selection
*
* @param _mesh Mesh to work on
* @param _invert if true : vector has been inverted to save mem
*/
template< typename MeshT >
......@@ -486,6 +532,8 @@ std::vector< int > getFaceSelection(MeshT* _mesh, bool& _invert);
/**
* Select for each face in _faces all adjacent vertices
*
* @param _mesh Mesh to work on
* @param _faces List of faces to be converted
*/
template< typename MeshT >
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment