Autres articles / Other articles

Création du vocabulaire SDL2

publication: 5 novembre 2024 / mis à jour 6 novembre 2024

Read this page in english

 


Nous allons voir comment est assurée la liaison logicielle entre eForth Windows et les fonctions disponibles dans SDL2.dll.

Le mot clé est dll. Ce mot est disponible dans le vocabulaire windows. Il crée un ticket d’accès vers des ressources Windows. Si vous avez correctement installé eForth windows et SDL2.dll, on va créer notre ticket d’accès :

windows 
\ Entry point to SDL2.dll library 
z" SDL2.dll" dll SDL2.dll 

Ici, notre ticket a été nommé SDL2.dll. On aurait pu le nommer plus simplement SDL2 ou SDL2ticket

Création et utilisation d’un ticket de liaison logicielle

Reprenons la ligne qui crée le ticket de liaison logicielle :

z" SDL2.dll" dll SDL2.dll

On y voit :

Définition du vocabulaire SDL2

Afin d’éviter toute collision logicielle avec des mots prédéfinis du vocabulaire forth, il est fortement recommandé de définir tous les mots propres à la liaison logicielle dans un vocabulaire spécifique :

vocabulary SDL2 

Ceci crée le vocabulaire SDL2. Tous les mots de liaison logicielle avec SDL2.dll seront définis dans ce vocabulaire. Pour créer ces nouvelles définitions, nous devrons accéder aux autres vocabulaires forth, windows et structures :

only FORTH also  windows also  structures also 

Et enfin, on force la définition des nouveaux mots dans ce vocabulaire SDL2 :

SDL2 definitions 

Voici la séquence complète des opérations de définition et exploitation de ce vocabulaire SDL2 :

vocabulary SDL2 
only FORTH also  windows also  structures also 
SDL2 definitions 
 
\ Entry point to SDL2.dll library 
z" SDL2.dll" dll SDL2.dll 
SDL2 

Si on exécute vlist, on doit voir ceci :

--> vlist 
SDL2.dll 

Ici, SDL2.dll est le premier mot dans notre vocabulaire SDL2.

Définition des liaisons logicielles

Notre ticket SDL2.dll est devenu un mot de définition. Pour créer le mot GetError :

\ Retrieve a message about the last error that occurred on the current thread 
z" SDL_GetError"            0 SDL2.dll GetError ( -- zstr ) 

On retrouve ici :

On peut vérifier la création de GetError en tapant vlist qui affiche :

--> vlist 
GetError SDL2.dll 

Passage des paramètres vers les liaisons logicielles

Dans l’exemple précédent, le mot GetError ne nécessite pas de paramètre. Voyons le cas d’un mot nécessitant plusieurs paramètres :

\ Set the color used for drawing operations (Rect, Line and Clear) 
z" SDL_SetRenderDrawColor"  5 SDL2.dll SetRenderDrawColor 

Ici, en rouge, la valeur 5 qui indique au ticket de liaison logicielle qu’il faudra prendre en compte cinq paramètres pour le mot SetRenderDrawColor.

Ici un mot qui ne nécessite qu’un seul paramètre :

\ Destroy the rendering context for a window and free associated textures 
z" SDL_DestroyRenderer"     1 SDL2.dll DestroyRenderer 

Il n’y a pas d’indication à donner sur la nature et le nombre de paramètres récupérés par Forth après exécution des mots définis par un ticket de liaison logicielle.

Comprendre la documentation SDL2

La documentation de référence est accessible ici :
  https://wiki.libsdl.org/SDL2/CategoryAPI

Pour eForth Windows, il n’est pas question de créer tous les mots associés à ces fonctions. D’une part, certaines fonctions comme SDL_GetAndroidSDKVersion ne concernent pas l’environnement Windows. D’autre part, le but de cette documentation est de vous donner les clés pour rajouter des mots si vous voulez utiliser une fonction dont la liaison logicielle n’a pas été définie dans SDL2.

Voyons un cas précis, la fonction SDL_SetTextureColorMod, dont la documentation est accessible ici :
  https://wiki.libsdl.org/SDL2/SDL_SetTextureColorMod

La partie qui nous intéresse est ici :

On voit ici qu’il y a quatre paramètres : texture, r, g et b. la seule chose à retenir c’est ce nombre quatre pour définir notre mot SetTextureColorMod :

z" SDL_SetTextureColorMod"     4 SDL2.dll  SetTextureColorMod 

Et c’est tout !

Lors de son exécution, le mot SetTextureColorMod renvoie 0 ou une valeur négative en cas d’erreur. Cette donnée sera à traiter lors de l’exécution du programme.

La documentation de chaque mot du vocabulaire SDL2 est disponible ici :
  https://eforth.arduino-forth.com/index/glossaire-windows/

Utilisez la recherche textuelle pour retrouver la documentation complète d’un mot du vocabulaire forth ou SDL2.

Ici la documentation détaillée de GetWindowSizeInPixels :
  https://eforth.arduino-forth.com/help/explain-eforth-windows/id/1141


Legal: site web personnel sans commerce / personal site without seling