|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
#include "toonzqt/rasterimagedata.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonzqt/strokesdata.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "tpaletteutil.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "trasterimage.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/stage.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/tcenterlinevectorizer.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/ttileset.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/toonzimageutils.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/toonzscene.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/sceneproperties.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/fullcolorpalette.h"
|
|
Toshihiro Shimizu |
890ddd |
|
|
Campbell Barton |
40cabe |
#include <memory></memory>
|
|
Campbell Barton |
40cabe |
|
|
Toshihiro Shimizu |
890ddd |
namespace
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
TVectorImageP vectorize(const TImageP &source, const TRectD &rect, const VectorizerConfiguration &config, TAffine transform)
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
VectorizerCore vc;
|
|
Toshihiro Shimizu |
890ddd |
TVectorImageP vi = vc.vectorize(source.getPointer(), config, source->getPalette());
|
|
Toshihiro Shimizu |
890ddd |
assert(vi);
|
|
Toshihiro Shimizu |
890ddd |
vi->setPalette(source->getPalette());
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
double dpiX, dpiY;
|
|
Toshihiro Shimizu |
890ddd |
TToonzImageP ti(source);
|
|
Toshihiro Shimizu |
890ddd |
TRasterImageP ri(source);
|
|
Toshihiro Shimizu |
890ddd |
if (ti)
|
|
Toshihiro Shimizu |
890ddd |
ti->getDpi(dpiX, dpiY);
|
|
Toshihiro Shimizu |
890ddd |
else if (ri)
|
|
Toshihiro Shimizu |
890ddd |
ri->getDpi(dpiX, dpiY);
|
|
Toshihiro Shimizu |
890ddd |
else
|
|
Toshihiro Shimizu |
890ddd |
return vi;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
TScale sc(dpiX / Stage::inch, dpiY / Stage::inch);
|
|
Toshihiro Shimizu |
890ddd |
TTranslation tr(rect.getP00());
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
int i;
|
|
Toshihiro Shimizu |
890ddd |
for (i = 0; i < (int)vi->getStrokeCount(); i++) {
|
|
Toshihiro Shimizu |
890ddd |
TStroke *stroke = vi->getStroke(i);
|
|
Toshihiro Shimizu |
890ddd |
stroke->transform((sc.inv() * tr) * transform, true);
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
return vi;
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
} //namspace
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//===================================================================
|
|
Toshihiro Shimizu |
890ddd |
// RasterImageData
|
|
Toshihiro Shimizu |
890ddd |
//-------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
RasterImageData::RasterImageData()
|
|
Toshihiro Shimizu |
890ddd |
: m_dpiX(0), m_dpiY(0), m_transformation(), m_dim()
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
RasterImageData::~RasterImageData()
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//===================================================================
|
|
Toshihiro Shimizu |
890ddd |
// ToonzImageData
|
|
Toshihiro Shimizu |
890ddd |
//-------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
ToonzImageData::ToonzImageData()
|
|
Toshihiro Shimizu |
890ddd |
: RasterImageData(), m_copiedRaster(0), m_palette(new TPalette())
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
ToonzImageData::ToonzImageData(const ToonzImageData &src)
|
|
Toshihiro Shimizu |
890ddd |
: m_copiedRaster(src.m_copiedRaster), m_palette(src.m_palette), m_usedStyles(src.m_usedStyles)
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
m_dpiX = src.m_dpiX;
|
|
Toshihiro Shimizu |
890ddd |
m_dpiY = src.m_dpiY;
|
|
Toshihiro Shimizu |
890ddd |
m_rects = src.m_rects;
|
|
Toshihiro Shimizu |
890ddd |
m_strokes = src.m_strokes;
|
|
Toshihiro Shimizu |
890ddd |
m_transformation = src.m_transformation;
|
|
Toshihiro Shimizu |
890ddd |
m_originalStrokes = src.m_originalStrokes;
|
|
Toshihiro Shimizu |
890ddd |
m_dim = src.m_dim;
|
|
Toshihiro Shimizu |
890ddd |
assert(m_palette);
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
ToonzImageData::~ToonzImageData()
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void ToonzImageData::setData(const TRasterP &copiedRaster, const TPaletteP &palette, double dpiX, double dpiY, const TDimension &dim,
|
|
Shinya Kitaoka |
3bfa54 |
const std::vector<trectd> &rects, const std::vector<tstroke> &strokes,</tstroke></trectd>
|
|
Shinya Kitaoka |
3bfa54 |
const std::vector<tstroke> &originalStrokes,</tstroke>
|
|
Toshihiro Shimizu |
890ddd |
const TAffine &transformation)
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
m_copiedRaster = copiedRaster;
|
|
Toshihiro Shimizu |
890ddd |
m_palette = palette;
|
|
Toshihiro Shimizu |
890ddd |
m_dpiX = dpiX;
|
|
Toshihiro Shimizu |
890ddd |
m_dpiY = dpiY;
|
|
Toshihiro Shimizu |
890ddd |
m_rects = rects;
|
|
Toshihiro Shimizu |
890ddd |
m_strokes = strokes;
|
|
Toshihiro Shimizu |
890ddd |
m_transformation = transformation;
|
|
Toshihiro Shimizu |
890ddd |
m_originalStrokes = originalStrokes;
|
|
Toshihiro Shimizu |
890ddd |
m_dim = dim;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
/*-- 使用されているStyleの一覧を作る --*/
|
|
Toshihiro Shimizu |
890ddd |
TToonzImageP ti(m_copiedRaster, m_copiedRaster->getBounds());
|
|
Toshihiro Shimizu |
890ddd |
ToonzImageUtils::getUsedStyles(m_usedStyles, ti);
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void ToonzImageData::getData(TRasterP &copiedRaster, double &dpiX, double &dpiY,
|
|
Shinya Kitaoka |
3bfa54 |
std::vector<trectd> &rects, std::vector<tstroke> &strokes, std::vector<tstroke> &originalStrokes,</tstroke></tstroke></trectd>
|
|
Toshihiro Shimizu |
890ddd |
TAffine &transformation, TPalette *targetPalette) const
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
if (!m_copiedRaster || (m_rects.empty() && m_strokes.empty()))
|
|
Toshihiro Shimizu |
890ddd |
return;
|
|
Toshihiro Shimizu |
890ddd |
copiedRaster = m_copiedRaster->clone();
|
|
Toshihiro Shimizu |
890ddd |
dpiX = m_dpiX;
|
|
Toshihiro Shimizu |
890ddd |
dpiY = m_dpiY;
|
|
Toshihiro Shimizu |
890ddd |
assert(m_palette);
|
|
Toshihiro Shimizu |
890ddd |
int i;
|
|
Toshihiro Shimizu |
890ddd |
for (i = 0; i < (int)m_rects.size(); i++)
|
|
Toshihiro Shimizu |
890ddd |
rects.push_back(m_rects[i]);
|
|
Toshihiro Shimizu |
890ddd |
for (i = 0; i < (int)m_strokes.size(); i++)
|
|
Toshihiro Shimizu |
890ddd |
strokes.push_back(m_strokes[i]);
|
|
Toshihiro Shimizu |
890ddd |
for (i = 0; i < (int)m_originalStrokes.size(); i++)
|
|
Toshihiro Shimizu |
890ddd |
originalStrokes.push_back(m_originalStrokes[i]);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
transformation = m_transformation;
|
|
Toshihiro Shimizu |
890ddd |
TRasterCM32P cmRas = copiedRaster;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
if (!targetPalette)
|
|
Toshihiro Shimizu |
890ddd |
targetPalette = new TPalette();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
if (!cmRas)
|
|
Toshihiro Shimizu |
890ddd |
return;
|
|
Toshihiro Shimizu |
890ddd |
std::set<int> usedStyles(m_usedStyles);</int>
|
|
Toshihiro Shimizu |
890ddd |
TToonzImageP ti(cmRas, cmRas->getBounds());
|
|
Toshihiro Shimizu |
890ddd |
if (usedStyles.size() == 0)
|
|
Toshihiro Shimizu |
890ddd |
ToonzImageUtils::getUsedStyles(usedStyles, ti);
|
|
Toshihiro Shimizu |
890ddd |
std::map<int, int=""> indexTable;</int,>
|
|
Toshihiro Shimizu |
890ddd |
mergePalette(targetPalette, indexTable, m_palette, usedStyles);
|
|
Toshihiro Shimizu |
890ddd |
ToonzImageUtils::scrambleStyles(ti, indexTable);
|
|
Toshihiro Shimizu |
890ddd |
ti->setPalette(m_palette.getPointer());
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
StrokesData *ToonzImageData::toStrokesData(ToonzScene *scene) const
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
assert(scene);
|
|
Toshihiro Shimizu |
890ddd |
TRectD rect;
|
|
Toshihiro Shimizu |
890ddd |
if (!m_rects.empty())
|
|
Toshihiro Shimizu |
890ddd |
rect = m_rects[0];
|
|
Toshihiro Shimizu |
890ddd |
else if (!m_strokes.empty())
|
|
Toshihiro Shimizu |
890ddd |
rect = m_strokes[0].getBBox();
|
|
Toshihiro Shimizu |
890ddd |
unsigned int i;
|
|
Toshihiro Shimizu |
890ddd |
for (i = 0; i < m_rects.size(); i++)
|
|
Toshihiro Shimizu |
890ddd |
rect += m_rects[i];
|
|
Toshihiro Shimizu |
890ddd |
for (i = 0; i < m_strokes.size(); i++)
|
|
Toshihiro Shimizu |
890ddd |
rect += m_strokes[i].getBBox();
|
|
Toshihiro Shimizu |
890ddd |
TToonzImageP image(m_copiedRaster, m_copiedRaster->getBounds());
|
|
Toshihiro Shimizu |
890ddd |
image->setPalette(m_palette.getPointer());
|
|
Toshihiro Shimizu |
890ddd |
image->setDpi(m_dpiX, m_dpiY);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
const VectorizerParameters &vParams = *scene->getProperties()->getVectorizerParameters();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
CenterlineConfiguration cConf = vParams.getCenterlineConfiguration(0.0);
|
|
Toshihiro Shimizu |
890ddd |
NewOutlineConfiguration oConf = vParams.getOutlineConfiguration(0.0);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
const VectorizerConfiguration &config = vParams.m_isOutline ? static_cast<const &="" vectorizerconfiguration="">(oConf) : static_cast<const &="" vectorizerconfiguration="">(cConf);</const></const>
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
TVectorImageP vi = vectorize(image, rect, config, m_transformation);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
StrokesData *sd = new StrokesData();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
std::set<int> indexes;</int>
|
|
Toshihiro Shimizu |
890ddd |
for (i = 0; i < vi->getStrokeCount(); i++)
|
|
Toshihiro Shimizu |
890ddd |
indexes.insert(i);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
sd->setImage(vi, indexes);
|
|
Toshihiro Shimizu |
890ddd |
return sd;
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
int ToonzImageData::getMemorySize() const
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
int i, size = 0;
|
|
Toshihiro Shimizu |
890ddd |
for (i = 0; i < (int)m_strokes.size(); i++)
|
|
Toshihiro Shimizu |
890ddd |
size += m_strokes[i].getControlPointCount() * sizeof(TThickPoint) + 100;
|
|
Toshihiro Shimizu |
890ddd |
for (i = 0; i < (int)m_originalStrokes.size(); i++)
|
|
Toshihiro Shimizu |
890ddd |
size += m_originalStrokes[i].getControlPointCount() * sizeof(TThickPoint) + 100;
|
|
Toshihiro Shimizu |
890ddd |
return size + sizeof(*(m_copiedRaster.getPointer())) +
|
|
Toshihiro Shimizu |
890ddd |
sizeof(*(m_palette.getPointer())) +
|
|
Toshihiro Shimizu |
890ddd |
sizeof(*this);
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//===================================================================
|
|
Toshihiro Shimizu |
890ddd |
// FullColorImageData
|
|
Toshihiro Shimizu |
890ddd |
//-------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
FullColorImageData::FullColorImageData()
|
|
Toshihiro Shimizu |
890ddd |
: RasterImageData(), m_copiedRaster(0), m_palette(new TPalette())
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
FullColorImageData::FullColorImageData(const FullColorImageData &src)
|
|
Toshihiro Shimizu |
890ddd |
: m_copiedRaster(src.m_copiedRaster), m_palette(src.m_palette)
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
m_dpiX = src.m_dpiX;
|
|
Toshihiro Shimizu |
890ddd |
m_dpiY = src.m_dpiY;
|
|
Toshihiro Shimizu |
890ddd |
m_rects = src.m_rects;
|
|
Toshihiro Shimizu |
890ddd |
m_strokes = src.m_strokes;
|
|
Toshihiro Shimizu |
890ddd |
m_transformation = src.m_transformation;
|
|
Toshihiro Shimizu |
890ddd |
m_originalStrokes = src.m_originalStrokes;
|
|
Toshihiro Shimizu |
890ddd |
m_dim = src.m_dim;
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
FullColorImageData::~FullColorImageData()
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void FullColorImageData::setData(const TRasterP &copiedRaster, const TPaletteP &palette, double dpiX, double dpiY, const TDimension &dim,
|
|
Shinya Kitaoka |
3bfa54 |
const std::vector<trectd> &rects, const std::vector<tstroke> &strokes,</tstroke></trectd>
|
|
Shinya Kitaoka |
3bfa54 |
const std::vector<tstroke> &originalStrokes,</tstroke>
|
|
Toshihiro Shimizu |
890ddd |
const TAffine &transformation)
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
m_copiedRaster = copiedRaster;
|
|
Toshihiro Shimizu |
890ddd |
m_palette = palette;
|
|
Toshihiro Shimizu |
890ddd |
m_dpiX = dpiX;
|
|
Toshihiro Shimizu |
890ddd |
m_dpiY = dpiY;
|
|
Toshihiro Shimizu |
890ddd |
m_rects = rects;
|
|
Toshihiro Shimizu |
890ddd |
m_strokes = strokes;
|
|
Toshihiro Shimizu |
890ddd |
m_originalStrokes = originalStrokes;
|
|
Toshihiro Shimizu |
890ddd |
m_transformation = transformation;
|
|
Toshihiro Shimizu |
890ddd |
m_dim = dim;
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void FullColorImageData::getData(TRasterP &copiedRaster, double &dpiX, double &dpiY,
|
|
Shinya Kitaoka |
3bfa54 |
std::vector<trectd> &rects, std::vector<tstroke> &strokes, std::vector<tstroke> &originalStrokes,</tstroke></tstroke></trectd>
|
|
Toshihiro Shimizu |
890ddd |
TAffine &transformation, TPalette *targetPalette) const
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
if (!m_copiedRaster || (m_rects.empty() && m_strokes.empty()))
|
|
Toshihiro Shimizu |
890ddd |
return;
|
|
Toshihiro Shimizu |
890ddd |
copiedRaster = m_copiedRaster->clone();
|
|
Toshihiro Shimizu |
890ddd |
dpiX = m_dpiX;
|
|
Toshihiro Shimizu |
890ddd |
dpiY = m_dpiY;
|
|
Toshihiro Shimizu |
890ddd |
int i;
|
|
Toshihiro Shimizu |
890ddd |
for (i = 0; i < (int)m_rects.size(); i++)
|
|
Toshihiro Shimizu |
890ddd |
rects.push_back(m_rects[i]);
|
|
Toshihiro Shimizu |
890ddd |
for (i = 0; i < (int)m_strokes.size(); i++)
|
|
Toshihiro Shimizu |
890ddd |
strokes.push_back(m_strokes[i]);
|
|
Toshihiro Shimizu |
890ddd |
for (i = 0; i < (int)m_originalStrokes.size(); i++)
|
|
Toshihiro Shimizu |
890ddd |
originalStrokes.push_back(m_originalStrokes[i]);
|
|
Toshihiro Shimizu |
890ddd |
transformation = m_transformation;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
TRasterP ras = copiedRaster;
|
|
Toshihiro Shimizu |
890ddd |
if (!ras)
|
|
Toshihiro Shimizu |
890ddd |
return;
|
|
Toshihiro Shimizu |
890ddd |
if (!m_palette)
|
|
Toshihiro Shimizu |
890ddd |
return;
|
|
Toshihiro Shimizu |
890ddd |
if (!targetPalette)
|
|
Toshihiro Shimizu |
890ddd |
targetPalette = new TPalette();
|
|
Toshihiro Shimizu |
890ddd |
std::set<int> usedStyles;</int>
|
|
Toshihiro Shimizu |
890ddd |
TRasterImageP ri(ras);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
for (i = 0; i < m_palette->getPageCount(); i++) {
|
|
Toshihiro Shimizu |
890ddd |
TPalette::Page *page = m_palette->getPage(i);
|
|
Toshihiro Shimizu |
890ddd |
int j;
|
|
Toshihiro Shimizu |
890ddd |
for (j = 0; j < page->getStyleCount(); j++)
|
|
Toshihiro Shimizu |
890ddd |
usedStyles.insert(page->getStyleId(j));
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
std::map<int, int=""> indexTable;</int,>
|
|
Toshihiro Shimizu |
890ddd |
mergePalette(targetPalette, indexTable, m_palette, usedStyles);
|
|
Toshihiro Shimizu |
890ddd |
ri->setPalette(m_palette.getPointer());
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
StrokesData *FullColorImageData::toStrokesData(ToonzScene *scene) const
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
assert(scene);
|
|
Toshihiro Shimizu |
890ddd |
TRectD rect;
|
|
Toshihiro Shimizu |
890ddd |
if (!m_rects.empty())
|
|
Toshihiro Shimizu |
890ddd |
rect = m_rects[0];
|
|
Toshihiro Shimizu |
890ddd |
else if (!m_strokes.empty())
|
|
Toshihiro Shimizu |
890ddd |
rect = m_strokes[0].getBBox();
|
|
Toshihiro Shimizu |
890ddd |
unsigned int i;
|
|
Toshihiro Shimizu |
890ddd |
for (i = 0; i < m_rects.size(); i++)
|
|
Toshihiro Shimizu |
890ddd |
rect += m_rects[i];
|
|
Toshihiro Shimizu |
890ddd |
for (i = 0; i < m_strokes.size(); i++)
|
|
Toshihiro Shimizu |
890ddd |
rect += m_strokes[i].getBBox();
|
|
Toshihiro Shimizu |
890ddd |
TRasterImageP image(m_copiedRaster);
|
|
Toshihiro Shimizu |
890ddd |
image->setPalette(FullColorPalette::instance()->getPalette(scene));
|
|
Toshihiro Shimizu |
890ddd |
image->setDpi(m_dpiX, m_dpiY);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
const VectorizerParameters *vParams = scene->getProperties()->getVectorizerParameters();
|
|
Toshihiro Shimizu |
890ddd |
assert(vParams);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
std::auto_ptr<vectorizerconfiguration> config(vParams->getCurrentConfiguration(0.0));</vectorizerconfiguration>
|
|
Toshihiro Shimizu |
890ddd |
TVectorImageP vi = vectorize(image, rect, *config, m_transformation);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
StrokesData *sd = new StrokesData();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
std::set<int> indexes;</int>
|
|
Toshihiro Shimizu |
890ddd |
for (i = 0; i < vi->getStrokeCount(); i++)
|
|
Toshihiro Shimizu |
890ddd |
indexes.insert(i);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
sd->setImage(vi, indexes);
|
|
Toshihiro Shimizu |
890ddd |
return sd;
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
int FullColorImageData::getMemorySize() const
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
int i, size = 0;
|
|
Toshihiro Shimizu |
890ddd |
for (i = 0; i < (int)m_strokes.size(); i++)
|
|
Toshihiro Shimizu |
890ddd |
size += m_strokes[i].getControlPointCount() * sizeof(TThickPoint) + 100;
|
|
Toshihiro Shimizu |
890ddd |
for (i = 0; i < (int)m_originalStrokes.size(); i++)
|
|
Toshihiro Shimizu |
890ddd |
size += m_originalStrokes[i].getControlPointCount() * sizeof(TThickPoint) + 100;
|
|
Toshihiro Shimizu |
890ddd |
return size + sizeof(*(m_copiedRaster.getPointer())) +
|
|
Toshihiro Shimizu |
890ddd |
sizeof(*(m_palette.getPointer())) +
|
|
Toshihiro Shimizu |
890ddd |
sizeof(*this);
|
|
Toshihiro Shimizu |
890ddd |
}
|