scale_transform.cpp
Go to the documentation of this file.
1 #include "scale_transform.h"
2 #include "ui_scale_transform.h"
3 
4 ScaleTransform::ScaleTransform() : _widget(new QWidget()), ui(new Ui::ScaleTransform)
5 {
6  ui->setupUi(_widget);
7 
8  // ui->lineEditValue->setValidator( new QDoubleValidator() );
9 
10  connect(ui->buttonDegRad, &QPushButton::clicked, this, [=]() {
11  const double deg_rad = 3.14159265359 / 180;
12  ui->lineEditValueScale->setText(QString::number(deg_rad, 'g', 5));
13  emit parametersChanged();
14  });
15 
16  connect(ui->buttonRadDeg, &QPushButton::clicked, this, [=]() {
17  const double rad_deg = 180.0 / 3.14159265359;
18  ui->lineEditValueScale->setText(QString::number(rad_deg, 'g', 5));
19  emit parametersChanged();
20  });
21 
22  connect(ui->lineEditTimeOffset, &QLineEdit::editingFinished, this,
23  [=]() { emit parametersChanged(); });
24  connect(ui->lineEditValueOffset, &QLineEdit::editingFinished, this,
25  [=]() { emit parametersChanged(); });
26  connect(ui->lineEditValueScale, &QLineEdit::editingFinished, this,
27  [=]() { emit parametersChanged(); });
28 }
29 
31 {
32  delete ui;
33  delete _widget;
34 }
35 
36 const char* ScaleTransform::name() const
37 {
38  return "Scale/Offset";
39 }
40 
42 {
43  return _widget;
44 }
45 
46 bool ScaleTransform::xmlSaveState(QDomDocument& doc, QDomElement& parent_element) const
47 {
48  QDomElement widget_el = doc.createElement("options");
49  widget_el.setAttribute("time_offset", ui->lineEditTimeOffset->text());
50  widget_el.setAttribute("value_offset", ui->lineEditValueOffset->text());
51  widget_el.setAttribute("value_scale", ui->lineEditValueScale->text());
52  parent_element.appendChild(widget_el);
53 
54  return true;
55 }
56 
57 bool ScaleTransform::xmlLoadState(const QDomElement& parent_element)
58 {
59  QDomElement widget_el = parent_element.firstChildElement("options");
60  ui->lineEditTimeOffset->setText(widget_el.attribute("time_offset"));
61  ui->lineEditValueOffset->setText(widget_el.attribute("value_offset"));
62  ui->lineEditValueScale->setText(widget_el.attribute("value_scale"));
63  return true;
64 }
65 
66 std::optional<PlotData::Point> ScaleTransform::calculateNextPoint(size_t index)
67 {
68  double off_x = ui->lineEditTimeOffset->text().toDouble();
69  double off_y = ui->lineEditValueOffset->text().toDouble();
70  double scale = ui->lineEditValueScale->text().toDouble();
71 
72  const auto& p = dataSource()->at(index);
73  PlotData::Point out = { p.x + off_x, scale * p.y + off_y };
74  return out;
75 }
Ui::ScaleTransform * ui
QWidget * optionsWidget() override
optionsWidget pointer to a persistent widget used to set the plugin options .
std::optional< PlotData::Point > calculateNextPoint(size_t index) override
bool xmlSaveState(QDomDocument &doc, QDomElement &parent_element) const override
Override this method to save the status of the plugin to XML.
const char * name() const override
Name of the plugin type, NOT the particular instance.
bool xmlLoadState(const QDomElement &parent_element) override
Override this method to load the status of the plugin from XML.
typename PlotDataBase< double, Value >::Point Point
Definition: timeseries.h:23
const Point & at(size_t index) const
Definition: plotdatabase.h:192
const PlotData * dataSource() const
~ScaleTransform() override
QWidget * _widget


plotjuggler
Author(s): Davide Faconti
autogenerated on Mon Jun 19 2023 03:01:39