Texture packer - ou comment gérer une banque de textures facilement !

Soyez le premier à donner votre avis sur cette source.

Vue 6 070 fois - Téléchargée 870 fois

Description

Bonjour,
voici un editeur de banques de textures : vous pouvez mettre n'importe quel bitmap de moins ou égal à 128px/128px (modifiable), accompagné de son nom et de son auteur, dans un seul fichier !
Le tout est géré par 2 unités : une unité maître et une unité "classe". L'unité maître gère la majorité des exceptions et offre aussi un support de console, avec des informations de débogage partout (le texte entre WriteInConsole peut être considéré comme du commentaire).
Une application d'exemple est fournie avec ces unités, pour montrer comment les utiliser. J'ai également mis un paquet de textures de démonstration, qui contient des bitmaps que vous pourrez voir (et extraire ! attention !) si vous téléchargez le zip :p
Voir le Read-Me pour plus d'explications.

Le développement de cette source, autant les unités que l'application de démonstration, m'a beaucoup apporté, et j'espère qu'elle apportera aussi à certains d'entre vous. Je la mets en initié car c'est pas si facile à comprendre malgré tout (surtout l'histoire de la console, déjà expérimenté au Solitaire).

Voici ce que cette source pourrait eventuellement vous apporter :
=> Gestion basique d'un TObjectList
=> Comment créer ses classes
=> Gestion d'un stream
=> Lecture-Ecriture d'un fichier personnalisé
=> Gestion basique des erreurs
=> Créer une console personnalisée sans avoir à faire {$APPTYPE CONSOLE}
=> Utiliser l'interface IShellLink pour créer des raccourcis Windows
=> Utiliser un Notebook pour faire comme un vrai installateur
=> Extraire des ressources avec l'unité Resource_Unit
=> Gestion d'un "Byte Array" (un tableau dynamique qui fait office de bitmap fichier dans mon unité)
=> Comment se débrouiller pour enregistrer plusieurs bitmaps accompagnés d'autre data dans un seul fichier ...

+ En bonus, comment rendre une application plus belle graçe aux grandes icônes ...

Je suis particulièrement fier de cette source, j'ai pas mal réflechi sur l'histoire de l'enregistrement des bitmaps, j'ai finalement atterri sur les byte array ...

PS : Les array of TBitmap ne peuvent pas marcher car la taille de l'array est indéfinie (inutilisable en structure).
D'ailleurs, un record of bitmap ne marche pas non plus car TBitmap est indéfini en matière de taille ...
N'est-ce pas Cantador ;)
Réplique de Cantador : "et les Packed Record ?" :p
J'y pense toujours ...

Source / Exemple :


// Voir zip !

Conclusion :


Voilà, tous commentaires, remarques, critiques, conseils, remarques ...

Cordialement, Bacterius !

PS : j'ai enlevé son header pour plus de convénience, mais je tiens à remercier et à citer DelphiCool pour son unité Resource_Unit, dont il est l'auteur.

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Debiars Messages postés 285 Date d'inscription lundi 16 juin 2003 Statut Membre Dernière intervention 11 février 2018
24 déc. 2008 à 15:42
@Nicolas et autres : pour simplifier, je poste dans la foulée le prog qui explique tout.
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 2
24 déc. 2008 à 14:50
@Debiars : On peut donc faire la meme chose avec un TJpegImage , faire un SaveToStream à partir de celui ci , l'enregistrer et le recuperer, d'ailleurs pour le recuperer dans le fichier comment fais -tu ?

Moi je remplis un TMemoryStream avec les données de enregistrées precedement grace au SaveToStream et une fois tt récupéré je fais MonImageBMP.LoadFromStream(LeStreamRempli).
[Parce que je ne travaillais qu'avec des BMP, je pensais à tort que ca ne marcherais pas pour les Jpeg]

Bon ce n'est pas très clair et en plus cette opération pose des problèmes
Debiars Messages postés 285 Date d'inscription lundi 16 juin 2003 Statut Membre Dernière intervention 11 février 2018
24 déc. 2008 à 14:42
@Nicolas : je passe par un Timage pour garder la taille de l'image.
Par exemple pour une même image cela donne :

bitmap 826934 octets
jpeg 78489 "

donc gain de mémoire important...
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 9
24 déc. 2008 à 11:27
Oui, j'avais pensé à regrouper tous les bitmaps dans des streams différents puis tout recoller, mais plein de violations d'accès ...

Je vais réessayer !

Cordialement, Bacterius !
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 2
24 déc. 2008 à 10:19
C'est cette solution que je lui est proposée ... mais juste en passant par un TBitmap , pas besoin d'un TImage :)
Afficher les 64 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.