NanoÉdit : historique des changements
Nouveautés 1.4 --> 1.5
- Faces cachées avec Mesa (bug de Motif)
- Procédures de tests automatiques en fonctionnement.
- Recompilations totale toutes les nuits sur Linux/HPUX/Irix
- La communication avec Netscape se fait mieux.
- Bien que cela ne soit pas joli, le type physique P_pointeur_extrait.
- Une documentation qui s'étoffe.
- o_sphere.c -> o_solide.c avec un modèle CSG en prime.
- Le type image est maintenant beaucoup plus propre.
- Le typage logique par prédicat fonctionne beaucoup mieux.
- Une nouvelle méthode plus fiable d'évaluation du réseau.
Nouveautés 1.5 --> 1.6
- codec_l3_l3_double, t_observateur, P_observateur, L_observateur
Une vue peut être paramétrée par une autre vue, elles auront
le même observateur (Intéressant si l'affichage est trop lent
sur une grande vue, on peut en faire une petite).
- t_boite_min_max, P_boite_min_max, L_boite_min_max, et
plein d'utilitaires pour ce type dans UTILITAIRES/u_geometrie.h
- L'objet nuage de point peut-être paramétré par une vue,
celle-ci verra sont observateur modifié pour voir le nuage
de points en entier après sont chargement.
- L'objet "vue" support maintenant l'option stéréo qui
permet de voir le relief en louchant.
- Meilleur présentation des raccourcis clavier dans les menus.
- Procédures de tests automatiques passent sur Linux/HPUX/Irix
- Dans le graphe, les objets actifs sont en couleur.
- Les menus sont détachables, ils sont maintenant dynamiquement
contextuel. La version "Lestif" ne supporte pas très bien,
ça plante de temps en temps.
- Problème des raccourcis clavier dans la fenêtre graphe ``résolu''
- Le choix ``quitte modèle'' a disparu du menu, il est
fait automatiquement.
- E_ascenseur permet de modifier une valeur bornée avec la souris.
- L_flottant_borne a comme type physique un triplet et
utilise E_ascenseur.
Un objet "valeur_bornee" l'utilisant a été ajouté.
- L'édition d'un objet avec un champ affichable de type E_void
ne fait plus planter.
- Quand on modifie interactivement une valeur dans une fenêtre
et que l'on a le temps d'en afficher une (ou plusieurs) autres,
c'était toujours la même qui était affichée.
Plus maintenant, donc, au bout d'un certain temps,
toutes les fenêtres ont été mise à jour.
- Beaucoup de "L_flottant" sont devenus "L_nombre P_flottant"
afin de leur permettre d'extraire autre chose qu'un flottant.
- Pour des raisons de sécurité, NanoÉdit est serveur HTTP
en lecture seulement sauf avec l'option "-http_ecrit".
De plus, il faut préfixer les URLs par un code choisi
aléatoirement à chaque session.
- La page d'accueil du programme contient des vérifications
d'unicité des noms de champs à l'intérieur d'une classe.
Les objets existants ont été
mis a jour pour corriger les bugs et les noms des champs
virtuels contiennent maintenant le nom de la classe
pour éviter les homonymes.
- On peut saisir et déplacer des objets dans la fenêtre
perspective.
- Il y a maintenant un but "demo" au "makefile",
on fait tourner la démo en commandant NanoÉdit via Netscape.
- Les champs et objets ``invalides'' fonctionnent à nouveau,
(L'objet ``couleur'' veut 3 nombres positifs, si ce n'est
pas le cas, il devient invalide)
Les objets invalide sont affiché en rouge dans le graphe,
et les champs aussi dans les fenêtres d'édition.
- Les traductions HLS RVB sont maintenant correcte,
dans l'objet «couleur», on peut choisir des couleurs en glissant
les curseurs de la palette.
- Ajout de «L_table_nombre» entre «L_table» et «L_table_flottant»,
en effet «L_table_flottant» possède un prédicat.
Même chose pour «L_grille_nombre».
- Ajout de l'objet «iso_grille_flottant» pour afficher
des matrices d'altitude.
- «P_transfo» est maintenant une grille de flottant.
- Dans le menu «Attributs/Géométrique» il y
a maintenant «Transformation 2D», «3D» et «ND»
au lieu de simplement «Transformation».
- Ajout de l'objet produit de transfomation.
- Ajout de fonction d'affichage de tag «rotation» et «dilatation»
afin que ces tags apparaissent identiques quelque soit l'objet.
- Ajout de tags «rotation» et «dilatation» sur les axes
des objets repères.
- Il y a maintenant des warning à la compilation, pour
des erreurs du genre : `DEFAUT(10)' au lieu
de `DEFAUT("10")'.
- Il y a un répertoire «ERIC» (Tosan) et «SYLVAIN3» (Poquet)
pour la génération de fractales, ce sont des première versions.
- Ajout des objets «produit vectoriel» et «normalisation vecteur».
- Le texte est maintenant affiché en lancé de rayons.
- Fonctionne avec clavier AZERTY (à cause des chiffres)
- L'objet POV prend une vue en argument pour avoir
le même poitn de vue.
- La sortie NanoEdit sous POV a été corrigé.
Le applique de applique ... ne fonctionnait pas.
Nouveautés 1.6 --> 1.7 (les corrections de bugs vont dans la 1.6)
- "t_widget.c" : Fuite mémoire en moins (n'utilise plus XmStringCompare)
- "o_xt_interface.c" : Le déplacement/agrandissement des fenêtres
ce fait sans faire de applique.
- Création des types logiques L_void_void et L_metamorphe
pour une meilleur gestion de CLASSE_PARAMETRE et d'operateur.
- La coordonnées dans la fenêtre 2D ont la bonne profondeur.
- Les vue sont réaffichées quand on détruit les objets.
- Éditer une fenêtre déjà éditée la fait passer devant les autres.
- La focale est intégrée dans l'observateur (vue, pov, nuage). Un objet ``observateur'' a été créé. L'objet `vue' peut être paramétrée par cet observateur.
L'objet ``lampe'' a changé pour utiliser lui aussi cet objet,
la direction d'éclairage a été transformée en point éclairé.
- Dans le champ L_geometrie, si la largeur ou la hauteur est
nulle on en tient pas compte. La fenêtre `Modèle' apparait
maintenant systématiquement à gauche.
- Dans l'objet POV on fait une sortie POV avec moins d'erreur,
en remplaçant les `union' par `object'.
Des fonctionnalités ont été ajoutées pour arrêter le calcul
ou décider quand il commence.
- Le type `L_prevenir_si_changement_modele' a été introduit
pour qu'un objet puisse décider contextuellement
s'il désire recevoir
les changements de modèle global.
- On enlève les boutons `annule' et `annule_ferme' qui
ne sont pas utilisés.
- Quand un TAG était modifié, on oubliait de faire des évaluations,
solution dans u_champ.c(4/2/2000)
- Quand on fait un "réinitialise" la commande "make default"
est automatiquement lancée pour compiler
le contenu du répertoire.
- Dans le menu ``observateur'' de la ``vue'' il y a maintenant
des options pour se repositionner en des vues standards.
- Vous pouvez faire "make lance_toutes_les_nuits" pour
que le répertoire courant soit recompilé proprement toutes
les nuit sur toutes les architectures de machine.
Le matin, vous avez un mail avec tous les messages interessants.
- Lors vous redémarrez après plantage, le nom du fichier
indiqué est celui que vous étiez en train d'éditer
avant le plantage.
- Désormais, chaque vue a un menu pour choisir la qualité
d'affichage. Quand on déplace l'observateur, la qualité
d'affichage reste inchangée.
Pour les objets sphère, cylindre, cone, ... on ne demande
plus de nombre de facettes.
- Ajout de l'objet valeur Booléenne.
- Ajout de l'objet plan avec ombres portées et projection orthogonale et du modèle "3plans" et de "4vues+plans" pour avoir les ombres portées.
- L'objet "image" supporte maintenant l'éclairage ou
non de l'image. Il supporte les images avec des résolutions
qui ne sont pas des multiples de 2 et si les images ne sont
pas carrées il les étire pour respecter le ratio.
Nouveautés 1.7 --> 1.8 (les corrections de bugs vont dans la 1.7)
- Nouvelle gestion des sauvegardes variables dans l'opérateur.
("t_variable.[ch]")
- Fonctions d'affichage du modèle complet en GL ("u_vue.c")
en POV ("u_applique.c"). Pour l'affichage GL, on éteind
bien toutes les lampes avant d'afficher.
- Ajoute l'option 1/4 de plan pour accélérer l'affichage
du modèle "3plans".
L'objet plan affiche mieux les ombres (plus de problème d'imprécision
de profondeur).
- On peut compiler les objets NanoÉdit en C++,
il suffit que le suffixe soit ".cpp" et qu'il y est
un extern "C" { autour du #include o_objet.h.
Voir le répertoire BLOB pour avoir un exemple.
- L'objet "pov" indique la ligne de commande pour faire
l'image ainsi que le nom du modèle NanoÉdit
dans le fichier POV.
- Nouveaux Codec : codec_l_hh et codec_H_L_pp permettant
de fusionner deux matrices rectangulaires afin d'obtenir
une matrice rectangulaire de paires de types.
Par exemple prendre une matrice de points avec poids
et stocker le résultat dans une matrice de points
et une matrice de poids en indiquant la largeur de la
matrice qu'une seule fois.
A ne pas confondre avec codec_pp_H_L (non implementé)
qui serait physiquement stocké de la même façon mais qui
serait affichée comme 2 matrices successives.
- Nouvel objet "table" permettant de créer une table de point4
à partir d'une table de poin3 et d'une table de nombres.
Idem pour "grille"
Nouveautés 1.8 --> 1.9 (les corrections de bugs vont dans la 1.7)
- Réécriture un peu plus propre d'une bonne partie
de "u_table.c" et "o_table.c". Il y a plus de types différents
et deux nouvelles fonctions utilitaire "t_table" et "t_grille"
pour afficher toutes les tables et grilles avec plein d'option
d'affichage. Il y a aussi plein d'exemples de modèle de grille.
On peut modifier les poids des points et des flottants.
- La définition de classe sort maintenant plus de warning
sur le type des pointeurs sur fonctions. Les warnings ont
étés corrigé dans NanoÉdit.
- La réinitialisation génère une bonne disposition des fenêtres
des objets quand celles-ci ont des champs en plus ou en moins.
- Un scheduleur a été implémenté
(u_repartiteur.c) :
- pour gérer les affichages (urgent ou non).
- pour les sauvegardes du undo/redo
- pour les fonctions en arrière plan
(voir "o_table.c" et "o_particule.c") :
#include "u_repartiteur.h"
static Booleen arriere_plan(void *objet)
{
struct toto *o = objet ;
return(Vrai) ; /* Vrai=Continuer, Faux=Arreter */
}
...
u_ajoute_action(PRIORITE_ARRIERE_PLAN, arriere_plan, objet) ;
...
u_enleve_action(arriere_plan, objet) ;
- Les objets fractales (répertoire SYLVAIN3) tiennent
compte de la qualité d'affichage.
- La disposition des Widget dans les fenêtres est faite
via DEBUT_BOITE/FIN_BOITE, on n'utilise plus ce qu'il
y a dans les fichier ressources X11.
- On calcule l'aide dynamiquement via des fonctions
utilitaires définies dans "u_aide.c".
De plus l'aide sur un champ indique pourquoi
le champ est invalide.
- Un bon nombre de "const" ont été ajouté,
il peut y avoir de nouveaux warning dans vos sources.
- Ajout de "codec" non-initialisé (ni) qui permettent
de stocker dans les structures utilisateur sans effacer
le contenu précédent si le nouveau contenu n'est pas
défini. Par exemple pour que le poids d'un quadruplet
soit inchangé quand on stocke un triplet dedans.
- Ajout de "particule", "delaunay", "plan_de_decoupe"
comme objets de base.
- L'objet POV permet de générer un fichier POV pour
à chacune des modifications du modèle.
De même, l'objet ``modele'' peut faire une sauvegarde
à chaque modification du modèle.
Le répertoire "/tmp/nanoedit-..." peut être copié ailleur
et rejoué sous X11 ou bien générer les fichiers POV
avec la commande ``rejouer''.
- La documentation (extension.tex) a été mise à jour.
Nouveautés 1.9 --> 1.10 (les corrections de bugs vont dans la 1.9)
- Allocation du Stencil buffer dans les vues GL
- Réécriture propre de "o_plan.c" pour supporter
le miroir.
- Dans la page d'accueil Web de l'exécution, on indique
les conflits de raccourcis clavier.
- Réécriture d'une bonne partie de "o_table.c" et "u_table.c",
il y a beaucoup de fonctions utilitaires réutilisables.
Pour le moment, c'est compatible avec l'existant à part
les raccourcis clavier qui ont changés pour bien différencier
les tables/grille contraintes et non-contraintes.
Dans le futur, on unifiera les differents affichages
de grille dans un même objet paramétré par Ponctuel/Filaire/Facette (ou bien par état courant).
- Ajout du type image en niveaux de gris (PGM)
et de l'objet correspondant.
- Le menu «Charge» fonctionne maintenant correctement même
après une sauvegarde.
- En plus du menu création, le menu des 20 créations
les plus plausibles a été ajouté au modèle.
- Le titre de la fenêtre modèle est le nom du modèle.
- On utilise le ``répartiteur'' pour l'ouverture, la fermeture,
les sauvegardes, la destruction des objets. Ceci modifie
considérablement le code.
- NanoÉdit fonctionne même si le modèle est vide.
- Désormais, on peut directmement éditer le modèle
contenu dans les ``opérateurs'' sans avoir à quitter
le modèle courant.
- La position ou l'on indique la SUR_CLASSE dans une classe
indique l'emplacement ou les champs de celle-ci seront inséré.
- Dans la fenêtre WWW, la hiérarchie des classes indique
le raccourci clavier et le chemin dans le menu.
- La raccourcis clavier remarchent tous.
- On peut stocke dans une image PPM les vues GL,
l'utilitaire "rejouer" permet de faire la convertion ".ne" en ".ppm".
Il faut faire "eval `make variables`" pour qu'il fonctionne.
- Dans le menu observateur de la vue, il y a maintenant
un "dump" qui fait de l'antialiasing et qui peut faire de grandes
images. Le script "rejouer" permet aussi de générer automatiquement
des dumps de séquence de ".ne". Le nom du fichier est
le nom de la vue.
- Le fichier "u_table.c" fournie les utilitaires pour afficher
des tables en ponctuel, filaire, facette, lissé et on peut
lui indiquer les dégénérécences ou les
facettes à ajouter ou les raccords.
- "o_solide.c" pour utiliser les fonctionnalités de "u_table.c",
ajout du "tore".
- L'état courant de GL est maintenant partagé entre toutes
les fenêtres, "t_gl.c" est beaucoup plus simple.
Les listes ne sont donc créées qu'une seule fois
par fenêtre.
- L'"observateur", la "vue" et l'objet "pov" contiennent maintenant
le ratio de la fenêtre à afficher.
- Quand on commence un raccourci clavier, les suites
possibles sont affichées.
- Raccourcis clavier ajoutés dans le menu «Action»
- La variable globale "globale_traduction" est un pointeur
sur structure au lieu de la structure elle-même.
Les fonctions de manipulation de CODEC sont ``réentrante''.
- "putstr" et est beaucoup plus rapide que "PUTSTR"
pour de grandes chaine de caractères (plus lent pour les petites).
- Les codec de forme table/matrice/grille supportent maintenant
les opérations d'accès à leurs éléments. Cela permet de simplifier
et de généraliser "o_table.c" et "u_table.c" au détriment
d'une perte de vitesse d'affichage...
- Le changement d'épaisseur de trait, de point et le passage
avec ou sans lissage lorsque l'objet est actif est maintenant
fait par l'objet "vue" ainsi que la création/destruction
des listes GL. En plus de simplifier les programmes,
cela apporte de nouvelles fonctionnalités :
- Si l'on rend actif un applique qui contient des sphères,
les sphères deviennent facettisée.
En plus la facettisation n'est pas la même que si l'on
active directement la sphère.
- On peut différencier
le nombre de niveaux d'activités.
L'épaisseur des traits augmente en fonction du nombre d'actifs
qu'il y a au dessus de lui.
- On peut différencier le cube actif de l'inactif
grace à l'utilisation (transparente) de glShadeModel.
La fonction que l'on doit obligatoirement
appeler pour afficher un objet est "u_affiche_objet" qui
est déclarée dans "u_vue.h".
- On peut maintenant déplacer les "tag" d'objet transformés. Le curseur se positionne au bon endroit.
- Les vues X, Y et Z (projection orthogonale) ne sont plus
gérées de la même façon pour la projection.
La distance de l'observateur ne modifie plus la taille de
ce qui est vu. Avantage : cela fait disparaitre le
problème du clipping des objets proches.
Nouveautés 1.10 --> 1.11
- Plus rapide, moins de bugs
- Aucune nouveauté soulevant des incompatibilités :-)
- On ne change plus la page de Netscape automatiquement,
il faut aller dans le menu «fichier».
- On utilise GTK au lieu de Motif sur les machines le permettant.
- Correction de nombreux warning/erreurs du "cc" d'IRIX
- Lorsque l'observateur avance/recule cela ne change pas le point vu.
- L'objet "applique" permet de toujours
visualiser les transformations.
- Nouvel objet modifiant l'état courant : affichage des
lignes de rappel (liant un point à l'origine)
- Nouvel objet modifiant l'état courant : désignabilité
permettant d'empêcher de sélectionner des objets graphiques.
- Le objets modifiant l'état courant de GL peuvent indiquer
les attributs qu'ils modifient afin que le noeud "applique"
n'ai pas à tout sauvegarder à chaque fois : accélération
très importante de l'affichage.
- Ajout de la couleur de fond à «vue».
- Ajout du repère 2D et de la possibilité de mettre
des flèches au repères.
- L'option ``Virtuel'' veut maintenant plutôt dire ``Immutable''
c'est-à-dire sans bit de changement.
Les L_tag devraient donc devenir NonVirtuel afin d'avoir le bit
changement, mais je n'arrive pas à trouver un cas dans lequel
c'est utile bien que j'ai modifier u_champ.c le 4/2/2000
pour prendre en compte ce cas...
Je suppose que cela a donc cassé quelque chose, mais quoi ?
La réparation sera simple : ajouter NonVirtuel pour le Tag
considéré.
- L'affichage des Tags et repère tient compte de l'épaisseur
courante, mais cela ne marche pas très bien car il n'y a pas
d'instruction OpenGL pour multiplier l'épaisseur courante
par une valeur. On fait donc un "GetFloatv" mais celui-ci
ne va pas dans la liste GL....
- Nouvelle objet : "commande" permettant de changer
la valeur d'un champ lorsqu'il est cliqué.
- Correction bug : NanoÉdit GTK était de plus en plus lent
quand on l'utilisait.
- On restreint l'utilisation des prédicats au feuilles
de la hiérarchie des types logiques car cela permet
d'accélérer simplement le typage dynamique.
- L'objet couleur peut afficher des palettes de couleurs
dans la fenêtre graphique.
- J'enlève le warning GTK qui s'affichait tout le temps.
- Le déplacement en agrippant un tag de point avec poids
n'annule plus le poids.
- Les tags poids et destruction aparaissent maintenant
tout le temps (problème de clipping par le plan proche).
- Utilitaire "u_fork()" pour simplifier les fork.
- Correction du bug interdisant les opérateur d'opérateur avec
des variables communes.
- Ajout de l'objet «vue incluse» permettant par exemple
d'afficher une vue 2D fixe et transparente dans
une vue 3d
- Ajout de la méthode génération de STL et de l'objet
permettant d'afficher le STL.
- Le poids des points n'est plus mis à 0 mais à 1 quand
on stocke un triplet de valeurs dedans.
Idem pour les tables de points avec poids.
Nouveautés 1.11 --> 1.12
- Changement des couleurs des tags déplacement/rotation pour plus
de lisibilité.
- Dans le widget GL, les déplacements sans appui
du bouton de la souris appellent la fonction ``mouvement''.
- Ajout de l'objet «bulle d'aide» et modification
de «vue» en conséquence.
- La sauvegarde du modèle fait sauvegarder un icone.
Les menus «charge» sont avec ces icones.
- Ajoute objet «image 2d» qui s'affiche sans transformation
dans les fenêtres GL (pour l'exposition Pagode).
- Les sauvegardes pour le UNDO n'ont lieu qui si l'utilisateur
ne fait rien pendant une seconde.
- Ajout de l'objet super sphère
- Prise en compte de la molette de la souris pour
les flottants, point et points avec poids
- Ajout des objets «vrai si actif» et «prog if»
- Quand il remap des fenêtres il essaye d'en prendre
de la même taille (pour la vitesse)
ou sinon la plus grande possible
(pour la mémoire).
En effet, les fenêtres non-mappées prennent de la place
dans la NVIDEA et font planter le programme
quand il n'y a plus de mémoire.
- Le module SYLVAIN a été reprogrammé complètement, il supporte
plus de choses et notamment les listes de transformations.
- Extraction de "pov.c" et "stl.c" de "u_graphique.c"
- La fonction d'affichage GL de grille accepte maintenant
le lissage même si on ne lui passe pas le tableau des normales.
- Le premier champ initialisable d'un objet est maintenant
directement éditable dans le graphe du modèle.
- Accélération de la visualisation du menu «charge»,
changement incompatible de fonctionnalités que personne
n'a jamais utilisé.
- Lorsque l'on déplace un point 3D dans la fenêtre
avec perspective, le point reste à distance constante de l'oeil
et non plus dans le plan passant par le point regardé.
- Ajoute le type "E_angle" pour pour taper les angles en Degré.
On l'utilise dans l'objet repère rotation.
- u_trouve_fichier ne fait pas plus d'un find
par seconde.
- Ajoute l'objet équation plan
- Ajoute l'objet cube général et cube général contraint.
- La désignation 3D ne désigne que les objets les plus proches de l'observateur. (o_vue.c)
- On peut mettre un commentaire dans l'objet applique.
- Création de tout ce qu'il faut pour avoir les tenseurs MxNxO
- Bascule visibilité pour que son père nous affiche.
- Menu Undo graphique
Nouveautés 1.12 --> 1.13
- Sortie STL en couleur (non testée).
- Améliorations objet ifs pour Pagode.
- Ajout objet interpolation par morceaux sur une table
de quadruplet et sur grille de quadruplet.
- Ajout de l'objet longueur de table de point
qui retourne les distances entre les points successifs.
Ceci sert à faire une animation à vitesse constante
selon une ligne brisée.
- Améliorations de l'objet seconde.
- ATTENTION : si vous faites un fork, il faut fermer
les fildes inutilisés.
- Ajoute option pour lancer Nano sans aucune fenêtres
mais en ouvrant quand même X11.
- Ajout de l'objet "switch" sur flottant.
- Amélioration du : "prog_if" et de "L_prog" afin
de pouvoir faire un bon "switch".
- Ajoute dans "o_modele" la duplication des actifs.
- La réinitialisation doit maintenant fonctionner
plus souvent....
- L'inversion des actifs marche dans les opérateurs
- L'opérateur retourne le premier objet qui respecte
ce qu'on lui demande. Ceci veut dire que s'il est utilisé
par "point_triplet" ou "ligne_brisee" la valeur extraite
de l'opérateur pourra ne pas être la même.
- Ajout du menu contextuel sur la fenetre graphe.
- Ajout des objets "audio" et "generation_son".
- Réécriture de "o_repere.c", ajout du repère
défini par deux points pour créer un observateur.
- Débuggage de vue incluse
- Ajoute "viewport" pour pouvoir faire des loupes sémantiques.
- Ajoute "L_accelerateur" pour que les objets puisse
prendre le clavier de la vue avant celle-ci.
- Ajoute "L_table_transfo", "table_transfo"
Thierry
EXCOFFIER
Last modified: Wed Apr 9 13:42:38 CEST 2003