--! luart-extensions
-- Charge les deux extensions ui et canvas dont ce programme a besoin.
import ui
-- Importation du module interne 'canvas'
require "canvas"
-- Création d'une fenêtre 'win' avec caption "canvas - Hello etc..."
local win = ui.Window("Canvas - Hello world example", 320, 240)
-- Création d'une surface d'affichage nommée "canv" et de type "Canvas".
local canv = ui.Canvas(win)
-- Définit des propriètés de cette surface
canv.align = "all"
canv.x = 100
canv.y = 35
canv.font = "Impact"
canv.fontsize = 24
-- Couleur du texte (jaune = FF + FF = 00) + intensité (la valeur 20) (le 0x ne nous concerne pas).
canv.color = 0xFFFF0020
-- Création de 4 variables pour les affichages. (x et y = position de départ !)
local x = 100
local y = 100
local x1 = x
local y1 = y
-- Dans cette surface "canv" on affiche du texte et du dessin ou des images.
function canv:onPaint()
self:clear(0x000000FF) -- Couleur de fond de la surface et lui sert à effacer son contenu.
canv:print("Hello World !", x1, y1-70)
-- Dessine deux rectangles pleins (X1, Y1, X2, Y2, et (couleur + intensité) )
-- Si on change les valeurs x ou y déclarées au début du programme, les dessins bougeront ensembles.
canv:fillrect(x, y, x+50, y+50, 0x0000FF50) -- ( Largeur du rectangle BLEU = X2-X1=50)
canv:fillrect(x+70, y, x+120, y+50, 0x00FF0050) -- ( Largeur du rectangle VERT = X2-X1=50)
-- Dessine une ellipse pleine (X, Y, Rayon dans l'axe horizontal, rayon dans l'axe vertical)
canv:fillellipse(x+60, y+25, 25, 25, 0xFF000050) -- on là un diamètre de 50
-- On fait bouger les dessins
if x>win.width then
x=-125
else
x=x+10
end
-- On fait bouger le texte.
if x1<-150 then
x1=win.width
else
x1=x1-2
end
end
await win:showasync()