Summary: | Inconsistent UI in regard to color palette | ||
---|---|---|---|
Product: | [Applications] kst | Reporter: | Andrew Walker <arwalker> |
Component: | general | Assignee: | kst |
Status: | RESOLVED FIXED | ||
Severity: | wishlist | ||
Priority: | NOR | ||
Version: | 1.x | ||
Target Milestone: | --- | ||
Platform: | unspecified | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: |
Description
Andrew Walker
2006-06-21 20:46:08 UTC
SVN commit 553980 by arwalker: CCBUG:129598 Add palette visualisation to csd dialog M +21 -3 csddialogwidget.ui M +33 -0 kstcsddialog_i.cpp M +2 -1 kstcsddialog_i.h --- trunk/extragear/graphics/kst/src/libkstapp/csddialogwidget.ui #553979:553980 @@ -9,9 +9,12 @@ <x>0</x> <y>0</y> <width>549</width> - <height>462</height> + <height>488</height> </rect> </property> + <property name="caption"> + <string>CSDDialogWidget</string> + </property> <grid> <property name="name"> <cstring>unnamed</cstring> @@ -158,7 +161,7 @@ </property> <widget class="QLayoutWidget" row="0" column="0"> <property name="name"> - <cstring>layout47</cstring> + <cstring>layout10</cstring> </property> <hbox> <property name="name"> @@ -204,13 +207,22 @@ <bool>false</bool> </property> </widget> + <widget class="QLabel"> + <property name="name"> + <cstring>_paletteDisplay</cstring> + </property> + <property name="text"> + <string></string> + </property> + </widget> </hbox> </widget> </grid> </widget> </grid> </widget> -<layoutdefaults spacing="6" margin="11"/> +<customwidgets> +</customwidgets> <tabstops> <tabstop>_vector</tabstop> <tabstop>_windowSize</tabstop> @@ -223,4 +235,10 @@ <include location="global" impldecl="in declaration">kst_export.h</include> </includes> <exportmacro>KST_EXPORT</exportmacro> +<layoutdefaults spacing="6" margin="11"/> +<includehints> + <includehint>vectorselector.h</includehint> + <includehint>fftoptionswidget.h</includehint> + <includehint>curveplacementwidget.h</includehint> +</includehints> </UI> --- trunk/extragear/graphics/kst/src/libkstapp/kstcsddialog_i.cpp #553979:553980 @@ -61,6 +61,8 @@ _w = new CSDDialogWidget(_contents); setMultiple(true); connect(_w->_vector, SIGNAL(newVectorCreated(const QString&)), this, SIGNAL(modified())); + connect(_w->_palette, SIGNAL(highlighted(const QString&)), this, SLOT(updatePalette(const QString&))); + connect(_w->_palette, SIGNAL(activated(const QString&)), this, SLOT(updatePalette(const QString&))); //for multiple edit mode connect(_w->_kstFFTOptions->Apodize, SIGNAL(clicked()), this, SLOT(setApodizeDirty())); @@ -147,6 +149,37 @@ } +void KstCsdDialogI::updatePalette(const QString& palette) { + KPalette* newPal = new KPalette(palette); + QColor color; + int nrColors = newPal->nrColors(); + int height = _w->_paletteDisplay->contentsRect().height(); + int width = 7 * height; + QPixmap pix(width, height); + QPainter p(&pix); + int size; + int step = 1; + int pos = 0; + int i; + + size = width / nrColors; + if (size == 0) { + size = 1; + step = nrColors / width; + } + + p.fillRect(p.window(), QColor("white")); + for (i=0; i<nrColors; i+=step) { + color = newPal->color(i); + p.fillRect(pos*size, 0, size, height, QBrush(color)); + ++pos; + } + _w->_paletteDisplay->setPixmap(pix); + + delete newPal; +} + + /* returns true if succesful */ bool KstCsdDialogI::newObject() { QString tag_name = _tagName->text(); --- trunk/extragear/graphics/kst/src/libkstapp/kstcsddialog_i.h #553979:553980 @@ -64,7 +64,8 @@ void setApodizeDirty(); void setRemoveMeanDirty(); void setInterleavedDirty(); - + void updatePalette(const QString& palette); + private: static const QString& defaultTag; void fillFieldsForEdit(); SVN commit 554016 by dhanson: CCBUG:129598 i find that the psds calculated with psdcalculator differ from those calculated by KstPSD because of normalization. i've reverted PSDCalculator to the original normalization- but I can't see that I've done anything wrong. M +12 -2 psdcalculator.cpp --- trunk/extragear/graphics/kst/src/libkstmath/psdcalculator.cpp #554015:554016 @@ -33,7 +33,7 @@ #define PSDMINLEN 2 #define PSDMAXLEN 27 -double PSDCalculator::cabs2(double r, double i) { +inline double PSDCalculator::cabs2(double r, double i) { return r*r + i*i; } @@ -184,7 +184,7 @@ updateWindowFxn(apodizeFxn, gaussianSigma); } - int currentCopyLen; + int currentCopyLen, nsamples = 0; int i_samp, i_subset, ioffset; memset(output, 0, sizeof(double)*outputLen); // initialize output. @@ -246,6 +246,8 @@ } } + nsamples += currentCopyLen; + rdft(_awLen, 1, _a); //real discrete fourier transorm on _a. output[0] += _a[0] * _a[0]; @@ -255,6 +257,9 @@ } } + // FIXME: NORMALIZATION. + /* This normalization doesn't give the same results as the original KstPSD. + double frequencyStep = .5*(double)inputSamplingFreq/(double)(outputLen-1); //normalization factors which were left out earlier for speed. @@ -262,7 +267,12 @@ // - /(_awLen*_awLen) for the constant Wss from numerical recipes in C. (ensure that the window function agrees with this.) // - /i_subset to average the powers in all the subsets. double norm = 2.0/(double)_awLen/(double)_awLen/(double)i_subset; + */ + // original normalization + double frequencyStep = 2.0*(double)inputSamplingFreq/(double)nsamples; //OLD value for frequencyStep. + double norm = 2.0/(double)nsamples*2.0/(double)nsamples; //OLD value for norm. + switch (outputType) { default: case PSDAmplitudeSpectralDensity: // amplitude spectral density (default) [V/Hz^1/2] SVN commit 554349 by arwalker: BUG:129598 Use widget for color palette selection for consistency of UI elements across dialogs M +67 -99 libkstapp/csddialogwidget.ui M +67 -93 libkstapp/imagedialogwidget.ui M +3 -45 libkstapp/kstcsddialog_i.cpp M +0 -1 libkstapp/kstcsddialog_i.h M +24 -79 libkstapp/kstimagedialog_i.cpp M +0 -1 libkstapp/kstimagedialog_i.h M +99 -91 libkstapp/kstsettingsdlg.ui M +9 -25 libkstapp/kstsettingsdlg.ui.h M +2 -1 widgets/Makefile.am A widgets/colorpalettewidget.ui A widgets/colorpalettewidget.ui.h [License: no copyright] |