File: setClippingPlane.C

package info (click to toggle)
ball 1.5.0%2Bgit20180813.37fc53c-6
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 239,888 kB
  • sloc: cpp: 326,149; ansic: 4,208; python: 2,303; yacc: 1,778; lex: 1,099; xml: 958; sh: 322; makefile: 95
file content (92 lines) | stat: -rw-r--r-- 1,803 bytes parent folder | download | duplicates (4)
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
// -*- Mode: C++; tab-width: 2; -*-
// vi: set ts=2:
//

#include <BALL/VIEW/DIALOGS/setClippingPlane.h>
#include <BALL/VIEW/KERNEL/mainControl.h>

#include <QtWidgets/QPushButton>
#include <QtWidgets/QLineEdit>

namespace BALL
{
	namespace VIEW
	{

SetClippingPlane::SetClippingPlane( QWidget* parent,  const char* name, ClippingPlane* plane)
	: QDialog(parent),
		Ui_SetClippingData()
{
	setupUi(this);
	
  // signals and slots connections
  connect( ok_button, SIGNAL( pressed() ), this, SLOT( okPressed() ) );
  connect( cancel_button, SIGNAL( pressed() ), this, SLOT( close() ) );

	setObjectName(name);
	plane_ = plane;

	if (plane_ == 0) return;

	Vector3 p = plane_->getPoint();
	view_x->setText(String(p.x).c_str());
	view_y->setText(String(p.y).c_str());
	view_z->setText(String(p.z).c_str());

	p = plane_->getNormal();
	look_x->setText(String(p.x).c_str());
	look_y->setText(String(p.y).c_str());
	look_z->setText(String(p.z).c_str());
}

SetClippingPlane::~SetClippingPlane()
{
 // no need to delete child widgets, Qt does it all for us
}

void SetClippingPlane::okPressed()
{
	float vx, vy, vz, lx, ly, lz;

	try
	{
		vx = ascii(view_x->text()).toFloat();
		vy = ascii(view_y->text()).toFloat();
		vz = ascii(view_z->text()).toFloat();
		lx = ascii(look_x->text()).toFloat();
		ly = ascii(look_y->text()).toFloat();
		lz = ascii(look_z->text()).toFloat();
	}
	catch(...)
	{
		getMainControl()->setStatusbarText((String)tr("Invalid Values!"));
		return;
	}

	Vector3 vp(vx,vy,vz);
	Vector3 lp(lx,ly,lz);

	if (!Maths::isZero(lp.getLength()))
	{
		lp.normalize();
	}
	else
	{
		lp = Vector3(1,0,0);
	}

	if (plane_ != 0)
	{
		plane_->setPoint(vp);
		plane_->setNormal(lp);
	}
	else
	{
		getMainControl()->setStatusbarText((String)tr("No plane available"));
	}

	close();
}

// NAMESPACE
} }