Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » fxSDK, un SDK alternatif pour écrire des add-ins
Lephenixnoir Hors ligne Administrateur Points: 24563 Défis: 170 Message

fxSDK, un SDK alternatif pour écrire des add-ins

Posté le 29/08/2014 22:00

Cette page sert d'index pour la série de topics du fxSDK.

Le fxSDK est une collection d'outils permettant de développer des add-ins pour les calculatrices Casio des séries Graph. C'est une alternative au fx-9860G SDK et PrizmSDK qui ne sont plus activement maintenus, et le compagnon classique de mon noyau gint.

Index des topics

Ce projet existe depuis 2015, alors il y a pas mal de topics liés. En voici une liste complète !

Topics principaux

Installation du fxSDK

Tutoriels

Compatibilité sur calculatrice et PC

Côté PC, le fxSDK est compatible avec Linux, Mac OS, et WSL pour Windows ; normalement tout le monde peut l'utiliser. Je teste constamment sous Linux, et WSL est un Linux donc c'est testé aussi. Je n'ai pas de Mac OS donc il peut y avoir quelques surprises, mais en général c'est l'affaire de corriger un bug ou deux.

En termes de calculatrices, le fxSDK supporte :

Calculatrices monochromes
  • Graph 35+E II
  • Graph 35+ USB / Graph 35+E (SH3/SH4)
  • Graph 75/75+/75+E
  • Graph 85/85 SD/95 (SD) (pas activement testé)

Calculatrices couleurs
  • Graph 90+E / fx-CG 50
  • Prizm fx-CG 10/20

Comment installer le fxSDK et coder des add-ins

Le fxSDK s'installe à partir de dépôts Git sur la forge de Planète Casio (par exemple Lephenixnoir/fxsdk). Il y en a un peu beaucoup, donc manuellement c'est assez long. Pour que ça aille plus vite et pour simplifier le travail des débutants, il y a un outil appelé GiteaPC qui peut faire ça pour vous.

