/* * Olive Community Edition - Non-Linear Video Editor * Copyright (C) 2025 Olive CE Team * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "bezierwidget.h" #include #include namespace olive { BezierWidget::BezierWidget(QWidget *parent) : QWidget{ parent } { QGridLayout *layout = new QGridLayout(this); int row = 0; layout->addWidget(new QLabel(tr("Center:")), row, 0); x_slider_ = new FloatSlider(); connect(x_slider_, &FloatSlider::ValueChanged, this, &BezierWidget::ValueChanged); layout->addWidget(x_slider_, row, 1); y_slider_ = new FloatSlider(); connect(y_slider_, &FloatSlider::ValueChanged, this, &BezierWidget::ValueChanged); layout->addWidget(y_slider_, row, 2); row++; QGroupBox *bezier_group = new QGroupBox(tr("Bezier")); layout->addWidget(bezier_group, row, 0, 1, 3); QGridLayout *bezier_layout = new QGridLayout(bezier_group); row = 0; bezier_layout->addWidget(new QLabel(tr("In:")), row, 0); cp1_x_slider_ = new FloatSlider(); connect(cp1_x_slider_, &FloatSlider::ValueChanged, this, &BezierWidget::ValueChanged); bezier_layout->addWidget(cp1_x_slider_, row, 1); cp1_y_slider_ = new FloatSlider(); connect(cp1_y_slider_, &FloatSlider::ValueChanged, this, &BezierWidget::ValueChanged); bezier_layout->addWidget(cp1_y_slider_, row, 2); row++; bezier_layout->addWidget(new QLabel(tr("Out:")), row, 0); cp2_x_slider_ = new FloatSlider(); connect(cp2_x_slider_, &FloatSlider::ValueChanged, this, &BezierWidget::ValueChanged); bezier_layout->addWidget(cp2_x_slider_, row, 1); cp2_y_slider_ = new FloatSlider(); connect(cp2_y_slider_, &FloatSlider::ValueChanged, this, &BezierWidget::ValueChanged); bezier_layout->addWidget(cp2_y_slider_, row, 2); } Bezier BezierWidget::GetValue() const { Bezier b; b.set_x(x_slider_->GetValue()); b.set_y(y_slider_->GetValue()); b.set_cp1_x(cp1_x_slider_->GetValue()); b.set_cp1_y(cp1_y_slider_->GetValue()); b.set_cp2_x(cp2_x_slider_->GetValue()); b.set_cp2_y(cp2_y_slider_->GetValue()); return b; } void BezierWidget::SetValue(const Bezier &b) { x_slider_->SetValue(b.x()); y_slider_->SetValue(b.y()); cp1_x_slider_->SetValue(b.cp1_x()); cp1_y_slider_->SetValue(b.cp1_y()); cp2_x_slider_->SetValue(b.cp2_x()); cp2_y_slider_->SetValue(b.cp2_y()); } }