Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » libSDL_image pour Casio Prizm / G90+E (fx-CG 10/20/50)
Slyvtt Hors ligne Maître du Puzzle Points: 2389 Défis: 17 Message

libSDL_image pour Casio Prizm / G90+E (fx-CG 10/20/50)

Posté le 05/05/2022 11:10

Hello,

voici une autre lib en cours de dev pour nos chères Casio : la libSDL_image, basée sur la SDL_image 1.2.12.

Petit pitch : cette librairie est une extension de la SDL (dont le portage pour nos machines est discuté ici : SDL 1.2.15 pour Casio PRIZM ) et qui a pour finalité d'offrir la capacité d'importer des images externes pour les utiliser sous forme de SDL_Surface dans la SDL.

La SDL offre en standard seulement la capacité d'importer des BMP, via la fonction SDL_LoadBMP, mais ce format, bien qu'intéressant et très répandu, souffre de deux problèmes majeurs :
- peu (ou pas de compression) donc taille des fichiers assez grosses en comparaison d'autres formats,
- pas de gestion officielle de la transparence (canal alpha), donc même si on peut ruser, cela nécessite des ajustements.

Bref, une lib d'import d'image pour la SDL est plus qu'utile, et c'est là le but de la SDL_image.

La librairie se divise en deux volets :
- d'une part les formats dont l'import se fait directement (les routines sont directement codées dans la libraire ).
- d'autre part les formats dont l'import repose sur l'utilisation de librairies tierces (et donc il faut avoir la lib dispo sur la plateforme de portage)

Dans la première catégorie se trouvent les formats BMP, ICO, CUR, PCX, PNM, LBM, GIF, TGA, XCF, ...
Dans la seconde catégorie se trouvent les formats qu'on aime bien : PNG, JPG, TIF, WEBP, ...

En particulier les formats PNG et JPG nécessitent des librairies "filles" :
- pour le PNG : la libPNG est nécessaire qui demande elle même la Zlib (ça y est, je pense que le cheminement de mes post prend forme, et voici le pourquoi du comment)
- pour le JPG : la libJPG est nécessaire (cette librairie est autoporteuse)

Voici un état des lieux (sachant qu'il s'agit d'une photographie à l'instant "t" et que j'espère pouvoir faire bouger les lignes dans le futur):

Pour les formats intégrés directement à la lib, voici mon retour d'expérience avec la version en cours de développement :
- format BMP : [OK] testé et validé via la fonction IMG_Load de la SDL_image et via SDL_LoadBMP de la SDL
- format ICO : [NOK] testé mais gros glitchs (couleurs pas OK en 16couleurs et visiblement problème d'import avec les autres mode (a priori pas utile comme format)
- format CUR : [pas testé] je sais même pas quel logiciel utilise ce format
- format TGA : [OK] testé et validé via IMG_Load
- format PNM : [OK] testé et validé via IMG_Load
- format LBM : [pas testé] je sais pas quel logiciel utilise ce format
- format XCF : [NOK] format trop instable, ne correspond plus au format XCF de GIMP
- format PCX : [NOK] à regarder de plus près pour comprendre (notamment utile via ASprite)

Pour les formats "externes" :
- format PNG : [OK] testé et validé via IMG_Load, libPNG et libZlib fonctionnelle
- format JPG : [NOK] la libJPG est compilée, linkée mais à ce stade rien n'arrive dans la SDL_image donc rien ne s'affiche (bon déjà ça crashe pas). Je vais regarder cela pour essayer d'avoir ce format.
- format TIFF : pas regardé et a priori pas très utilisé de nos jours (nécessite la libTIFF)
- format WEBP : pas regardé et a priori pas très utilisé de nos jours (nécessite une lib aussi)

Donc en bonne nouvelle, c'est le support du PNG qui est clairement un super format qu'on aime bien. Le support du JPG serait un gros gros plus, mais je ne peux pas promettre à ce stade (mais j'y travaille).

Voila pour le bilan

A ce stade c'est très expérimental : voici juste un screen pris à la volée :



@+

Sly

et @RDP (on va faire une session librairies )


Slyvtt Hors ligne Maître du Puzzle Points: 2389 Défis: 17 Message

Citer : Posté le 08/05/2022 18:37 | # | Fichier joint


Hello,

juste une très rapide update pour annoncer que le support des fichiers images JPG est désormais OK dans la librairie SDL_image pour Casio PRIZM.

Le support repose sur la libJPEG9d qui fonctionne aussi de manière indépendante (je ferai un post ainsi qu'un gitea pour cela). Tout comme pour les PNG, je vous ferai un exemple de code pour l'utiliser ainsi qu'un convertisseur de JPG vers le format bopti_image_t afin que vous puissiez utiliser des ressources externes dans vos programmes gint sans avoir forcément à passer par la SDL et SDL_image.

Donc désormais, les outils suivants sont fonctionnels (il faudra faire des tests plus approfondis pour connaitre les limites, mais aussi pour tester les performances) : J'essaie au passage de montrer les dépendances des librairies les unes par rapport aux autres.

libSDL 1.2.15
  |____ libSDL_image 1.2.12
          |______ formats TGA / XPM / BMP / GIF / ... supportés en standard par la lib
          |______ libPNG 1.5.30 pour charger les PNG
          |         |________ libZlib 1.2.5 pour compresser / décompresser les images (ou autres d'ailleurs)
          |______ libJPG v9d pour charger les JPG


A noter que pour le PNG et le JPG, il faut explicitement activer le support des librairies pour pouvoir s'en servir. Là encore un tuto viendra, mais cela est conforme à l'utilisation de la SDL_image sur PC par exemple (cf par exemple ce tuto : ici )

Il reste officiellement deux formats basés sur des libs externes (TIFF et WEBP) mais je ne compte pas les intégrer car pas assez répandus. Donc a priori les seuls développements à venir seront les corrections de bugs éventuels.

Je vous tiens au courant dans les prochains jours de la mise à dispo des outils sur Gitea.

@+

Sly

@RDP
There are only 10 types of people in the world: Those who understand binary, and those who don't ...

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 238 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd