X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fbeziercurve%2Fbeziersplinewidget.h;h=c9e48edd5e92609e9f80b82a3bf7a5ca7e1c5ae1;hb=f69a24d18f8134c93e407ea485967ac31187da47;hp=5c4ba0de22dc7f6f3c24ee70f7b65d9eee6aef89;hpb=8f59e06aedf509255edb93295514c40eab2adf18;p=kdenlive diff --git a/src/beziercurve/beziersplinewidget.h b/src/beziercurve/beziersplinewidget.h index 5c4ba0de..c9e48edd 100644 --- a/src/beziercurve/beziersplinewidget.h +++ b/src/beziercurve/beziersplinewidget.h @@ -23,25 +23,67 @@ #include "beziersplineeditor.h" #include "ui_bezierspline_ui.h" -#include #include +class DragValue; + class BezierSplineWidget : public QWidget { Q_OBJECT public: - BezierSplineWidget(const QString &spline, QWidget* parent = 0); + /** @brief Sets up the UI and sets the spline to @param spline. */ + explicit BezierSplineWidget(const QString &spline, QWidget* parent = 0); + + /** @brief Returns the current spline. */ + QString spline() const; + + /** The curvemodes refer to the usage of the spline. + * As this widget is currently only used for frei0r.curves the modes are the channels this filter accepts. */ + enum CurveModes { ModeRed, ModeGreen, ModeBlue, ModeAlpha, ModeLuma, ModeRGB, ModeHue, ModeSaturation }; - QString spline(); + /** @brief Sets the mode to @param mode and updates the editors background pixmap if necessary. */ + void setMode(CurveModes mode); private slots: - void slotUpdatePoint(const BPoint &p); - void slotUpdateSpline(); + /** @brief Sets the spinboxes for modifing the selected point to @param p. */ + void slotUpdatePointEntries(const BPoint &p); + + /** @brief Updates the spline if the current point's p was modified using the spinboxes. + * @param value (optional) not used, neccessary to be able to connect to DragValue's valueChanged. + * @param final (default = true) emit signal modified? */ + void slotUpdatePointP(double value = 1, bool final = true); + /** @brief Updates the spline if the current point's h1 was modified using the spinboxes. + * @param value (optional) not used, neccessary to be able to connect to DragValue's valueChanged. + * @param final (default = true) emit signal modified? */ + void slotUpdatePointH1(double value = 1, bool final = true); + /** @brief Updates the spline if the current point's h2 was modified using the spinboxes. + * @param value (optional) not used, neccessary to be able to connect to DragValue's valueChanged. + * @param final (default = true) emit signal modified? */ + void slotUpdatePointH2(double value = 1, bool final = true); + + /** @brief Increases the number of lines in the editor's grid. If there are already 8 lines the number is set to 0. */ + void slotGridChange(); + /** @brief Turns showing the background pixmap in the editor on/off. */ + void slotShowPixmap(bool show = true); + /** @brief Resets the current spline. */ + void slotResetSpline(); + /** @brief Linkes the handles. This will always make them stay in one line through p. */ + void slotSetHandlesLinked(bool linked); + + void slotShowAllHandles(bool show); private: Ui::BezierSpline_UI m_ui; + DragValue *m_pX; + DragValue *m_pY; + DragValue *m_h1X; + DragValue *m_h1Y; + DragValue *m_h2X; + DragValue *m_h2Y; BezierSplineEditor m_edit; + CurveModes m_mode; + bool m_showPixmap; signals: void modified();