Page 1 of 2

Manipulation objets graphiques dans les programmes HP-Prime

Unread postPosted: 12 Aug 2013, 14:47
by critor
La plupart des calculatrices graphiques disposent d'objets graphiques rectangulaires utilisables dans leur langage de programmation interprété officiel.
Most graphic calculators have rectangular graphic items usable on their own interpreted programming language.


Ces objets s'appellent Picture sur les TI-z80. La nouvelle TI-84 Plus C Silver Edition couleur de la rentrée 2013 rajoute même un deuxième type d'objet graphique avec quelques spécificités, le type Background.
Those items are called Picture on TI-z80. The new TI-84 Plus C Silver Edition color calculator for back to school 2013 even adds a second specific graphic item, the Background type.


Ces objets disposent toutefois souvent de nombre de limitations dans les langages de programmation officiels:
  • leur nombre est limité
  • ils sont bloqués à la taille de l'écran
  • ils ne peuvent pas être créés sur la calculatrice et nécessitent un programme assembleur ou bien un logiciel spécifique sur l'ordinateur
  • dans le cas où ils peuvent être créés sur la calculatrice, c'est uniquement en stockant l'état courant de l'écran (capture d'écran)
  • ils ne peuvent pas être modifiés mais uniquement écrasés par une nouvelle création d'objet
  • il n'est pas possible d'afficher une partie de ces objets
  • ces objets ne peuvent être affichés qu'en partant du point en haut à gauche de l'écran
However those items often have some limitations with the official programming language:
  • their numbers is limited
  • they are bound by the screen size
  • they can not be created on-calc and thus need an ASM program or a specific software on a computer
  • if they can be created on-calc, the only way is to store the content of the screen (screenshot)
  • they can not be modified but only overwritten through the creation of a new object
  • it is not possible to show a part of those items
  • those items can only be displaying by starting at the top left of the screen


Certes, nombre de programmes assembleur permettent de passer outre. Mais ils utilisent souvent à cette fin leur propre format d'objet graphique qui est donc incompatible.
Of course, there are ASM programs going through these limitations. However, they often use for this purpose their own grapahic item format which is thus incompatible.




Le langage de programmation officiel de la HP-Prime lui nous réserve nombre de surprises de ce côté-là, puisqu'il est possible de créer des objets graphiques avec le contenu et la dimension que l'on veut, de les afficher où l'on veut et même de les transformer comme on veut! :bj:
The official programming language of the HP-Prime supplies us with a lot of surprises about this, as it is possible to create graphic items with the content and dimensions you want, to display them wherever you want, and even to modify them like you want! :bj:


Voici donc en conséquence deux programmes de DJ_O et Gilles59 utilisant le langage officiel pour tester le zoom et le scrolling d'un objet graphique:
Thus here we see two DJ_O and Gilles59's programs using the official programming language to test the scaling and scrolling of a graphic item:





Des performances exceptionnelles pour un langage interprété, qu'il est actuellement impensable d'atteindre sur les autres modèles sans passer au langage assembleur.
It shows exceptional performances for an interpreted language, which are currently impossible to achieve on other calculator models without ASM.


Même si au vu de ces performances on peut émettre quelques doutes quant à la réalisation dans ce langage de jeux rapides redessinant massivement l'écran (jeux d'action avec scrolling par exemple, ou encore jeux 3D FPS), ça n'en reste pas moins honorable. :bj:
Even if those performances may not be enough for games which massively redraw the whole screen (for instance, action games with scrolling, or even 3D FPS games), it remains a honorable performance. :bj:




Source programmes
Source of the programs

http://www.omnimaga.org/index.php?topic ... #msg303466

Re: Manipulation objets graphiques dans les programmes HP-Pr

Unread postPosted: 12 Aug 2013, 16:08
by Laurae
Traduit en anglais :p


(quote IRC: qu'il faut que TI arrête de "brider" les Nspire et de nous laisser faire ce qu'on veut avec )
:p

Quoiqu'on est qu'une minorité qui veut changer la monde :p

Re: Manipulation objets graphiques dans les programmes HP-Pr

Unread postPosted: 12 Aug 2013, 17:22
by nikitouzz
on peux faire des rotozoom ? :O

