Update of /cvsroot/kimageprocess/kimageprocess/src/libkimageprocess In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17877/src/libkimageprocess Modified Files: ktmethod.cpp ktmethod.h ktmethodmanager.cpp ktpatternmanager.cpp ktpatternmanager.h ktplugin.cpp ktplugin.h ktpluginmanager.cpp ktpluginmanager.h ktproject.cpp ktproject.h Log Message: All managers classes now use self() (global instance), which is much better than being passing pointers all around Index: ktproject.cpp =================================================================== RCS file: /cvsroot/kimageprocess/kimageprocess/src/libkimageprocess/ktproject.cpp,v retrieving revision 1.12 retrieving revision 1.13 diff -u -d -r1.12 -r1.13 --- ktproject.cpp 31 Mar 2005 23:56:43 -0000 1.12 +++ ktproject.cpp 23 Jun 2005 03:18:47 -0000 1.13 @@ -25,6 +25,7 @@ #include <kio/netaccess.h> #include <ktempfile.h> #include <klocale.h> +#include <kstaticdeleter.h> #include <qdom.h> #include <qstringlist.h> @@ -36,8 +37,6 @@ : QObject(parent, name)/*, DCOPObject("KImageProcessIface")*/ { - m_patternManager = new KTPatternManager(this); - m_isSaved = false; m_changed = true; } @@ -47,9 +46,26 @@ { } +// Put the static deleter in its anonymous namespace -- why? +namespace +{ + KStaticDeleter<KTProject> sd; +} + +KTProject *KTProject::s_self = 0L; + +KTProject *KTProject::self() +{ + if (!s_self) + sd.setObject(s_self, new KTProject()); + + return s_self; +} + + void KTProject::newProject() { - m_patternManager->clear(); + KTImageManager::self()->clear(); m_isSaved = false; } @@ -116,8 +132,9 @@ void KTProject::closeProject() { - m_patternManager->clear(); + KTImageManager::self()->clear(); m_isSaved = false; + m_changed = false; } bool KTProject::isSaved() @@ -132,22 +149,26 @@ void KTProject::removeSampleImage(KTImage *image) { - m_patternManager->removeSampleImage(image); + m_changed = true; + KTImageManager::self()->removeSampleImage(image); } void KTProject::addSampleImage(const KURL &url) { - m_patternManager->addSampleImage(url); + m_changed = true; + KTImageManager::self()->addSampleImage(url); } void KTProject::removeTestingImage(KTImage *image) { - m_patternManager->removeTestingImage(image); + m_changed = true; + KTImageManager::self()->removeTestingImage(image); } void KTProject::addTestingImage(const KURL &url) { - m_patternManager->addTestingImage(url); + m_changed = true; + KTImageManager::self()->addTestingImage(url); } QString KTProject::generateDoc() @@ -163,7 +184,7 @@ QDomElement samplesGroup = m_doc.createElement("sample_images"); rootElem.appendChild(samplesGroup); - QStringList samples = patternManager()->sampleFileNames(); + QStringList samples = KTImageManager::self()->sampleFileNames(); for (QStringList::Iterator it = samples.begin(); it != samples.end(); ++it) { QDomElement sample = m_doc.createElement("sample"); @@ -174,7 +195,7 @@ QDomElement testingGroup = m_doc.createElement("testing_images"); rootElem.appendChild(testingGroup); - QStringList images = patternManager()->testingFileNames(); + QStringList images = KTImageManager::self()->testingFileNames(); for (QStringList::Iterator it = images.begin(); it != images.end(); ++it) { QDomElement image = m_doc.createElement("image"); @@ -189,14 +210,14 @@ window_size temp; QDomElement option; option = m_doc.createElement("windowType"); - option.setAttribute("value", QString::number(m_patternManager->windowType(), 10)); + option.setAttribute("value", QString::number(KTImageManager::self()->windowType(), 10)); options.appendChild(option); option = m_doc.createElement("numberIterations"); - option.setAttribute("value", QString::number(m_patternManager->numberIterations(), 10)); + option.setAttribute("value", QString::number(KTImageManager::self()->numberIterations(), 10)); options.appendChild(option); - temp = m_patternManager->windowSize(); + temp = KTImageManager::self()->windowSize(); option = m_doc.createElement("windowSize"); option.setAttribute("type", temp.type?"true":"false"); option.setAttribute("x", QString::number(temp.width, 10)); @@ -228,7 +249,9 @@ trOptions = nodes.item(i).toElement(); } - emit aboutToLoad(rootElem); + emit aboutToLoad(rootElem); + + KTImageManager::self()->clear(); // load the sample images from the project QDomNodeList samples = samplesGroup.childNodes(); @@ -268,14 +291,16 @@ QDomElement option = options.item(i).toElement(); if (option.nodeName() == "windowType") - m_patternManager->setWindowType(option.attribute("value").toInt(&ok, 10)); + KTImageManager::self()->setWindowType(option.attribute("value").toInt(&ok, 10)); else if (option.nodeName() == "numberIterations") - m_patternManager->setNumberIterations(option.attribute("value").toInt(&ok, 10)); + KTImageManager::self()->setNumberIterations(option.attribute("value").toInt(&ok, 10)); else if (option.nodeName() == "windowSize") - m_patternManager->setWindowSize((option.attribute("type","true")=="true")? true : false, + KTImageManager::self()->setWindowSize((option.attribute("type","true")=="true")? true : false, option.attribute("x").toInt(&ok, 10), option.attribute("y").toInt(&ok, 10)); } + m_isSaved = true; + m_changed = false; } #include "ktproject.moc" Index: ktmethodmanager.cpp =================================================================== RCS file: /cvsroot/kimageprocess/kimageprocess/src/libkimageprocess/ktmethodmanager.cpp,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- ktmethodmanager.cpp 2 Apr 2005 20:14:52 -0000 1.7 +++ ktmethodmanager.cpp 23 Jun 2005 03:18:47 -0000 1.8 @@ -73,7 +73,6 @@ if (method) { - method->setManager(KTMethodManager::self()); m_methods.insert(method->methodName(), method); kdDebug() << "Loaded method " << method->methodName() << endl; } Index: ktpatternmanager.h =================================================================== RCS file: /cvsroot/kimageprocess/kimageprocess/src/libkimageprocess/ktpatternmanager.h,v retrieving revision 1.12 retrieving revision 1.13 diff -u -d -r1.12 -r1.13 --- ktpatternmanager.h 31 Mar 2005 23:56:43 -0000 1.12 +++ ktpatternmanager.h 23 Jun 2005 03:18:47 -0000 1.13 @@ -51,9 +51,9 @@ * It also generates the SNNS pattern file with the measures from these * pattern images * - * @short A class to manage pattern images + * @short A class to manage images (they being sample or testing images) */ -class KTPatternManager : public QObject +class KTImageManager : public QObject { Q_OBJECT public: @@ -62,9 +62,9 @@ * @param parent The parent of this object * @param name The name */ - KTPatternManager(QObject *parent = 0, const char *name = 0); + KTImageManager(QObject *parent = 0, const char *name = 0); - ~KTPatternManager(); + ~KTImageManager(); /** * Add a new sample image @@ -107,17 +107,17 @@ KTImage *testingImage(); /** - * Generate a SNNS Pattern file. + * Extract data from samples * The file format can be found in the JavaNNS documentation * @param img The pattern image that will be used to generate the pattern file. * @param backend The classification backend to be used * Note that when no @ref img is specified, the pattern file will be generated * using all available pattern images. */ - void generatePatternFile(KTImage *img = 0, KTClassifBackend *backend = 0); + void calculateSampleData(KTImage *img = 0, KTClassifBackend *backend = 0); - /** Generate a SNNS-compatible testing pattern file */ - void generateTestPatFile(KTImage *img, KTClassifBackend *backend = 0); + /** Extract data from testing images */ + void calculateTestData(KTImage *img, KTClassifBackend *backend = 0); /** count the active features */ int activeFeaturesCount(); @@ -136,6 +136,8 @@ window_size windowSize(); void clear(); + + static KTImageManager *self(); private: /** * generate and write results for the current window settings @@ -156,7 +158,8 @@ KAction *m_generatePatAction; - bool m_testingPattern; + static KTImageManager *s_self; + bool m_testingData; signals: /** Emitted when a training pattern is added to this project */ void trPatternAdded(KTImage *image); Index: ktproject.h =================================================================== RCS file: /cvsroot/kimageprocess/kimageprocess/src/libkimageprocess/ktproject.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- ktproject.h 16 Mar 2005 02:52:32 -0000 1.3 +++ ktproject.h 23 Jun 2005 03:18:47 -0000 1.4 @@ -78,12 +78,11 @@ /** Add a training sample image */ void addTestingImage(const KURL &url); - /** Return an instance of the pattern manager */ - KTPatternManager *patternManager() { return m_patternManager; } - /** Return the url of the project */ KURL url() { return m_url; } + static KTProject *self(); + signals: void addToRecent(const KURL &url); void aboutToSave(QDomDocument *doc, QDomElement *rootElem); @@ -96,12 +95,12 @@ /** Load the project from a root element */ void loadProject(QDomElement *rootElem); - KTPatternManager *m_patternManager; KURL m_url; QString m_tmpfile; bool m_isSaved; bool m_changed; + static KTProject *s_self; }; #endif Index: ktpatternmanager.cpp =================================================================== RCS file: /cvsroot/kimageprocess/kimageprocess/src/libkimageprocess/ktpatternmanager.cpp,v retrieving revision 1.29 retrieving revision 1.30 diff -u -d -r1.29 -r1.30 --- ktpatternmanager.cpp 1 Apr 2005 03:14:05 -0000 1.29 +++ ktpatternmanager.cpp 23 Jun 2005 03:18:47 -0000 1.30 @@ -1,5 +1,3 @@ - - /*************************************************************************** * Copyright (C) 2004 by * * Gustavo Pichorim Boiko <gus...@kd...> * @@ -33,18 +31,19 @@ #include <ktempfile.h> #include <kfiledialog.h> #include <kdebug.h> +#include <kstaticdeleter.h> #include <qfile.h> #include <qregexp.h> #include <qvaluelist.h> -KTPatternManager::KTPatternManager(QObject *parent, const char *name) +KTImageManager::KTImageManager(QObject *parent, const char *name) : QObject(parent, name) { // auto-destroy items on delete m_sampleImages.setAutoDelete(true); - m_testingPattern = false; + m_testingData = false; //Set defaults m_window_type = WIN_SEQ; @@ -54,11 +53,27 @@ m_iterations = 0; } -KTPatternManager::~KTPatternManager() +KTImageManager::~KTImageManager() { } -void KTPatternManager::addSampleImage(const KURL &url) +// Put the static deleter in its anonymous namespace -- why? +namespace +{ + KStaticDeleter<KTImageManager> sd; +} + +KTImageManager *KTImageManager::s_self = 0L; + +KTImageManager *KTImageManager::self() +{ + if (!s_self) + sd.setObject(s_self, new KTImageManager()); + + return s_self; +} + +void KTImageManager::addSampleImage(const KURL &url) { KTImage *img = new KTImage(); @@ -71,14 +86,14 @@ emit trPatternAdded(img); } -void KTPatternManager::removeSampleImage( KTImage *image ) +void KTImageManager::removeSampleImage( KTImage *image ) { emit aboutToRemoveTrPattern(image); m_sampleImages.remove(image); } -void KTPatternManager::addTestingImage(const KURL &url) +void KTImageManager::addTestingImage(const KURL &url) { KTImage *img = new KTImage(); @@ -91,14 +106,14 @@ emit testingImageAdded( img ); } -void KTPatternManager::removeTestingImage(KTImage *image) +void KTImageManager::removeTestingImage(KTImage *image) { emit aboutToRemoveTestingImage(image); m_testingImages.remove(image); } -QStringList KTPatternManager::sampleFileNames() +QStringList KTImageManager::sampleFileNames() { QStringList list; KTImage *it; @@ -108,7 +123,7 @@ return list; } -QStringList KTPatternManager::testingFileNames() +QStringList KTImageManager::testingFileNames() { QStringList list; KTImage *it; @@ -119,13 +134,13 @@ } -int KTPatternManager::activeFeaturesCount() +int KTImageManager::activeFeaturesCount() { //returning the number of active features return KTFeatureManager::self()->enabledFeaturesCount(KTMethodManager::self()->activeMethod()->methodName()); } -QStringList KTPatternManager::activeFeatureNames() +QStringList KTImageManager::activeFeatureNames() { QStringList names; FeatureList features = KTFeatureManager::self()->features( @@ -142,13 +157,13 @@ return names; } -void KTPatternManager::generatePatternFile(KTImage *img, KTClassifBackend *backend) +void KTImageManager::calculateSampleData(KTImage *img, KTClassifBackend *backend) { if (img) { int imgClass=1; - if (!m_testingPattern) + if (!m_testingData) { KTImage *it; for ( it = m_sampleImages.first(); it; it = m_sampleImages.next()) @@ -171,7 +186,7 @@ } } -void KTPatternManager::generateWindowResults(KTImage *img, int imgClass, KTClassifBackend *backend) +void KTImageManager::generateWindowResults(KTImage *img, int imgClass, KTClassifBackend *backend) { int i, x, y, width, height, acumm; KTImage *tmpimg; @@ -297,42 +312,42 @@ } } -void KTPatternManager::generateTestPatFile(KTImage *img, KTClassifBackend *backend) +void KTImageManager::calculateTestData(KTImage *img, KTClassifBackend *backend) { int wt = m_window_type; m_window_type = WIN_ALLPIX; - m_testingPattern = true; - KTMethodManager::self()->activeMethod()->setTestingPattern(true); + m_testingData = true; + KTMethodManager::self()->activeMethod()->setTestingData(true); if (img == 0) img = m_testingImages.first(); - generatePatternFile(img, backend); + calculateSampleData(img, backend); - m_testingPattern = false; - KTMethodManager::self()->activeMethod()->setTestingPattern(false); + m_testingData = false; + KTMethodManager::self()->activeMethod()->setTestingData(false); m_window_type = wt; } -void KTPatternManager::setWindowSize(bool type, int height, int width) +void KTImageManager::setWindowSize(bool type, int height, int width) { m_window_size.type = type; m_window_size.height = height; m_window_size.width = width; } -window_size KTPatternManager::windowSize() +window_size KTImageManager::windowSize() { return m_window_size; } -KTImage *KTPatternManager::testingImage() +KTImage *KTImageManager::testingImage() { return m_testingImages.first(); } -void KTPatternManager::clear() +void KTImageManager::clear() { KTImage *img; img = m_sampleImages.first(); Index: ktplugin.h =================================================================== RCS file: /cvsroot/kimageprocess/kimageprocess/src/libkimageprocess/ktplugin.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- ktplugin.h 26 Feb 2005 20:37:42 -0000 1.3 +++ ktplugin.h 23 Jun 2005 03:18:47 -0000 1.4 @@ -25,7 +25,7 @@ #include <kxmlguiclient.h> class KTPluginManager; -class KTPatternManager; +class KTImageManager; /** A base class for our plugins @@ -39,15 +39,7 @@ KTPlugin(QObject *parent = 0, const char *name = 0); virtual ~KTPlugin(); - void setManager(KTPluginManager *manager); - void setImageManager(KTPatternManager *manager); virtual void setupPlugin(); -protected: - KTPluginManager *manager() const; - KTPatternManager *imageManager() const; -private: - KTPluginManager *m_manager; - KTPatternManager *m_imageManager; }; #endif Index: ktpluginmanager.h =================================================================== RCS file: /cvsroot/kimageprocess/kimageprocess/src/libkimageprocess/ktpluginmanager.h,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- ktpluginmanager.h 10 Dec 2004 23:30:52 -0000 1.1.1.1 +++ ktpluginmanager.h 23 Jun 2005 03:18:47 -0000 1.2 @@ -25,8 +25,8 @@ #include <qptrlist.h> class KTPlugin; -class KMainWindow; -class KTPatternManager; +//class KMainWindow; +class KTImageManager; /** A class to manage KImageProcess plugins @@ -37,19 +37,20 @@ { Q_OBJECT public: - KTPluginManager(KMainWindow *parent, const char *name = 0); + KTPluginManager(/*KMainWindow *parent, const char *name = 0*/); ~KTPluginManager(); - void setPatternManager(KTPatternManager *pm); + void setPatternManager(KTImageManager *pm); void loadPlugins(); - KTPatternManager *patternManager() const; + static KTPluginManager *self(); + private: - KMainWindow *m_window; + //KMainWindow *m_window; QPtrList<KTPlugin> m_pluginList; - KTPatternManager *m_patternManager; + static KTPluginManager *s_self; }; #endif Index: ktplugin.cpp =================================================================== RCS file: /cvsroot/kimageprocess/kimageprocess/src/libkimageprocess/ktplugin.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- ktplugin.cpp 19 Feb 2005 22:32:48 -0000 1.2 +++ ktplugin.cpp 23 Jun 2005 03:18:47 -0000 1.3 @@ -30,28 +30,8 @@ { } -void KTPlugin::setManager(KTPluginManager *manager) -{ - m_manager = manager; -} - -KTPluginManager * KTPlugin::manager() const -{ - return m_manager; -} - void KTPlugin::setupPlugin() { } -void KTPlugin::setImageManager(KTPatternManager *manager) -{ - m_imageManager = manager; -} - -KTPatternManager * KTPlugin::imageManager() const -{ - return m_imageManager; -} - #include "ktplugin.moc" Index: ktmethod.h =================================================================== RCS file: /cvsroot/kimageprocess/kimageprocess/src/libkimageprocess/ktmethod.h,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- ktmethod.h 5 Apr 2005 22:49:07 -0000 1.5 +++ ktmethod.h 23 Jun 2005 03:18:47 -0000 1.6 @@ -47,26 +47,18 @@ QString methodName(); QString longName(); - void setManager(KTMethodManager *manager) { m_manager = manager; } - void setFeatureManager(KTFeatureManager *manager) { m_featureManager = manager; } - - void setTestingPattern(bool value) { m_testingPattern = value; } + void setTestingData(bool value) { m_testingData = value; } virtual void *data(int direction) const; - virtual int dataSize(int index = 0) { return 0; } + virtual int dataSize(int index = 0) { Q_UNUSED(index); return 0; } protected: QString m_methodName; QString m_longName; - KTMethodManager *manager() const { return m_manager; } - KTFeatureManager *featureManager() const { return m_featureManager; } - - bool m_testingPattern; -private: - KTMethodManager *m_manager; - KTFeatureManager *m_featureManager; + bool m_testingData; + }; Index: ktpluginmanager.cpp =================================================================== RCS file: /cvsroot/kimageprocess/kimageprocess/src/libkimageprocess/ktpluginmanager.cpp,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- ktpluginmanager.cpp 11 Mar 2005 19:23:59 -0000 1.3 +++ ktpluginmanager.cpp 23 Jun 2005 03:18:47 -0000 1.4 @@ -25,11 +25,11 @@ #include <kmainwindow.h> #include <kparts/componentfactory.h> #include <kdebug.h> +#include <kstaticdeleter.h> -KTPluginManager::KTPluginManager(KMainWindow *parent, const char *name) - : QObject(parent, name) +KTPluginManager::KTPluginManager(/*KMainWindow *parent, const char *name*/) + : QObject() { - m_window = parent; } @@ -37,7 +37,23 @@ { } -void KTPluginManager::loadPlugins( ) +// Put the static deleter in its anonymous namespace -- why? +namespace +{ + KStaticDeleter<KTPluginManager> sd; +} + +KTPluginManager *KTPluginManager::s_self = 0L; + +KTPluginManager *KTPluginManager::self() +{ + if (!s_self) + sd.setObject(s_self, new KTPluginManager()); + + return s_self; +} + +void KTPluginManager::loadPlugins() { KTPlugin *plugin; @@ -56,9 +72,7 @@ if (plugin) { - m_window->guiFactory()->addClient(plugin); - plugin->setManager(this); - plugin->setImageManager( m_patternManager ); + //m_window->guiFactory()->addClient(plugin); kdDebug() << "KTPluginManager: Loaded plugin " << plugin->name() << endl; @@ -67,14 +81,4 @@ } } -void KTPluginManager::setPatternManager( KTPatternManager *pm ) -{ - m_patternManager = pm; -} - -KTPatternManager * KTPluginManager::patternManager() const -{ - return m_patternManager; -} - #include "ktpluginmanager.moc" Index: ktmethod.cpp =================================================================== RCS file: /cvsroot/kimageprocess/kimageprocess/src/libkimageprocess/ktmethod.cpp,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- ktmethod.cpp 2 Apr 2005 20:14:52 -0000 1.4 +++ ktmethod.cpp 23 Jun 2005 03:18:47 -0000 1.5 @@ -27,7 +27,7 @@ KTMethod::KTMethod() { - m_testingPattern = false; + m_testingData = false; } KTMethod::~KTMethod() |