diff --git a/Apps/Tests/movefrom.cpp b/Apps/Tests/movefrom.cpp new file mode 100644 index 0000000000000000000000000000000000000000..7b4582e1ad3de84dedf1c57e5f86d136cf258479 --- /dev/null +++ b/Apps/Tests/movefrom.cpp @@ -0,0 +1,101 @@ +/******************************************************************************* +* CGoGN: Combinatorial and Geometric modeling with Generic N-dimensional Maps * +* version 0.1 * +* Copyright (C) 2009-2012, IGG Team, LSIIT, University of Strasbourg * +* * +* This library is free software; you can redistribute it and/or modify it * +* under the terms of the GNU Lesser General Public License as published by the * +* Free Software Foundation; either version 2.1 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 Lesser General Public License * +* for more details. * +* * +* You should have received a copy of the GNU Lesser General Public License * +* along with this library; if not, write to the Free Software Foundation, * +* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * +* * +* Web site: http://cgogn.unistra.fr/ * +* Contact information: cgogn@unistra.fr * +* * +*******************************************************************************/ + + +#include "Topology/generic/parameters.h" +#include "Topology/map/embeddedMap2.h" +#include "Topology/map/embeddedMap3.h" +#include "Algo/Tiling/Surface/square.h" +#include "Algo/Geometry/volume.h" + +using namespace CGoGN ; + +/** + * Struct that contains some informations about the types of the manipulated objects + * Mainly here to be used by the algorithms that are parameterized by it + */ +struct PFP2: public PFP_STANDARD +{ + // definition of the type of the map + typedef EmbeddedMap2 MAP; +}; + +struct PFP3: public PFP_STANDARD +{ + // definition of the type of the map + typedef EmbeddedMap3 MAP; +}; + + +typedef PFP2::MAP MAP2; +typedef PFP2::VEC3 VEC3; +typedef PFP3::MAP MAP3; + +int main() +{ + // declare a map to handle the mesh + MAP2 myMap; + + // add position attribute on vertices and get handler on it + VertexAttribute position = myMap.addAttribute("position"); + Algo::Surface::Tilings::Square::Cube cube(myMap, 2, 2, 2); + cube.embedIntoCube(position, 10.0f, 10.0f, 10.0f); + + FaceAttribute color = myMap.addAttribute("color"); + + foreach_cell(myMap, [&](Face f) + { + color[f] = (position[f.dart])*0.1f; + }); + + CGoGNout.toStd(false); + CGoGNout.toFile("mf_map2.csv"); + myMap.dumpCSV(); + std::cout << "MAP2 dumped in mf_map2.csv"<< std::endl; + + MAP3 myMap2; + VertexAttribute position2 = myMap2.addAttribute("position"); + + myMap2.moveFrom(myMap); + + // DartMarker and CellMarker must be updated after copy + if (!position2.isValid()) + { + std::cout << "Attribute handlers are invalid after load, copy or move, get it agins"<< std::endl; + // get it again (here attribute created in move) + position2 = myMap2.getAttribute("position"); + } + + CGoGNout.toFile("mf_map3.csv"); + myMap2.dumpCSV(); + std::cout << "MAP3 dumped in mf_map3.csv"<< std::endl; + + // some computation to show that map is ok + std::cout << " Volume Total =" << Algo::Geometry::totalVolume(myMap2, position2)<< std::endl; + + // save maps + myMap2.saveMapBin("mf_pipo.map"); + + return 0; +}