Si vous utilisez Windows, vous aurez besoin de WSL pour accéder à un système Linux dans Windows. Heureusement, Microsoft a fait ça bien et c'est facile à faire. Voyez le tutoriel d'installation de WSL 2 (et l'explication rapide de ce que WSL 2 est).

Si vous utilisez Mac OS, ouvrez l’œil en lisant les topics pour ne pas manquer les informations supplémentaires et éventuelles déviations par rapport à la procédure normale sous Linux.

Méthode automatique avec GiteaPC (plus rapide / recommandée pour les débutants)
  1. Suivez le tutoriel d'utilisation de GiteaPC, qui explique comment obtenir le fxSDK.

Méthode automatique avec plugin VS Code
  1. Yannis300307 a créé un plugin VS Code Casio Dev Tools qui fonctionne sous Windows (avec WSL) et Debian (probablement les dérivés aussi).

Méthode AUR pour les utilisateurs Arch/Manjaro/dérivés (ils se reconnaîtront)
  1. Dark Storm maintient MiddleArch, un dépôt de paquets précompilés qui a entre autres le fxSDK.

Méthode manuelle (plus fine / classique pour les habitués)
  1. Compilez et installez le cross-compilateur GCC pour SuperH.
  2. installez (dans cet ordre) les dépôts fxSDK, OpenLibm, fxlibc, gint ; en option, Slyvtt/µSTL_2.3.

Description sommaire du fxSDK

Pour une introduction à l'utilisation du fxSDK qui montre comment utiliser les outils pour développer un add-in, lisez plutôt les tutoriels d'utilisation de gint. Cette section est juste une description sommaire.

Le cœur du fxSDK est un cross-compilateur GCC pour SuperH, habituellement nommé sh-elf-gcc. Bien sûr on a avec toute la suite d'outils, dont as, ld, objdump, objcopy (entre autres). Contrairement au vieux compilateur du SDK, GCC est un compilateur moderne avec beaucoup d'options et capable de très solides optimisations.

Sur la calculatrice, c'est le noyau gint qui fait la majorité du travail. Il remplace fxlib/libfxcg et une partie de l'OS pour vous offrir des fonctionnalités plus cool et plus rapides. Les add-ins développés avec le fxSDK utilisent gint toutes les trois lignes !

Il y a enfin plusieurs outils utiles sur le PC qui sont utilisés durant le développement ou l'utilisation des add-ins :

  • fxsdk est un script shell qui permet de créer et compiler les projets sans se prendre trop la tête. Le système de compilation officiel pour les add-ins est CMake, mais un système plus ancien de Makefile est encore supporté.
  • fxconv est un outil très polyvalent qui convertit à la compilation les assets (images, polices, maps....). Il permet de travailler avec des logiciels et formats de fichiers normaux sur le PC et d'avoir automatiquement un format optimisé sur la calculatrice. fxconv est extrêmement extensible et chaque projet peut ajouter des conversions personnalisées.
  • fxgxa crée les fichiers g1a (format des add-ins pour Graph monochromes) et g3a (format des add-ins pour Graph couleurs) à partir des programmes compilés.
  • fxlink est un outil de communication qui peut transférer des fichiers vers les Graph 35+E II et Graph 90+E en ligne de commande, mais aussi échanger interactivement avec les add-ins gint par le câble USB, et est couramment utilisé pour réaliser des captures d'écran ou captures vidéo des add-ins.


Changelog et informations techniques

Ci-dessous se trouve la liste des posts annonçant les nouvelles versions du fxSDK, ainsi que des liens vers les instructions/tutoriels supplémentaires publiés avec.

VersionDateInfos supplémentaires
fxSDK 2.11.06 Juillet 2024Debuggage à distanceCompilation mono pour Graph 90
Générer plusieurs variables dans fxconv
fxSDK 2.10.02 Avril 2023Personnalisation de l'icône Graph 90+ETutoriel d'utilisation de libfxlink
fxSDK 2.9.129 Août 2022
fxSDK 2.9.021 Août 2022Réinstallation complète nécessaire
fxSDK 2.8.017 Mai 2022
fxSDK 2.7.119 Mars 2022
fxSDK 2.7.031 Décembre 2021Collecter toutes les images d'un projet avec fxconv
fxSDK 2.6.030 Août 2021Génération de structures complexes avec fxconv
fxSDK 2.5.24 Juillet 2021
fxSDK 2.5.14 Juillet 2021
fxSDK 2.5.025 Mai 2021
fxSDK 2.4.027 Avril 2021
fxSDK 2.3.130 Janvier 2021
fxSDK 2.3.029 Janvier 2021Introduction de fxconv-metadata.txtInstructions de migration vers CMake
Séparation de libprof en fx/cg



Précédente 1, 2, 3 ··· 10 ··· 20 ··· 30 ··· 34, 35, 36, 37, 38, 39, 40, 41 Suivante
Inikiwi Hors ligne Membre Points: 594 Défis: 8 Message

Citer : Posté le 17/08/2022 21:18 | #


j'ai retiré ma toolchain de path et lors de la compilation de gint ça ne fonctionne toujours pas malgré que la bonne toolchain soit utilisé.
<giteapc> Lephenixnoir/gint: Configuring
-- The C compiler identification is GNU 11.1.0
-- The ASM compiler identification is GNU
-- Found assembler: /home/pierre/.local/bin/sh-elf-gcc
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /home/pierre/.local/bin/sh-elf-gcc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Found Git: /usr/bin/git (found version "2.35.1")
-- Configuring done
-- Generating done
-- Build files have been written to: /home/pierre/.local/share/giteapc/Lephenixnoir/gint/build-fx
-- The C compiler identification is GNU 11.1.0
-- The ASM compiler identification is GNU
-- Found assembler: /home/pierre/.local/bin/sh-elf-gcc
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /home/pierre/.local/bin/sh-elf-gcc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Found Git: /usr/bin/git (found version "2.35.1")
-- Configuring done
-- Generating done
-- Build files have been written to: /home/pierre/.local/share/giteapc/Lephenixnoir/gint/build-cg
<giteapc> Lephenixnoir/gint: Building
Scanning dependencies of target gint-fx
[  0%] Building C object CMakeFiles/gint-fx.dir/src/cpg/cpg.c.obj
Dans le fichier inclus depuis /home/pierre/.local/share/giteapc/Lephenixnoir/gint/include/gint/drivers.h:13,
                 depuis /home/pierre/.local/share/giteapc/Lephenixnoir/gint/src/cpg/cpg.c:5:
/home/pierre/.local/share/giteapc/Lephenixnoir/gint/include/gint/defs/types.h:17:10: erreur fatale: sys/types.h: Aucun fichier ou dossier de ce type
   17 | #include <sys/types.h>
      |          ^~~~~~~~~~~~~
compilation terminée.
make[3]: *** [CMakeFiles/gint-fx.dir/build.make:76 : CMakeFiles/gint-fx.dir/src/cpg/cpg.c.obj] Erreur 1
make[2]: *** [CMakeFiles/Makefile2:83 : CMakeFiles/gint-fx.dir/all] Erreur 2
make[1]: *** [Makefile:136 : all] Erreur 2
gmake: *** [giteapc.make:10 : build] Erreur 2
error: error 2 in command: gmake -f giteapc.make build

Lephenixnoir Hors ligne Administrateur Points: 24563 Défis: 170 Message

Citer : Posté le 17/08/2022 21:34 | #


Comme indiqué sur le topic de GiteaPC, il y a d'autre choses à installer avant gint, à savoir OpenLibm et la fxlibc (la dernière fournissant <sys/types.h>). GiteaPC va toujours installer la fxlibc avant gint, mais je soupçonne que la fxlibc ait été installée avec ton ancien compilateur (avant que tu ne le retires du PATH). Si c'est ça alors désinstalle puis réinstalle la fxlibc, ton nouveau compilateur sera utilisé automatiquement.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Inikiwi Hors ligne Membre Points: 594 Défis: 8 Message

Citer : Posté le 18/08/2022 09:24 | #


merci! ça a marché ! je vais pouvoir me lancer sur la programmation graph 90 et espérer agrandir le catalogue .
je vais faire une pause sur l'émulateur car de toute façon je suis bloqué.
Mb88 Hors ligne Rédacteur Points: 1211 Défis: 3 Message
Inikiwi Hors ligne Membre Points: 594 Défis: 8 Message

Citer : Posté le 18/08/2022 11:39 | #


apt install c'est mieux.
Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 18/08/2022 11:56 | #


sudo pacman -S fxsdk gint
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir Hors ligne Administrateur Points: 24563 Défis: 170 Message

Citer : Posté le 21/08/2022 22:20 | #


Nouvelle version : fxSDK 2.9.0

Release associée de gint : gint 2.9.0
Release associée de la fxlibc : fxlibc 1.4.4

Cette version du fxSDK apporte deux changements majeurs.

Le premier est le support complet du C++ avec la lib standard (via l'implémentation GNU, libstdc++) !

Ça veut dire qu'on peut coder dans les derniers standards C++ (y compris C++20), accéder aux fonctionnalités récentes du langage (concepts) mais aussi aux structures de données et conteneurs habituels (std::string, std::vector, etc). La seule chose qu'on n'a pas encore c'est les exceptions.

Le second est une réorganisation des fichiers du fxSDK.

Pour faire simple, le compilateur et les bibliothèques comme gint sont maintenant organisés d'une façon moins barbare et plus proche de ce qu'on aurait si la calculatrice était un ordinateur (avec une sysroot ou du moins quelque chose qui s'en approche). C'est nécessaire pour avoir la lib C++. Ce changement n'est pas très visible pour vous, à part que :

  • Pour utiliser la lib math, on peut maintenant écrire -lm au lieu de -lopenlibm.
  • Le hack pour inclure les en-têtes de OpenLibm n'est plus nécessaire.
  • Le CMake pour installer des bibliothèques a changé un peu, voir ci-dessous.

Instructions de mise à jour vers fxSDK 2.9

Pour cette mise à jour, afin de créer la bonne organisation pour le fxSDK il faut reprendre l'installation de zéro. C'est automatique comme avant mais prévoyez entre 30 minutes et 1 heure pour recompiler GCC.

Si vous avez GiteaPC, désinstallez tous les dépôts du fxSDK (probablement tous sauf GiteaPC lui-même). Généralement ça va vous donner

% giteapc uninstall libprof gint fxlibc OpenLibm sh-elf-gcc sh-elf-binutils fxsdk

Tapez giteapc list pour avoir une liste des dépôts installés, si vous en avez d'autres (libimg, µSTL, libSerial) désinstallez-les aussi. N'allez pas supprimer les dossiers de GiteaPC directement, non seulement ça ne désinstallerait pas proprement mais ça supprimerait aussi GiteaPC alors qu'on veut le garder.

Une fois que tout est parti, réinstallez les outils fxSDK, binutils, et GCC. C'est ça qui prend le plus longtemps (de loin) :

% giteapc install Lephenixnoir/fxsdk Lephenixnoir/sh-elf-binutils Lephenixnoir/sh-elf-gcc

Si vous n'avez pas UDisks2 remplacez le premier par Lephenixnoir/fxsdk:noudisks2.

Ensuite installez la lib mathématique, la lib C, et ensuite réinstallez sh-elf-gcc pour installer la lib C++ qui est fournie avec (GCC ne sera pas recompilé) :

% giteapc install Lephenixnoir/OpenLibm Vhex-Kernel-Core/fxlibc Lephenixnoir/sh-elf-gcc

Enfin, passez à gint et aux bibliothèques :

% giteapc install Lephenixnoir/gint Lephenixnoir/libprof # ...

Au moment où j'écris ce post les libs de SlyVTT ne sont pas encore prêtes, surveillez les commentaires ci-dessous pour voir quand c'est bon !

Explications détaillées de ce qui a changé

Jusqu'ici le fxSDK abusait du fait qu'il y a un dossier interne de GCC dans lequel le compilo va chercher les headers et les bibliothèques, et on installait nos libs là. Ça marche, mais c'est pas prévu pour, et dès qu'on se met dans un environnement un peu plus proche du hosted (le terme désignant un environnement complet genre Linux, par opposé à free-standing qui signifie en gros "embarqué") ça ne marche plus.

Typiquement, quand on compile la lib C++ les en-têtes et les bibliothèques ne sont pas cherchés au même endroit, et une fois qu'on a fini de la compiler elle ne s'installe pas non plus au même endroit.

Normalement quand on a un système de cross-compilation comme ça on a une sysroot, qui est un dossier dans lequel on a une installation plus ou moins complète du système cible. Par exemple si Linux tournait sur la calculatrice on aurait dans la sysroot tous les en-têtes Linux avec les libs et les outils qui vont bien, pour SuperH. La lib C++ se compile et s'installe comme s'il y a une sysroot.

Le changement que cette version apporte au fxSDK consiste donc à organiser les fichiers pour créer un dossier qui s'approche de ça au lieu d'utiliser le dossier interne de GCC.

Pour s'y retrouver j'ai ajouté une nouvelle commande fxsdk path <NAME> qui affiche les dossiers importants du SDK. Pour l'instant trois noms sont définis, sysroot qui affiche le dossier principal dans lequel tout est installé, lib qui affiche le dossiers où on mets nos libs, et include qui affiche le dossier où on met nos en-têtes.

Instructions de mise à jour des bibliothèques

Il y a quelque changements en termes de CMake.

Au lieu d'installer les libs dans ${FXSDK_COMPILER_INSTALL} et les headers dans ${FXSDK_COMPILER_INSTALL}/include vous devez maintenant les installer dans ${FXSDK_LIB} et ${FXSDK_INCLUDE} respectivement. Ces deux variables renvoient les mêmes dossiers que fxsdk path lib et fxsdk path include.

La fonction find_simple_library() du fxSDK qui est utilisée pour dans les modules Find*.cmake prend désormais le nom d'un header relatif au dossier ${FXSDK_INCLUDE}, donc il faut retirer un include/ dans le chemin. Par exemple au lieu de find_simple_library(libX.a include/X/config.h) on écrira find_simple_library(libX.a X/config.h).

Un exemple parfaitement canonique des changements à faire est visible dans ce commit de JustUI. Le dépôt Lephenixnoir/Template-gint-library est également à jour.

Changelog complet

  • Refonte de l'organisation des dossiers (sysroot).
  • Ajout d'un fichier LICENSE pour spécifier la license MIT.
  • Ajout d'un charset 256chars à fxconv pour le bloc Unicode U+0000..U+00FF.
  • Correction d'un bug qui rendait les images RGB565 très grosses.

Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Slyvtt Hors ligne Maître du Puzzle Points: 2383 Défis: 17 Message

Citer : Posté le 22/08/2022 21:27 | #


La SDL ainsi que ses librairies filles ont été mises à jour pour tenir compte de la nouvelle architecture de fxSDK 2.9.0.

L'installation se fait via l'outil giteapc comme suit :

  • si vous désirez installer seulement la librairie SDL (qui pour Casio PRIZM contient pour rappel la SDL 1.2.15 et la librairie SDL_gfx avec les primitives graphiques et les fonctions de transformations sur les surfaces) :
    giteapc install Slyvtt/cSDL1_2_15
  • si vous voulez installer la totale, à savoir SDL et SDL_image (version 1.2.12) , afin de pouvoir importer des images JPG ou PNG :
    giteapc install Slyvtt/cSDL1_2_15 Slyvtt/cZlib1_2_5 Slyvtt/cPNG1_5_30 Slyvtt/cJPEGv9d Slyvtt/cSDL_image1_2_12


Je vous renvoie vers les topics qui vont bien pour plus d'infos sur comment utiliser les libs :



Amusez-vous bien ...
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Lephenixnoir Hors ligne Administrateur Points: 24563 Défis: 170 Message

Citer : Posté le 22/08/2022 21:29 | #


Excellent boulot, merci pour ta réactivité ! Toujours au top et parfaitement maintenu !!
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Slyvtt Hors ligne Maître du Puzzle Points: 2383 Défis: 17 Message

Citer : Posté le 22/08/2022 21:37 | #


Merci Lephé
Faut encore que je travaille sur cette histoire de dépendances dans les findxxxlib.cmake et sur les interconnections de librairies.
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Inikiwi Hors ligne Membre Points: 594 Défis: 8 Message

Citer : Posté le 27/08/2022 11:30 | #


après un sudo apt update && sudo apt full-upgrade cmake m'affiche
-- The C compiler identification is GNU 11.1.0
-- The CXX compiler identification is GNU 11.1.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /home/pierre/.local/bin/sh-elf-gcc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /home/pierre/.local/bin/sh-elf-g++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found Gint: TRUE (found suitable version "2.9.0-1", minimum required is "2.1")
-- Configuring done
CMake Error in CMakeLists.txt:
  The language FXCONV was requested for compilation but was not enabled.  To
  enable a language it needs to be specified in a 'project' or
  'enable_language' command in the root CMakeLists.txt


-- Generating done
CMake Generate step failed.  Build files cannot be regenerated correctly.

Lephenixnoir Hors ligne Administrateur Points: 24563 Défis: 170 Message

Citer : Posté le 27/08/2022 14:03 | #


Arf oui KikooDX avait aussi ce problème, c'est avec CMake 3.24. Il faut que je modifie les scripts...

Ordre d'idée : ajouter un enable_language(FXCONV) après le import(Fxconv) et modifier Fxconv.cmake pour définir assez de variables pour que CMake le reconnaisse de nouveau comme un langage custom.

Je regarde ça aujourd'hui.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Lephenixnoir Hors ligne Administrateur Points: 24563 Défis: 170 Message

Citer : Posté le 29/08/2022 00:50 | #


Nouveau patch : fxSDK 2.9.1

Ce patch résout un problème de compatibilité avec CMake 3.24.

Le fxSDK utilise le mécanisme de définition de langages de CMake pour définir un langage FXCONV dont le compilateur est (sans surprise) fxconv et ainsi traiter les assets comme des fichiers source. Cependant, tout ce système est interne à CMake, très modérément documenté et subit parfois des changements sans notifications dans le changelog. Ce patch délaisse la méthode "abrégée" de définition de langage avec juste CMAKE_<LANG>_COMPILE_OBJECT et définit un langage pour de vrai avec la poignée de modules qui va avec.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Slyvtt Hors ligne Maître du Puzzle Points: 2383 Défis: 17 Message

Citer : Posté le 31/08/2022 20:44 | #


Hello,

suite à une session Discord avec Lephé (merci pour ton aide ), l'ensemble des librairies liées à la SDL1.2 pour Casio Prizm (fx-CG10/20) et Graph 90+E (fx-CG50) a été mise à jour comme suit :

Tout d'abord les noms des dépôts sur la forge Gitea de Planète Casio ont été simplifiés (les numéros de versions ont disparu des noms de dépôts car c'était très pénible à taper) et modifiés comme ceci :

Comme explicité rapidement il y a quelques jours, l'ensemble des librairies ont été remises à plat pour devenir compatible avec fxSDK/gint 2.9.0, en prenant notamment en compte le déplacement de certains fichiers headers afin de proposer un système beaucoup plus classique (et attendu par GCC).

Le système d'installation via l'outil giteapc a été complètement mis à jour afin de simplifier au maximum l'installation et l'utilisation de la SDL. AInsi les dépendances sont automatiquement installées. Par exemple en commençant l'installation par la librairie en haut de l'arborescence de dépendance (à savoir la cSDL_image), toutes les librairies dont elle dépend seront automatiquement installées via un giteapc install cSDL_image.

Concernant l'utilisation, il y a tout de même une subtilité pour obtenir un linkage correct et éviter les problèmes. Ainsi il convient d'ajouter toutes les librairies dans le CMakeLists.txt de votre projet via des find_package() et d'aider le linkage via la ligne correcte dans target_link_libraries()

  • Par exemple pour un projet utilisant la cSDL :

    cmake_minimum_required(VERSION 3.15)
    project(MyAddin)

    include(GenerateG3A)
    include(Fxconv)
    find_package(Gint 2.7.1 REQUIRED)
    find_package(cSDL 1.2.15 REQUIRED)

    set(SOURCES
      src/main.c
      # ...
    )
    # Shared assets, fx-9860G-only assets and fx-CG-50-only assets
    set(ASSETS
      # ...
    )

    set(ASSETS_cg
      assets-cg/example.png
      # ...
    )

    fxconv_declare_assets(${ASSETS} ${ASSETS_cg} WITH_METADATA)

    add_executable(myaddin ${SOURCES} ${ASSETS} ${ASSETS_${FXSDK_PLATFORM}})
    target_compile_options(myaddin PRIVATE -Wall -Wextra -Os)
    target_link_libraries(myaddin Gint::Gint cSDL::cSDL)

    if("${FXSDK_PLATFORM_LONG}" STREQUAL fxCG50)
      generate_g3a(TARGET myaddin OUTPUT "SDL_App.g3a"
        NAME "SDL_App" ICONS assets-cg/icon-uns.png assets-cg/icon-sel.png)
    endif()

  • Pour un projet utilisant la cSDL_image, c'est juste plus long et pour le target_link_libraries(), l'ordre a de l'importance. Voici le CMakeLists.txt minimal pour un projet utilisant la cSDL_image :

    cmake_minimum_required(VERSION 3.15)
    project(MyAddin)

    include(GenerateG3A)
    include(Fxconv)
    find_package(Gint 2.7.1 REQUIRED)
    find_package(cJPEG 9.2 REQUIRED)
    find_package(cZlib 1.2.5 REQUIRED)
    find_package(cPNG 1.5.30 REQUIRED)
    find_package(cSDL 1.2.15 REQUIRED)
    find_package(cSDL_image 1.2.12 REQUIRED)

    set(SOURCES
      src/main.c
      # ...
    )
    # Shared assets, fx-9860G-only assets and fx-CG-50-only assets
    set(ASSETS
      # ...
    )

    set(ASSETS_cg
      assets-cg/example.png
      # ...
    )

    fxconv_declare_assets(${ASSETS} ${ASSETS_cg} WITH_METADATA)

    add_executable(myaddin ${SOURCES} ${ASSETS} ${ASSETS_${FXSDK_PLATFORM}})
    target_compile_options(myaddin PRIVATE -Wall -Wextra -Os -std=c11)
    target_link_libraries(myaddin cSDL_image::cSDL_image cPNG::cPNG cZlib::cZlib cJPEG::cJPEG Gint::Gint)


    if("${FXSDK_PLATFORM_LONG}" STREQUAL fxCG50)
      generate_g3a(TARGET myaddin OUTPUT "SDLIm_App.g3a"
        NAME "SDLIm_App" ICONS assets-cg/icon-uns.png assets-cg/icon-sel.png)
    endif()

Je vise idéalement à obtenir un système plus simple pour limiter les 'find_package()' et les options dans 'target_link_libraries()' au minimum, mais pour le moment il faut se contenter de cela.

En espérant que cela vous aide pour vos projets.
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Lephenixnoir Hors ligne Administrateur Points: 24563 Défis: 170 Message

Citer : Posté le 02/01/2023 18:02 | # | Fichier joint


Je viens de pousser un changement du fxSDK pour les add-ins Graph 90+E. À partir de la prochaine version, un nouveau fichier assets-cg/icon-cg.xcf sera fourni avec les assets ; c'est un modèle d'icône « style OS » qui vous permet de facilement créer avec GIMP des icônes qui s'intègrent avec celles par défaut. Si vous en avez besoin pour un projet déjà créé, vous pouvez le télécharger depuis Gitea.

Voici un tutoriel rapide sur comment utiliser le modèle.


Les tailles

La taille standard pour une icône d'add-in c'est de ne couvrir qu'une partie de la hauteur, parce que l'OS affiche le nom de l'add-in (spécifié dans la commande generate_g3a() de CMakeLists.txt) en-dessous dans le menu principal. On peut faire des icônes de cette taille avec le groupe Standard size.

Parfois le nom de l'add-in est trop long et le texte affiché par l'OS dépasse (il se fait couper pour être exact). Dans ce cas on peut indiquer un nom vide dans generate_g3a() et écrire le nom à la main avec une police plus serrée. Ce mécanisme est démontré sur les calques Custom text (sel/uns), qui indiquent les couleurs. Le calque [Text boundaries] indique la limite où il ne faut pas écrire pour que ça reste lisible avec d'autres icônes à côté.

Le modèle permet aussi de faire des icônes en taille complète, où cette fois l'icône prend toute la place (il est alors impératif de mettre un nom vide dans generate_g3a()). Le fonctionnement est similaire, il faut juste utiliser le groupe Full size à la place.

Les calques

La plupart des calques ont deux variantes : une version "(uns)" utilisée quand l'icône n'est pas sélectionnée, pour générer icon-uns.png, et une version "(sel)" utilisée quand l'icône est sélectionnée, pour générer icon-sel.png. Les calques sont les suivants :

  • Background : le fond blanc/sélectionné. Il n'y a jamais besoin de le changer.
  • Dithering : le fond de l'icône, qui est un dégradé avec du dithering qui change de couleur en mode sélectionné. Généralement on veut juste changer sa couleur ; pour ça voir la section "La couleur de fond". Vous pouvez aussi mettre une image ou être créatif·ve. Remarquez que ce calque a un masque de calque qui applique automatiquement le bord arrondi, donc vous avez juste à dessiner un rectangle.
  • Bevel : le biseau applique la bordure claire/sombre qui donne du volume à l'icône et change de côté quand on sélectionne.
  • Icon et Shadow : l'icône à proprement parler, voyez "L'image principale".

Pour générer icon-uns.png, affichez tous les calques "(uns)", plus Icon et Shadow, et exportez en PNG (Shift+Ctrl+E).

Pour générer icon-sel.png, affichez tous les calques "(sel)", plus Icon et Shadow, et exportez de nouveau en PNG.

L'image principale

Il y a plein de designs possibles pour l'image principale de l'icône. L'OS utilise des formes blanches avec une ombre. Une façon simple d'atteindre cet effet est comme ceci :

  1. Supprimer Shadow et dessiner la forme voulue en blanc sur Icon ;
  2. Dupliquer Icon (5ème bouton en bas de l'onglet Calques), renommer la copie Shadow et la mettre juste en-dessous de Icon dans la liste des calques ;
  3. Sélectionner Shadow, inverser le blanc en noir (menu Colors » Invert) et mettre l'opacité du calque à 30% ;
  4. Déplacer Shadow de 1 ou 2 pixels vers le bas.

C'est ce qui a été fait dans la capture d'écran ci-dessus.

La couleur de fond

La couleur de fond du calque Dithering peut être changée facilement en sélectionnant le calque (cliquez bien sur la prévisualisation de gauche, pas sur le masque de calque) puis en utilisant l'outil de colorisation (menu Colors » Colorize). Il suffit de sélectionner la couleur désirée et GIMP se débrouille pour teinter le calque tout en gardant le motif de dithering et le dégradé.

Une fois cela fait, on peut réappliquer la même transformation aux 3 autres calques Dithering en les sélectionnant puis en tapant Ctrl+F. Ctrl+F répète la dernière « commande » exécutée, ce qui se voit dans le menu Filters. Ça marche même si le calque n'est pas visible, ce qui est pratique pour aller vite.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Cyberespia Hors ligne Membre Points: 16 Défis: 0 Message

Citer : Posté le 09/01/2023 20:06 | #


Il n'y a pas de tutoriel vidéo, j'utilise à peine Linux mais je suis intéressé à apprendre à programmer à l'aide de cet outil. Les instructions semblent compliquées. Tout guide plus détaillé ou mieux encore une vidéo sur l'installation. Et quelle distribution Linux recommandez-vous d'installer pour commencer ?
Merci beaucoup chère communauté
Lephenixnoir Hors ligne Administrateur Points: 24563 Défis: 170 Message

Citer : Posté le 09/01/2023 20:10 | #


Salut ! Pour la distribution Linux, je dirais que le mot d'ordre c'est "une difficulté à la fois", donc le plus simple ! Ubuntu est la plus classique, mais tu préfères un style plus proche de Windows, Linux Mint est également un excellent choix.

L'installation du fxSDK est en effet pas facile (ça a toujours été). Cela dit, si tu suis l'option GiteaPC décrite dans ce topic tu devrais t'en sortir à moindres frais, car elle est assez automatique et bien testée (donc risque d'erreur pas trop élevé).

Il n'y a malheureusement pas de tutoriel vidéo (ou alors des vieux plus à jour), c'est le côté un peu amateur. x3
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Ethanho47 Hors ligne Membre Points: 2 Défis: 0 Message

Citer : Posté le 30/03/2023 21:16 | #


Hi, sorry for writing in English. I just started writing an addin in C++ using the fxsdk, but when I tried to use vectors and strings, it just gave me a bunch of errors. What can I do to make it work?
Here are the errors:
/home/ethanho47/.local/share/fxsdk/sysroot/lib/gcc/sh3eb-elf/11.1.0/../../../../sh3eb-elf/bin/ld: CMakeFiles/myaddin.dir/src/main.cpp.obj: in function __ZNSt12_Vector_baseIiSaIiEED2Ev':
main.cpp:(.text._ZNSt12_Vector_baseIiSaIiEED2Ev[_ZNSt12_Vector_baseIiSaIiEED5Ev]+0x14): undefined reference to
__ZdlPvj'
/home/ethanho47/.local/share/fxsdk/sysroot/lib/gcc/sh3eb-elf/11.1.0/../../../../sh3eb-elf/bin/ld: CMakeFiles/myaddin.dir/src/main.cpp.obj: in function _main':
main.cpp:(.text.startup+0x84): undefined reference to
__ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_S_copy_charsEPcPKcS7_'
/home/ethanho47/.local/share/fxsdk/sysroot/lib/gcc/sh3eb-elf/11.1.0/../../../../sh3eb-elf/bin/ld: main.cpp:(.text.startup+0x88): undefined reference to __ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_disposeEv'
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/myaddin.dir/build.make:110: myaddin] Error 1
make[1]: *** [CMakeFiles/Makefile2:83: CMakeFiles/myaddin.dir/all] Error 2
make: *** [Makefile:91: all] Error 2
Slyvtt Hors ligne Maître du Puzzle Points: 2383 Défis: 17 Message

Citer : Posté le 30/03/2023 21:21 | #


This is because you are not specifying the langage you are targeting. by default C, not C++

In your CMakeLists.txt, you need to specify

target_compile_options(myaddin PRIVATE -Wall -Wextra -Os -std=c++20)

and

target_link_libraries(myaddin Gint::Gint -lstdc++)

you may have something else, what is important is -std=c++20 in the first line
and -stdc++ in the second line

put these two option at the end, just before the closing parenthese. and retry

Let us know if it works
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Slyvtt Hors ligne Maître du Puzzle Points: 2383 Défis: 17 Message

Citer : Posté le 30/03/2023 21:23 | #


Also note that C++ works well with gint >=2.9
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Ethanho47 Hors ligne Membre Points: 2 Défis: 0 Message

Citer : Posté le 30/03/2023 21:34 | #


That worked, thanks!
Précédente 1, 2, 3 ··· 10 ··· 20 ··· 30 ··· 34, 35, 36, 37, 38, 39, 40, 41 Suivante

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 87 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd