#include "ConvolutionClusteringSetup.h" #include #include #include #include #include #include #include using namespace std; /* * Constructs a ConvolutionClusteringSetup which is a child of 'parent', with the * name 'name' and widget flags set to 'f' * * The dialog will by default be modeless, unless you set 'modal' to * TRUE to construct a modal dialog. */ ConvolutionClusteringSetup::ConvolutionClusteringSetup( ConvolutionClustering *convolPlugin,QWidget* parent, const char* name, bool modal, WFlags fl ) : ConvolutionClusteringSetupData( parent, name, modal, fl ), convolPlugin(convolPlugin),useLogarithmicScale(false) { int a,b,c; convolPlugin->getParameters(a,b,c); widthSlider->setMinValue(1); widthSlider->setMaxValue(a); widthSlider->setValue(c); discretizationSlider->setMinValue(1); discretizationSlider->setMaxValue(2*a); discretizationSlider->setValue(a); thresholdSlider->setValue(b); cerr << "disc=" << a << " thres="<setFont( f ); p->setPen( Qt::black ); //les 20 de plus permetront de placer des légendes sur les axes. double scale=(double)histogram.size()/64; int legendWidth=(int)(20*scale); int borderWidth=(int)(10*scale); int axisWidth=(int)(15*scale); p->setWindow( 0, 0,2*histogram.size()+legendWidth , histogram.size()+legendWidth ); // defines coordinate system p->fillRect(0,0,2*histogram.size()+legendWidth , histogram.size()+legendWidth , QBrush(QColor(255,255,255))); // draw bars QColor c; double histoScale=(double)histogram.size()/(double)maxHistogram; for (unsigned int i=0; isetBrush( c ); if (!useLogarithmicScale) p->drawRect( borderWidth+i*2, borderWidth+1+histogram.size()- (int)((double)histogram[i]*histoScale) , 2 , (int)((double)histogram[i]*histoScale )); else p->drawRect( borderWidth+i*2, borderWidth+1+histogram.size()- (int)(log10(1+(double)histogram[i])*histoScale) , 2 , (int)(log10(1+(double)histogram[i])*histoScale )); } //draw axis p->drawLine(borderWidth,borderWidth,borderWidth,histogram.size()+borderWidth); p->drawLine(borderWidth,histogram.size()+borderWidth,2*histogram.size()+axisWidth,histogram.size()+borderWidth); c.setHsv( 359 , 255, 255 ); //draw local minimum list localMinimum=convolPlugin->getLocalMinimum(); while (!localMinimum.empty()) { int i=localMinimum.front(); localMinimum.pop_front(); p->drawLine(borderWidth+i*2,borderWidth,borderWidth+i*2,histogram.size()+borderWidth); } /* if (!useLogarithmicScale) { if (threshold0) p->drawLine(borderWidth, borderWidth+1+histogram.size()- (int)((double)threshold*histoScale), axisWidth+2*histogram.size(), borderWidth+1+histogram.size()- (int)((double)threshold*histoScale)); } else if ((log10(threshold+1)0)) p->drawLine(borderWidth, borderWidth+1+histogram.size()- (int)(log10(1+(double)threshold)*histoScale), axisWidth+2*histogram.size(), borderWidth+1+histogram.size()- (int)(log10(1+(double)threshold)*histoScale)); */ //draw threshold delete p; }