File indexing completed on 2025-02-02 04:11:33

0001 /*
0002  * SPDX-FileCopyrightText: 2019-2023 Mattia Basaglia <dev@dragon.best>
0003  *
0004  * SPDX-License-Identifier: GPL-3.0-or-later
0005  */
0006 
0007 #pragma once
0008 
0009 #include <memory>
0010 #include <QWidget>
0011 #include "model/animation/keyframe_transition.hpp"
0012 
0013 namespace glaxnimate::gui {
0014 
0015 class KeyframeTransitionWidget : public QWidget
0016 {
0017     Q_OBJECT
0018 
0019 public:
0020     KeyframeTransitionWidget(QWidget* parent = nullptr);
0021     ~KeyframeTransitionWidget();
0022 
0023     void set_target(model::KeyframeTransition* kft);
0024     model::KeyframeTransition* target() const;
0025     
0026     QSize sizeHint() const override;
0027 
0028     void set_y_margin(double margin);
0029 
0030 protected:
0031     void paintEvent(QPaintEvent * event) override;
0032     void mouseMoveEvent(QMouseEvent * event) override;
0033     void mousePressEvent(QMouseEvent * event) override;
0034     void mouseReleaseEvent(QMouseEvent * event) override;
0035     void focusInEvent(QFocusEvent * event) override;
0036     void focusOutEvent(QFocusEvent * event) override;
0037     void leaveEvent(QEvent * event) override;
0038 
0039 Q_SIGNALS:
0040     void before_changed(model::KeyframeTransition::Descriptive v);
0041     void after_changed(model::KeyframeTransition::Descriptive v);
0042 
0043 private:
0044     class Private;
0045     std::unique_ptr<Private> d;
0046 };
0047 
0048 } // namespace glaxnimate::gui