From: <rha...@us...> - 2011-09-26 13:40:55
|
Revision: 382 http://mevislabmodules.svn.sourceforge.net/mevislabmodules/?rev=382&view=rev Author: rhameeteman Date: 2011-09-26 13:40:49 +0000 (Mon, 26 Sep 2011) Log Message: ----------- KH. * fixed small bug with max x value Modified Paths: -------------- trunk/Community/General/Sources/ML/MLCMCurveList/CMCurveFilter/mlCMCurveFilter.cpp trunk/Community/General/Sources/ML/MLCMCurveList/CMCurveFilter/mlCMCurveFilter.h Modified: trunk/Community/General/Sources/ML/MLCMCurveList/CMCurveFilter/mlCMCurveFilter.cpp =================================================================== --- trunk/Community/General/Sources/ML/MLCMCurveList/CMCurveFilter/mlCMCurveFilter.cpp 2011-09-26 13:39:34 UTC (rev 381) +++ trunk/Community/General/Sources/ML/MLCMCurveList/CMCurveFilter/mlCMCurveFilter.cpp 2011-09-26 13:40:49 UTC (rev 382) @@ -129,11 +129,11 @@ if ( f_AutoUpdate->getBoolValue() ){ SetMaxValues(); SetOutputCurve(); - f_OutCurveList->notifyAttachments(); + f_OutCurveList->touch(); } } else { ResetOutput(); - f_OutCurveList->notifyAttachments(); + f_OutCurveList->touch(); } } else @@ -149,8 +149,9 @@ ))){ if ( m_InCurveList != NULL ){ if ( m_InCurveList->getNumCurves() > 0 ){ + SetMaxValues(); SetOutputCurve(); - f_OutCurveList->notifyAttachments(); + f_OutCurveList->touch(); } } } @@ -168,12 +169,12 @@ void CMCurveFilter::SetMaxValues() { - int nCurveSets = 0; - int nCurves = 0; + MLssize_t nCurveSets = 0; + MLssize_t nCurves = 0; if ( m_InCurveList != NULL ){ nCurveSets = m_InCurveList->getNumCurves(); for (int iSet = 0; iSet < nCurveSets; ++iSet ) { - nCurves = mlMax( static_cast<MLssize_t>(nCurves), m_InCurveList->getCurveData( iSet )->getNumSeries() ); + nCurves = mlMax( nCurves, m_InCurveList->getCurveData( iSet )->getNumSeries() ); } } f_NumberOfCurveSets->setIntValue( nCurveSets-1 ); @@ -187,33 +188,34 @@ // Check for valid field values // Curves are numbered from 0 - int nCurveSets = m_InCurveList->getNumCurves(); + size_t nCurveSets = m_InCurveList->getNumCurves(); if ( nCurveSets == 0 ) {return;} - int minSet = mlMax( static_cast<MLint>(0), f_MinCurveSet->getIntValue() ); - int maxSet = mlMax( static_cast<MLint>(minSet), f_MaxCurveSet->getIntValue() ); + size_t minSet = mlMax( static_cast<size_t>(0), static_cast<size_t>(f_MinCurveSet->getIntValue() ) ); + size_t maxSet = mlMax( minSet, static_cast<size_t>( f_MaxCurveSet->getIntValue() ) ); maxSet = mlMin( maxSet, nCurveSets-1 ); - for (int iSet = minSet; iSet <= maxSet; ++iSet ) { + for (size_t iSet = minSet; iSet <= maxSet; ++iSet ) { - int nCurves = m_InCurveList->getCurveData( iSet )->getNumSeries(); + size_t nCurves = m_InCurveList->getCurveData( iSet )->getNumSeries(); if (nCurves == 0 ) {continue;} - int minCurve = mlMax(static_cast<MLint>(0),f_MinCurve->getIntValue() ); - int maxCurve = mlMax(static_cast<MLint>(minCurve), f_MaxCurve->getIntValue() ); + size_t minCurve = mlMax(static_cast<size_t>(0), static_cast<size_t>(f_MinCurve->getIntValue()) ); + size_t maxCurve = mlMax(minCurve, static_cast<size_t>(f_MaxCurve->getIntValue()) ); maxCurve = mlMin(maxCurve, nCurves-1 ); - for (int iCurve = minCurve; iCurve <= maxCurve; ++iCurve ) { + for (size_t iCurve = minCurve; iCurve <= maxCurve; ++iCurve ) { CurveData *curveSet = m_InCurveList->getCurveData( iSet ); CurveData *outputCurve = new CurveData( *curveSet ); outputCurve->clearData(); - std::vector< float > xSeries; - std::vector< float > ySeries; + std::vector< double > xSeries; + std::vector< double > ySeries; // Copy/Crop curve values - bool crop = f_CropCurve->getBoolValue(); - float minX = f_XStart->getFloatValue(); - float maxX = f_XEnd->getFloatValue(); - minX = mlMin(minX,maxX); - for (int iX = 0; iX < curveSet->getPoints(); ++iX ){ - float xValue = curveSet->getXValue( iX ); + const bool crop = f_CropCurve->getBoolValue(); + const double maxX = ( f_XEnd->getFloatValue() < 0 ? + curveSet->getXValue( curveSet->getPoints()-1 ) - f_XEnd->getFloatValue() : + f_XEnd->getFloatValue() ); + const double minX = (f_XStart->getFloatValue() < maxX ? f_XStart->getFloatValue(): maxX) ; + for (MLssize_t iX = 0; iX < curveSet->getPoints(); ++iX ){ + const double xValue = curveSet->getXValue( iX ); if ( !crop || ( (minX<=xValue) && (xValue <= maxX)) ) { ySeries.push_back( curveSet->getYValue( minCurve, iX) ); xSeries.push_back( xValue ); Modified: trunk/Community/General/Sources/ML/MLCMCurveList/CMCurveFilter/mlCMCurveFilter.h =================================================================== --- trunk/Community/General/Sources/ML/MLCMCurveList/CMCurveFilter/mlCMCurveFilter.h 2011-09-26 13:39:34 UTC (rev 381) +++ trunk/Community/General/Sources/ML/MLCMCurveList/CMCurveFilter/mlCMCurveFilter.h 2011-09-26 13:40:49 UTC (rev 382) @@ -112,6 +112,7 @@ BoolField *f_CropCurve; FloatField *f_XStart; FloatField *f_XEnd; + BoolField *f_XEndMax; }; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |