Langage GAMIN
( Langage GAMIN du projet de Graphisme Programmable Animé Multimédia : texte simple interprété )
- ne pas confondre ce 'langage interprété' avec le langage utilisé pour coder les outils du Projet = JAVA

 

Aide en ligne


Voir :


Voir aussi les exemples de documents_GAMIN du répertoire_GAMIN ( extensions ".gp0" )


Détails :

Définitions :

Structure d'une ligne d'un document_GAMIN =

 Xn: ... !

avec :
X = type de composant graphique.
n = numéro d'ordre des composants de ce type dans le groupe de composants défini.
':' obligatoire
... = affectation de valeurs à des attributs de ce composant
'!' (peut exceptionnellement être omis) peut être remplacé par '#' si la définition du composant n'est pas figée

Types de composants graphiques :

Notes :
- la syntaxe n'est pas représentée ici de façon rigoureuse : ce tabeau devrait cependant en permettre une approche rapide
- les tabulations, obligatoires, sont représentées ici par 3 blancs
- l'ordre des attributs ne compte pas (en principe ...) 
- noter que la ligne définissant un composant graphique peut avoir différentes syntaxes selon le choix des attributs

Catégorie

Pré
fi
xe

Type

Syntaxe

Exemples

Remarques

définir
et
dessiner

P

Point

P?:cc=..   p=..;..    

P1:p=20.75;40.54   !
P2:p=A1.va;A1.va*0.5+P1.y
P3:p=P1.x;P2.y    cc=rouge

couleur "cc"non requise et en fait exceptionnelle

D

Droite

D?:cc=..   cf=.. p1=.. p2=..
D?:p1=..   a=..   
D?:p1=..   a=..   D-
D?:p1=..   a=..   D
D?:p1=..   tg=..    E
D?:p1=..   cotg=..  D+
D?:p1=..   L(D?)..   
D?: Clone (D?) p1=..


D2:p1=P2   p2=P3    cc=vert   sk=2.5,CAP_ROUND,JOIN_ROUND,1,[1,9],0
D3:p1=P1   a=45 
D4:p1=P4   cotg=1.75   E
D4:p1=P4   L(D3)

* p1 et p2 = 2 points
* a = angle en degrés
* L(Dn) signifie :
perpendiculaire à Dn

R

Rectangle

R?:cc=..   cf=..   c=..   dm=..
R?:cc=..   cf=..   c=..   dM=.. 
R?:cc=..   cf=..   c=..   pt=..  

R1:c=P2   dm=30;40  cc=vert   cf=111,111,111,0.5,Ss   #
R2:c=P2   dm=20   cc=100,0,255   if=I2   #
R3:c=P2   dM=P1.y;P3.y  cc=vert   cf=111,111,111,0.5,Ss   #
R4:c=P2   pt=P1.x;P3.y  cf=111,111,111,0.5,Ss   #

* syntaxe similaire à Ellipse
* dM ou dm = dimensions (diamètre ou rayon) 
* pt= "passant par le point" 

E

Ellipse

E?:cc=.. cf=.. p=.. c=..

E1:c=P2   dm=30;40  cc=vert   cf=111,111,111,0.5,Ss   #
E2:c=P2   dm=20   cc=100,0,255   if=I2   #
E3:c=P2   dM=P1.y;P3.y  cc=vert   cf=111,111,111,0.5,Ss   #
E4:c=P2   pt=P1.x;P3.y  cf=111,111,111,0.5,Ss   #

+ toutes combinaisons des éléments de syntaxe ...

C

Croisements
(inter-
sections) 

C?:Dn*Dm
C?:En*Dm
C?:En*Em 

C1:D1*D4
C3:E3*D1
C4:E4*D7

* ordre à respecter :
"Dn * Em " ne va pas actuellement
* le résultat est un tableau de points => C?[n]

G

Courbe
(General
   Path)

G?:cc=   cf=   pts=...   \
G\   ... 

G1: cc=0,170,140   pts=_P1.x;219!   e-18!w72!_P1.y;101|   \
G\   eP1.y-22!wP1.y!_P2.x;P2.y!   eP1.y!w35!_P3.x;P3.y!   #

