diff --git a/src/MeshTools/AbstractTool.h b/src/MeshTools/AbstractTool.h new file mode 100644 index 000000000..b2a650cd1 --- /dev/null +++ b/src/MeshTools/AbstractTool.h @@ -0,0 +1,54 @@ +#ifndef Magnum_MeshTools_AbstractTool_h +#define Magnum_MeshTools_AbstractTool_h +/* + Copyright © 2010, 2011, 2012 Vladimír Vondruš + + This file is part of Magnum. + + Magnum is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License version 3 + only, as published by the Free Software Foundation. + + Magnum 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 Lesser General Public License version 3 for more details. +*/ + +/** @file + * @brief Class Magnum::MeshTools::AbstractTool + */ + +#include "MeshBuilder.h" + +namespace Magnum { + +/** + * @brief %Mesh tools + * + * Tools for generating, optimizing and cleaning meshes. + */ +namespace MeshTools { + +/** + * @brief Base class for mesh tools + * + * Provides access to internals of MeshBuilder instance for subclasses. + */ +template class AbstractTool { + public: + /** + * @brief Constructor + * @param builder %Mesh builder to operate on + */ + inline AbstractTool(MeshBuilder& builder): builder(builder), vertices(builder._vertices), indices(builder._indices) {} + + protected: + MeshBuilder& builder; /**< @brief Builder instance */ + std::vector& vertices; /**< @brief Builder vertices */ + std::vector& indices; /**< @brief Builder indices */ +}; + +}} + +#endif diff --git a/src/MeshTools/CMakeLists.txt b/src/MeshTools/CMakeLists.txt new file mode 100644 index 000000000..e70e0d132 --- /dev/null +++ b/src/MeshTools/CMakeLists.txt @@ -0,0 +1,4 @@ +if(BUILD_TESTS) + enable_testing() + add_subdirectory(Test) +endif()