]> Shamusworld >> Repos - architektonas/blob - src/forms/dlgellipse.cpp
d81f11f11cd9f6e38699e4f6e985b1e550ac9521
[architektonas] / src / forms / dlgellipse.cpp
1 // dlgellipse.cpp
2 //
3 // Part of the Architektonas Project
4 // Originally part of QCad Community Edition by Andrew Mustun
5 // Extensively rewritten and refactored by James L. Hammons
6 // (C) 2010 Underground Software
7 //
8 // JLH = James L. Hammons <jlhamm@acm.org>
9 //
10 // Who  When        What
11 // ---  ----------  -----------------------------------------------------------
12 // JLH  06/11/2010  Created this file. :-)
13 //
14
15 #include "dlgellipse.h"
16
17 #include "rs_ellipse.h"
18 #include "drawing.h"
19 #include "rs_math.h"
20
21 DlgEllipse::DlgEllipse(QWidget * parent/*= NULL*/, Qt::WindowFlags flags/*= 0*/):
22         QDialog(parent, flags)
23 {
24         ui.setupUi(this);
25 }
26
27 DlgEllipse::~DlgEllipse()
28 {
29 }
30
31 void DlgEllipse::setEllipse(RS_Ellipse & e)
32 {
33         ellipse = &e;
34         //pen = ellipse->getPen();
35         ui.wPen->setPen(ellipse->getPen(false), true, false, "Pen");
36         Drawing * graphic = ellipse->getGraphic();
37
38         if (graphic != NULL)
39                 ui.cbLayer->init(*(graphic->getLayerList()), false, false);
40
41         RS_Layer * lay = ellipse->getLayer(false);
42
43         if (lay != NULL)
44                 ui.cbLayer->setLayer(*lay);
45
46         QString s;
47         s.setNum(ellipse->getCenter().x);
48         ui.leCenterX->setText(s);
49         s.setNum(ellipse->getCenter().y);
50         ui.leCenterY->setText(s);
51         s.setNum(ellipse->getMajorP().magnitude());
52         ui.leMajor->setText(s);
53         s.setNum(ellipse->getMajorP().magnitude() * ellipse->getRatio());
54         ui.leMinor->setText(s);
55         s.setNum(RS_Math::rad2deg(ellipse->getMajorP().angle()));
56         ui.leRotation->setText(s);
57         s.setNum(RS_Math::rad2deg(ellipse->getAngle1()));
58         ui.leAngle1->setText(s);
59         s.setNum(RS_Math::rad2deg(ellipse->getAngle2()));
60         ui.leAngle2->setText(s);
61         ui.cbReversed->setChecked(ellipse->isReversed());
62 }
63
64 void DlgEllipse::updateEllipse()
65 {
66         ellipse->setCenter(Vector(RS_Math::eval(ui.leCenterX->text()),
67                 RS_Math::eval(ui.leCenterY->text())));
68         Vector v;
69         v.setPolar(RS_Math::eval(ui.leMajor->text()),
70                 RS_Math::deg2rad(RS_Math::eval(ui.leRotation->text())));
71         ellipse->setMajorP(v);
72
73         if (RS_Math::eval(ui.leMajor->text()) > 1.0e-6)
74                 ellipse->setRatio(RS_Math::eval(ui.leMinor->text()) / RS_Math::eval(ui.leMajor->text()));
75         else
76                 ellipse->setRatio(1.0);
77
78         ellipse->setAngle1(RS_Math::deg2rad(RS_Math::eval(ui.leAngle1->text())));
79         ellipse->setAngle2(RS_Math::deg2rad(RS_Math::eval(ui.leAngle2->text())));
80         ellipse->setReversed(ui.cbReversed->isChecked());
81         ellipse->setPen(ui.wPen->getPen());
82         ellipse->setLayer(ui.cbLayer->currentText());
83 }