labpyproject.core.pygame.core

Composants génériques pour pygame supportant :

  • boxmodel,

  • gestion récursive de la profondeur,

  • logique de publication.

Prototype fonctionnel.

Classes de base non instanciées directement :

  • BoxModelObject :

    • Superclasse de tous les objets positionnables dans le plan.

    • Porte tous les paramètres de position et de dimensions communs aux items terminaux et aux conteneurs.

    • Dispose des méthodes de base de gestion du resize et du display.

  • MetricValue :

    • Objet utilisé pour manipuler les attributs pouvant être exprimés en pixel ou en %.

  • BoundedMetricValue :

    • Subclasse de MetricValue supportant des bornes min et max. Utilisé pour les dimensions.

  • VirtualItem (BoxModelObject) :

    • Superclasse de tous les objets positionnables en « 2.5 D » (plan + profondeur)

    • Apporte les attributs et méthodes de base pour la gestion des z-indexs (profondeur)

    • Ainsi que la mécanique de publication (ajout/retrait d’un conteneur parent).

Classes instanciables dans une application pygame :

  • VirtualContainer (VirtualItem)

    • Conteneur de VirtualItems étendant les méthodes de sa superclasse aux problématiques des conteneurs, notamment support de trois layouts basiques : absolu, layout horizontal, layout vertical.

    • Peut être utilisé dans une application réelle en tant que conteneur léger (ie ne prenant pas en charge le display final de ses éléments sur une surface de publication).

    • Limite : peu adapté à des logiques d’animation puisque n’ayant pas de « surface propre ». L’animation devrait être propagée à chacun de ses enfants. Faisable directement pour des déplacements (voir méthodes move et place), plus complexe (et risqué) pour des animations de type alpha, color ou scale.

  • CustomSprite (VirtualItem, pygame.sprite.DirtySprite)

    • Classe de base de tous les composants terminaux d’une application pygame (image, texte).

    • Hérite des propriétés et méthodes de VirtualItem (boxmodel, z-index, publication)

    • et de DirtySprite pour l’optimisation du display.

  • RealContainer (VirtualContainer, pygame.sprite.LayeredDirty)

    • Conteneur « réel » au sens ou celui-ci dispose d’une surface de publication propre sur laquelle est « applatie » l’ensemble de sa hiérarchie.

    • Utilise par composition un LayerManager pour la gestion dynamique et récursive des z-indexs.

    • Hérite de LayeredDirty pour le display optimisé de sa hiérarchie de sprites.

  • RootContainer (RealContainer, evt.GUIEventManager)

    • Conteneur racine d’une application pygame.

    • Diffère de RealContainer par la nature de sa surface de publication (pygame.display = la surface « définitive » de publication pygame).

    • Dispose des méthodes de démarrage/arrêt du thread d’interface.

    • Initie le processus de resize en cas de fenêtre redimensionnable.

    • Dispatch les événements (top->bottom en V1) via les méthodes héritées de events.GUIEventManager.

Utilitaires de gestion de la profondeur (z-indexs ou layers) :

Tous les conteneurs possèdent une ou plusieurs couche(s) locale(s), le système garantit la cohérence de la projection de ces couches imbriquées sur la liste de couches globales du LayeredDirty parent (RealContainer ou RootContainer) assurant la publication de la hiérarchie d’objets.

  • LayerManager : gestionnaire des zindexs, assure la cohérence dynamique des couches des VirtualContainers.

  • LayerStack : modélisation des couches d’un VirtualContainer

  • LocalLayer : modélisation d’une couche locale d’un LayerStack

Note

Implémentation opérationnelle : voir module labpyproject.core.pygame.widgets

Classes

BoxModelObject(**kwargs)

Super classe portant les propriétés et méthodes fondamentales du box model.

MetricValue(value[, percent])

Donnée de box model numérique pouvant être exprimée en pixel ou en pourcentage.

BoundedMetricValue(value[, percent, …])

MetricValue avec bornes min et max.

VirtualItem(**kwargs)

BoxModelObject supportant les attributs de gestion des z-indexs (couches) ainsi que les propriétés et méthodes de base de la logique de publication.

VirtualContainer([bgcolor])

VirtualItem dôté des capacités d’un conteneur :

CustomSprite(**kwargs)

Sprite supportant le boxmodel, la mécanique de publication et l’update optimisé.

RealContainer([create_surface])

Container « réel » disposant de sa surface de publication pygame et des capacités de gestion des z-indexs via l’utilisation d’un LayerManager par composition. Pour sa descendance cet objet est vu comme un container, pour son parent il est considéré comme un objet terminal (ses couches internes sont applaties sur sa surface de publication).

RootContainer([resizable, framerate, icon, …])

Container racine de l’application.

LayerManager(root)

Objet modélisant la gestion des couches (z-indexs), utilisé par composition par un RealContainer.

LayerStack(container, parentstack, …)

Modélise la pile de couches d’un conteneur.

LocalLayer(parentstack, locallayer, layerMngr)

Modélise une couche locale de conteneur.

Class Inheritance Diagram

Inheritance diagram of labpyproject.core.pygame.core.BoxModelObject, labpyproject.core.pygame.core.MetricValue, labpyproject.core.pygame.core.BoundedMetricValue, labpyproject.core.pygame.core.VirtualItem, labpyproject.core.pygame.core.VirtualContainer, labpyproject.core.pygame.core.CustomSprite, labpyproject.core.pygame.core.RealContainer, labpyproject.core.pygame.core.RootContainer, labpyproject.core.pygame.core.LayerManager, labpyproject.core.pygame.core.LayerStack, labpyproject.core.pygame.core.LocalLayer