differentialProperties.h 2.58 KB
Newer Older
1 2 3 4
#ifndef _DIFFERENTIALPROPERTIES_PLUGIN_H_
#define _DIFFERENTIALPROPERTIES_PLUGIN_H_

#include "plugin.h"
5

6 7
#include "computeNormalDialog.h"
#include "computeCurvatureDialog.h"
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


using namespace CGoGN;
using namespace SCHNApps;


class DifferentialPropertiesPlugin : public Plugin
{
	Q_OBJECT
	Q_INTERFACES(CGoGN::SCHNApps::Plugin)

public:
	DifferentialPropertiesPlugin()
	{
		setProvidesRendering(false);
	}

	~DifferentialPropertiesPlugin()
	{}

	virtual bool enable();
	virtual void disable() {}

	virtual void redraw(View *view) {}

33 34 35 36 37 38
	virtual void keyPress(View* view, QKeyEvent* event) {}
	virtual void keyRelease(View* view, QKeyEvent* event) {}
	virtual void mousePress(View* view, QMouseEvent* event) {}
	virtual void mouseRelease(View* view, QMouseEvent* event) {}
	virtual void mouseMove(View* view, QMouseEvent* event) {}
	virtual void wheelEvent(View* view, QWheelEvent* event) {}
39 40

public slots:
41 42 43 44
	void mapAdded(MapHandlerGen* map);
	void mapRemoved(MapHandlerGen* map);
	void attributeModified(unsigned int orbit, QString nameAttr);

45 46
	void openComputeNormalDialog();
	void openComputeCurvatureDialog();
47

48 49 50
	void computeNormalFromDialog();
	void computeCurvatureFromDialog();

51
	void computeNormal(const QString& mapName,
52 53
		const QString& positionAttributeName = "position",
		const QString& normalAttributeName = "normal",
54 55 56
		bool createNormalVBO = true,
		bool autoUpdateNormal = true);

57 58 59 60 61 62 63 64 65 66 67 68 69
	void computeCurvature(
		const QString& mapName,
		const QString& positionAttributeName = "position",
		const QString& normalAttributeName = "normal",
		const QString& KmaxAttributeName = "Kmax",
		const QString& kmaxAttributeName = "kmax",
		const QString& KminAttributeName = "Kmin",
		const QString& kminAttributeName = "kmin",
		const QString& KnormalAttributeName = "Knormal",
		bool createKmaxVBO = true,
		bool createkmaxVBO = true,
		bool createKminVBO = true,
		bool createkminVBO = true,
70 71 72 73 74 75
		bool createKnormalVBO = true,
		bool autoUpdateKmax = true,
		bool autoUpdatekmax = true,
		bool autoUpdateKmin = true,
		bool autoUpdatekmin = true,
		bool autoUpdateKnormal = true
76
	);
77 78

private:
79 80
	ComputeNormalDialog* m_computeNormalDialog;
	ComputeCurvatureDialog* m_computeCurvatureDialog;
81

82 83
	QAction* m_computeNormalAction;
	QAction* m_computeCurvatureAction;
84 85 86 87

	struct ComputeNormalParameters
	{
		ComputeNormalParameters() {}
88 89 90
		ComputeNormalParameters(QString p, QString n, bool vbo, bool update) :
			positionName(p), normalName(n), createVBO(vbo), autoUpdate(update)
		{}
91 92
		QString positionName;
		QString normalName;
93 94
		bool createVBO;
		bool autoUpdate;
95 96
	};
	QHash<QString, ComputeNormalParameters> computeNormalLastParameters;
97 98 99
};

#endif