mirror of https://github.com/CGAL/cgal
Merge pull request #2594 from gdamiand/CMap-bugfixes-gdamiand
CMap bugfixes
This commit is contained in:
commit
0b0b1503ef
|
|
@ -713,18 +713,18 @@ namespace CGAL
|
||||||
typename CMap::Dart_handle d1, d2;
|
typename CMap::Dart_handle d1, d2;
|
||||||
typename CMap::Dart_handle dg1=amap.null_handle, dg2=amap.null_handle;
|
typename CMap::Dart_handle dg1=amap.null_handle, dg2=amap.null_handle;
|
||||||
|
|
||||||
typename CMap::size_type mark = amap.get_new_mark();
|
typename CMap::size_type amark = amap.get_new_mark();
|
||||||
|
|
||||||
// First we store and mark all the darts of the 1-cell to contract.
|
// First we store and mark all the darts of the 1-cell to contract.
|
||||||
std::deque<typename CMap::Dart_handle> to_erase;
|
std::deque<typename CMap::Dart_handle> to_erase;
|
||||||
for ( CGAL::CMap_dart_iterator_basic_of_cell<CMap,1> it(amap,adart,mark);
|
for ( CGAL::CMap_dart_iterator_basic_of_cell<CMap,1> it(amap,adart,amark);
|
||||||
it.cont(); ++it )
|
it.cont(); ++it )
|
||||||
{
|
{
|
||||||
to_erase.push_back(it);
|
to_erase.push_back(it);
|
||||||
if ( dg1==amap.null_handle && !amap.template is_free<0>(it) &&
|
if ( dg1==amap.null_handle && !amap.template is_free<0>(it) &&
|
||||||
!amap.template is_free<1>(it) )
|
!amap.template is_free<1>(it) )
|
||||||
{ dg1=amap.template beta<0>(it); dg2=amap.template beta<1>(it); }
|
{ dg1=amap.template beta<0>(it); dg2=amap.template beta<1>(it); }
|
||||||
amap.mark(it, mark);
|
amap.mark(it, amark);
|
||||||
++res;
|
++res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -757,7 +757,8 @@ namespace CGAL
|
||||||
if ( (*it)->beta(0)!=(*it)->beta(1) )*/
|
if ( (*it)->beta(0)!=(*it)->beta(1) )*/
|
||||||
if ( amap.are_attributes_automatically_managed() && update_attributes )
|
if ( amap.are_attributes_automatically_managed() && update_attributes )
|
||||||
{
|
{
|
||||||
modified_darts.push_back(amap.template beta<1>(*it));
|
if (!amap.is_marked(amap.template beta<1>(*it), amark))
|
||||||
|
{ modified_darts.push_back(amap.template beta<1>(*it)); }
|
||||||
}
|
}
|
||||||
amap.basic_link_beta_1(amap.template beta<0>(*it),
|
amap.basic_link_beta_1(amap.template beta<0>(*it),
|
||||||
amap.template beta<1>(*it));
|
amap.template beta<1>(*it));
|
||||||
|
|
@ -767,7 +768,8 @@ namespace CGAL
|
||||||
{
|
{
|
||||||
if ( amap.are_attributes_automatically_managed() && update_attributes )
|
if ( amap.are_attributes_automatically_managed() && update_attributes )
|
||||||
{
|
{
|
||||||
modified_darts2.push_back(amap.template beta<0>(*it));
|
if (!amap.is_marked(amap.template beta<0>(*it), amark))
|
||||||
|
{ modified_darts2.push_back(amap.template beta<0>(*it)); }
|
||||||
}
|
}
|
||||||
amap.template dart_unlink_beta<1>(amap.template beta<0>(*it));
|
amap.template dart_unlink_beta<1>(amap.template beta<0>(*it));
|
||||||
}
|
}
|
||||||
|
|
@ -778,7 +780,8 @@ namespace CGAL
|
||||||
{
|
{
|
||||||
if ( amap.are_attributes_automatically_managed() && update_attributes )
|
if ( amap.are_attributes_automatically_managed() && update_attributes )
|
||||||
{
|
{
|
||||||
modified_darts.push_back(amap.template beta<1>(*it));
|
if (!amap.is_marked(amap.template beta<1>(*it), amark))
|
||||||
|
{ modified_darts.push_back(amap.template beta<1>(*it)); }
|
||||||
}
|
}
|
||||||
amap.template dart_unlink_beta<0>(amap.template beta<1>(*it));
|
amap.template dart_unlink_beta<0>(amap.template beta<1>(*it));
|
||||||
}
|
}
|
||||||
|
|
@ -789,8 +792,8 @@ namespace CGAL
|
||||||
for ( it=to_erase.begin(); it!=to_erase.end(); ++it )
|
for ( it=to_erase.begin(); it!=to_erase.end(); ++it )
|
||||||
{ amap.erase_dart(*it); }
|
{ amap.erase_dart(*it); }
|
||||||
|
|
||||||
CGAL_assertion( amap.is_whole_map_unmarked(mark) );
|
CGAL_assertion( amap.is_whole_map_unmarked(amark) );
|
||||||
amap.free_mark(mark);
|
amap.free_mark(amark);
|
||||||
|
|
||||||
if ( amap.are_attributes_automatically_managed() && update_attributes )
|
if ( amap.are_attributes_automatically_managed() && update_attributes )
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,7 @@
|
||||||
|
|
||||||
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
|
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
|
||||||
#include <CGAL/Exact_predicates_exact_constructions_kernel.h>
|
#include <CGAL/Exact_predicates_exact_constructions_kernel.h>
|
||||||
|
#include <CGAL/Combinatorial_map_functors.h>
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <map>
|
#include <map>
|
||||||
|
|
@ -40,6 +41,8 @@
|
||||||
|
|
||||||
namespace CGAL {
|
namespace CGAL {
|
||||||
|
|
||||||
|
typedef Exact_predicates_inexact_constructions_kernel::Point_2 RPoint_2;
|
||||||
|
typedef Exact_predicates_exact_constructions_kernel::Point_2 EPoint_2;
|
||||||
typedef Exact_predicates_inexact_constructions_kernel::Point_3 RPoint_3;
|
typedef Exact_predicates_inexact_constructions_kernel::Point_3 RPoint_3;
|
||||||
typedef Exact_predicates_exact_constructions_kernel::Point_3 EPoint_3;
|
typedef Exact_predicates_exact_constructions_kernel::Point_3 EPoint_3;
|
||||||
|
|
||||||
|
|
@ -126,6 +129,20 @@ namespace CGAL {
|
||||||
const std::string& val)
|
const std::string& val)
|
||||||
{node.add("v",val);}
|
{node.add("v",val);}
|
||||||
inline
|
inline
|
||||||
|
void write_cmap_attribute_node(boost::property_tree::ptree & node,
|
||||||
|
const RPoint_2& val)
|
||||||
|
{
|
||||||
|
node.add("p.x",val.x());
|
||||||
|
node.add("p.y",val.y());
|
||||||
|
}
|
||||||
|
inline
|
||||||
|
void write_cmap_attribute_node(boost::property_tree::ptree & node,
|
||||||
|
const EPoint_2& val)
|
||||||
|
{
|
||||||
|
node.add("p.x",CGAL::to_double(val.x()));
|
||||||
|
node.add("p.y",CGAL::to_double(val.y()));
|
||||||
|
}
|
||||||
|
inline
|
||||||
void write_cmap_attribute_node(boost::property_tree::ptree & node,
|
void write_cmap_attribute_node(boost::property_tree::ptree & node,
|
||||||
const RPoint_3& val)
|
const RPoint_3& val)
|
||||||
{
|
{
|
||||||
|
|
@ -167,7 +184,7 @@ namespace CGAL {
|
||||||
boost::property_tree::ptree& ndim = ptree.add("dimension", "");
|
boost::property_tree::ptree& ndim = ptree.add("dimension", "");
|
||||||
ndim.put("<xmlattr>.index", i);
|
ndim.put("<xmlattr>.index", i);
|
||||||
ndim.add("type", typeid(typename CMap::template Attribute_type<i>::type::Info).name());
|
ndim.add("type", typeid(typename CMap::template Attribute_type<i>::type::Info).name());
|
||||||
ndim.add("type_point", typeid(RPoint_3).name());
|
ndim.add("type_point", typeid(typename CMap::Point).name());
|
||||||
|
|
||||||
// for every attribute of the dimension
|
// for every attribute of the dimension
|
||||||
for (; it_attrib!=itend_attrib; ++it_attrib)
|
for (; it_attrib!=itend_attrib; ++it_attrib)
|
||||||
|
|
@ -202,7 +219,7 @@ namespace CGAL {
|
||||||
boost::property_tree::ptree& ndim = ptree.add("dimension", "");
|
boost::property_tree::ptree& ndim = ptree.add("dimension", "");
|
||||||
ndim.put("<xmlattr>.index", i);
|
ndim.put("<xmlattr>.index", i);
|
||||||
ndim.add("type", "void");
|
ndim.add("type", "void");
|
||||||
ndim.add("type_point", typeid(RPoint_3).name());
|
ndim.add("type_point", typeid(typename CMap::Point).name());
|
||||||
|
|
||||||
// for every attribute of the dimension
|
// for every attribute of the dimension
|
||||||
for (; it_attrib!=itend_attrib; ++it_attrib)
|
for (; it_attrib!=itend_attrib; ++it_attrib)
|
||||||
|
|
@ -355,13 +372,26 @@ namespace CGAL {
|
||||||
return pt;
|
return pt;
|
||||||
}
|
}
|
||||||
|
|
||||||
template < class CMap >
|
struct EmptyFunctor
|
||||||
bool save_combinatorial_map(const CMap& amap, std::ostream & output)
|
{
|
||||||
|
void operator() (boost::property_tree::ptree & /*node*/) const
|
||||||
|
{
|
||||||
|
// node.add("myinfo.myvalie",15);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
template < class CMap, class Functor >
|
||||||
|
bool save_combinatorial_map(const CMap& amap, std::ostream & output,
|
||||||
|
const Functor& f)
|
||||||
{
|
{
|
||||||
using boost::property_tree::ptree;
|
using boost::property_tree::ptree;
|
||||||
ptree tree;
|
ptree tree;
|
||||||
tree.put("data", "");
|
tree.put("data", "");
|
||||||
|
|
||||||
|
/** First we save general information of the map (by default nothing,
|
||||||
|
the fuction can be specialized by users). */
|
||||||
|
f(tree);
|
||||||
|
|
||||||
// map dart => number
|
// map dart => number
|
||||||
std::map<typename CMap::Dart_const_handle, typename CMap::size_type> myDarts;
|
std::map<typename CMap::Dart_const_handle, typename CMap::size_type> myDarts;
|
||||||
|
|
||||||
|
|
@ -379,12 +409,27 @@ namespace CGAL {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
template < class CMap >
|
template < class CMap, class Functor >
|
||||||
bool save_combinatorial_map(const CMap& amap, const char* filename)
|
bool save_combinatorial_map(const CMap& amap, const char* filename,
|
||||||
|
const Functor& f)
|
||||||
{
|
{
|
||||||
std::ofstream output(filename);
|
std::ofstream output(filename);
|
||||||
if (!output) return false;
|
if (!output) return false;
|
||||||
return save_combinatorial_map(amap, output);
|
return save_combinatorial_map(amap, output, f);
|
||||||
|
}
|
||||||
|
|
||||||
|
template < class CMap >
|
||||||
|
bool save_combinatorial_map(const CMap& amap, std::ostream & output)
|
||||||
|
{
|
||||||
|
EmptyFunctor f;
|
||||||
|
return save_combinatorial_map(amap, output, f);
|
||||||
|
}
|
||||||
|
|
||||||
|
template < class CMap >
|
||||||
|
bool save_combinatorial_map(const CMap& amap, const char* filename)
|
||||||
|
{
|
||||||
|
EmptyFunctor f;
|
||||||
|
return save_combinatorial_map(amap, filename, f);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Here T is a Dart_handle so no need of &
|
// Here T is a Dart_handle so no need of &
|
||||||
|
|
@ -450,6 +495,14 @@ namespace CGAL {
|
||||||
{val=boost::lexical_cast< std::string >(v.second.data());}
|
{val=boost::lexical_cast< std::string >(v.second.data());}
|
||||||
template<> inline
|
template<> inline
|
||||||
void read_cmap_attribute_node
|
void read_cmap_attribute_node
|
||||||
|
(const boost::property_tree::ptree::value_type &v,RPoint_2 &val)
|
||||||
|
{
|
||||||
|
double x=v.second.get<double>("x");
|
||||||
|
double y=v.second.get<double>("y");
|
||||||
|
val = RPoint_2(x,y);
|
||||||
|
}
|
||||||
|
template<> inline
|
||||||
|
void read_cmap_attribute_node
|
||||||
(const boost::property_tree::ptree::value_type &v,RPoint_3 &val)
|
(const boost::property_tree::ptree::value_type &v,RPoint_3 &val)
|
||||||
{
|
{
|
||||||
double x=v.second.get<double>("x");
|
double x=v.second.get<double>("x");
|
||||||
|
|
@ -771,26 +824,47 @@ namespace CGAL {
|
||||||
<My_functor_cmap_load_attrib<CMap> >::run(pt, amap, myDarts);
|
<My_functor_cmap_load_attrib<CMap> >::run(pt, amap, myDarts);
|
||||||
}
|
}
|
||||||
|
|
||||||
template < class CMap >
|
template < class CMap, class Functor >
|
||||||
bool load_combinatorial_map(std::ifstream & input, CMap& amap)
|
bool load_combinatorial_map(std::ifstream & input, CMap& amap,
|
||||||
|
Functor& f)
|
||||||
{
|
{
|
||||||
using boost::property_tree::ptree;
|
using boost::property_tree::ptree;
|
||||||
ptree pt;
|
ptree pt;
|
||||||
read_xml(input, pt);
|
read_xml(input, pt);
|
||||||
|
|
||||||
|
/** First we load general information of the map (by default nothing,
|
||||||
|
the fuction can be specialized by users). */
|
||||||
|
f(pt);
|
||||||
|
|
||||||
|
// Then we load darts and attributes.
|
||||||
std::vector<typename CMap::Dart_handle> myDarts;
|
std::vector<typename CMap::Dart_handle> myDarts;
|
||||||
cmap_load_darts(pt,amap,myDarts);
|
cmap_load_darts(pt,amap,myDarts);
|
||||||
cmap_load_attributes(pt,amap,myDarts);
|
cmap_load_attributes(pt,amap,myDarts);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
template < class CMap >
|
template < class CMap, class Functor >
|
||||||
bool load_combinatorial_map(const char* filename, CMap& amap)
|
bool load_combinatorial_map(const char* filename, CMap& amap,
|
||||||
|
Functor& f)
|
||||||
{
|
{
|
||||||
std::ifstream input(filename);
|
std::ifstream input(filename);
|
||||||
if (!input) return false;
|
if (!input) return false;
|
||||||
return load_combinatorial_map(input, amap);
|
return load_combinatorial_map(input, amap, f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template < class CMap >
|
||||||
|
bool load_combinatorial_map(std::ifstream & input, CMap& amap)
|
||||||
|
{
|
||||||
|
EmptyFunctor f;
|
||||||
|
return load_combinatorial_map(input, amap, f);
|
||||||
|
}
|
||||||
|
|
||||||
|
template < class CMap >
|
||||||
|
bool load_combinatorial_map(const char* filename, CMap& amap)
|
||||||
|
{
|
||||||
|
EmptyFunctor f;
|
||||||
|
return load_combinatorial_map(filename, amap, f);
|
||||||
|
}
|
||||||
} // namespace CGAL
|
} // namespace CGAL
|
||||||
|
|
||||||
#endif // CGAL_COMBINATORIAL_MAP_SAVE_LOAD_H //
|
#endif // CGAL_COMBINATORIAL_MAP_SAVE_LOAD_H //
|
||||||
|
|
|
||||||
|
|
@ -347,7 +347,7 @@ namespace CGAL {
|
||||||
|
|
||||||
// Get the dart of the i-cell attribute associated with the given dart
|
// Get the dart of the i-cell attribute associated with the given dart
|
||||||
template<unsigned int i>
|
template<unsigned int i>
|
||||||
Dart_handle & dart(Dart_handle adart)
|
Dart_handle dart(Dart_handle adart)
|
||||||
{
|
{
|
||||||
CGAL_assertion( adart!=NULL );
|
CGAL_assertion( adart!=NULL );
|
||||||
CGAL_assertion( attribute<i>(adart)!=NULL );
|
CGAL_assertion( attribute<i>(adart)!=NULL );
|
||||||
|
|
|
||||||
|
|
@ -340,7 +340,7 @@ namespace CGAL {
|
||||||
|
|
||||||
// Get the dart of the i-cell attribute associated with the given dart
|
// Get the dart of the i-cell attribute associated with the given dart
|
||||||
template<unsigned int i>
|
template<unsigned int i>
|
||||||
Dart_handle & dart(Dart_handle adart)
|
Dart_handle dart(Dart_handle adart)
|
||||||
{
|
{
|
||||||
CGAL_assertion( adart!=NULL );
|
CGAL_assertion( adart!=NULL );
|
||||||
CGAL_assertion( attribute<i>(adart)!=NULL );
|
CGAL_assertion( attribute<i>(adart)!=NULL );
|
||||||
|
|
|
||||||
|
|
@ -154,7 +154,6 @@ void MainWindow::connectVolumeListHandlers()
|
||||||
void MainWindow::update_operations_entries(bool show)
|
void MainWindow::update_operations_entries(bool show)
|
||||||
{
|
{
|
||||||
actionImportOFF->setEnabled(show);
|
actionImportOFF->setEnabled(show);
|
||||||
actionAddOFF->setEnabled(show);
|
|
||||||
actionImport3DTDS->setEnabled(show);
|
actionImport3DTDS->setEnabled(show);
|
||||||
actionCompute_Voronoi_3D->setEnabled(show);
|
actionCompute_Voronoi_3D->setEnabled(show);
|
||||||
actionClear->setEnabled(show);
|
actionClear->setEnabled(show);
|
||||||
|
|
@ -247,7 +246,7 @@ void MainWindow::on_actionLoad_triggered ()
|
||||||
|
|
||||||
if (!fileName.isEmpty ())
|
if (!fileName.isEmpty ())
|
||||||
{
|
{
|
||||||
load(fileName, true);
|
load(fileName, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -260,7 +259,7 @@ void MainWindow::on_actionImportOFF_triggered ()
|
||||||
|
|
||||||
if (!fileName.isEmpty ())
|
if (!fileName.isEmpty ())
|
||||||
{
|
{
|
||||||
load_off (fileName, true);
|
load_off (fileName, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -273,7 +272,7 @@ void MainWindow::on_actionImportMoka_triggered()
|
||||||
|
|
||||||
if (!fileName.isEmpty ())
|
if (!fileName.isEmpty ())
|
||||||
{
|
{
|
||||||
load_moka(fileName, true);
|
load_moka(fileName, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -286,25 +285,12 @@ void MainWindow::on_actionImport3DTDS_triggered ()
|
||||||
|
|
||||||
if (!fileName.isEmpty ())
|
if (!fileName.isEmpty ())
|
||||||
{
|
{
|
||||||
load_3DTDS (fileName, true);
|
load_3DTDS (fileName, false);
|
||||||
statusBar ()->showMessage (QString ("Import 3DTDS file") + fileName,
|
statusBar ()->showMessage (QString ("Import 3DTDS file") + fileName,
|
||||||
DELAY_STATUSMSG);
|
DELAY_STATUSMSG);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::on_actionAddOFF_triggered()
|
|
||||||
{
|
|
||||||
QString fileName = QFileDialog::getOpenFileName (this,
|
|
||||||
tr ("Add OFF"),
|
|
||||||
"./off",
|
|
||||||
tr ("off files (*.off)"));
|
|
||||||
|
|
||||||
if (!fileName.isEmpty ())
|
|
||||||
{
|
|
||||||
load_off (fileName, false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void MainWindow::load_depend_on_extension(const QString & fileName, bool clear)
|
void MainWindow::load_depend_on_extension(const QString & fileName, bool clear)
|
||||||
{
|
{
|
||||||
QString ext = QFileInfo(fileName).suffix();
|
QString ext = QFileInfo(fileName).suffix();
|
||||||
|
|
@ -468,7 +454,7 @@ void MainWindow::load_moka(const QString & fileName, bool clear)
|
||||||
|
|
||||||
#ifdef CGAL_PROFILE_LCC_DEMO
|
#ifdef CGAL_PROFILE_LCC_DEMO
|
||||||
timer.stop();
|
timer.stop();
|
||||||
std::cout<<"Time to load off "<<qPrintable(fileName)<<": "
|
std::cout<<"Time to load moka "<<qPrintable(fileName)<<": "
|
||||||
<<timer.time()<<" seconds."<<std::endl;
|
<<timer.time()<<" seconds."<<std::endl;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
@ -479,10 +465,10 @@ void MainWindow::load_moka(const QString & fileName, bool clear)
|
||||||
QApplication::restoreOverrideCursor ();
|
QApplication::restoreOverrideCursor ();
|
||||||
|
|
||||||
if (clear)
|
if (clear)
|
||||||
statusBar ()->showMessage (QString ("Load off file") + fileName,
|
statusBar ()->showMessage (QString ("Load moka file") + fileName,
|
||||||
DELAY_STATUSMSG);
|
DELAY_STATUSMSG);
|
||||||
else
|
else
|
||||||
statusBar ()->showMessage (QString ("Add off file") + fileName,
|
statusBar ()->showMessage (QString ("Add moka file") + fileName,
|
||||||
DELAY_STATUSMSG);
|
DELAY_STATUSMSG);
|
||||||
Q_EMIT (sceneChanged ());
|
Q_EMIT (sceneChanged ());
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -114,7 +114,6 @@ public Q_SLOTS:
|
||||||
void on_actionSave_triggered();
|
void on_actionSave_triggered();
|
||||||
void on_actionLoad_triggered();
|
void on_actionLoad_triggered();
|
||||||
void on_actionImportOFF_triggered();
|
void on_actionImportOFF_triggered();
|
||||||
void on_actionAddOFF_triggered();
|
|
||||||
void on_actionImport3DTDS_triggered();
|
void on_actionImport3DTDS_triggered();
|
||||||
void on_actionImportMoka_triggered();
|
void on_actionImportMoka_triggered();
|
||||||
void on_actionCompute_Voronoi_3D_triggered();
|
void on_actionCompute_Voronoi_3D_triggered();
|
||||||
|
|
@ -148,12 +147,12 @@ public Q_SLOTS:
|
||||||
void on_actionExtend_hidden_volumes_triggered();
|
void on_actionExtend_hidden_volumes_triggered();
|
||||||
|
|
||||||
// Other slots
|
// Other slots
|
||||||
void load_depend_on_extension(const QString& fileName, bool clear=true);
|
void load_depend_on_extension(const QString& fileName, bool clear=false);
|
||||||
void load(const QString& fileName, bool clear=true);
|
void load(const QString& fileName, bool clear=false);
|
||||||
void save(const QString& fileName);
|
void save(const QString& fileName);
|
||||||
void load_off(const QString& fileName, bool clear=true);
|
void load_off(const QString& fileName, bool clear=false);
|
||||||
void load_3DTDS(const QString& fileName, bool clear=true);
|
void load_3DTDS(const QString& fileName, bool clear=false);
|
||||||
void load_moka(const QString& fileName, bool clear=true);
|
void load_moka(const QString& fileName, bool clear=false);
|
||||||
|
|
||||||
void onSceneChanged();
|
void onSceneChanged();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,6 @@
|
||||||
<addaction name="actionSave"/>
|
<addaction name="actionSave"/>
|
||||||
<addaction name="separator"/>
|
<addaction name="separator"/>
|
||||||
<addaction name="actionImportOFF"/>
|
<addaction name="actionImportOFF"/>
|
||||||
<addaction name="actionAddOFF"/>
|
|
||||||
<addaction name="actionImportMoka"/>
|
<addaction name="actionImportMoka"/>
|
||||||
<addaction name="separator"/>
|
<addaction name="separator"/>
|
||||||
<addaction name="actionImport3DTDS"/>
|
<addaction name="actionImport3DTDS"/>
|
||||||
|
|
@ -107,11 +106,6 @@
|
||||||
<string>&Import OFF</string>
|
<string>&Import OFF</string>
|
||||||
</property>
|
</property>
|
||||||
</action>
|
</action>
|
||||||
<action name="actionAddOFF">
|
|
||||||
<property name="text">
|
|
||||||
<string>Add &OFF</string>
|
|
||||||
</property>
|
|
||||||
</action>
|
|
||||||
<action name="actionQuit">
|
<action name="actionQuit">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>&Quit</string>
|
<string>&Quit</string>
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
# This file must be included in your CMakeLists.txt to use cgal_map_viewer_qt.h.
|
# This file must be included in your CMakeLists.txt to use the basic viewer
|
||||||
# You need to link the libraries in your executable by using
|
# You need to link the libraries in your executable by using
|
||||||
# TARGET_LINK_LIBRARIES( myexec ${MAP_VIEWER_LIBRARIES})
|
# TARGET_LINK_LIBRARIES( myexec ${BASIC_VIEWER_LIBRARIES})
|
||||||
|
|
||||||
if ( NOT CGAL_FOUND OR NOT CGAL_Qt5_FOUND)
|
if ( NOT CGAL_FOUND OR NOT CGAL_Qt5_FOUND)
|
||||||
message(STATUS "NOTICE: Libraries for lcc_viewer not found "
|
message(STATUS "NOTICE: Libraries for basic viewer not found "
|
||||||
"(CGAL, Qt5, QGLViewer).")
|
"(CGAL, Qt5, QGLViewer).")
|
||||||
endif( NOT CGAL_FOUND OR NOT CGAL_Qt5_FOUND)
|
endif( NOT CGAL_FOUND OR NOT CGAL_Qt5_FOUND)
|
||||||
|
|
||||||
|
|
@ -20,14 +20,14 @@ add_definitions(-DQT_NO_KEYWORDS)
|
||||||
include_directories( ${QGLVIEWER_INCLUDE_DIR} )
|
include_directories( ${QGLVIEWER_INCLUDE_DIR} )
|
||||||
add_definitions(${QGLVIEWER_DEFINITIONS})
|
add_definitions(${QGLVIEWER_DEFINITIONS})
|
||||||
|
|
||||||
set (MAP_VIEWER_LIBRARIES ${QT_LIBRARIES} ${QGLVIEWER_LIBRARIES}
|
set (BASIC_VIEWER_LIBRARIES ${QT_LIBRARIES} ${QGLVIEWER_LIBRARIES}
|
||||||
${OPENGL_gl_LIBRARY}) # ${OPENGL_glu_LIBRARY}
|
${OPENGL_gl_LIBRARY}) # ${OPENGL_glu_LIBRARY}
|
||||||
|
|
||||||
set(MAP_VIEWER_MODULES Xml OpenGL)
|
set(BASIC_VIEWER_MODULES Xml OpenGL)
|
||||||
|
|
||||||
ADD_DEFINITIONS("-DCGAL_LCC_USE_VIEWER -DCGAL_LCC_USE_QT")
|
ADD_DEFINITIONS("-DCGAL_USE_BASIC_VIEWER")
|
||||||
message(STATUS "Libraries for lcc_viewer found. You need to link them "
|
message(STATUS "Libraries for lcc_viewer found. You need to link them "
|
||||||
"in your executable by using "
|
"in your executable by using "
|
||||||
"TARGET_LINK_LIBRARIES( myexec \${MAP_VIEWER_LIBRARIES})")
|
"TARGET_LINK_LIBRARIES( myexec \${BASIC_VIEWER_LIBRARIES})")
|
||||||
|
|
||||||
set(LCC_VIEWER true)
|
set(USE_BASIC_VIEWER true)
|
||||||
|
|
@ -13,7 +13,7 @@ endif()
|
||||||
# based on qt. Just uncomment the following two lines, plus the lines qt5_use_modules below
|
# based on qt. Just uncomment the following two lines, plus the lines qt5_use_modules below
|
||||||
|
|
||||||
# find_package(CGAL COMPONENTS Qt5)
|
# find_package(CGAL COMPONENTS Qt5)
|
||||||
# include("CMakeLCCViewerQt.inc")
|
# include("CMakeBasicViewerQt.inc")
|
||||||
|
|
||||||
# If you don't want to visualize, use the following line (otherwise comment it)
|
# If you don't want to visualize, use the following line (otherwise comment it)
|
||||||
find_package(CGAL QUIET)
|
find_package(CGAL QUIET)
|
||||||
|
|
@ -43,21 +43,27 @@ if ( CGAL_FOUND )
|
||||||
|
|
||||||
add_executable(voronoi_2 voronoi_2.cpp)
|
add_executable(voronoi_2 voronoi_2.cpp)
|
||||||
target_link_libraries(voronoi_2 ${CGAL_LIBRARIES} ${CGAL_3RD_PARTY_LIBRARIES}
|
target_link_libraries(voronoi_2 ${CGAL_LIBRARIES} ${CGAL_3RD_PARTY_LIBRARIES}
|
||||||
${MAP_VIEWER_LIBRARIES})
|
${BASIC_VIEWER_LIBRARIES})
|
||||||
# qt5_use_modules(voronoi_2 ${MAP_VIEWER_MODULES})
|
if (USE_BASIC_VIEWER)
|
||||||
|
qt5_use_modules(voronoi_2 ${BASIC_VIEWER_MODULES})
|
||||||
|
endif(USE_BASIC_VIEWER)
|
||||||
|
|
||||||
add_executable(voronoi_3 voronoi_3.cpp)
|
add_executable(voronoi_3 voronoi_3.cpp)
|
||||||
target_link_libraries(voronoi_3 ${CGAL_LIBRARIES} ${CGAL_3RD_PARTY_LIBRARIES}
|
target_link_libraries(voronoi_3 ${CGAL_LIBRARIES} ${CGAL_3RD_PARTY_LIBRARIES}
|
||||||
${MAP_VIEWER_LIBRARIES})
|
${BASIC_VIEWER_LIBRARIES})
|
||||||
# qt5_use_modules(voronoi_3 ${MAP_VIEWER_MODULES})
|
|
||||||
|
if (USE_BASIC_VIEWER)
|
||||||
|
qt5_use_modules(voronoi_3 ${BASIC_VIEWER_MODULES})
|
||||||
|
endif(USE_BASIC_VIEWER)
|
||||||
|
|
||||||
create_single_source_cgal_program( "gmap_linear_cell_complex_3.cpp" )
|
create_single_source_cgal_program( "gmap_linear_cell_complex_3.cpp" )
|
||||||
|
|
||||||
add_executable(linear_cell_complex_3_operations linear_cell_complex_3_operations.cpp)
|
add_executable(linear_cell_complex_3_operations linear_cell_complex_3_operations.cpp)
|
||||||
target_link_libraries(linear_cell_complex_3_operations ${CGAL_LIBRARIES} ${CGAL_3RD_PARTY_LIBRARIES}
|
target_link_libraries(linear_cell_complex_3_operations ${CGAL_LIBRARIES} ${CGAL_3RD_PARTY_LIBRARIES}
|
||||||
${MAP_VIEWER_LIBRARIES})
|
${BASIC_VIEWER_LIBRARIES})
|
||||||
# qt5_use_modules(linear_cell_complex_3_operations ${MAP_VIEWER_MODULES})
|
if (USE_BASIC_VIEWER)
|
||||||
|
qt5_use_modules(linear_cell_complex_3_operations ${BASIC_VIEWER_MODULES})
|
||||||
|
endif(USE_BASIC_VIEWER)
|
||||||
|
|
||||||
else()
|
else()
|
||||||
|
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -3,7 +3,7 @@
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
/* If you want to use a viewer, you can use qglviewer. */
|
/* If you want to use a viewer, you can use qglviewer. */
|
||||||
#ifdef CGAL_LCC_USE_QT
|
#ifdef CGAL_USE_BASIC_VIEWER
|
||||||
#include "linear_cell_complex_3_viewer_qt.h"
|
#include "linear_cell_complex_3_viewer_qt.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
@ -54,9 +54,9 @@ void run_test()
|
||||||
lcc.template sew<3>(lcc.template opposite<2>(lcc.next(dh1)),
|
lcc.template sew<3>(lcc.template opposite<2>(lcc.next(dh1)),
|
||||||
lcc.other_orientation(lcc.template opposite<2>(lcc.previous(dh3))));
|
lcc.other_orientation(lcc.template opposite<2>(lcc.previous(dh3))));
|
||||||
|
|
||||||
#ifdef CGAL_LCC_USE_VIEWER
|
#ifdef CGAL_USE_BASIC_VIEWER
|
||||||
display_lcc(lcc);
|
display_lcc(lcc);
|
||||||
#endif // CGAL_LCC_USE_VIEWER
|
#endif // CGAL_USE_BASIC_VIEWER
|
||||||
|
|
||||||
lcc.insert_cell_1_in_cell_2(lcc.next(dh1),
|
lcc.insert_cell_1_in_cell_2(lcc.next(dh1),
|
||||||
Alpha1<LCC>::run(lcc, lcc.previous(dh1)));
|
Alpha1<LCC>::run(lcc, lcc.previous(dh1)));
|
||||||
|
|
@ -75,9 +75,9 @@ void run_test()
|
||||||
lcc.display_characteristics(std::cout) << ", valid="
|
lcc.display_characteristics(std::cout) << ", valid="
|
||||||
<< lcc.is_valid() << std::endl;
|
<< lcc.is_valid() << std::endl;
|
||||||
|
|
||||||
#ifdef CGAL_LCC_USE_VIEWER
|
#ifdef CGAL_USE_BASIC_VIEWER
|
||||||
display_lcc(lcc);
|
display_lcc(lcc);
|
||||||
#endif // CGAL_LCC_USE_VIEWER
|
#endif // CGAL_USE_BASIC_VIEWER
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -7,7 +7,7 @@
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
|
||||||
/* If you want to use a viewer, you can use qglviewer. */
|
/* If you want to use a viewer, you can use qglviewer. */
|
||||||
#ifdef CGAL_LCC_USE_QT
|
#ifdef CGAL_USE_BASIC_VIEWER
|
||||||
#include "linear_cell_complex_3_viewer_qt.h"
|
#include "linear_cell_complex_3_viewer_qt.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
@ -57,9 +57,9 @@ void display_voronoi(LCC_2& alcc, Dart_handle adart)
|
||||||
<< alcc.is_valid()
|
<< alcc.is_valid()
|
||||||
<< std::endl;
|
<< std::endl;
|
||||||
|
|
||||||
#ifdef CGAL_LCC_USE_VIEWER
|
#ifdef CGAL_USE_BASIC_VIEWER
|
||||||
display_lcc(alcc);
|
display_lcc(alcc);
|
||||||
#endif // CGAL_LCC_USE_VIEWER
|
#endif // CGAL_USE_BASIC_VIEWER
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename LCC, typename TR>
|
template<typename LCC, typename TR>
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
|
||||||
/* If you want to use a viewer, you can use one qglviewer. */
|
/* If you want to use a viewer, you can use one qglviewer. */
|
||||||
#ifdef CGAL_LCC_USE_QT
|
#ifdef CGAL_USE_BASIC_VIEWER
|
||||||
#include "linear_cell_complex_3_viewer_qt.h"
|
#include "linear_cell_complex_3_viewer_qt.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
@ -60,9 +60,9 @@ void display_voronoi(LCC_3& alcc, Dart_handle adart)
|
||||||
<< alcc.is_valid()
|
<< alcc.is_valid()
|
||||||
<< std::endl;
|
<< std::endl;
|
||||||
|
|
||||||
#ifdef CGAL_LCC_USE_VIEWER
|
#ifdef CGAL_USE_BASIC_VIEWER
|
||||||
display_lcc(alcc);
|
display_lcc(alcc);
|
||||||
#endif // CGAL_LCC_USE_VIEWER
|
#endif // CGAL_USE_BASIC_VIEWER
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename LCC, typename TR>
|
template<typename LCC, typename TR>
|
||||||
|
|
|
||||||
|
|
@ -367,7 +367,7 @@ namespace CGAL {
|
||||||
|
|
||||||
// Get the dart of the i-cell attribute associated with the given dart
|
// Get the dart of the i-cell attribute associated with the given dart
|
||||||
template<unsigned int i>
|
template<unsigned int i>
|
||||||
Dart_handle & dart(Dart_handle adart)
|
Dart_handle dart(Dart_handle adart)
|
||||||
{
|
{
|
||||||
CGAL_assertion( adart!=NULL );
|
CGAL_assertion( adart!=NULL );
|
||||||
CGAL_assertion( attribute<i>(adart)!=NULL );
|
CGAL_assertion( attribute<i>(adart)!=NULL );
|
||||||
|
|
|
||||||
|
|
@ -359,7 +359,7 @@ namespace CGAL {
|
||||||
|
|
||||||
// Get the dart of the i-cell attribute associated with the given dart
|
// Get the dart of the i-cell attribute associated with the given dart
|
||||||
template<unsigned int i>
|
template<unsigned int i>
|
||||||
Dart_handle & dart(Dart_handle adart)
|
Dart_handle dart(Dart_handle adart)
|
||||||
{
|
{
|
||||||
CGAL_assertion( adart!=NULL );
|
CGAL_assertion( adart!=NULL );
|
||||||
CGAL_assertion( attribute<i>(adart)!=NULL );
|
CGAL_assertion( attribute<i>(adart)!=NULL );
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue