- Introduced SVG export, which has some issues with dynamical systems (too many paths...
[mldemos:mldemos.git] / _AlgorithmsPlugins / KNN / interfaceKNNDynamic.cpp
1 /*********************************************************************\r
2 MLDemos: A User-Friendly visualization toolkit for machine learning\r
3 Copyright (C) 2010  Basilio Noris\r
4 Contact: mldemos@b4silio.com\r
5 \r
6 This library is free software; you can redistribute it and/or\r
7 modify it under the terms of the GNU Lesser General Public License,\r
8 version 3 as published by the Free Software Foundation.\r
9 \r
10 This library is distributed in the hope that it will be useful, but\r
11 WITHOUT ANY WARRANTY; without even the implied warranty of\r
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\r
13 Lesser General Public License for more details.\r
14 \r
15 You should have received a copy of the GNU Lesser General Public\r
16 License along with this library; if not, write to the Free\r
17 Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.\r
18 *********************************************************************/\r
19 #include "interfaceKNNDynamic.h"\r
20 #include <QPixmap>\r
21 #include <QBitmap>\r
22 #include <QPainter>\r
23 \r
24 using namespace std;\r
25 \r
26 DynamicKNN::DynamicKNN()\r
27 {\r
28         params = new Ui::ParametersKNNDynamic();\r
29         params->setupUi(widget = new QWidget());\r
30 }\r
31 \r
32 void DynamicKNN::SetParams(Dynamical *dynamical)\r
33 {\r
34         if(!dynamical) return;\r
35         int k = params->knnKspin->value();\r
36         int metricType = params->knnNormCombo->currentIndex();\r
37         int metricP = params->knnNormSpin->value();\r
38 \r
39         ((DynamicalKNN *)dynamical)->SetParams(k, metricType, metricP);\r
40 }\r
41 \r
42 Dynamical *DynamicKNN::GetDynamical()\r
43 {\r
44         DynamicalKNN *dynamical = new DynamicalKNN();\r
45         SetParams(dynamical);\r
46         return dynamical;\r
47 }\r
48 \r
49 void DynamicKNN::SaveOptions(QSettings &settings)\r
50 {\r
51         settings.setValue("knnK", params->knnKspin->value());\r
52         settings.setValue("knnNorm", params->knnNormCombo->currentIndex());\r
53         settings.setValue("knnPower", params->knnNormSpin->value());\r
54 }\r
55 \r
56 bool DynamicKNN::LoadOptions(QSettings &settings)\r
57 {\r
58         if(settings.contains("knnK")) params->knnKspin->setValue(settings.value("knnK").toFloat());\r
59         if(settings.contains("knnNorm")) params->knnNormCombo->setCurrentIndex(settings.value("knnNorm").toInt());\r
60         if(settings.contains("knnPower")) params->knnNormSpin->setValue(settings.value("knnPower").toFloat());\r
61         return true;\r
62 }\r
63 \r
64 void DynamicKNN::SaveParams(std::ofstream &file)\r
65 {\r
66         file << "dynamicalOptions" << ":" << "knnK" << " " << params->knnKspin->value() << std::endl;\r
67         file << "dynamicalOptions" << ":" << "knnNorm" << " " << params->knnNormCombo->currentIndex() << std::endl;\r
68         file << "dynamicalOptions" << ":" << "knnPower" << " " << params->knnNormSpin->value() << std::endl;\r
69 }\r
70 \r
71 bool DynamicKNN::LoadParams(char *line, float value)\r
72 {\r
73         if(endsWith(line,"knnK")) params->knnKspin->setValue((int)value);\r
74         if(endsWith(line,"knnNorm")) params->knnNormCombo->setCurrentIndex((int)value);\r
75         if(endsWith(line,"knnPower")) params->knnNormSpin->setValue((int)value);\r
76         return true;\r
77 }\r