voir précisions !

T

Texte

T?:p=..   cc=..   cf=..   sty=..   d=..   t=

T1:p=50;50   cf=200,200,200,0.4,Ss   sty=gras   d=36   t=Animal   !

 

I

Image

I?:p=...   I=  

I2:p=450;0   I=spires.jpg   !

charger l'image en début de document

S

Son

S?:s=...

 

ou musique !

 

 

 

 

 

interagir

A

Ascenceur

A?:p=..   t=...   bo=...   va=..   

A1:p=50;500   t=400   bo=40;800   va=200   !
A2:p=50;550   t=500   bo=A1.min;A1.va*0.51   !va=A1.va*0.3   #

pas plus de 2 actuellement !

 

 

 

 

 

 

 

 

 

 

animer

Proc

Process

Proc?:tempo=..  nb=..   rep=..   !

Proc2:tempo=100   nb=50   rep=3   !

 

Tp

Tempos

Tp?:t=..   !

Tp1:t=2_12;23;27_40 !
Tp2:t=7_35 !
Tp3:t=5_40 !
Tp4:t=20_45 !

= plages de périodes séparées par ';'

M

Métr.

M?:dx=..   dy=...   !
M?:a=...   !

M1:pr=800 dx=4 dy=-2 !
M3:a=10.5 !

* a=angle
* dx, dy = avances horizontale et verticale 

tm

tu meus

{_tm.=M?;Tp?}
{!tm.=M?;Tp?} 

{_tm1=M1;Tp1}
{!tm1=M2;Tp3} 

voir précisions !

organiser
/
contrôler

GRP

Groupe

GRP?:Clone(..) ,xx=.. , yy=...
CMD: !=>
. . .
CMD: !<=GRP?:  

GRP2: Clone(GRP1) , $V3.v=$V3+72 ,#
CMD: !=>
. . .
CMD: !<=GRP6: 

 

Clq

 

 

 

* en cours

$V

Variable

$V?: type=truc(..,. . .  ) #

$V1: type=nombre(0,0,16) #
$V2:_contours type=COL_C(gris-clair) #

 

$n

param.

$0 .à..$9

D4:p1=$1<-10>;$2<-20>   p2=$3<-8>;$4<80~200>  #

* pour création ligne en cours

CMD

primitive

CMD: !...

CMD: !=> // Feuille1
CMD: !<=GRP2:_herbe ,copie=evolutive#

 

test

CMD?: #-> ?=<test_au_debut>
. . .
CMD?: # 

CMD1: #-> ?=(OUI) #
. . .
CMD4: #

* séquence de lignes conditionnelle

instruction

CMD?: # . . . [ !>>] ; . . .#

CMD3: # $V1.Plus(1) !>> ;#

* subtilité à maîtriser = "!>> "

dessin

 CMD?: @ GRP?[..] ;#

  CMD6: @ GRP2[0_] ;#

 * dessiner la table d'un composant graphique (ou les cases de plages d'indices)

option

 CMD?: #$ truc=...

 CMD5: #$ COLOdessin = c:40,40,50

 

 

 

Elément de
syntaxe =

"Peinture"

Syntaxe

Exemples

Remarques

voir: P,D,R,E

Couleur de contour

cc=

cc=vert
cc=255,0,128

 

Couleur de fond

cf=

cf=111,111,111,0.5,Ss

 

Image de fond

if=

if=mon_image.jpg

 

Pointillés & épaisseur de trait

sk=...

sk=2.5,CAP_ROUND,JOIN_ROUND,1,[1,9],0

 

*

Elément de
syntaxe =

animer par "SYNTAX_ANIM_ATTRIB"

Syntaxe

Exemples

Remarques

potentiellement
 applicable à tout
 attribut 

animer un attribut

attribut=valeur{_tm?=M?;Tp?}

"p=12;16{_tm1=M1;Tp1}"

 

 

attribut=valeur{!tm?=M?;Tp?}

"p=12;16{!tm1=M1;Tp1}"