Page 1 of 2

Bug dans l'API Lua : FULL SCREEN \o/

Unread postPosted: 01 Aug 2011, 20:33
by Levak
Ce soir j'ai découvert un bug assez étrange dans l'API du framework Nspire. La possibilité de dessiner dans la barre de titre.
Autant le dire tout de suite, cela n'est pas correctement géré par on.paint(), puisqu'il faut que ce dernier soit en corrélation avec l'actualisation de la barre de titre.

Ce qui m'étonne c'est que j'ai rien fait de spécial :

Code: Select all
function on.paint(gc)
  gc:begin()

-- draw
  gc:setFont("sansserif", "b", 10)
  gc:drawString("Hello World", 0, 0, "top")

  gc:finish()
end


Un exemple de la catastrophe :
Image

Re: Bug dans l'API Lua : FULL SCREEN \o/

Unread postPosted: 01 Aug 2011, 20:58
by Levak
Ou encore :

Code: Select all
function on.paint(gc)
  gc:drawString("0", 0, 0, "top")
  gc:begin()
  gc:drawString("0", 0, 0, "top")
  gc:finish()
end


Image

Re: Bug dans l'API Lua : FULL SCREEN \o/

Unread postPosted: 01 Aug 2011, 21:16
by Loulou 54
ça sert à quoi gc:begin() et finish ?

Re: Bug dans l'API Lua : FULL SCREEN \o/

Unread postPosted: 01 Aug 2011, 21:27
by Levak
Loulou 54 wrote:ça sert à quoi gc:begin() et finish ?


Normalement, on a pas à s'en servir, mais gc:begin() permet d''initialiser un nouveau contexte graphique :
http://wiki.inspired-lua.org/platform.gc

Ici, gc est déjà initialisé, et pourtant, on le réinitialise. Apparemment, la Nspire n'aime pas.

Le gc:finish() permet de finir le dessin.
J'ai remarqué qu'en son absence, il n'y a plus le bug d'affichage quand on fait Ctrl+Up

Re: Bug dans l'API Lua : FULL SCREEN \o/

Unread postPosted: 01 Aug 2011, 21:29
by critor
Bravo Levak! :bj:

Grâce à toi on a plus de place pour l'affichage de nos programmes Lua! ;)

Re: Bug dans l'API Lua : FULL SCREEN \o/

Unread postPosted: 01 Aug 2011, 21:31
by Levak
critor wrote:Bravo Levak! :bj:

Grâce à toi on a plus de place pour l'affichage de nos programmes Lua! ;)


Enfin, c'est vite dit.

C'est un bug, donc TI va forcément le corriger un jour ou l'autre.
De plus, la barre de titre ne s'actualise pas en même temps que le on.paint(). Il faut forcer le refresh en faisant Ctrl+Tab par exemple.

Re: Bug dans l'API Lua : FULL SCREEN \o/

Unread postPosted: 02 Aug 2011, 04:48
by Adriweb
GG !

Je leur dis, a Dallas la bas, ou on en profite lol?

C'est marrant dailleurs parce qu'en testant ces commandes j'avais pas vu ce bug...

Re: Bug dans l'API Lua : FULL SCREEN \o/

Unread postPosted: 02 Aug 2011, 05:43
by Adriweb
Bon, j'ai essayé plein de truc et sans succès....

J'ai eu quelques trucs sympa pour rendre par contre toute l'interface de l'OS transparente avec un gc:begin() (et pas de finish) et un setAlpha a 120 par exemple

Des screenshots bientot pour d'autres trucs marrant (editeur de programme basic qui déconne a cause du gc:begin() etc. )

Re: Bug dans l'API Lua : FULL SCREEN \o/

Unread postPosted: 02 Aug 2011, 10:37
by critor
Bah, ce ne sont pas des bugs "sensibles".

Je dirais de taire cela pour le moment, le temps de voir tous les trucs marrants que l'on peut faire avec ;)
Qu'ils se concentrent plutôt sur le D2Editor. :)

Re: Bug dans l'API Lua : FULL SCREEN \o/

Unread postPosted: 02 Aug 2011, 14:49
by Levak
Adriweb wrote:Je leur dis, a Dallas la bas, ou on en profite lol?


Franchement, oui. Dit-le, il n'y a rien à en tirer de ça. Pourquoi ?
- platform.window:width()/height() renvoie la réelle taille du widget (et non le full screen)
- le refresh de la partie haute de l'écran ne se fait que lorsque cette dernière est actualisée manuellement (ex : Ctrl+Tab)
- Les icones de document et de batterie s'actualisent tout seul et viennent écraser un quelconque dessin dans cette zone (sprite non transparent)

Pour moi, aucun avantage à essayer de travailler en full screen, à part effacer au premier lancement tout l'écran pour faire le blanc ...