Page 1 sur 1

Purebasic et MNG

Publié : ven. 14/janv./2005 22:55
par Thyphoon
Bijour !

Est ce que parmis vous quelqu'un connaitrait un moyen simple de jouer les animations MNG avec purebasic ? (Je rappel que les fichiers MNG sont des PNG animés). vu qu'il y a un decodeur PNG intégré au purebasic n'y a t'il pas moyen de lire facilement les MNG image par image !
Merci d'avance
A+
Thy

Publié : ven. 14/janv./2005 23:26
par Le Soldat Inconnu
PNG Et MNG sont libre de droit, il n'y a pas des dll sur le net pour les lire ?

D'ailleurs, ce sera bien davoir un meilleur support du format png dans pure (notamment au niveau de la transparence, pour moi, un png est comme une icônes mais dans pure, c'est pas le cas)

Publié : sam. 15/janv./2005 10:14
par Thyphoon
j'ai trouvé une lib : http://www.libmng.com/
a téléchargé plus précisement ici =>http://prdownloads.sourceforge.net/libm ... e?download il y a des exemples comment utiliser la libs mais j'avoue que ça depasse mes simples competence ....mais je continuea essayer de comprendre comment utiliser cette lib!

Publié : sam. 15/janv./2005 23:50
par Le Soldat Inconnu
tu peux mettre une image MNG a dispo ici, STP
si j'ai le temps, j'essayerais d'en sortir qlqchose de cette lib :wink:

Publié : dim. 16/janv./2005 9:23
par Thyphoon
voilà 3 fichier
http://www.thyphoon.com/TMP/ball.mng
http://www.thyphoon.com/TMP/example3.mng
http://www.thyphoon.com/TMP/1942.mng

le 1er et le 2ème fonctionne j'en suis sur ...le 3ème (1942) est un peu exotic ...
si tu as besoin d'autre chose dit moi :wink: en tout cas merci car la seul chose que j'ai réussi avec la live c'est a faire des jolies plantage avec reboot a chaque fois lolllllllll

Publié : mer. 21/sept./2005 20:32
par Thyphoon
Le Soldat Inconnu a écrit :tu peux mettre une image MNG a dispo ici, STP
si j'ai le temps, j'essayerais d'en sortir qlqchose de cette lib :wink:
Salut !

Je viens a tout hasard aux nouvelles :P j'ai fait des tests mais je n'arrive a rien ...sniff !!

Publié : mer. 21/sept./2005 20:41
par Progi1984
Utilise la libMNG !

Prends un DLL Viewer et fais un callfunction de ces fonctions pour les utiliser dans purebasic, tu devrais surement arriver à quelque chose !

Publié : mer. 21/sept./2005 20:45
par Thyphoon
Progi1984 a écrit :Utilise la libMNG !

Prends un DLL Viewer et fais un callfunction de ces fonctions pour les utiliser dans purebasic, tu devrais surement arriver à quelque chose !
c'est ce que j'essaie de faire...mais il y a une quantité de fonction astronomique dans la lib en question... alors bien sur pour lire un mng je suppose qu'il n'y a pas besoin de toute mais ça fait pas mal de temps que je test et j'ai rien de probant.... :cry: mais j'ai pas dit mon dernier mot... :wink: j'ai remonté se sujet au cas ou quelqu'un aurait réussi mais bon ... je retourne a mes sources lollllll

Publié : mer. 21/sept./2005 20:48
par Progi1984

Publié : jeu. 22/sept./2005 3:49
par Thyphoon
je vais essayer je te tient au courant

Publié : jeu. 22/sept./2005 4:54
par Thyphoon
:( j'avoue que si ça me donne quelques indications en plus...je ne sais pas trop comment m'y prendre. :(

Il y a avec les sources de libmng des exememples (enfin je crois que c'est bien ça) et dans
lm1009\libmng\contrib\gcc\sdl-mngplay
il y a mngplay.c qui a ressemble a ce que j'ai vu de plus simple comme player en "c" ...mais delà a le traduire je vais avoir du mal. c'est pas enorme comme programme mais au vu de mes connaissances en C je pense que je vais galérer donc je vais essayer mais si une ame généreuse veux me donner un coup de main ça sera avec plaisir lolllll :P

Publié : jeu. 22/sept./2005 7:59
par Thyphoon
Il y a des truc que je pige pas trop en C
voilà une fonction en C

Code : Tout sélectionner

mng_bool mymngopenstream(mng_handle mng)
{
	mngstuff	*mymng;;

	/* look up our stream struct */
        mymng = (mngstuff*)mng_get_userdata(mng);
	
	/* open the file */
	mymng->file = fopen(mymng->filename, "rb");
	If (mymng->file == NULL) {
		fprintf(stderr, "unable to open '%s'\n", mymng->filename);
		Return MNG_FALSE;
	}

	Return MNG_TRUE;
}
et voici comment je l'ai traduit ...

Code : Tout sélectionner

Procedure.b mymngopenstream(mng_handle mng)
    mngstuff=*mymng()
    *mymng()=mng_get_userdata(mng)
  mymng()\file=ReadFile(#PB_Any, NomFichier$) 
  Lof()
  ReadData(*Tampon, Lof()) 
  ProcedureReturn 1
  Else
  ProcedureReturn 0
  EndIf 
EndProcedure
ça vous parait correct ?

Publié : jeu. 22/sept./2005 9:38
par Thyphoon
lollllll bon je fais un monologue mais c'est pas grave !
j'ai decouvert cette info :

Code : Tout sélectionner

La structure des fichiers au format MNG est fondamentalement identique à celle des fichiers PNG, différant seulement dans la signature (8A 4D 4E 47 0D 1A 0A en hexadécimal) et dans l'utilisation d?unités d?information discrètes fournissant une grande variété de dispositifs d'animation. Les images utilisées dans l'animation sont stockées dans le fichier MNG comme une encapsulation d?images au format PNG ou JNG
je me demande si on ne pourrait pas utiliser alors les fonctions
UsePNGImageDecoder() et CatchImage(#Image, MemoryAddress) il suffit juste de trouver comment lire l'entête du fichier pour savoir le nombre d'image et les infos de delay entre image etc... non ? ça serait plus simple que de traduire un code en C...(Car pour l'instant c'est tres loin de marcher)