Page 6 sur 8

Re: nGc

Message non luPosté: 18 Avr 2014, 22:36
de pierrotdu18
Bon, c'est bon si je la mets juste en globale, donc je vais faire comme ça ;)
Par contre je remarque que ça ne gère pas la transparence, c'est normal?...
J'ai une image que j'utilise en Lua et qui contient des parties transparentes (qui sont bien affichées en Lua), mais ça m'affiche du vert à la place en C, la couleur que j'avais choisi pour la transparence...

Pourtant je vois qu'il y a des trucs en rapport au canal alpha dans ton programme Java, qu'est ce qu'il ne va pas? :)

Re: nGc

Message non luPosté: 18 Avr 2014, 22:44
de Levak
pierrotdu18 a écrit:Merci, je comprends enfin pourquoi ça faisait crasher ;)

Par contre, j'ai créé un fichier annexe, et ça me met ça : main.o:(.data+0x4b14): multiple definition of `IMAGE'

IMAGE est une variable contenant du code TI.image et qui est définie dans mon fichier annexe (qui ne contient que cette ligne là, c'est grave?...)

Vérifie que tu n'includes pas plusieurs fois le fichier. Il existe une manière beaucoup plus propre et plus robuste pour faire ça, mais tu risques de me regarder de travers.

La "multiple definition" indique normalement les deux endroits. Peut être as-tu un makefile générique qui compile tous les fichiers .c du dossier de sources, dans ce cas il faut faire autrement :

image.c :
Code: Tout sélectionner
char image[] = { ... };


image.h
Code: Tout sélectionner
#ifndef IMAGE_H_
# define IMAGE_H_

char *image;

#endif /* ! IMAGE_H_ */


main.c
Code: Tout sélectionner
...
#include "image.h"
...


foobar.c
Code: Tout sélectionner
...
#include "image.h"
...


J'ai une image que j'utilise en Lua et qui contient des parties transparentes (qui sont bien affichées en Lua), mais ça m'affiche du vert à la place en C, la couleur que j'avais choisi pour la transparence...

Pourtant je vois qu'il y a des trucs en rapport au canal alpha dans ton programme Java, qu'est ce qu'il ne va pas? :)

Tu lui passe bien un png ? D'ailleurs, de mémoire, gui_gc_drawImage supporte 255 niveaux alpha contrairement à celui en Lua, comme tu peux le voir sur certains icones système.

Re: nGc

Message non luPosté: 18 Avr 2014, 22:50
de pierrotdu18
foobar c'est une fonction troll? :p
Sinon je connais le principe du ifndef tqt, par contre pourquoi il faut faire char *image ?

Et c'est quoi le truc plus robuste et propre? :D


Enfin, oui, je lui donne bien un png pourtant...

Re: nGc

Message non luPosté: 18 Avr 2014, 22:56
de Levak
pierrotdu18 a écrit:par contre pourquoi il faut faire char *image ?

Pour te forcer à ne pas faire sizeof(image), car tu serais tenté de le faire si c'était char image[], or dans les deux cas il te renverra 4, la taille d'un pointeur.

Et c'est quoi le truc plus robuste et propre? :D

Le système de garde, donc les ifndef.

Enfin, oui, je lui donne bien un png pourtant...

Qui a un canal alpha ?
Je ne fais rien de plus qu'un appel à des fonctions Java donc le problème doit venir d'ailleurs.
Déjà, est-ce que tu vois autre chose que des 0xFF à partir de la moitié ? Si oui, alors c'est problématique ...

Re: nGc

Message non luPosté: 18 Avr 2014, 23:02
de pierrotdu18
Levak a écrit:
pierrotdu18 a écrit:par contre pourquoi il faut faire char *image ?

Pour te forcer à ne pas faire sizeof(image), car tu serais tenté de le faire si c'était char image[], or dans les deux cas il te renverra 4, la taille d'un pointeur.

Heu... Mais pourquoi il faut le mettre en fait, ça sert à quoi?
Levak a écrit:
pierrotdu18 a écrit:Et c'est quoi le truc plus robuste et propre? :D

Le système de garde, donc les ifndef.

Ah, bon bah je connaissais déjà ^^

Levak a écrit:
pierrotdu18 a écrit:Enfin, oui, je lui donne bien un png pourtant...

Qui a un canal alpha ?
Je ne fais rien de plus qu'un appel à des fonctions Java donc le problème doit venir d'ailleurs.
Déjà, est-ce que tu vois autre chose que des 0xFF à partir de la moitié ? Si oui, alors c'est problématique ...

Oui oui, il n'y a pas que des 0xFF, il y a aussi des 0x00 ...
J'en conclue que c'est un problème de la lib ngc?

Re: nGc

Message non luPosté: 19 Avr 2014, 00:21
de pierrotdu18
Sinon, le reste marche bien, donc il ne reste plus que la transparence! :D

Pour vous remercier je vous ai fait ça :p (ce n'est pas un :troll:, vous pouvez quitter à tout moment ^^)

Veille.tns
(13.78 Kio) Téléchargé 18 fois

Re: nGc

Message non luPosté: 19 Avr 2014, 01:03
de Lepzulnag
Vu le sujet traité, je m'attendais à ce que ta "grande œuvre d'art" contienne au moins une image :p

Re: nGc

Message non luPosté: 19 Avr 2014, 09:48
de pierrotdu18
Bah elle en contient une ^^

Re: nGc

Message non luPosté: 19 Avr 2014, 18:33
de pierrotdu18
Bon, je pense que ça ne sert à rien de faire durer ce sujet deux ans, je vais donc faire un récapitulatif de ce qu'il reste comme problèmes et des questions qu'il me reste à poser ;)

Premièrement, il y a le problème de la couche alpha... Le code que me génère l'outil de Levak a l'air parfait, il y a bien des 0xFF mais aussi des 0x00 pour la couche alpha. Sauf que, quand je lis l'image avec l'ému à partir de mon programme, il n'y a aucune transparence. Est-ce un problème de la librairie ngc, et dans ce cas, à qui faudrait-il demander de corriger le problème?

Enfin, voilà les questions qui me viennent à l'esprit:
D'après ce que j'ai vu dans la documentation de la lib ngc, il n'existe pas de fonction de rotation et de redimensionnement pour les images... Pour ce qui est du redimensionnement, ce n'est pas un réel problème car je peux toujours faire les modifications avant, mais pour ce qui est de la rotation, serait-il envisageable d'implémenter cette fonction?... Car sinon, il faudrait créer au moins une dizaine d'images pour une seule, qui chacune correspondrait à une certaine rotation, mais ça alourdirait beaucoup le fichier final, et ça serait moins intuitif à programmer...
Enfin, rien à voir avec les images, j'aimerais pouvoir avoir un curseur comme pour les autres programmes, et pouvoir le déplacer avec le trackpad. Y a-t-il une fonction qui renvoie l'emplacement (x,y) du curseur? Je vois qu'avec nDoom, on peut déplacer la caméra à droite par exemple en fleurant uniquement la partie droite du trackpad, ça pourrait grandement m’intéresser, comment peut-on gérer ça? :)

Désolé de poser autant de questions, je débute, et je dois avouer que je ne m'y retrouve pas très bien avec Hackspire ;)

Re: nGc

Message non luPosté: 19 Avr 2014, 19:49
de Levak
pierrotdu18 a écrit:Est-ce un problème de la librairie ngc

ngc n'est qu'une série de syscalls vers les fonctions internes de l'OS déjà codées, ce n'est pas une bibliothèque mais une API.

et dans ce cas, à qui faudrait-il demander de corriger le problème?

A moi ...

D'après ce que j'ai vu dans la documentation de la lib ngc, il n'existe pas de fonction de rotation et de redimensionnement pour les images...


Pour le redimensionnement, j'ai une solution "crade", c'est avec un gc_copy, gc_drawImage, gc_copy(w, h), gc_blit_gc.

Pour la rotation, cette fonction n'existe pas dans l'API de l'OS 3.1 et a été rajoutée en dehors de la vtable à partir de la 3.2. Pour résumer, même si on l'ajoute, ça ne sera plus compatible 3.1, ce qui casse la rétro-compatibilité.

Enfin, rien à voir avec les images, j'aimerais pouvoir avoir un curseur comme pour les autres programmes, et pouvoir le déplacer avec le trackpad.

Tu ne disposes pas de cette information avec Ndless.

Y a-t-il une fonction qui renvoie l'emplacement (x,y) du curseur? Je vois qu'avec nDoom, on peut déplacer la caméra à droite par exemple en fleurant uniquement la partie droite du trackpad, ça pourrait grandement m’intéresser, comment peut-on gérer ça? :)

Oui, mais son utilisation n'est pas aussi simple que cela puisse paraître. Je t'invite à lire le code de nDoom ou encore mViewer pour comprendre comment l'utiliser.