view editor/edtlobj.cpp @ 2294:7f6ba3b32f54

Cleanups.
author Matti Hamalainen <ccr@tnsp.org>
date Wed, 03 Jul 2019 10:28:43 +0300
parents b4992d9f72fe
children
line wrap: on
line source

//
// Demo Editor -- Timeline state object
// Wrapper class for DMTimeline data
// (C) Copyright 2012 Matti 'ccr' Hämäläinen <ccr@tnsp.org>
//
#include "edtlobj.h"
#include "dmres.h"


EDTimelineObject::EDTimelineObject()
{
    dmTimelineNew(&tl, "Demo");
    scrub();
}


EDTimelineObject::EDTimelineObject(EDTimelineObject *obj)
{
    scrub();
    filename = obj->filename;
    dmCopyTimeline(obj->tl, &tl);
}


EDTimelineObject::~EDTimelineObject()
{
    dmFreeTimeline(tl);
}


int EDTimelineObject::load(QString mfilename)
{
    DMResource *res;
    DMTimeline *tmp;
    int err;

    if ((err = dmf_open_stdio(mfilename.toUtf8().constData(), "rb", &res)) != DMERR_OK)
        return err;

    err = dmLoadTimeline(res, &tmp);
    dmf_close(res);

    if (err == DMERR_OK)
    {
        dmFreeTimeline(tl);
        tl = tmp;
        scrub();
        if (tl->name != NULL)
            filename = QString(tl->name);
        else
            filename = mfilename;
    }
    else
    {
        dmFreeTimeline(tmp);
    }
    return err;
}


int EDTimelineObject::save(QString mfilename)
{
    DMResource *res;
    int err;

    if ((err = dmf_open_stdio(mfilename.toUtf8().constData(), "wb", &res)) != DMERR_OK)
        return err;

    err = dmSaveTimeline(res, tl);
    scrub();

    dmf_close(res);
    return err;
}


void EDTimelineObject::touch()
{
    ntouches++;
}


void EDTimelineObject::scrub()
{
    ntouches = 0;
}


bool EDTimelineObject::touched()
{
    return ntouches;
}


void EDTimelineObject::setState(const QString &mstate)
{
    cstate = mstate;
}


QString EDTimelineObject::state() const
{
    return cstate;
}