Skip to content
Extraits de code Groupes Projets
Sélectionner une révision Git
1 résultat Searching

Procfile

Blame
  • TimingLine.cc 5,40 Kio
    #include "TimingLine.hh"
    
    #include <QPainter>
    #include <QGraphicsScene>
    
    #include "TimingUtils.hh"
    
    using namespace Vivy;
    
    #define CONNECT_SEP(sep)                                                                           \
        connect(sep, &TimingSeparator::positionChanged, this, &TimingLine::timingSeparatorHasChanged); \
        connect(sep, &TimingSeparator::enterPress, this, &TimingLine::sepEnterPress);                  \
        connect(sep, &TimingSeparator::exitPress, this, &TimingLine::sepExitPress);
    
    TimingLine::TimingLine(Ass::Line *lineptr, int index, QGraphicsItem *parent)
        : QGraphicsObject(parent)
        , line(*lineptr)
        , lineIndex(index)
    {
        setPos(TimingUtils::posFromMs(int(line.getStart()) * 10), TimingUtils::axisHeight());
        int currentTime = 0;
        int endSyl      = 0;
        int i;
    
        TimingSeparator *timingSeparatorStart =
            new TimingSeparator(currentTime, 0, TimingSeparator::SeparatorStyle::Start, this);
        seps.append(timingSeparatorStart);
        CONNECT_SEP(timingSeparatorStart);
    
        QVector<Ass::Syl> syls = line.getContent();
        for (i = 0; i < syls.size(); ++i) {
            endSyl = currentTime + 10 * int(syls.at(i).getDuration());
    
            TimingSyl *timingSyl = new TimingSyl(syls.at(i), currentTime, this);
            timingSyls.append(timingSyl);
    
            if (i != 0) {
                TimingSeparator *timingSeparator =
                    new TimingSeparator(currentTime, i, TimingSeparator::SeparatorStyle::Middle, this);
                seps.append(timingSeparator);
                CONNECT_SEP(timingSeparator);
            }
    
            currentTime = endSyl;
        }
    
        TimingSeparator *timingSeparatorEnd =
            new TimingSeparator(currentTime, i, TimingSeparator::SeparatorStyle::End, this);
        seps.append(timingSeparatorEnd);
        CONNECT_SEP(timingSeparatorEnd);
    }
    #undef CONNECT_SEP
    
    QRectF
    TimingLine::boundingRect() const
    {
        return QRectF(tempOffset, 0,
                      TimingUtils::posFromMs(int(10 * (line.getEnd() - line.getStart()))),
                      TimingUtils::audioHeight());
    }
    
    void
    TimingLine::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
    {
        painter->fillRect(QRectF(tempOffset, 0,
                                 TimingUtils::posFromMs(int(10 * (line.getEnd() - line.getStart()))),
                                 TimingUtils::audioHeight()),
                          QColor(0, 255, 255, 50));
    }