61 lines
1.7 KiB
C++
61 lines
1.7 KiB
C++
|
|
|
|
#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
|