From 2e10e1cfbf8be49370b3c115b6f5e004a8e8edf0 Mon Sep 17 00:00:00 2001 From: ankit-kumar-dwivedi Date: Nov 29 2019 17:41:40 +0000 Subject: added UIInterface to vectorizer and some refactoring --- diff --git a/synfig-studio/src/gui/canvasview.cpp b/synfig-studio/src/gui/canvasview.cpp index b5c7a78..8e2059e 100644 --- a/synfig-studio/src/gui/canvasview.cpp +++ b/synfig-studio/src/gui/canvasview.cpp @@ -300,16 +300,20 @@ public: amount_complete(int current, int total) { float cur_progress=(float)current/(float)total; - if(cur_progress>0.0 && cur_progress<100) + + if(cur_progress>0.0 && cur_progress<1.0) { view->statusbar->hide(); view->progressbar->show(); - view->progressbar->set_fraction((float)current/(float)total); + view->progressbar->set_fraction((float)cur_progress); return true; } - view->statusbar->show(); - view->progressbar->hide(); - + if(cur_progress == 1.0) + { + view->statusbar->show(); + view->progressbar->hide(); + } + if(!view->is_playing()) { if(!view->working_depth) diff --git a/synfig-studio/src/synfigapp/actions/vectorization.cpp b/synfig-studio/src/synfigapp/actions/vectorization.cpp index fd0a4c4..3ae48f1 100644 --- a/synfig-studio/src/synfigapp/actions/vectorization.cpp +++ b/synfig-studio/src/synfigapp/actions/vectorization.cpp @@ -237,11 +237,12 @@ Action::Vectorization::perform() studio::VectorizerCore vCore; synfig::Layer_Bitmap::Handle image_layer = synfig::Layer_Bitmap::Handle::cast_dynamic(layer); - Gamma gamma = layer->get_canvas()->get_root()->rend_desc().get_gamma(); + // result of vectorization (vector of outline layers) + Gamma gamma = layer->get_canvas()->get_root()->rend_desc().get_gamma(); gamma.invert(); - // result of vectorization (vector of outline layers) - std::vector< etl::handle > Result = vCore.vectorize(image_layer, configuration, gamma); + const etl::handle ui_interface = get_canvas_interface()->get_ui_interface(); + std::vector< etl::handle > Result = vCore.vectorize(image_layer,ui_interface, configuration, gamma); synfig::Canvas::Handle child_canvas; child_canvas=synfig::Canvas::create_inline(layer->get_canvas()); diff --git a/synfig-studio/src/synfigapp/actions/vectorization.h b/synfig-studio/src/synfigapp/actions/vectorization.h index 93d9085..84bc045 100644 --- a/synfig-studio/src/synfigapp/actions/vectorization.h +++ b/synfig-studio/src/synfigapp/actions/vectorization.h @@ -26,7 +26,6 @@ #define __SYNFIG_APP_ACTION_VECTORIZATION_H /* === H E A D E R S ======================================================= */ - #include #include #include "vectorizer/centerlinevectorizer.h" diff --git a/synfig-studio/src/synfigapp/vectorizer/centerlinevectorizer.cpp b/synfig-studio/src/synfigapp/vectorizer/centerlinevectorizer.cpp index bcb753c..68e86e7 100644 --- a/synfig-studio/src/synfigapp/vectorizer/centerlinevectorizer.cpp +++ b/synfig-studio/src/synfigapp/vectorizer/centerlinevectorizer.cpp @@ -64,7 +64,10 @@ inline void deleteSkeletonList(SkeletonList *skeleton) { //************************ // takes two arguments ( image layer handle, config ) -std::vector< etl::handle > VectorizerCore::centerlineVectorize(etl::handle &image, const CenterlineConfiguration &configuration, const Gamma &gamma) + +std::vector< etl::handle > +VectorizerCore::centerlineVectorize(etl::handle &image,const etl::handle &ui_interface + const CenterlineConfiguration &configuration,const Gamma &gamma) { std::cout<<"Inside CenterlineVectorize\n"; VectorizerCoreGlobals globals; @@ -74,25 +77,7 @@ std::vector< etl::handle > VectorizerCore::centerlineVectorize(et // Extracts a polygonal, minimal yet faithful representation of image contours Contours polygons; studio::polygonize(image, polygons, globals); -// for (int i = 0; i < polygons.size(); ++i) -// { -// for (int j = 0; j < polygons[i].size(); ++j) -// { -// for (int k = 0; k < polygons[i][j].size(); ++k) -// { -// std::cout<<"i= "<amount_complete(3,10); // step 3 // The process of skeletonization reduces all objects in an image to lines, // without changing the essential structure of the image. @@ -100,20 +85,7 @@ std::vector< etl::handle > VectorizerCore::centerlineVectorize(et // Most time-consuming part of vectorization, 'this' is passed to inform of // partial progresses SkeletonList *skeletons = studio::skeletonize(polygons, this, globals); - - // for (SkeletonList::iterator currGraphPtr = skeletons->begin(); currGraphPtr != skeletons->end(); ++currGraphPtr) - // { - // std::cout<<"Skeleton data\n"; - // SkeletonGraph &currGraph = **currGraphPtr; - // std::cout<<"Link Count :"<operator[](0) <<", "<operator[](1)<<", " - // <operator[](2)<<"\n"; - - // } - // } + ui_interface->amount_complete(6,10); if (isCanceled()) { @@ -126,6 +98,7 @@ std::vector< etl::handle > VectorizerCore::centerlineVectorize(et // The raw skeleton data obtained from StraightSkeletonizer // class need to be grouped in joints and sequences before proceeding further studio::organizeGraphs(skeletons, globals); + ui_interface->amount_complete(8,10); // // junctionRecovery(polygons); //Da' problemi per maxThickness > VectorizerCore::centerlineVectorize(et // // step 6 // // Converts each forward or single Sequence of the image in its corresponding Stroke. studio::conversionToStrokes(sortibleResult, globals, image); + ui_interface->amount_complete(9,10); + deleteSkeletonList(skeletons); return sortibleResult; } -std::vector< etl::handle > VectorizerCore::vectorize(const etl::handle &img, const VectorizerConfiguration &c, const Gamma &gamma) +std::vector< etl::handle > +VectorizerCore::vectorize(const etl::handle &img,const etl::handle &ui_interface, const VectorizerConfiguration &c, const Gamma &gamma) { std::vector< etl::handle > result; @@ -158,8 +134,11 @@ std::vector< etl::handle > VectorizerCore::vectorize(const etl::h else { Handle img2(img); - result = centerlineVectorize(img2, static_cast(c), gamma); + + result = centerlineVectorize(img2, ui_interface,static_cast(c), gamma); std::cout<<"After centerlineVectorize result.size(): "<amount_complete(10,10); + return result; } diff --git a/synfig-studio/src/synfigapp/vectorizer/centerlinevectorizer.h b/synfig-studio/src/synfigapp/vectorizer/centerlinevectorizer.h index 2c834f8..1d08905 100644 --- a/synfig-studio/src/synfigapp/vectorizer/centerlinevectorizer.h +++ b/synfig-studio/src/synfigapp/vectorizer/centerlinevectorizer.h @@ -29,6 +29,7 @@ #include #include #include +#include /* === M A C R O S ========================================================= */ /* === T Y P E D E F S ===================================================== */ @@ -69,7 +70,7 @@ public: /*!Calls the appropriate technique to convert \b image to vectors depending on c.*/ - std::vector< etl::handle > vectorize(const etl::handle &image, const VectorizerConfiguration &c, const synfig::Gamma &gamma); + std::vector< etl::handle > vectorize(const etl::handle &image, const etl::handle &ui_interface,const VectorizerConfiguration &c,const synfig::Gamma &gamma); private: std::vector< etl::handle > centerlineVectorize(Handle &image, const CenterlineConfiguration &configuration, const synfig::Gamma &gamma);