StrokesData *FullColorImageData::toStrokesData(ToonzScene *scene) const { assert(scene); TRectD rect; if (!m_rects.empty()) rect = m_rects[0]; else if (!m_strokes.empty()) rect = m_strokes[0].getBBox(); unsigned int i; for (i = 0; i < m_rects.size(); i++) rect += m_rects[i]; for (i = 0; i < m_strokes.size(); i++) rect += m_strokes[i].getBBox(); TRasterImageP image(m_copiedRaster); image->setPalette(FullColorPalette::instance()->getPalette(scene)); image->setDpi(m_dpiX, m_dpiY); const VectorizerParameters *vParams = scene->getProperties()->getVectorizerParameters(); assert(vParams); std::auto_ptr<VectorizerConfiguration> config(vParams->getCurrentConfiguration(0.0)); TVectorImageP vi = vectorize(image, rect, *config, m_transformation); StrokesData *sd = new StrokesData(); std::set<int> indexes; for (i = 0; i < vi->getStrokeCount(); i++) indexes.insert(i); sd->setImage(vi, indexes); return sd; }
void StrokeSelection::cut() { if (m_indexes.empty()) return; TTool *tool = TTool::getApplication()->getCurrentTool()->getTool(); if (!tool) return; bool isSpline = tool->getApplication()->getCurrentObject()->isSpline(); TUndo *undo; if (isSpline) undo = new ToolUtils::UndoPath( tool->getXsheet()->getStageObject(tool->getObjectId())->getSpline()); StrokesData *data = new StrokesData(); data->setImage(m_vi, m_indexes); std::set<int> oldIndexes = m_indexes; cutStrokesWithoutUndo(m_vi, m_indexes); if (!isSpline) { TXshSimpleLevel *level = tool->getApplication()->getCurrentLevel()->getSimpleLevel(); TUndoManager::manager()->add(new CutStrokesUndo( level, tool->getCurrentFid(), oldIndexes, data, m_sceneHandle)); } else { assert(undo); if (undo) TUndoManager::manager()->add(undo); } }
StrokesData *ToonzImageData::toStrokesData(ToonzScene *scene) const { assert(scene); TRectD rect; if (!m_rects.empty()) rect = m_rects[0]; else if (!m_strokes.empty()) rect = m_strokes[0].getBBox(); unsigned int i; for (i = 0; i < m_rects.size(); i++) rect += m_rects[i]; for (i = 0; i < m_strokes.size(); i++) rect += m_strokes[i].getBBox(); TToonzImageP image(m_copiedRaster, m_copiedRaster->getBounds()); image->setPalette(m_palette.getPointer()); image->setDpi(m_dpiX, m_dpiY); const VectorizerParameters &vParams = *scene->getProperties()->getVectorizerParameters(); CenterlineConfiguration cConf = vParams.getCenterlineConfiguration(0.0); NewOutlineConfiguration oConf = vParams.getOutlineConfiguration(0.0); const VectorizerConfiguration &config = vParams.m_isOutline ? static_cast<const VectorizerConfiguration &>(oConf) : static_cast<const VectorizerConfiguration &>(cConf); TVectorImageP vi = vectorize(image, rect, config, m_transformation); StrokesData *sd = new StrokesData(); std::set<int> indexes; for (i = 0; i < vi->getStrokeCount(); i++) indexes.insert(i); sd->setImage(vi, indexes); return sd; }