Drawable::getDrawable()
pour éclaircir la gestion de la mémoire. Ce lien est en effet ennuyeux puisqu'il permet de lier le pipeline VTK d'un objet à celui d'un autre. Quand on veut supprimer un objet de la fenêtre graphique, on ne sait plus trop ce qui est partagé. Lorsque getDrawable
sera définitivement supprimée, on pourra alors ajouter de nouvelles fonctionnalités facilement sans avoir peur d'exploser la RAM.DBSet
et DBSet3
qui géraient auparavant les champs affichés (scalaires et vecteurs). C'est maintenant le ElementSetDrawable
qui s'en occupe.CurrentPositionsSets
et PositionSetDrawable
. Gère la postion courante des points pour VTK. Tout ceci est maintenant géré en une seule fonction dans ElementSetDrawable
.Drawable
s. La nouvelle philosophie est la suivante: un Drawable
gère complètement l'affichage de ses composants. Il ne va donc plus piocher des acteurs à gauche et à droite (pour les raisons de mémoire données ci-dessus). Autrement dit, le SideSetDrawable
affiche toutes les faces. Le SideDrawable
affiche une seule face. On voit donc que le SideDrawable
est un cas particulier du SideSetDrawable
. En allant plus loin, on peut même dire que le SkinDrawable
et le SkinSetDrawable
ont la même fonction: afficher une liste de faces. Il est donc logique de définir une classe commune à toutes celles-ci. De même, une série de Drawable
s affichent des ensembles de lignes (CurveDrawable
, CurveSetDrawable
, WireDrawable
et WiresSetDrawable
). J'ai nommé les classes de base MachinCloud
(parce que ma première classe de base était PointCloud
, nuage de points). On a donc au final PointCloud
, WireCloud
, SkinCloud
etSolidCloud
.vtkDataSet
de VTK) affichées à l'écran. Auparavant, je construisais soit un ensemble de points qui correspondait à la liste complète des noeuds/points de la géométrie, soit une liste propre au Drawable
concerné. Les deux méthodes avaient des inconvénients: std::map
au niveau du Drawable
.Labeled
s'en charge.WithNormal
s'en charge. J'ai ajouté une normale aux courbes indiquant leur sens. Pour les autres entités (surfaces, contours), je n'ai tracé qu'une seule normale au milieu (c'est plus léger et c'est même plus clair dans certains cas). Les faces n'ont plus de normales (pour l'instant).VTKManager
: création d'une classe qui gère l'axe (Axe
), une qui gère le titre (Title
), une qui gère le plan de coupe (CuttingPlane
) et la scalarbar (ScalarBar
). C'est plus clair et moins gourmand en mémoire (les acteurs sont désalloués si on n'affiche pas ces objets).R mtDrawables/ArcDrawable.cpp R mtDrawables/ArcDrawable.h R mtDrawables/BezierCurveDrawable.cpp R mtDrawables/BezierCurveDrawable.h R mtDrawables/CircleDrawable.cpp R mtDrawables/CircleDrawable.h R mtDrawables/Cloud.cpp R mtDrawables/Cloud.h R mtDrawables/CoonsDrawable.cpp R mtDrawables/CoonsDrawable.h R mtDrawables/CubicSplineDrawable.cpp R mtDrawables/CubicSplineDrawable.h R mtDrawables/CubicSplineSegDrawable.cpp R mtDrawables/CubicSplineSegDrawable.h R mtDrawables/DBSet3Drawable.cpp R mtDrawables/DBSet3Drawable.h R mtDrawables/DBSetDrawable.cpp R mtDrawables/DBSetDrawable.h R mtDrawables/LineDrawable.cpp R mtDrawables/LineDrawable.h R mtDrawables/NurbsCurveDrawable.cpp R mtDrawables/NurbsCurveDrawable.h R mtDrawables/NurbsSurfaceDrawable.cpp R mtDrawables/NurbsSurfaceDrawable.h R mtDrawables/PlaneDrawable.cpp R mtDrawables/PlaneDrawable.h A mtDrawables/PointCloud.cpp A mtDrawables/PointCloud.h R mtDrawables/PositionSetDrawable.cpp R mtDrawables/PositionSetDrawable.h R mtDrawables/PythonCurveDrawable.cpp R mtDrawables/PythonCurveDrawable.h R mtDrawables/RevolutionSurfaceDrawable.cpp R mtDrawables/RevolutionSurfaceDrawable.h A mtDrawables/SkinCloud.cpp A mtDrawables/SkinCloud.h A mtDrawables/SolidCloud.cpp A mtDrawables/SolidCloud.h R mtDrawables/SplineSurfaceDrawable.cpp R mtDrawables/SplineSurfaceDrawable.h A mtDrawables/SurfaceCloud.cpp A mtDrawables/SurfaceCloud.h R mtDrawables/Tm2Volume2DElementDrawable.cpp R mtDrawables/Tm2Volume2DElementDrawable.h R mtDrawables/Tm2Volume3DElementDrawable.cpp R mtDrawables/Tm2Volume3DElementDrawable.h A mtDrawables/VolumeDrawable.cpp A mtDrawables/VolumeDrawable.h A mtDrawables/VolumeSetDrawable.cpp A mtDrawables/VolumeSetDrawable.h A mtDrawables/WireCloud.cpp A mtDrawables/WireCloud.h A mtDrawables/WithNormal.cpp A mtDrawables/WithNormal.h A mtViz/Axes.cpp A mtViz/Axes.h R mtViz/CurrentPositionsSets.cpp R mtViz/CurrentPositionsSets.h A mtViz/CuttingPlane.cpp A mtViz/CuttingPlane.h A mtViz/ScalarBar.cpp A mtViz/ScalarBar.h A mtViz/Title.cpp A mtViz/Title.h
— Romain BOMAN 2006/05/10 16:24