Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions mirrordlg.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,9 @@ mirrorDlg::mirrorDlg(QWidget *parent) :
if (m_verticalAxis == 0)
m_verticalAxis = diameter;
ui->ellipseShape->setChecked(m_outlineShape == ELLIPSE);
setEllipseControlsEnabled(m_outlineShape == ELLIPSE);
ui->minorAxisEdit->setText(QString().number(m_verticalAxis));
enforceEllipseMajorAxis();
ui->diameter->setText(QString("%1").arg(diameter, 6, 'f', 2));
ui->obs->setText(QString("%1").arg(obs, 6, 'f', 2));
ui->FNumber->blockSignals(false);
Expand Down Expand Up @@ -144,6 +146,27 @@ double mirrorDlg::getMinorAxis(){
bool mirrorDlg::isEllipse(){
return m_outlineShape == ELLIPSE;
}

void mirrorDlg::setEllipseControlsEnabled(bool enabled)
{
ui->minorAxisEdit->setEnabled(enabled);
}

void mirrorDlg::enforceEllipseMajorAxis()
{
if (m_outlineShape != ELLIPSE || diameter <= 0)
return;

if (m_verticalAxis > diameter){
const double originalVerticalAxis = m_verticalAxis;
m_verticalAxis = diameter;
const QSignalBlocker blocker(ui->minorAxisEdit);
ui->minorAxisEdit->setText(QString::number(m_verticalAxis));
spdlog::get("logger")->info("Ellipse axis clamp applied: vertical axis {} exceeded horizontal axis {}. Vertical axis was clamped to {}.",
originalVerticalAxis, diameter, m_verticalAxis);
}
}

void mirrorDlg::saveJson(const QString &fileName){
QJsonObject jDoc, jMirror,jIgram, jEllipse, jAnnulus;
jDoc["name"] = m_name;
Expand Down Expand Up @@ -211,6 +234,7 @@ void mirrorDlg::loadFile(QString & fileName){

// clear ellipse in case this is an old config that does not have it.
ui->ellipseShape->setChecked(false);
setEllipseControlsEnabled(false);
m_outlineShape = CIRCLE;
QFileInfo info(fileName);
QSettings settings;
Expand Down Expand Up @@ -286,8 +310,10 @@ void mirrorDlg::loadFile(QString & fileName){
ui->z8->setText(QString().number(z8));

ui->ellipseShape->setChecked(m_outlineShape == ELLIPSE);
setEllipseControlsEnabled(m_outlineShape == ELLIPSE);

ui->minorAxisEdit->setText(QString::number(m_verticalAxis));
enforceEllipseMajorAxis();

FNumber = roc/(2. * diameter);
ui->FNumber->blockSignals(true);
Expand Down Expand Up @@ -418,13 +444,15 @@ void mirrorDlg::loadFile(QString & fileName){
file.read(buf,4);
m_outlineShape = *(outlineShape*)buf;
ui->ellipseShape->setChecked(m_outlineShape == ELLIPSE);
setEllipseControlsEnabled(m_outlineShape == ELLIPSE);

}
// vertical axis
if (file.tellg() > 0){
file.read(buf,8);
m_verticalAxis = *(double*)buf;
ui->minorAxisEdit->setText(QString::number(m_verticalAxis));
enforceEllipseMajorAxis();
}

FNumber = roc/(2. * diameter);
Expand Down Expand Up @@ -462,6 +490,7 @@ void mirrorDlg::on_diameter_textChanged(const QString &arg1) {
ui->minorAxisEdit->setText(QString().number(m_verticalAxis));
}
diameter = diam;
enforceEllipseMajorAxis();
FNumber = roc/(2. * diameter);
ui->FNumber->blockSignals(true);
ui->FNumber->setText(QString("%1").arg(FNumber, 6, 'f', 2));
Expand All @@ -482,6 +511,7 @@ void mirrorDlg::on_diameter_Changed(const double diam)
ui->minorAxisEdit->setText(QString().number(m_verticalAxis));
}
diameter = diam ;
enforceEllipseMajorAxis();
FNumber = roc/(2. * diameter);
ui->FNumber->blockSignals(true);
const QSignalBlocker blocker(ui->diameter);
Expand Down Expand Up @@ -694,11 +724,13 @@ void mirrorDlg::on_minorAxisEdit_textChanged(const QString &arg1)
{

m_verticalAxis = arg1.toDouble();
enforceEllipseMajorAxis();
}

void mirrorDlg::setMinorAxis(double val){
m_verticalAxis = val;
ui->minorAxisEdit->setText(QString::number(val));
enforceEllipseMajorAxis();
//on_minorAxisEdit_textChanged( QString::number(val));
}

Expand All @@ -707,10 +739,13 @@ void mirrorDlg::on_ellipseShape_clicked(bool checked)
if (checked) m_outlineShape = ELLIPSE;
else m_outlineShape = CIRCLE;

setEllipseControlsEnabled(checked);

if (m_verticalAxis == 0){
m_verticalAxis = diameter;
ui->minorAxisEdit->setText(QString().number(m_verticalAxis));
}
enforceEllipseMajorAxis();
}


Expand Down
2 changes: 2 additions & 0 deletions mirrordlg.h
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,8 @@ private slots:
private:
explicit mirrorDlg(QWidget *parent = 0);
void setclearAp();
void setEllipseControlsEnabled(bool enabled);
void enforceEllipseMajorAxis();

Ui::mirrorDlg *ui;
bool m_aperatureReductionValueChanged;
Expand Down
7 changes: 7 additions & 0 deletions surfacemanager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1407,6 +1407,13 @@ wavefront * SurfaceManager::readWaveFront(const QString &fileName){

}
}

if (md->isEllipse() && md->m_verticalAxis > md->diameter){
spdlog::get("logger")->info("Wavefront load ellipse axis clamp: vertical axis {} exceeded horizontal axis {}. Vertical axis was clamped to {}.",
md->m_verticalAxis, md->diameter, md->diameter);
md->setMinorAxis(md->diameter);
}

wf->diameter = diam;
wf->roc = roc;
wf->lambda = lambda;
Expand Down
Loading