view editor/edtlobj.cpp @ 1896:f80b2dc77c30

Work begins on IFF ILBM/PBM image writer. It is pretty broken, some things will not work and some things are hardcoded. The ByteRun1 compression implementation is somewhat inefficient. Interleaved files do not work yet.
author Matti Hamalainen <ccr@tnsp.org>
date Tue, 26 Jun 2018 03:13:38 +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;
}