view edtimeline.cpp @ 357:1b8362a26692

Work towards Qt based editor.
author Matti Hamalainen <ccr@tnsp.org>
date Tue, 16 Oct 2012 20:09:11 +0300
parents
children 40e33ad0d153
line wrap: on
line source

#include <QtGui>
#include "edtimeline.h"


TimelineTrackView::TimelineTrackView(QWidget *parent) : QWidget(parent)
{
    track = NULL;
    time = offs = 0;
    scale = 1.0f;
}


void TimelineTrackView::setTrack(DMTimelineTrack *mtrack)
{
    track = mtrack;
    update();
}


DMTimelineTrack * TimelineTrackView::getTrack()
{
    return track;
}


void TimelineTrackView::setTime(const int mtime)
{
    time = mtime;
    update();
}


void TimelineTrackView::setOffset(const int moffs)
{
    offs = moffs;
    update();
}


void TimelineTrackView::setScale(const float mscale)
{
    if (mscale > 0.05)
        scale = mscale;
    update();
}


void TimelineTrackView::paintEvent(QPaintEvent *)
{
    QColor eventColor(150, 150, 150);
    QColor markerColor(255,255,255);

    QPainter painter(this);
    painter.setRenderHint(QPainter::Antialiasing);

    painter.save();
    painter.scale(scale, 1);

    for (int event = 0; event < track->nevents; event++)
    {
        DMTimelineEvent *ev = track->events[event];

        if (ev->startTime >= offs && ev->startTime < twidth ||
            ev->startTime + ev->duration >= offs)
        {
            int ex0 = x0 + (ev->startTime - offs) * scale,
                ew = ex0 + ev->duration * scale,
                ex1 = ex0 + ew <= x1 ? ex0 + ew : x1;

            painter.setPen(waveColor);
            dmFillRect(screen, ex0, y0, ex1, y1, eventColor);
            //dmDrawTTFText(screen, font, fontcol, ex0, y0, "'%s'", ev->effect->name);
        }
    }

    if (time >= offs * scale && time - offs <= width() * scale)
    {
        int xc = time - offs;
        painter.scale(scale, 1);
        painter.setPen(markerColor);
        painter.drawLine(xc, 0, xc, height());
    }
}


void TimelineTrackView::mousePressEvent(QMouseEvent *ev)
{
/*
    if (ev->button() == Qt::LeftButton)
    {
        lastPoint = ev->pos();
        scribbling = true;
    }
*/
}


void TimelineTrackView::mouseMoveEvent(QMouseEvent *ev)
{
/*
    if ((ev->buttons() & Qt::LeftButton) && scribbling)
        drawLineTo(ev->pos());
*/
}


void TimelineTrackView::mouseReleaseEvent(QMouseEvent *ev)
{
/*
    if (ev->button() == Qt::LeftButton && scribbling)
    {
        drawLineTo(ev->pos());
        scribbling = false;
    }
*/
}