Création d'un compte pour un collaborateur extérieur au laboratoire depuis l'intranet ICube : https://intranet.icube.unistra.fr/fr/labs/member/profile

computeCurvatureDialog.cpp 3.17 KB
Newer Older
Pierre Kraemer's avatar
Pierre Kraemer committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#include "computeCurvatureDialog.h"

#include "differentialProperties.h"
#include "window.h"
#include "mapHandler.h"

namespace CGoGN
{

namespace SCHNApps
{

ComputeCurvatureDialog::ComputeCurvatureDialog(Window* w) : m_window(w)
{
	setupUi(this);
	connect(mapList, SIGNAL(itemSelectionChanged()), this, SLOT(cb_selectedMapChanged()));
}

void ComputeCurvatureDialog::init()
{
	mapList->clear();
	combo_positionAttribute->clear();
	combo_normalAttribute->clear();
	combo_KmaxAttribute->clear();
	combo_kmaxAttribute->clear();
	combo_KminAttribute->clear();
	combo_kminAttribute->clear();
	combo_KnormalAttribute->clear();
	KmaxAttributeName->setText("Kmax");
	kmaxAttributeName->setText("kmax");
	KminAttributeName->setText("Kmin");
	kminAttributeName->setText("kmin");
	KnormalAttributeName->setText("Knormal");
	const QList<MapHandlerGen*>& maps = m_window->getMapsList();
	foreach(MapHandlerGen* map, maps)
		mapList->addItem(map->getName());
}

void ComputeCurvatureDialog::cb_selectedMapChanged()
{
	QList<QListWidgetItem*> currentItems = mapList->selectedItems();
	if(!currentItems.empty())
	{
		combo_positionAttribute->clear();
		combo_normalAttribute->clear();
		const QString& mapname = currentItems[0]->text();
		MapHandlerGen* mh = m_window->getMap(mapname);
		GenericMap* map = mh->getGenericMap();
		AttributeContainer& cont = map->getAttributeContainer<VERTEX>();

		std::vector<std::string> names;
		std::vector<std::string> types;
		cont.getAttributesNames(names);
		cont.getAttributesTypes(types);
		std::string vec3TypeName = nameOfType(VEC3());
		std::string realTypeName = nameOfType(REAL());
		unsigned int j = 0;
		unsigned int k = 0;
		for(unsigned int i = 0; i < names.size(); ++i)
		{
			if(types[i] == vec3TypeName)
			{
				combo_positionAttribute->addItem(QString::fromStdString(names[i]));
				if(names[i] == "position") // try to select a position attribute named "position"
					combo_positionAttribute->setCurrentIndex(j);

				combo_normalAttribute->addItem(QString::fromStdString(names[i]));
				if(names[i] == "normal") // try to select a normal attribute named "normal"
					combo_normalAttribute->setCurrentIndex(j);

				combo_KmaxAttribute->addItem(QString::fromStdString(names[i]));
				if(names[i] == "Kmax") // try to select a normal attribute named "Kmax"
					combo_KmaxAttribute->setCurrentIndex(j);

				combo_KminAttribute->addItem(QString::fromStdString(names[i]));
				if(names[i] == "Kmin") // try to select a normal attribute named "Kmin"
					combo_KminAttribute->setCurrentIndex(j);

				combo_KnormalAttribute->addItem(QString::fromStdString(names[i]));
				if(names[i] == "Knormal") // try to select a normal attribute named "Knormal"
					combo_KnormalAttribute->setCurrentIndex(j);

				++j;
			}
			else if(types[i] == realTypeName)
			{
				combo_kmaxAttribute->addItem(QString::fromStdString(names[i]));
				if(names[i] == "kmax") // try to select a normal attribute named "kmax"
					combo_kmaxAttribute->setCurrentIndex(k);

				combo_kminAttribute->addItem(QString::fromStdString(names[i]));
				if(names[i] == "kmin") // try to select a normal attribute named "kmin"
					combo_kminAttribute->setCurrentIndex(k);

				++k;
			}
		}
	}
}

} // namespace SCHNApps

} // namespace CGoGN