summaryrefslogtreecommitdiff
path: root/2005/i/robert/src/ovision/ui/ui.cc
diff options
context:
space:
mode:
Diffstat (limited to '2005/i/robert/src/ovision/ui/ui.cc')
-rw-r--r--2005/i/robert/src/ovision/ui/ui.cc141
1 files changed, 124 insertions, 17 deletions
diff --git a/2005/i/robert/src/ovision/ui/ui.cc b/2005/i/robert/src/ovision/ui/ui.cc
index 525fca2..7183c4c 100644
--- a/2005/i/robert/src/ovision/ui/ui.cc
+++ b/2005/i/robert/src/ovision/ui/ui.cc
@@ -17,7 +17,7 @@
#include "mainui.hh"
/// Nombre d'items du menu
-#define NBITEMS 12
+#define NBITEMS 13
@@ -27,6 +27,7 @@ char *itemsName[NBITEMS][2] = {{"Move color", "Permet d'ajuster les niveaux d'un
{"Merge colors", "Groupe plusieurs couleurs ensembles"},
{"Object to display", "Selectionne l'object à afficher"},
{"Change object color", "Selectionne l'index de la couleur d'un objet"},
+ {"Change color format", "Selectionne l'index le mode de couleur"},
{"Show objets found", "Affiche les balles et poteaux trouvés"},
{"Training", "Entraine le reseau de neurones"},
{"New network", "Regenere de nouveaux poids pour le reseau"},
@@ -142,7 +143,6 @@ void
UI::updateNodes ()
{
char buf[10];
-
// On parcours toutes les couleurs
for (int i=0; i < oconfig->nnNbColor*3; i++)
{
@@ -244,7 +244,7 @@ UI::chooseColor (const int type, const int current)
// Nombre d'item a afficher
if (type == NB_COULEUR)
- oconfig->nnNbColor = 10;
+ oconfig->nnNbColor = 15;
// Creation des items
ITEM **colorItem = new ITEM*[oconfig->nnNbColor+2];
@@ -264,7 +264,7 @@ UI::chooseColor (const int type, const int current)
colorItem[oconfig->nnNbColor+1] = NULL;
// Creation de la fenetre
- WINDOW *colorWindow = newwin(11, 15, 9, 35);
+ WINDOW *colorWindow = newwin(16, 15, 3, 35);
keypad(colorWindow, TRUE);
// Creation du menu
@@ -340,7 +340,7 @@ UI::chooseColor (const int type, const int current)
free_item(colorItem[i]);
free_menu(colormenu);
delwin(colorWindow);
- colorWindow = newwin(11, 15, 9, 35);
+ colorWindow = newwin(16, 15, 3, 35);
wrefresh(colorWindow);
delwin(colorWindow);
delete [] colorName;
@@ -434,6 +434,92 @@ UI::chooseObject (const int current)
return obj;
}
+/// menu de selection de format de couleur
+int
+UI::chooseColorFormat (const int current)
+{
+ const int nbObjects = 2;
+
+ // Creation des items
+ const char *objectName[15] = {"rgb", "yuv", "annuler"};
+ ITEM **objectItem = new ITEM*[nbObjects+2];
+ for (int i = 0; i < nbObjects+1; ++i)
+ objectItem[i] = new_item(objectName[i], NULL);
+ objectItem[nbObjects+1] = NULL;
+
+ // Creation de la fenetre
+ WINDOW *objectWindow = newwin(7, 18, 12, 45);
+ keypad(objectWindow, TRUE);
+
+ // Creation du menu
+ MENU *objectmenu = new_menu(objectItem);
+ set_menu_win(objectmenu, objectWindow);
+ set_menu_mark(objectmenu, " -> ");
+ post_menu(objectmenu);
+ wrefresh(objectWindow);
+
+ // Affichage d'info
+ printStatus("Utiliser ENTREE pour selectionner le format de couleur\n");
+
+ int car;
+ int obj=0;
+
+ set_current_item(objectmenu, objectItem[current]);
+ obj = current;
+
+ wrefresh(objectWindow);
+
+ while((car = wgetch(objectWindow)) != 10)
+ {
+ switch (car)
+ {
+ case KEY_DOWN: // Touche BAS
+ // Deplacement dans le menu
+ if (obj < nbObjects)
+ {
+ menu_driver(objectmenu, REQ_DOWN_ITEM);
+ obj++;
+ }
+ break;
+
+ case KEY_UP: // Touche HAUT
+ // Deplacement dans le menu
+ if (obj > 0)
+ {
+ menu_driver(objectmenu, REQ_UP_ITEM);
+ obj--;
+ }
+ break;
+ }
+
+// if ( (type == NUM_COULEUR) && (obj < oconfig->nnNbColor))
+// {
+// // Cree une image de la couleur selectionnee
+// sprintf(buf, "s %i\n", obj);
+// sendSignal(buf);
+// }
+
+ wrefresh(objectWindow);
+ }
+
+ // Cas d'annulation
+ if (obj == nbObjects)
+ obj = -1;
+
+ // Liberation memoire
+ for(int i=0; i<nbObjects; i++)
+ free_item(objectItem[i]);
+ free_menu(objectmenu);
+ delwin(objectWindow);
+ objectWindow = newwin(7, 18, 10, 45);
+ wrefresh(objectWindow);
+ delwin(objectWindow);
+
+ // Retourne la valeur choisie par l'utilisateur
+ return obj;
+}
+
+
/// menu de melange de couleurs
@@ -947,11 +1033,11 @@ UI::menu ()
{
int obj;
obj = chooseObject(0);
- if (obj >= 0)
- {
- sprintf(buf, "a %i\n", obj);
- sendSignal(buf);
- }
+ if (obj >= 0)
+ {
+ sprintf(buf, "a %i\n", obj);
+ sendSignal(buf);
+ }
}
break;
@@ -965,20 +1051,41 @@ UI::menu ()
if (col >= 0)
{
std::string name = Group::translateToColorName (obj);
+ for (std::vector<ObjectColor>::iterator iter = oconfig->groupColor.begin ();
+ iter != oconfig->groupColor.end (); ++iter)
+ {
+ if (name == iter->label)
+ {
+ iter->color = col;
+ break;
+ }
+ }
sprintf(buf, "b %s %i\n", name.c_str (), col);
sendSignal(buf);
}
}
}
break;
-
-
- case 5: // Affiche les objets trouvés
+
+ case 5: // Selectionne le mode de couleur
+ {
+ int fc;
+ fc = chooseColorFormat(0);
+ if (fc >= 0)
+ {
+ sprintf(buf, "b %i\n", fc);
+ sendSignal(buf);
+ }
+ }
+ break;
+
+
+ case 6: // Affiche les objets trouvés
showObjectsFound ();
wrefresh (mainWindow);
break;
- case 6: // Entraine le NN
+ case 7: // Entraine le NN
sprintf(buf, "t\n");
sendSignal(buf);
@@ -988,13 +1095,13 @@ UI::menu ()
printStatus ("Réseau de neurones entrainé\n");
break;
- case 7: // Regeneration de poids
+ case 8: // Regeneration de poids
int nbColor;
nbColor = chooseColor (NB_COULEUR, oconfig->nnNbColor);
newNN (nbColor);
break;
- case 8:// Annuler les changements
+ case 9:// Annuler les changements
// Reload du fichier de poids initial
oconfig->loadNNFile();
@@ -1006,7 +1113,7 @@ UI::menu ()
printStatus("Les changements ont été annulés\n");
break;
- case 9: // Sauver les changements
+ case 10: // Sauver les changements
// Sauvegarde des poids dans le fichier poids
oconfig->createNNFile("rc/poids", oconfig->nnNbColor);