Re: Manipulation objets graphiques dans les programmes HP-Pr

Unread postPosted: 12 Aug 2013, 17:28
by critor
Pas d'instruction de rotation à ma connaissance.

Mais à partir du moment où l'on peut modifier le contenu des objets-image, oui tu peux programmer une rotation des données.

Re: Manipulation objets graphiques dans les programmes HP-Pr

Unread postPosted: 12 Aug 2013, 18:01
by DoOmnimaga
Tu as oublié d'enlever les commandes WAIT(0.02) dans les 2 programmes D: (je les avais mis car les 2 programmes tournaient trop vite dans l'émulateur). Pour la vitesse véritable, il faudrait refaire le test sans ces commandes :P

(Aussi Critor tu devrais vérifier tes messages privés car j'avais fait une demande de suppression d'un programme en téléchargement l'autre jour (la copie du Tunnel HP Prime qui n'avait pas été uploadée par moi), qui n'a finallement jamais eu de réponse)

Re: Manipulation objets graphiques dans les programmes HP-Pr

Unread postPosted: 12 Aug 2013, 18:06
by Gilles59
Plus rapide, sans déformation et sans aucun clignotement ;)

Code: Select all
DIMGROB_P(G1,80,22);   
DIMGROB_P(G2,320,240);
TEXTOUT_P("PRIME...",G1,0,0,7,RGB(125,0,0));   

FOR Z FROM 1 TO 200 DO
RECT_P(G2);  // Efface G2
BLIT_P(G2,0,0,Z*2,Z,G1); //Zoom G1 dans G2
BLIT_P(G0,G2); // Copie G2 dans G0 (écran)
END;


A tester sur le proto :D

edit by Levak: Ya un bouton Edit en haut à droite de chaque post, merci :) ... C'est noté merci !!

Re: Manipulation objets graphiques dans les programmes HP-Pr

Unread postPosted: 12 Aug 2013, 18:40
by critor
Topic nettoyé. Pour le hors-sujet et les demandes personnelles, il y a le chat ainsi que tout le reste du forum.

Merci.

Re: Manipulation objets graphiques dans les programmes HP-Pr

Unread postPosted: 12 Aug 2013, 18:44
by critor
Je referai la vidéo sans les wait.
Je les ai laissés car j'estimais le temps d'attente raisonnable (centième de seconde) et représentatif d'un jeu qui doit calculer des choses entre deux affichages.

Re: Manipulation objets graphiques dans les programmes HP-Pr

Unread postPosted: 12 Aug 2013, 20:12
by Gilles59
Pour le scrolling "plein écran" à s pixel près (hor. et vert.) :

Code: Select all
EXPORT Scroll(s)

BEGIN
LOCAL x:=100,y:=100;

DIMGROB_P(G1,640,480);   

FOR N:=1 TO 200 DO
RECT_P(G1,IP(RANDOM(640)),IP(RANDOM(480)),IP(RANDOM(640)),IP(RANDOM(480)),IP(RANDOM(255^3)),IP(RANDOM(255^3)));
END;

REPEAT
x:=MAX(MIN(x+ISKEYDOWN(8)-ISKEYDOWN(7),320),0);
y:=MAX(MIN(y+ISKEYDOWN(12)-ISKEYDOWN(2),240),0);
BLIT_P(G0,0,0,G1,x,y,320+x,240+y);
UNTIL ISKEYDOWN(4);

END;


Scroll(n) n corespond au nombres de pixel pour le srolling
ex
Scroll(1)
Scroll(5)

Utiliser les fleches pour bouger... Esc pour arréter
Beaucoup trop rapide sur l'émulateur :D A voir sur HDW

EDIT : correction des codes des touches

Pas d'option pour intégrer directement des videos Dailymotion ? Lien :

http://www.dailymotion.com/video/x130nft_scroll-prime_tech

Re: Manipulation objets graphiques dans les programmes HP-Pr

Unread postPosted: 12 Aug 2013, 21:04
by critor
Vidéos refaites et remplacées dans la news.

Supprimé les commandes wait (merci DJ_O) et utilisé le double buffering pour le zoom (merci Gilles59).