summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--2004/i/nono/runtime/rc/poids19
-rw-r--r--2004/i/nono/src/GNUmakefile2
-rw-r--r--2004/i/nono/src/ovision/Makefile.defs9
-rw-r--r--2004/i/nono/src/ovision/adjust.cc51
-rw-r--r--2004/i/nono/src/ovision/comm.cc54
-rw-r--r--2004/i/nono/src/ovision/comm.h5
-rw-r--r--2004/i/nono/src/ovision/imgFile.cc2
-rw-r--r--2004/i/nono/src/ovision/map.cc15
-rw-r--r--2004/i/nono/src/ovision/map.h9
-rw-r--r--2004/i/nono/src/ovision/oconfig.cc3
-rw-r--r--2004/i/nono/src/ovision/palet.jpgbin0 -> 4093 bytes
-rw-r--r--2004/i/nono/src/ovision/segmNN.cc19
-rw-r--r--2004/i/nono/src/ovision/test.cc2
-rw-r--r--2004/i/nono/src/ovision/testmap.cc30
-rw-r--r--2004/i/nono/src/ovision/ui.cc104
15 files changed, 204 insertions, 120 deletions
diff --git a/2004/i/nono/runtime/rc/poids b/2004/i/nono/runtime/rc/poids
index 503bc69..7aa2029 100644
--- a/2004/i/nono/runtime/rc/poids
+++ b/2004/i/nono/runtime/rc/poids
@@ -1,10 +1,13 @@
-RGB
-2 // Index de la couleur des balles
+YUV
+1 // Index de la couleur des balles
4 // Index de la couleur des poteaux
#index #x1 x2 x3
-0 53 245 3
-1 31 0 245
-2 85 0 1
-3 68 245 235
-4 46 212 46
-5 136 233 7
+0 80 220 30
+1 200 208 230
+2 30 220 220
+3 31 215 220
+4 47 128 49
+5 220 220 97
+0 116 5 63
+369 35 212 184
+-72538984 140 221 61
diff --git a/2004/i/nono/src/GNUmakefile b/2004/i/nono/src/GNUmakefile
index 354c5f8..c37b07a 100644
--- a/2004/i/nono/src/GNUmakefile
+++ b/2004/i/nono/src/GNUmakefile
@@ -32,7 +32,7 @@ alltargets: $(TARGETS)
| sed 's/\($*\)\.o[ :]*/\1.o .dep\/$*.d : /g' > $@; \
[ -s $@ ] || rm -f $@
--include $(foreach target, $(TARGETS) $(subst .,_,$(LIBS)), $(patsubst %.cc, .dep/%.d, $(filter %.cc, $($(target)_SOURCES))))
+#-include $(foreach target, $(TARGETS) $(subst .,_,$(LIBS)), $(patsubst %.cc, .dep/%.d, $(filter %.cc, $($(target)_SOURCES))))
.dep:
mkdir .dep
diff --git a/2004/i/nono/src/ovision/Makefile.defs b/2004/i/nono/src/ovision/Makefile.defs
index 766b374..79dba10 100644
--- a/2004/i/nono/src/ovision/Makefile.defs
+++ b/2004/i/nono/src/ovision/Makefile.defs
@@ -1,13 +1,16 @@
-TARGETS += test_ovision testimg
+TARGETS += test_ovision testimg testmap
LIBS += ovision.a
+
testimg_SOURCES = testimg.cc ovision.a video4linux.a
test_ovision_SOURCES = testmap.cc ovision.a
-ovision_a_SOURCES = img.cc group.cc oconfig.cc map.cc \
- segmNN.cc
+testmap_SOURCES = testmap.cc ovision.a image.a
+ovision_a_SOURCES = img.cc group.cc oconfig.cc map.cc segmNN.cc space.cc
testimg: $(testimg_SOURCES:%.cc=%.o)
test_ovision: $(test_ovision_SOURCES:%.cc=%.o)
+testmap: $(testmap_SOURCES:%.cc=%.o)
+
ovision.a: ${ovision_a_SOURCES:%.cc=ovision.a(%.o)}
diff --git a/2004/i/nono/src/ovision/adjust.cc b/2004/i/nono/src/ovision/adjust.cc
index 6652598..682a8d9 100644
--- a/2004/i/nono/src/ovision/adjust.cc
+++ b/2004/i/nono/src/ovision/adjust.cc
@@ -14,7 +14,7 @@ using namespace std;
int window;
Comm *comm;
-
+int point[3][2] = {{-1,-1},{-1,-1},{-1,-1}};
/// Sortie du programme
void
@@ -93,7 +93,7 @@ LoadImage(int width, int height, unsigned char *data, unsigned int lastTex)
//glTexImage2D(GL_TEXTURE_2D, 0, 3, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, data);
gluBuild2DMipmaps(GL_TEXTURE_2D, 3, width, height, GL_RGB, GL_UNSIGNED_BYTE, data);
- // OConfig des parametres
+ // Config des parametres
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
@@ -187,6 +187,16 @@ DrawGLScene()
for (int i=0; i<NBIMG; i++)
DrawImage(i);
+ // Dessine points de calibration de la distance
+ for (int i=0; i<3; i++)
+ {
+ if (point[i][0] >= 0)
+ glBegin(GL_POINTS);
+ glVertex3f(point[i][0], point[i][1], -0.7f);
+ glEnd();
+ }
+
+
glFlush();
// Affiche le buffer suivant
@@ -206,6 +216,41 @@ KeyPressed(unsigned char key, int x, int y)
}
}
+/// Gestion souris
+void
+MouseFunc(int button, int state, int x, int y)
+{
+ if (state == GLUT_UP)
+ {
+ if ((x < 352+BORDER) && (y < 288+BORDER) && (x > BORDER) && (y > BORDER))
+ {
+ int i=0;
+ if (button == GLUT_LEFT_BUTTON)
+ while(i < 3)
+ {
+ if (point[i][0] < 0)
+ {
+ point[i][0] = x;
+ point[i][1] = y;
+ i=3;
+ }
+ i++;
+ }
+ else if (button == GLUT_RIGHT_BUTTON)
+ while(i<3)
+ {
+ if ((abs(point[i][0] - x) < 5) && (abs(point[i][1] -y) < 5))
+ {
+ point[i][0] = -1;
+ point[i][1] = -1;
+ i=3;
+ }
+ i++;
+ }
+ }
+ cout << "x : " << x << " " << y << endl;
+ }
+}
/// Fonction principale
int
@@ -223,7 +268,7 @@ main(int argc, char **argv)
InitGL(WIDTH, HEIGHT);
// Init de comm
- comm = new Comm("palet.jpg");
+ comm = new Comm("im.jpg");
//Initialisation des signal handlers
signal(SIGUSR1, ExecuteUiCmds);
diff --git a/2004/i/nono/src/ovision/comm.cc b/2004/i/nono/src/ovision/comm.cc
index 8b0199e..6c98771 100644
--- a/2004/i/nono/src/ovision/comm.cc
+++ b/2004/i/nono/src/ovision/comm.cc
@@ -12,7 +12,7 @@ using namespace std;
#include "comm.h"
#include "adjust.h"
-
+#include <IL/il.h>
/// Constructeur
/// @param *filename nom de l'image a utiliser
@@ -32,27 +32,27 @@ Comm::Comm(char *filename)
fprintf(file, "%li\n", pid);
fclose(file);
- // Creation de config
- config = new OConfig("vision.conf");
+ // Creation de oconfig
+ oconfig = new OConfig("rc/vision.conf");
// Ouverture de l'image pilote et stockage
img.ReadRaw(filename);
tex[0] = LoadImage(img.width, img.height, img.tabData, tex[0]);
- // Conversion en RGB et stockage
+ // Conversion en YUV et stockage
img.RGBtoYUV();
tex[3] = LoadImage(img.width, img.height, img.tabData, tex[3]);
- // NN configure en RGB ou YUV ?
- if (config->colorMode == RGB) img.ReadRaw(filename);
+ // NN oconfigure en RGB ou YUV ?
+ if (oconfig->colorMode == RGB) img.ReadRaw(filename);
// Allocation memoire pour les images
for (int i=0; i<2; i++)
data[i] = new unsigned char[img.nbPixels*3];
// Initialisation de la segmentation
- segm = new SegmNN(&img, config);
- segm->BuildNN(config->nn_NbCouleurs, LOAD_FROM_FILE);
+ segm = new SegmNN(&img, oconfig);
+ segm->BuildNN(oconfig->nn_NbCouleurs, LOAD_FROM_FILE);
group = new Group(&img, segm);
SegmAndGroup();
@@ -70,7 +70,7 @@ Comm::~Comm()
ilShutDown();
// Liberation de la memoire
- delete config;
+ delete oconfig;
delete segm;
delete group;
delete [] data;
@@ -91,7 +91,7 @@ Comm::SegmAndGroup()
// Creation des groupes
if (group) delete group;
group = new Group(&img, segm);
- group->JumpPoints(config->groupColor);
+ group->JumpPoints(oconfig->groupColor);
group->TabOut();
img.DoImg(group->tabOut, data[1]);
@@ -106,7 +106,7 @@ void
Comm::SendNodes()
{
char buf[10];
- for (int i=0; i < config->nn_NbCouleurs*3; i++)
+ for (int i=0; i < oconfig->nn_NbCouleurs*3; i++)
{
sprintf(buf, "%u\n", segm->node[i]);
write(fifo, buf, 10);
@@ -176,7 +176,7 @@ Comm::ExecuteUiCmds(char *buffer)
// Si on recoit une commande de remise a zero de l'index
if (atoi(cut[NBCOLORTOMERGE]) == -1)
{
- for (int i=0; i<config->nn_NbCouleurs; i++)
+ for (int i=0; i<oconfig->nn_NbCouleurs; i++)
segm->index[i] = i;
}
// Sinon on mix les couleurs
@@ -215,7 +215,7 @@ Comm::ExecuteUiCmds(char *buffer)
// Creation des groupes
group = new Group(&img, segm);
- group->JumpPoints(config->groupColor);
+ group->JumpPoints(oconfig->groupColor);
group->TabOut();
img.DoImg(group->tabOut, data[1]);
@@ -232,17 +232,17 @@ Comm::ExecuteUiCmds(char *buffer)
// Decalage de toutes les couleurs pour supprimer une couleur
unsigned char *pCur;
- pCur = &config->node[numColorToDel*3];
- for(int i=numColorToDel*3; i<config->nn_NbCouleurs*3; i++)
+ pCur = &oconfig->node[numColorToDel*3];
+ for(int i=numColorToDel*3; i<oconfig->nn_NbCouleurs*3; i++)
{
*(pCur) = *(pCur+3);
pCur++;
}
- config->nn_NbCouleurs--;
+ oconfig->nn_NbCouleurs--;
// On refait le NN vu qu'il y a une couleur de moins
- segm->BuildNN(config->nn_NbCouleurs, LOAD_FROM_FILE);
+ segm->BuildNN(oconfig->nn_NbCouleurs, LOAD_FROM_FILE);
segm->ShowNodes();
@@ -255,13 +255,13 @@ Comm::ExecuteUiCmds(char *buffer)
nbNNOutput = atoi(cut[NBNNOUTPUT]);
// Reattribution du nombre de sorties d'origine
- if (nbNNOutput != -1) config->nn_NbCouleurs = nbNNOutput;
+ if (nbNNOutput != -1) oconfig->nn_NbCouleurs = nbNNOutput;
// Recharge du fichier des poids
- config->LoadNNFile();
+ oconfig->LoadNNFile("rc/poids");
// On refait le NN vu qu'il y a une couleur de moins
- segm->BuildNN(config->nn_NbCouleurs, LOAD_FROM_FILE);
+ segm->BuildNN(oconfig->nn_NbCouleurs, LOAD_FROM_FILE);
// On segmente l'image puis on la stocke
SegmAndGroup();
@@ -275,7 +275,7 @@ Comm::ExecuteUiCmds(char *buffer)
break;
case 'g': // Selection du groupe
- config->groupColor = atoi(cut[NUMGROUP]);
+ oconfig->groupColor = atoi(cut[NUMGROUP]);
// On segmente l'image puis on la stocke
SegmAndGroup();
@@ -302,8 +302,8 @@ Comm::ExecuteUiCmds(char *buffer)
img.RGBtoYUV();
tex[3] = LoadImage(img.width, img.height, img.tabData, tex[3]);
- // NN configure en RGB ou YUV ?
- if (!config->colorMode == RGB) img.ReadRaw(filename);
+ // NN oconfigure en RGB ou YUV ?
+ if (!oconfig->colorMode == RGB) img.ReadRaw(filename);
SegmAndGroup();
@@ -328,10 +328,10 @@ Comm::ExecuteUiCmds(char *buffer)
nbColor = atoi(cut[NBCOLORNN]);
// Assignation du nombre de couleurs a isoler par le reseau
- config->nn_NbCouleurs = nbColor;
+ oconfig->nn_NbCouleurs = nbColor;
// Genere aleatoire les poids
- segm->BuildNN(config->nn_NbCouleurs, GENERATE);
+ segm->BuildNN(oconfig->nn_NbCouleurs, GENERATE);
// Apprentissage
segm->TrainNN();
@@ -343,6 +343,10 @@ Comm::ExecuteUiCmds(char *buffer)
SendNodes();
break;
+
+ case 'z':
+ group->ShowZones();
+ break;
}
DrawGLScene();
diff --git a/2004/i/nono/src/ovision/comm.h b/2004/i/nono/src/ovision/comm.h
index 6de692c..123418b 100644
--- a/2004/i/nono/src/ovision/comm.h
+++ b/2004/i/nono/src/ovision/comm.h
@@ -8,13 +8,12 @@
#include "adjust.h"
-#include "img.h"
+#include "imgFile.h"
#include "segmNN.h"
#include "oconfig.h"
#include "group.h"
-
/// Interprete les commandes envoyes par l'interface UI et les executent
class Comm {
@@ -29,7 +28,7 @@ class Comm {
ImgFile img;
/// classe config
- OConfig *config;
+ OConfig *oconfig;
/// classe segmentation
SegmNN *segm;
diff --git a/2004/i/nono/src/ovision/imgFile.cc b/2004/i/nono/src/ovision/imgFile.cc
index 98af37a..e1ba25c 100644
--- a/2004/i/nono/src/ovision/imgFile.cc
+++ b/2004/i/nono/src/ovision/imgFile.cc
@@ -27,6 +27,8 @@ ImgFile::ImgFile(void)
{
// Initialisation de DevIL.
ilInit();
+
+ tabData = NULL;
}
diff --git a/2004/i/nono/src/ovision/map.cc b/2004/i/nono/src/ovision/map.cc
index 288ce52..7f087a0 100644
--- a/2004/i/nono/src/ovision/map.cc
+++ b/2004/i/nono/src/ovision/map.cc
@@ -13,11 +13,12 @@ using namespace std;
/// Constructeurs.
-Map::Map (OConfig *config)
+Map::Map (OConfig *config, Space *space)
{
lock = 0;
Map::config = config;
+ Map::space = space;
posGoal[0] = 105;
posGoal[1] = 0;
@@ -31,10 +32,10 @@ Map::~Map (void)
/// Accessors
const std::list<BALL>::iterator &
-Map::GetCurBall() const
+Map::GetCurBall()
{
checkCurBall = false;
- return CurBall;
+ return curBall;
}
@@ -100,7 +101,7 @@ Map::IsLock()
/// Lock une balle pour savoir quel balle le robot suit
void
-Map::SetLock(int value)
+Map::SetLock(bool value)
{
lock = value;
}
@@ -115,7 +116,7 @@ Map::AddBallsToMap(Group *group)
while (pCur)
{
- if (!Islock())
+ if (!IsLock())
{
pos[0] = pCur->centerx-180;
pos[1] = pCur->centery;
@@ -140,9 +141,9 @@ Map::AddBallsToMap(Group *group)
if (iCur->skepticism < config->skepticism_max)
iCur->skepticism++;
- }
+ } */
pCur = pCur->next;
- */ }
+ }
// TODO decremente d'autre marqueur
diff --git a/2004/i/nono/src/ovision/map.h b/2004/i/nono/src/ovision/map.h
index e0b64a0..c940bca 100644
--- a/2004/i/nono/src/ovision/map.h
+++ b/2004/i/nono/src/ovision/map.h
@@ -7,6 +7,8 @@
#include <list>
#include "group.h"
#include "oconfig.h"
+#include "space.h"
+
#define LOCKED 1
#define UNLOCKED 0
@@ -43,6 +45,7 @@ class Map
{
/// Variables configurables
OConfig *config;
+ Space *space;
/// position des goals
int posGoal[2];
@@ -80,10 +83,10 @@ class Map
int zoneRobot;
/// Permet de savoir si une balle est dans curBall
- bool CheckCurBall;
+ bool checkCurBall;
/// Constructeurs.
- Map (OConfig *config);
+ Map (OConfig *config, Space *space);
/// Destructeur.
~Map (void);
@@ -105,7 +108,7 @@ class Map
/// Accessors
- std::list<BALL>::iterator GetCurBall();
+ const std::list<BALL>::iterator &GetCurBall();
protected:
diff --git a/2004/i/nono/src/ovision/oconfig.cc b/2004/i/nono/src/ovision/oconfig.cc
index 921449e..bdc4c5a 100644
--- a/2004/i/nono/src/ovision/oconfig.cc
+++ b/2004/i/nono/src/ovision/oconfig.cc
@@ -103,8 +103,7 @@ OConfig::OConfig(char *filename) {
color = NULL;
node = NULL;
index = NULL;
- LoadThFile();
- LoadNNFile();
+ LoadNNFile("rc/poids");
}
diff --git a/2004/i/nono/src/ovision/palet.jpg b/2004/i/nono/src/ovision/palet.jpg
new file mode 100644
index 0000000..153ff67
--- /dev/null
+++ b/2004/i/nono/src/ovision/palet.jpg
Binary files differ
diff --git a/2004/i/nono/src/ovision/segmNN.cc b/2004/i/nono/src/ovision/segmNN.cc
index c1d1b75..9d24922 100644
--- a/2004/i/nono/src/ovision/segmNN.cc
+++ b/2004/i/nono/src/ovision/segmNN.cc
@@ -24,6 +24,7 @@ SegmNN::SegmNN(Img *img, OConfig *config) {
node = NULL;
index = NULL;
+ freq = NULL;
tabSegm = NULL;
}
@@ -60,8 +61,15 @@ void SegmNN::BuildNN(int nbOutput, int loadFromFile) {
}
else {
// Charge les poids du NN et l'index des couleurs
- node = config->node;
- index = config->index;
+ delete [] node;
+ node = new unsigned char[nbOutput*3];
+ for (int i = 0; i<nbOutput*3; i++)
+ node[i] = config->node[i];
+ delete [] index;
+ index = new int[nbOutput];
+ for (int i = 0; i<nbOutput; i++)
+ index[i] = config->index[i];
+ freq = new unsigned int[nbOutput];
}
return;
}
@@ -70,11 +78,11 @@ void SegmNN::BuildNN(int nbOutput, int loadFromFile) {
srand((unsigned)time(0));
// Initialisation des noeuds du NN
- if (node) delete [] node;
+ delete [] node;
node = new unsigned char[nbOutput*3];
- if (index) delete [] index;
+ delete [] index;
index = new int[nbOutput];
- if (freq) delete [] freq;
+ delete [] freq;
freq = new unsigned int[nbOutput];
@@ -89,6 +97,7 @@ void SegmNN::BuildNN(int nbOutput, int loadFromFile) {
else if (node[i*3+j] > 220) node[i*3+j] = 220;
}
}
+ cout << "oooooo\n";
}
diff --git a/2004/i/nono/src/ovision/test.cc b/2004/i/nono/src/ovision/test.cc
index 85187f5..1adf09d 100644
--- a/2004/i/nono/src/ovision/test.cc
+++ b/2004/i/nono/src/ovision/test.cc
@@ -17,7 +17,7 @@ using namespace std;
int main(int argc, char **argv) {
Img img;
- OConfig config("vision.conf");
+ OConfig config("rc/vision.conf");
system("rm -Rf NN && mkdir NN");
diff --git a/2004/i/nono/src/ovision/testmap.cc b/2004/i/nono/src/ovision/testmap.cc
index 33dc76e..b6a18a6 100644
--- a/2004/i/nono/src/ovision/testmap.cc
+++ b/2004/i/nono/src/ovision/testmap.cc
@@ -1,27 +1,39 @@
-
+#include "image/raw_loader.h"
#include "map.h"
#include "oconfig.h"
-//#include "group.h"
+#include "group.h"
+#include "space.h"
int
main()
{
- OConfig config("vision.conf");
- Map map(&config);
+ OConfig oconfig("rc/vision.conf");
+
+ Img img;
+// img.ReadRaw("im.jpg");
+ RawLoader rawLoader("im2000.rgb", 360, 296, ImageLoader::rgb);
+ img.load(rawLoader);
+
+ img.RGBtoYUV();
+// img.WriteRGB("test.rgb");
- ImgFile img;
- img.ReadRaw("palet.jpg");
+ Space space(img.width, img.height);
+ space.AddSetupPoint (109, 36, -150, 900);
+ space.AddSetupPoint (84, 102, -150, 600);
+ space.AddSetupPoint (50, 259, -150, 300);
+ space.Setup ();
- SegmNN segmNN(&img, &config);
- segmNN.BuildNN(config.nn_NbCouleurs, LOAD_FROM_FILE);
+ SegmNN segmNN(&img, &oconfig);
+ segmNN.BuildNN(oconfig.nn_NbCouleurs, LOAD_FROM_FILE);
segmNN.Segm();
Group group(&img, &segmNN);
- group.JumpPoints(config.groupColor);
+ group.JumpPoints(oconfig.groupColor);
group.ShowZones();
+ Map map(&oconfig, &space);
map.ShowBalls();
map.AddBallsToMap(&group);
map.ShowBalls();
diff --git a/2004/i/nono/src/ovision/ui.cc b/2004/i/nono/src/ovision/ui.cc
index a94b47b..b40990b 100644
--- a/2004/i/nono/src/ovision/ui.cc
+++ b/2004/i/nono/src/ovision/ui.cc
@@ -25,7 +25,7 @@ using namespace std;
/// Nombre d'items du menu
#define NBITEMS 11
-OConfig config("vision.conf");
+OConfig oconfig("rc/vision.conf");
/// Items du menu principal
char *itemsName[NBITEMS][2] = {{"Move color", "Permet d'ajuster les niveaux d'une couleur"},
@@ -35,7 +35,7 @@ char *itemsName[NBITEMS][2] = {{"Move color", "Permet d'ajuster les niveaux d'un
{"Select color goal", "Selectionne l'index de la couleur des poteaux"},
{"Training", "Entraine le reseau de neurones"},
{"New network", "Regenere de nouveaux poids pour le reseau"},
- {"Cancel changes", "Recharge le fichier de config"},
+ {"Cancel changes", "Recharge le fichier de oconfig"},
{"Save changes", "Sauvegarde les changements dans le fichier"},
{"Quit", "Quitte le programme"},
{NULL, NULL}};
@@ -80,8 +80,8 @@ UI::UI()
curImage = 0;
ParseFileList();
- config.LoadNNFile();
- savedNNColorNumber = config.nn_NbCouleurs;
+ oconfig.LoadNNFile();
+ savedNNColorNumber = oconfig.nn_NbCouleurs;
// Ecriture du PID dans un fichier
long uiPid = getpid();
@@ -142,11 +142,11 @@ UI::UpdateNodes()
char buf[10];
// On parcours toutes les couleurs
- for (int i=0; i < config.nn_NbCouleurs*3; i++)
+ for (int i=0; i < oconfig.nn_NbCouleurs*3; i++)
{
// On lis le fifo et on le copie dans le tableau node
read(fifo, buf, 10);
- config.node[i] = atoi(buf);
+ oconfig.node[i] = atoi(buf);
}
}
@@ -158,7 +158,7 @@ UI::ParseFileList()
{
// On enleve l'ancienne liste et on en cree une nouvelle
char buf[100];
- sprintf(buf, "rm -Rf imagelist ; ls %s | grep -e .jpg -e .JPG -e .png -e .PNG > imagelist", config.imgPath);
+ sprintf(buf, "rm -Rf imagelist ; ls %s | grep -e .jpg -e .JPG -e .png -e .PNG > imagelist", oconfig.imgPath);
system(buf);
FILE *file;
@@ -242,12 +242,12 @@ UI::ChooseColor(int type, int current)
// Nombre d'item a afficher
if (type == NB_COULEUR)
- config.nn_NbCouleurs = 10;
+ oconfig.nn_NbCouleurs = 10;
// Creation des items
- ITEM **colorItem = new ITEM*[config.nn_NbCouleurs+2];
- colorName = new char*[config.nn_NbCouleurs+1];
- for (int i=0; i<config.nn_NbCouleurs; i++)
+ ITEM **colorItem = new ITEM*[oconfig.nn_NbCouleurs+2];
+ colorName = new char*[oconfig.nn_NbCouleurs+1];
+ for (int i=0; i<oconfig.nn_NbCouleurs; i++)
{
colorName[i] = new char[20];
if (type == NUM_COULEUR)
@@ -256,10 +256,10 @@ UI::ChooseColor(int type, int current)
sprintf(colorName[i], "%i", i);
colorItem[i] = new_item(colorName[i] , NULL);
}
- colorName[config.nn_NbCouleurs] = new char[20];
- sprintf(colorName[config.nn_NbCouleurs], "Annuler");
- colorItem[config.nn_NbCouleurs] = new_item(colorName[config.nn_NbCouleurs] , NULL);
- colorItem[config.nn_NbCouleurs+1] = NULL;
+ colorName[oconfig.nn_NbCouleurs] = new char[20];
+ sprintf(colorName[oconfig.nn_NbCouleurs], "Annuler");
+ colorItem[oconfig.nn_NbCouleurs] = new_item(colorName[oconfig.nn_NbCouleurs] , NULL);
+ colorItem[oconfig.nn_NbCouleurs+1] = NULL;
// Creation de la fenetre
WINDOW *colorWindow = newwin(11, 15, 9, 35);
@@ -297,7 +297,7 @@ UI::ChooseColor(int type, int current)
{
case KEY_DOWN: // Touche BAS
// Deplacement dans le menu
- if (col < (int)config.nn_NbCouleurs)
+ if (col < (int)oconfig.nn_NbCouleurs)
{
menu_driver(colorMenu, REQ_DOWN_ITEM);
col++;
@@ -314,7 +314,7 @@ UI::ChooseColor(int type, int current)
break;
}
- if ( (type == NUM_COULEUR) && (col < config.nn_NbCouleurs))
+ if ( (type == NUM_COULEUR) && (col < oconfig.nn_NbCouleurs))
{
// Cree une image de la couleur selectionnee
sprintf(buf, "s %i\n", col);
@@ -325,7 +325,7 @@ UI::ChooseColor(int type, int current)
}
// Cas d'annulation
- if (col == config.nn_NbCouleurs)
+ if (col == oconfig.nn_NbCouleurs)
{
col = -1;
@@ -334,7 +334,7 @@ UI::ChooseColor(int type, int current)
}
// Liberation memoire
- for(int i=0; i<config.nn_NbCouleurs; i++)
+ for(int i=0; i<oconfig.nn_NbCouleurs; i++)
free_item(colorItem[i]);
free_menu(colorMenu);
delwin(colorWindow);
@@ -357,20 +357,20 @@ UI::GoMergeWindow()
char **mergeName;
// Creation des items
- ITEM **mergeItem = new ITEM*[config.nn_NbCouleurs+2];
- mergeName = new char*[config.nn_NbCouleurs+1];
- for (int i=0; i<config.nn_NbCouleurs; i++)
+ ITEM **mergeItem = new ITEM*[oconfig.nn_NbCouleurs+2];
+ mergeName = new char*[oconfig.nn_NbCouleurs+1];
+ for (int i=0; i<oconfig.nn_NbCouleurs; i++)
{
mergeName[i] = new char[20];
- sprintf(mergeName[i], "Couleur %i (%i)", i, config.index[i]);
+ sprintf(mergeName[i], "Couleur %i (%i)", i, oconfig.index[i]);
mergeItem[i] = new_item(mergeName[i] , NULL);
}
// Ajout du choix unmerge a la fin du menu
- mergeName[config.nn_NbCouleurs] = new char[20];
- strcpy(mergeName[config.nn_NbCouleurs], "Unmerge all");
- mergeItem[config.nn_NbCouleurs] = new_item(mergeName[config.nn_NbCouleurs], NULL);
- mergeItem[config.nn_NbCouleurs+1] = NULL;
+ mergeName[oconfig.nn_NbCouleurs] = new char[20];
+ strcpy(mergeName[oconfig.nn_NbCouleurs], "Unmerge all");
+ mergeItem[oconfig.nn_NbCouleurs] = new_item(mergeName[oconfig.nn_NbCouleurs], NULL);
+ mergeItem[oconfig.nn_NbCouleurs+1] = NULL;
// Creation de la fenetre
WINDOW *mergeWindow = newwin(10, 20, 9, 35);
@@ -414,7 +414,7 @@ UI::GoMergeWindow()
case KEY_DOWN: // Touche BAS
// Deplacement dans le menu
- if (col < config.nn_NbCouleurs)
+ if (col < oconfig.nn_NbCouleurs)
{
menu_driver(mergeMenu, REQ_DOWN_ITEM);
col++;
@@ -439,8 +439,8 @@ UI::GoMergeWindow()
if ( item_index(current_item(mergeMenu)) == item_count(mergeMenu)-1)
{
// On remet a zero la table d'index
- for (int i=0; i<config.nn_NbCouleurs; i++)
- config.index[i] = i;
+ for (int i=0; i<oconfig.nn_NbCouleurs; i++)
+ oconfig.index[i] = i;
// Fin de la boucle
end = 1;
@@ -455,11 +455,11 @@ UI::GoMergeWindow()
{
// Memorisation du premier index trouve pour
// le copier dans les autres couleurs choisies
- if (indexColor == -1) indexColor = config.index[i];
+ if (indexColor == -1) indexColor = oconfig.index[i];
sprintf(tmp, " %i", i);
strcat(buf, tmp);
nbColorToMerge++;
- config.index[i]= indexColor;
+ oconfig.index[i]= indexColor;
}
// Flag de fin de boucle
@@ -468,7 +468,7 @@ UI::GoMergeWindow()
break;
}
- if (col != config.nn_NbCouleurs)
+ if (col != oconfig.nn_NbCouleurs)
{
// Cree une image de la couleur selectionnee
sprintf(cmd, "s %i\n", col);
@@ -509,7 +509,7 @@ UI::GoMergeWindow()
// Liberation memoire
- for(int i=0; i<config.nn_NbCouleurs; i++)
+ for(int i=0; i<oconfig.nn_NbCouleurs; i++)
free_item(mergeItem[i]);
free_menu(mergeMenu);
delwin(mergeWindow);
@@ -538,14 +538,14 @@ UI::GoDelColor()
// On supprime la couleur en local
unsigned char *pCur;
- pCur = &config.node[numColor*3];
- for(int i=numColor*3; i<config.nn_NbCouleurs*3; i++)
+ pCur = &oconfig.node[numColor*3];
+ for(int i=numColor*3; i<oconfig.nn_NbCouleurs*3; i++)
{
*(pCur) = *(pCur+3);
pCur++;
}
- config.nn_NbCouleurs--;
+ oconfig.nn_NbCouleurs--;
// Affichage d'info
sprintf(buf, "Couleur %i supprimee\n", numColor);
@@ -559,14 +559,14 @@ void
UI::GoSelectGroup(int type)
{
// Menu de selection de couleur
- int tmp = ChooseColor(NUM_COULEUR, config.groupColor);
+ int tmp = ChooseColor(NUM_COULEUR, oconfig.groupColor);
if (tmp != -1)
{
if (type == BALL)
{
- config.groupColor = tmp;
+ oconfig.groupColor = tmp;
// Envoie d'un signal avec la valeur choisie
char buf[50];
@@ -575,7 +575,7 @@ UI::GoSelectGroup(int type)
}
else if (type == GOAL)
{
- config.goalColor = tmp;
+ oconfig.goalColor = tmp;
}
}
}
@@ -598,7 +598,7 @@ UI::GoChangeColor()
// Affectation des composantes actuelles
for (int i=0; i<3; i++)
- c[i] = config.node[col*3+i];
+ c[i] = oconfig.node[col*3+i];
// Création de la fenetre
WINDOW *colorWindow = newwin(4, 60, 12, 25);
@@ -705,7 +705,7 @@ UI::GoChangeColor()
// Affectation des nouvelles valeurs
for (int i=0; i<3; i++)
- config.node[col*3+i] = c[i];
+ oconfig.node[col*3+i] = c[i];
// Communication avec adjust
sprintf(cmd, "c %i %u %u %u\n", col, c[0], c[1], c[2]);
@@ -826,16 +826,16 @@ UI::Menu()
case 6: // Regeneration de poids
int nbColor;
- nbColor = ChooseColor(NB_COULEUR, config.nn_NbCouleurs);
+ nbColor = ChooseColor(NB_COULEUR, oconfig.nn_NbCouleurs);
if (nbColor != -1)
{
sprintf(buf, "p %i\n", nbColor);
SendSignal(buf);
- if (config.node) delete [] config.node;
- config.node = new unsigned char[nbColor*3];
+ if (oconfig.node) delete [] oconfig.node;
+ oconfig.node = new unsigned char[nbColor*3];
- config.nn_NbCouleurs = nbColor;
+ oconfig.nn_NbCouleurs = nbColor;
// Synchronisation des poids avec adjust
UpdateNodes();
@@ -846,19 +846,19 @@ UI::Menu()
case 7: // Annuler les changements
// Reload du fichier de poids initial
- config.LoadNNFile();
+ oconfig.LoadNNFile();
// Envoie du nombre de couleur initial du NN et reload de l'image
sprintf(buf, "r %i", savedNNColorNumber);
SendSignal(buf);
- config.nn_NbCouleurs = savedNNColorNumber;
+ oconfig.nn_NbCouleurs = savedNNColorNumber;
PrintStatus("Les changements ont ete annules\n");
break;
case 8: // Sauver les changements
// Sauvegarde des poids dans le fichier poids
- config.CreateNNFile("rc/poids", config.colorMode, config.nn_NbCouleurs);
+ oconfig.CreateNNFile("rc/poids", oconfig.colorMode, oconfig.nn_NbCouleurs);
// Reload du NN et de l'image a partir des nouveaux poids
sprintf(buf, "r -1");
@@ -882,9 +882,13 @@ UI::Menu()
if (curImage >= lengthFileList) curImage = 0;
// Envoie de la commande pour le chargement de la nouvelle image
- sprintf(buf, "n %s%s\n", config.imgPath, fileList[curImage]);
+ sprintf(buf, "n %s%s\n", oconfig.imgPath, fileList[curImage]);
SendSignal(buf);
break;
+
+ case 'g':
+ SendSignal("z\n");
+ break;
}
// On affiche le texte d'aide de l'item correspondant