Skip to content
Extraits de code Groupes Projets
Sélectionner une révision Git
  • c3033200a7c497a4d17bb7f90a12e923050ef15f
  • main par défaut protégée
  • renovate/configure
3 résultats

composer.lock

Blame
  • TimingScene.hh 1,73 Kio
    #pragma once
    
    #include "../../../Lib/Utils.hh"
    #include "../../../Lib/Audio.hh"
    #include "../../../Lib/Ass/Ass.hh"
    #include "TimingAxis.hh"
    #include "TimingCursor.hh"
    
    namespace Vivy
    {
    class TimingScene final : public QGraphicsScene {
        Q_OBJECT
    
    public:
        enum class TimingMode { Line = 0, Syl = (1 << 1), Char = (1 << 2) };
        Q_DECLARE_FLAGS(TimingModes, TimingMode)
    
    public:
        static inline constexpr QColor startColour = QColor(127, 0, 127);
        static inline constexpr QColor endColour   = QColor(0, 127, 0);
    
        explicit TimingScene(QWidget *parent = nullptr) noexcept;
        explicit TimingScene(QImage, AudioContext::StreamPtr, QWidget * = nullptr) noexcept;
    
    private:
        QGraphicsPixmapItem *backgroundImg{ nullptr };
        QImage img;
        TimingCursor *cursor;
        AudioContext::StreamPtr audioStream;
        Ass::LineWeakPtr currentLine{};
        TimingMode timingMode{ TimingMode::Line };
        TimingAxis *ax{ nullptr };
    
    public:
        QGraphicsPixmapItem *bg() noexcept;
        void mousePressEvent(QGraphicsSceneMouseEvent *event) noexcept override;
        void mouseMoveEvent(QGraphicsSceneMouseEvent *mouseEvent) noexcept override;
    
        TimingAxis *getAxis();
    
    private:
        void handleMousePressEventLine(QGraphicsSceneMouseEvent *, Ass::LinePtr) noexcept;
        void handleMousePressEventSyl(QGraphicsSceneMouseEvent *, Ass::LinePtr) noexcept;
        void handleMousePressEventChar(QGraphicsSceneMouseEvent *, Ass::LinePtr) noexcept;
    
    private:
        inline int timeFromPos(int x) const noexcept;
        inline int posFromTime(int t) const noexcept;
    
    public slots:
        void updateScene(QImage, AudioContext::StreamPtr);
        void rebuildScene();
    };
    
    }
    
    //Only if combinaisons of mode is allowed, it shouldn't be here
    //Q_DECLARE_OPERATORS_FOR_FLAGS(TimingScene::TimingModes)