X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FmaracasVisuLib%2Fsrc%2Finterface%2FwxWindows%2Fwidgets%2FpPlotter%2FpPlotter.cxx;h=c6d803e05e23014b2513cfbe8f2c00c944754fb8;hb=80b04dc9e3b981e24fe9ae0d81cdeb8af6e6f8c1;hp=769aa45398c039accc201b59d30f2670ef020f43;hpb=c5feadbb145eecf6d73f793535b7e23eb18db2cb;p=creaMaracasVisu.git diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/pPlotter/pPlotter.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/pPlotter/pPlotter.cxx index 769aa45..c6d803e 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/pPlotter/pPlotter.cxx +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/pPlotter/pPlotter.cxx @@ -1,3 +1,28 @@ +/*# --------------------------------------------------------------------- +# +# Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image +# pour la Sant�) +# Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton +# Previous Authors : Laurent Guigues, Jean-Pierre Roux +# CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil +# +# This software is governed by the CeCILL-B license under French law and +# abiding by the rules of distribution of free software. You can use, +# modify and/ or redistribute the software under the terms of the CeCILL-B +# license as circulated by CEA, CNRS and INRIA at the following URL +# http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html +# or in the file LICENSE.txt. +# +# As a counterpart to the access to the source code and rights to copy, +# modify and redistribute granted by the license, users are provided only +# with a limited warranty and the software's author, the holder of the +# economic rights, and the successive licensors have only limited +# liability. +# +# The fact that you are presently reading this means that you have had +# knowledge of the CeCILL-B license and that you accept its terms. +# ------------------------------------------------------------------------ */ + //--------------------------------------------------------------------------------------------- // Class definition include //--------------------------------------------------------------------------------------------- @@ -100,7 +125,7 @@ END_EVENT_TABLE() { SetBackgroundColour(wxColour(255,255,255)); m_plot = new pPlotterWindow( this, -1, wxPoint(0,0), wxSize(nWidth,nHeight), wxSUNKEN_BORDER ); - + actualFunction =NULL; // Adding the axis layers to the plotter m_plot->AddLayer( new pPlotterScaleX() ); m_plot->AddLayer( new pPlotterScaleY() ); @@ -142,14 +167,14 @@ END_EVENT_TABLE() mpWindow* mplotWindow = ((mpWindow*)m_plot); float minReal_X = 0; //(float)mplotWindow->getMinScrX(); float maxReal_X =(float)mplotWindow->getMaxScrX(); - float scrX=(float)mplotWindow->GetScrX()-100; - double scaleX=(scrX/(maxReal_X))* (mplotWindow->getZoomFactor()); // ........ + //float scrX=(float)mplotWindow->GetScrX()-100; // JPRx + //double scaleX=(scrX/(maxReal_X))* (mplotWindow->getZoomFactor()); // JPRx // Creating the color bar with values according to the plotter added widget color_bar = new pColorBar(this, (m_plot->GetSize()).GetWidth(),40, true); - color_bar -> setRepresentedValues (minReal_X, maxReal_X); + color_bar -> setRepresentedValues ((int)minReal_X, (int)maxReal_X); color_bar -> setDeviceBlitStart (70,0); - color_bar -> setVisibleRange (minReal_X, maxReal_X); + color_bar -> setVisibleRange ((int)minReal_X,(int) maxReal_X); color_bar -> setDeviceEndMargin (50); @@ -182,8 +207,9 @@ END_EVENT_TABLE() pPlotter :: ~pPlotter () - { - + { + + } //--------------------------------------------------------------------------------------------- @@ -193,46 +219,49 @@ END_EVENT_TABLE() Set the bars according to the actual function */ - void pPlotter::setAll() +void pPlotter::setAll() { actualFunction = m_plot->getActualFunction(); - if (actualFunction != NULL) { barrange -> setActiveStateTo(true); color_bar -> setActiveStateTo(true); - text.Clear(); text = _T("minX="); double realMin_X = actualFunction->getMinX(); +//EED 2017-09-16 Migration wxWidgets 2.8 to 3.0 +#if wxMAJOR_VERSION <= 2 text = text + realMin_X; +#else + text = text + wxString::FromDouble( realMin_X ); +#endif text = text + _T(" maxX="); double realMax_X = actualFunction->getMaxX(); +//EED 2017-09-16 Migration wxWidgets 2.8 to 3.0 +#if wxMAJOR_VERSION <= 2 text = text + realMax_X; - +#else + text = text + wxString::FromDouble( realMax_X ); +#endif int minShowed = actualFunction->getMinXShowed(); int maxShowed = actualFunction->getMaxXShowed(); - barrange -> setRepresentedValues (realMin_X, realMax_X); barrange->SetStart( minShowed ); barrange->SetEnd( maxShowed ); - - std::vector actualColorPoints; - actualFunction -> getColorPoints(actualColorPoints); + actualFunction->getColorPoints(actualColorPoints); if(actualColorPoints.empty()) - color_bar ->reinitiateColorBar (realMin_X, realMax_X); - else - color_bar ->reinitiateColorBarTo(actualColorPoints); - - color_bar -> setVisibleRange (minShowed, maxShowed); - + { + color_bar->reinitiateColorBar (realMin_X, realMax_X); + } else { + color_bar->reinitiateColorBarTo(actualColorPoints); + } + color_bar->setVisibleRange (minShowed, maxShowed); // Refresh - color_bar -> RefreshForce(); - barrange -> RefreshForce(); - + color_bar->RefreshForce(); + barrange->RefreshForce(); sendTMessage(text); - } + } // if actualFunction } @@ -243,11 +272,10 @@ Set the bars according to the actual function //----------------------------------------------------------------------------------------------------- // Updating methods for occured events in the color bar //----------------------------------------------------------------------------------------------------- -void pPlotter :: onAdded_ColorPoint(wxCommandEvent& event) +void pPlotter::onAdded_ColorPoint(wxCommandEvent& event) { text.Clear(); text = _T( "Last event was on color bar: Color point added, total#"); - actualFunction = m_plot->getActualFunction(); if(actualFunction!=NULL) { @@ -255,41 +283,38 @@ void pPlotter :: onAdded_ColorPoint(wxCommandEvent& event) color_bar ->getAddedColorsPointsList(actualColorPoints); actualFunction -> setColorPoints(actualColorPoints); text << actualColorPoints.size(); - sendTMessage(text); } } + void pPlotter :: onRemoved_ColorPoint(wxCommandEvent& event) { text.Clear(); text = _T( "Last event on color bar: Color point removed total#"); - actualFunction = m_plot->getActualFunction(); std::vector actualColorPoints; color_bar ->getAddedColorsPointsList(actualColorPoints); actualFunction -> setColorPoints(actualColorPoints); text << actualColorPoints.size(); - sendTMessage(text); } + void pPlotter :: onMoved_ColorPoint(wxCommandEvent& event) { text.Clear(); text = _T( "Last event was on color bar: Color point moved to: "); - int lastReal_X = (color_bar->getLastMovedColorPoint())->getRealX(); + int lastReal_X = (int)(color_bar->getLastMovedColorPoint())->getRealX(); text << lastReal_X; - barrange ->setRealX_vertical_line (lastReal_X); barrange -> RefreshForce(); - m_plot->setRealGuideX (lastReal_X); m_plot->UpdateAll(); - sendTMessage(text); } + void pPlotter:: onChanged_ColorPoint(wxCommandEvent& event) { - text.Clear(); + text.Clear(); sendTMessage(_T("Last event was on color bar: Color point changed color")); } @@ -341,20 +366,21 @@ void pPlotter :: onChangeFunction (wxCommandEvent& event) barrange->SetEnd( maxShowed ); std::vector actualColorPoints; - actualFunction -> getColorPoints(actualColorPoints); + actualFunction->getColorPoints(actualColorPoints); if(actualColorPoints.empty()) - color_bar ->reinitiateColorBar (realMin_X, realMax_X); - else - color_bar ->reinitiateColorBarTo(actualColorPoints); - - color_bar -> setVisibleRange (realMin_X, maxShowed); + { + color_bar->reinitiateColorBar (realMin_X, realMax_X); + } else { + color_bar->reinitiateColorBarTo(actualColorPoints); + } + color_bar->setVisibleRange ((int)realMin_X, maxShowed); // Refresh - color_bar -> RefreshForce(); - barrange -> RefreshForce(); + color_bar->RefreshForce(); + barrange->RefreshForce(); sendTMessage(text); - } + } // if actualFunction } @@ -413,18 +439,17 @@ void pPlotter::onBarrange(wxCommandEvent& event) */ void pPlotter::onActualChange_Bar(wxCommandEvent& event) { - text.Clear(); - text = _T( "Last event was on min-max bar: Actual triangle moved to: " ); int lastActual_X = barrange->GetActual(); - - text << lastActual_X; color_bar ->setRealX_vertical_line (lastActual_X); - m_plot->setRealGuideX (lastActual_X); - color_bar -> RefreshForce(); + + m_plot->setRealGuideX(lastActual_X); m_plot->UpdateAll(); + text.Clear(); + text = _T( "Last event was on min-max bar: Actual triangle moved to: " ); + text << lastActual_X; sendTMessage(text); } @@ -440,15 +465,15 @@ void pPlotter::onStartChange_Bar(wxCommandEvent& event) text += wxString::Format(_T("%d"), realMin_X); double realMax_X = m_plot->getMaxScrX(); - color_bar -> setVisibleRange (realMin_X, realMax_X); + color_bar -> setVisibleRange (realMin_X, (int)realMax_X); - m_plot->actualizeViewRange(realMin_X,realMax_X); + m_plot->actualizeViewRange(realMin_X, (int)realMax_X); //setting the plotter for draw the functions that //it has to move. - float startP=(float)barrange->getStartShowPorcentage(); - float endP=(float)barrange->getEndShowPorcentage(); + float startP = (float)barrange->getStartShowPorcentage(); + float endP = (float)barrange->getEndShowPorcentage(); m_plot->moveFunctions(startP,endP); //Updating @@ -461,19 +486,16 @@ void pPlotter::onEndChange_Bar(wxCommandEvent& event) { text.Clear(); text += _T("Last event was on min-max bar: End triangle moved to: "); - int realMax_X = barrange->GetEnd(); + int realMax_X = barrange->GetEnd(); text += wxString::Format(_T("%d"),realMax_X); - double realMin_X = m_plot->getMinScrX(); - color_bar -> setVisibleRange (realMin_X, realMax_X); - m_plot->actualizeViewRange(realMin_X,realMax_X); - - float startP=(float)barrange->getStartShowPorcentage(); - float endP=(float)barrange->getEndShowPorcentage(); + double realMin_X = m_plot->getMinScrX(); + color_bar -> setVisibleRange ((int)realMin_X, realMax_X); + m_plot->actualizeViewRange((int)realMin_X,realMax_X); + float startP = (float)barrange->getStartShowPorcentage(); + float endP = (float)barrange->getEndShowPorcentage(); m_plot->moveFunctions(startP,endP); - color_bar -> RefreshForce(); m_plot -> UpdateAll(); - sendTMessage(text); } @@ -633,8 +655,8 @@ void pPlotter :: sendTMessage(wxString theText) } void pPlotter::eraseColorPoints() { - int min=color_bar->getMinValue(); - int max=color_bar->getMaxValue(); + int min=(int)color_bar->getMinValue(); + int max=(int)color_bar->getMaxValue(); color_bar->reinitiateColorBar(min,max); } @@ -645,10 +667,12 @@ void pPlotter :: sendTMessage(wxString theText) { return barrange->getEndShowPorcentage(); } + float pPlotter::getMinShowedPorcentage() { return barrange->getStartShowPorcentage(); } + float pPlotter::getActualShowedPorcentage() { return barrange->getActualShowPorcentage(); @@ -717,5 +741,52 @@ void pPlotter :: sendTMessage(wxString theText) */ +/** +** Returns two vectors, the grey level of the point and its value, the value is between [0,1] +**/ +void pPlotter::GetValuesPointsFunction(std::vector& greylevel,std::vector& value, int histogramsize) +{ + if(actualFunction != NULL) + { + double* xval = actualFunction->getX_RealValues(); + double* yval = actualFunction->getY_RealValues(); + actualFunction->getScaleY(); + for(int i = 0; i < actualFunction->getSizePoints();i++) + { + greylevel.push_back(xval[i]); + value.push_back(yval[i]/histogramsize); + } // for + } // if +} + +/** +** Returns two vectors, the grey level of the point and its value, the red, green +** and blue value is between [0,1] +**/ +void pPlotter::GetValuesColorPointsFunction(std::vector& greylevel, + std::vector& red, + std::vector& green, + std::vector& blue) +{ + if(color_bar != NULL) + { + std::vector colors; + color_bar->getAddedColorsPointsList(colors); + for(int i = 0; i < colors.size();i++) + { + pColorPoint* pcolor = colors[i]; + greylevel.push_back(pcolor->getRealX()); + wxColour colour = pcolor->getColor(); + double _red = (double)(colour.Red())/255.0; + double _green = (double)(colour.Green())/255.0; + double _blue = (double)(colour.Blue())/255.0; + red.push_back(_red); + green.push_back(_green); + blue.push_back(_blue); + } // for + } // if +} + +