[Kst] [Bug 87017] attempting to fit a curve to a psd crashes kst

netterfield at astro.utoronto.ca netterfield at astro.utoronto.ca
Thu Aug 12 16:04:26 CEST 2004


------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
      
http://bugs.kde.org/show_bug.cgi?id=87017      
netterfield astro utoronto ca changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |FIXED



------- Additional Comments From netterfield astro utoronto ca  2004-08-12 16:04 -------
CVS commit by netterfield: 

Fix for 
Bug 87017: attempting to fit a curve to a psd crashes kst

work toward fixing
Bug 87016: attempting to fit a curve to a histogram crashes kst

BaseCurves now have getXVTag() etc which returns i18n("<None>") if
	they are not defined
The fit dialog now grabs BaseCurves not VCurves, and verifies that
	getXVTag and getYVTag are not <None>.
PSD's now return the proper things in get[XY}VTag().
The PSD's x vector is now the same lenght as the YV as a temp workaround for
Bug 87018 (fit problems)

CCMAIL: 87017-done bugs kde org
CCMAIL: 87016 bugs kde org


  M +7 -2      kstbasecurve.h   1.19
  M +5 -2      kstfitdialog_i.cpp   1.32
  M +6 -7      kstpsdcurve.cpp   1.35
  M +3 -0      kstpsdcurve.h   1.21


--- kdeextragear-2/kst/kst/kstbasecurve.h  #1.18:1.19
 @ -23,4 +23,5  @
 #include <qstring.h>
 #include <qcolor.h>
+#include <klocale.h>
 
 /**A class for handling curves for kst
 @ -29,5 +30,5  @
  */
 
-typedef enum {KST_VCURVE, KST_PSDCURVE, KST_EQUATIONCURVE, KST_HISTOGRAM, KST_FITCURVE} KstCurveType;
+typedef enum {KST_VCURVE, KST_PSDCURVE, KST_EQUATIONCURVE, KST_HISTOGRAM} KstCurveType;
 
 class KstBaseCurve: public KstDataObject {
 @ -91,4 +92,8  @ public:
   virtual int samplesPerFrame() const { return 1; }
   
+  virtual QString getXVTag() const {return i18n("<None>");}
+  virtual QString getYVTag() const {return i18n("<None>");}
+  virtual QString getYETag() const {return i18n("<None>");}
+  virtual QString getXETag() const {return i18n("<None>");}
   KstPoint Point;
 

--- kdeextragear-2/kst/kst/kstfitdialog_i.cpp  #1.31:1.32
 @ -121,6 +121,6  @ void KstFitDialogI::show_setCurve(const 
                                   const QString& strWindow) {
 
-  KstVCurvePtr  curve;
-  KstVCurveList curves = kstObjectSubList<KstDataObject, KstVCurve>(KST::dataObjectList);
+  KstBaseCurvePtr  curve;
+  KstBaseCurveList curves = kstObjectSubList<KstDataObject, KstBaseCurve>(KST::dataObjectList);
   KstPluginList c = kstObjectSubList<KstDataObject, KstPlugin>(KST::dataObjectList);
   QString new_label;
 @ -136,4 +136,7  @ void KstFitDialogI::show_setCurve(const 
   }
 
+  if ( _xvector==i18n("<None>") ) return;
+  if ( _yvector==i18n("<None>") ) return;
+
    _tagName->setText(newFitPluginString);
 

--- kdeextragear-2/kst/kst/kstpsdcurve.cpp  #1.34:1.35
 @ -10,5 +10,5  @
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
+ *   it under the terms of the GNU Geeral Public License as published by  *
  *   the Free Software Foundation; either version 2 of the License, or     *
  *   (at your option) any later version.                                   *
 @ -167,5 +167,5  @ void KstPSDCurve::commonConstructor(cons
   last_n_new = 0;
 
-  KstVectorPtr iv = new KstVector(in_tag+"-freq", 2);
+  KstVectorPtr iv = new KstVector(in_tag+"-freq", PSDLen);
   KST::addVectorToList(iv);
   _fVector = _outputVectors.insert(FVECTOR, iv);
 @ -221,5 +221,5  @ KstObject::UpdateType KstPSDCurve::updat
   KstVectorPtr iv = _inputVectors[INVECTOR];
 
-  double *psd;
+  double *psd,  *f;
 
   if (KstObject::checkUpdateCounter(update_counter))
 @ -245,7 +245,9  @ KstObject::UpdateType KstPSDCurve::updat
 
   psd = (*_sVector)->value();
+  f = (*_fVector)->value();
 
   for (i_samp = 0; i_samp < PSDLen; i_samp++) {
     psd[i_samp] = 0;
+    f[i_samp] = i_samp*0.5*Freq/( PSDLen-1 );
   }
 
 @ -336,8 +338,4  @ KstObject::UpdateType KstPSDCurve::updat
   MeanX = MaxX/2.0;
 
-  double *f = (*_fVector)->value();
-  f[0] = 0;
-  f[1] = Freq/2.0;
-
   (*_sVector)->update(update_counter);
   (*_fVector)->update(update_counter);
 @ -424,4 +422,5  @ void KstPSDCurve::_adjustLengths() {
     PSDLen = psdlen;
     (*_sVector)->resize(PSDLen);
+    (*_fVector)->resize(PSDLen);
 
     ALen = PSDLen*2;

--- kdeextragear-2/kst/kst/kstpsdcurve.h  #1.20:1.21
 @ -74,4 +74,7  @ public:
   virtual void _showDialog();
 
+  virtual QString getXVTag() const {return (*_fVector)->tagName();}
+  virtual QString getYVTag() const {return (*_sVector)->tagName();}
+
 private:
   double Freq;



More information about the Kst mailing list