//===== // Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost) //===== #include "creaVtk_MACROS.h" #include "bbcreaMaracasVisuManualPaint_Model.h" #include "bbcreaMaracasVisuPackage.h" namespace bbcreaMaracasVisu { BBTK_ADD_BLACK_BOX_TO_PACKAGE(creaMaracasVisu,ManualPaint_Model) BBTK_BLACK_BOX_IMPLEMENTATION(ManualPaint_Model,bbtk::AtomicBlackBox); //===== // Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost) //===== //-- Alternativa con openmp -- void ManualPaint_Model::LstPointOMPAnalice() { printf("EED ManualPaint_Model::LstPointOMPAnalice\n" ); printf("EED FillFilter::Run ojo toca limpiar bien el codigo _px px ...... \n"); printf("EED FillFilter::Run ojo toca limpiar bien el codigo _px px ...... \n"); printf("EED FillFilter::Run ojo toca limpiar bien el codigo _px px ...... \n"); printf("EED FillFilter::Run ojo toca limpiar bien el codigo _px px ...... \n"); printf("EED ManualPaint_Model::LstPointOMPAnalice Start \n"); //-- Alternativa con openmp -- // A. Create copie of index original list => lst1 // B. if list1 es not empty do.. // B.1. Create copy of lst1 to lst2 // B.2. For each element of lst2 (incrimental) check the distance of the rest of the list (decremental) and take it out // B.3. openmp sobre la La lst2 que queda (PaintImage) // B.4. Quitar los elementos de lst2 en lst1 y recomenzar desde el punto B; double distMin,dist2Min; if (bbGetInputTool()==0) { distMin=bbGetInputBrushSize(); } else { distMin=bbGetInputDistanceFill(); } dist2Min=distMin*distMin*1.2; // A. Create copie of index original list => lst1 std::vector lst1; int i1,size1 = bbGetInputByLstPointsX().size(); for (i1=0;i1 lst2; for (i1=0;i1i2 ; i3-- ) { dx = bbGetInputByLstPointsX()[ lst2[i2] ]-bbGetInputByLstPointsX()[ lst2[i3] ]; dy = bbGetInputByLstPointsY()[ lst2[i2] ]-bbGetInputByLstPointsY()[ lst2[i3] ]; dz = bbGetInputByLstPointsZ()[ lst2[i2] ]-bbGetInputByLstPointsZ()[ lst2[i3] ]; dist2 = dx*dx +dy*dy + dz*dz ; if (dist2PaintImage( bbGetInputByLstPointsX()[ lst2[i2] ] , bbGetInputByLstPointsY()[ lst2[i2] ] , bbGetInputByLstPointsZ()[ lst2[i2] ] ); } // for i2 // B.4. Quitar los elementos de lst2 en lst1 y recomenzar desde el punto B; for (i2=0;i2SetActive( bbGetInputActive() ); manualpaintmodel->SetTool( bbGetInputTool() ); manualpaintmodel->Set2D3D( bbGetInput2D3D() ); manualpaintmodel->SetImages( bbGetInputImage(),bbGetInputImage2() ); manualpaintmodel->SetGrayLevel( bbGetInputGrayLevel() ); manualpaintmodel->SetDirection( bbGetInputDirection() ); manualpaintmodel->SetBrushSize( bbGetInputBrushSize() ); manualpaintmodel->SetBrushForm( bbGetInputBrushForm() ); manualpaintmodel->SetToleranceFill( bbGetInputToleranceFill() ); manualpaintmodel->SetDistanceFill( bbGetInputDistanceFill() ); manualpaintmodel->SetRangeMin( bbGetInputRange()[0] ); manualpaintmodel->SetRangeMax( bbGetInputRange()[1] ); if (bbGetInputPoint().size()==3) { manualpaintmodel->PaintImage( bbGetInputPoint()[0] , bbGetInputPoint()[1] , bbGetInputPoint()[2] ); manualpaintmodel->SetUndoImage(); manualpaintmodel->Copy_GeneralAuxFill_to_Results(); } // if Points if ( bbGetInputByLstPointsX().size()!=0 ) { //-- Alternativa con openmp -- // LstPointOMPAnalice(); // /* -- Original ByLstPoints sin openmp -- int i,size = bbGetInputByLstPointsX().size(); long int k1omp=(double)(size-1)*0.0; long int k2omp=(double)(size-1)*0.2; long int k3omp=(double)(size-1)*0.4; long int k4omp=(double)(size-1)*0.6; long int k5omp=(double)(size-1)*0.8; long int k6omp=(double)(size-1)*1.0; printf("EED ManualPaint_Model::Process list of points (with openmp) size=%d\n",size); #pragma omp parallel for for (i=0;iPaintImage( bbGetInputByLstPointsX()[i] , bbGetInputByLstPointsY()[i] , bbGetInputByLstPointsZ()[i] ); //_manualPaintModel->SetUndoImage(); // Probably needed. Here is ok. } // for // -- Original ByLstPoints sin openmp --*/ manualpaintmodel->Copy_GeneralAuxFill_to_Results(); }// if ByLstPointsX if ((bbGetInputByImagePoints()!=NULL) && (bbGetInputImage2()!=NULL) ) { // -- Alternativa con openmp -- // Calcular numero de cuadrantes // Recorrer el primer cuadrante // Sacar la lista de todos los cuadrantes con el iElement Listo para analizar // Recorrer la lista con openmp y ejecutar PaintImage ///* -------------------- Original ByImagePoints sin openmp---------------------------- // int ia,ja,ka; // int ii,jj,kk; int ext[6]; //EED 2017-01-01 Migration VTK7 #if VTK_MAJOR_VERSION <= 5 bbGetInputByImagePoints()->GetWholeExtent(ext); #else bbGetInputByImagePoints()->GetExtent(ext); #endif int dimX=ext[1]-ext[0]+1; int dimY=ext[3]-ext[2]+1; int dimZ=ext[5]-ext[4]+1; DEF_POINTER_IMAGE_VTK_CREA(vBIP,sSBIP,pBIP,sTBIP,bbGetInputByImagePoints()); DEF_POINTER_IMAGE_VTK_CREA(vI2,sSI2,pI2,sTI2,bbGetInputImage2()); long int index, size=dimX*dimY*dimZ; long int k1omp=(double)(size-1)*0.0; long int k2omp=(double)(size-1)*0.2; long int k3omp=(double)(size-1)*0.4; long int k4omp=(double)(size-1)*0.6; long int k5omp=(double)(size-1)*0.8; long int k6omp=(double)(size-1)*1.0; printf("EED ManualPaint_Model::Process ByImagePoints (with openmp) size=%d GrayLevel=%f\n",size,(double)bbGetInputGrayLevel()); #pragma omp parallel for for (index=0; index0) { double value2; GETVALUE2_VTK_CREA(value2,pI2,sTI2,index) if (value2==0) { int i = index % dimX; int j = (index % (dimX*dimY)) / dimX; int k = index / (dimX*dimY); manualpaintmodel->PaintImage(i,j,k); // manualpaintmodel->SetUndoImage(); // Probably needed. Here is ok. } // vI2 } // vBIP } // for index manualpaintmodel->Copy_GeneralAuxFill_to_Results(); /* int i,j,k; //#pragma omp parallel for for (k=0;k0) { GETVALUE_VTK_CREA(vI2,pI2,sTI2) if (vI2==0) { manualpaintmodel->PaintImage(i,j,k); // manualpaintmodel->SetUndoImage(); // Probably needed. Here is ok. } // vI2 } // vBIP pBIP = pBIP + sSBIP; pI2 = pI2 + sSI2; }// for i }// for j }// for k //------- Original ByImagePoints sin openmp-------- */ } // if ByImagePoints } else { printf("EED Warning!! creaMaracasVisu::ManualPaint_Model (BBTK) bbInputImage not set. \n"); } // if (bbGetInputImage()!=NULL) } // if active if (bbGetInputImage2()!=NULL) { bbSetOutputOut( bbGetInputImage2() ); } else if (bbGetInputImage()!=NULL) { bbSetOutputOut( bbGetInputImage() ); } else { bbSetOutputOut( NULL ); } bbSetOutputManualpaintmodel( manualpaintmodel ); printf("EED ManualPaint_Model::Process End\n"); } //===== // Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost) //===== void ManualPaint_Model::bbUserSetDefaultValues() { // SET HERE THE DEFAULT INPUT/OUTPUT VALUES OF YOUR BOX // Here we initialize the input 'In' to 0 bbSetInputActive(true); bbSetInputTool(1); // Paint bbSetInput2D3D(1); // 3D bbSetInputImage(NULL); bbSetInputImage2(NULL); bbSetInputGrayLevel(100); bbSetInputDirection(2); // XY bbSetInputBrushSize(3); bbSetInputBrushForm(1); // sphere bbSetInputToleranceFill(50); bbSetInputDistanceFill(25); std::vector point; // point.push_back(0); // point.push_back(0); // point.push_back(0); // bbSetInputPoint(point); std::vector range; range.push_back(0); range.push_back(200); bbSetInputRange(range); bbSetInputByImagePoints(NULL); } //===== // Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost) //===== void ManualPaint_Model::bbUserInitializeProcessing() { // THE INITIALIZATION METHOD BODY : // Here does nothing // but this is where you should allocate the internal/output pointers // if any manualpaintmodel=new ManualPaintModel(); } //===== // Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost) //===== void ManualPaint_Model::bbUserFinalizeProcessing() { // THE FINALIZATION METHOD BODY : // Here does nothing // but this is where you should desallocate the internal/output pointers // if any delete manualpaintmodel; } } // EO namespace bbcreaMaracasVisu