#include "toonz/scriptbinding_toonz_raster_converter.h"
#include "toonz/scriptbinding_level.h"
#include "tropcm.h"
#include "convert2tlv.h"
namespace TScriptBinding
{
ToonzRasterConverter::ToonzRasterConverter()
: m_flatSource(false)
{
}
ToonzRasterConverter::~ToonzRasterConverter()
{
}
QScriptValue ToonzRasterConverter::ctor(QScriptContext *context, QScriptEngine *engine)
{
return engine->newQObject(new ToonzRasterConverter(), QScriptEngine::AutoOwnership);
}
QScriptValue ToonzRasterConverter::toString()
{
return "ToonzRasterConverter";
}
QScriptValue ToonzRasterConverter::convert(QScriptContext *context, QScriptEngine *engine)
{
if (context->argumentCount() != 1)
return context->throwError("Expected one argument (a raster Level or a raster Image)");
QScriptValue arg = context->argument(0);
Level *level = qscriptvalue_cast<Level *>(arg);
Image *img = qscriptvalue_cast<Image *>(arg);
QString type;
if (level) {
type = level->getType();
if (type != "Raster")
return context->throwError(tr("Can't convert a %1 level").arg(type));
if (level->getFrameCount() <= 0)
return context->throwError(tr("Can't convert a level with no frames"));
} else if (img) {
type = img->getType();
if (type != "Raster")
return context->throwError(tr("Can't convert a %1 image").arg(type));
} else {
return context->throwError(tr("Bad argument (%1): should be a raster Level or a raster Image").arg(arg.toString()));
}
RasterToToonzRasterConverter converter;
if (img) {
TRasterImageP ri = img->getImg();
TToonzImageP ti = converter.convert(ri);
ti->setPalette(converter.getPalette().getPointer());
return create(engine, new Image(ti));
} else
return QScriptValue();
}
} // namespace TScriptBinding