1 /***************************************************************************
2  *                                                                         *
3  *   copyright : (C) 2007 The University of Toronto                        *
4  *                   netterfield@astro.utoronto.ca                         *
5  *   copyright : (C) 2005  University of British Columbia                  *
6  *                   dscott@phas.ubc.ca                                    *
7  *                                                                         *
8  *   This program is free software; you can redistribute it and/or modify  *
9  *   it under the terms of the GNU General Public License as published by  *
10  *   the Free Software Foundation; either version 2 of the License, or     *
11  *   (at your option) any later version.                                   *
12  *                                                                         *
13  ***************************************************************************/
14 
15 #ifndef PHASEPLUGIN_H
16 #define PHASEPLUGIN_H
17 
18 #include <QFile>
19 
20 #include <basicplugin.h>
21 #include <dataobjectplugin.h>
22 
23 class PhaseSource : public Kst::BasicPlugin {
24   Q_OBJECT
25 
26   public:
27     virtual QString _automaticDescriptiveName() const;
28 
29     Kst::VectorPtr vectorTime() const;
30     Kst::VectorPtr vectorData() const;
31     Kst::ScalarPtr scalarPeriod() const;
32     Kst::ScalarPtr scalarZeroPhase() const;
33 
34     virtual void change(Kst::DataObjectConfigWidget *configWidget);
35 
36     void setupOutputs();
37     virtual bool algorithm();
38 
39     virtual QStringList inputVectorList() const;
40     virtual QStringList inputScalarList() const;
41     virtual QStringList inputStringList() const;
42     virtual QStringList outputVectorList() const;
43     virtual QStringList outputScalarList() const;
44     virtual QStringList outputStringList() const;
45 
46     virtual void saveProperties(QXmlStreamWriter &s);
47 
48   protected:
49     PhaseSource(Kst::ObjectStore *store);
50     ~PhaseSource();
51 
52   private:
53     void swap(double* pData[], int iOne, int iTwo);
54     void quicksort(double* pData[], int iLeft, int iRight);
55 
56   friend class Kst::ObjectStore;
57 
58 
59 };
60 
61 
62 class PhasePlugin : public QObject, public Kst::DataObjectPluginInterface {
63     Q_OBJECT
Q_INTERFACES(Kst::DataObjectPluginInterface)64     Q_INTERFACES(Kst::DataObjectPluginInterface)
65     Q_PLUGIN_METADATA(IID "com.kst.DataObjectPluginInterface/2.0")
66   public:
67     virtual ~PhasePlugin() {}
68 
69     virtual QString pluginName() const;
70     virtual QString pluginDescription() const;
71 
pluginType()72     virtual DataObjectPluginInterface::PluginTypeID pluginType() const { return Generic; }
73 
hasConfigWidget()74     virtual bool hasConfigWidget() const { return true; }
75 
76     virtual Kst::DataObject *create(Kst::ObjectStore *store, Kst::DataObjectConfigWidget *configWidget, bool setupInputsOutputs = true) const;
77 
78     virtual Kst::DataObjectConfigWidget *configWidget(QSettings *settingsObject) const;
79 };
80 
81 #endif
82 // vim: ts=2 sw=2 et
83