tag:linuxfr.org,2005:/tags/sdl2_gfx/publicLinuxFr.org : les contenus étiquetés avec « sdl2_gfx »2016-02-01T10:42:36+01:00/favicon.pngtag:linuxfr.org,2005:News/370702016-02-01T10:42:36+01:002016-02-01T10:42:35+01:00Bibliothèque de génération et de manipulation de formes libsdl2_gfxutilsLicence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<div><p>J'annonce de part ce présent message, la réécriture de la bibliothèque de génération et de manipulation de formes <a href="http://www.open-source-projects.net/libSDL2_gfxutils/libSDL2_gfxutils_presentation.html">libSDL2_gfxutils</a>. Elle est publiée sous GPLv3. </p></div><ul><li>lien nᵒ 1 : <a title="http://www.open-source-projects.net/libSDL2_gfxutils/libSDL2_gfxutils_presentation.html" hreflang="en" href="https://linuxfr.org/redirect/96285">SDL2_gfxutils présentation</a></li><li>lien nᵒ 2 : <a title="https://github.com/mrcyberfighter/libSDL2_gfxutils" hreflang="en" href="https://linuxfr.org/redirect/96286">SDL2_gfxutils github</a></li><li>lien nᵒ 3 : <a title="http://www.open-source-projects.net/libSDL2_gfxutils/Documentation/Online/SDL2_gfxutils_documentation/html/index.html" hreflang="en" href="https://linuxfr.org/redirect/96287">SDL2_gfxutils documentation</a></li></ul><div><h2 class="sommaire">Sommaire</h2>
<ul class="toc">
<li>
<a href="#sdl2_gfxutils">SDL2_gfxutils</a><ul>
<li><a href="#r%C3%A9sum%C3%A9-de-la-biblioth%C3%A8que-sdl2_gfxutils">Résumé de la bibliothèque SDL2_gfxutils</a></li>
<li><a href="#la-petite-histoire-de-sdl2_gfxutils">La petite histoire de SDL2_gfxutils</a></li>
<li><a href="#la-nouvelle-impl%C3%A9mentation-de-sdl2_gfxutils">La nouvelle implémentation de SDL2_gfxutils</a></li>
<li>
<a href="#pr%C3%A9sentation-de-libsdl2_gfxutils">Présentation de libSDL2_gfxutils.</a><ul>
<li><a href="#op%C3%A9rations-de-transformation-de-formes">Opérations de transformation de formes</a></li>
<li><a href="#changement-de-param%C3%A8tres-de-formes-les-setters">Changement de paramètres de formes: les setters</a></li>
<li><a href="#r%C3%A9cup%C3%A9rer-les-param%C3%A8tres-dune-forme-les-getters">Récupérer les paramètres d'une forme: les getters</a></li>
<li><a href="#affichage-des-formes">Affichage des formes</a></li>
<li><a href="#longueur-et-distance-entre-2-pixels">Longueur et distance entre 2 pixels</a></li>
</ul>
</li>
</ul>
</li>
</ul><h2 id="sdl2_gfxutils">SDL2_gfxutils</h2>
<h3 id="résumé-de-la-bibliothèque-sdl2_gfxutils">Résumé de la bibliothèque SDL2_gfxutils</h3>
<ul>
<li>
<em>Version actuelle</em> : 2.0.0</li>
<li>
<em>Plateformes cibles</em> : Linux, Windows et normalement tous les compatibles Posix (non testé)</li>
<li>
<em>Compilateurs</em> : gcc, g++, clang, mingw32, mingw-w64-686, mingw-w64-x86_64.</li>
<li>
<em>Licence</em> : GPLv3</li>
<li>
<em>Auteur</em> : Eddie Brüggemann (mrcyberfighter CHEZ gmail)</li>
</ul><h3 id="la-petite-histoire-de-sdl2_gfxutils">La petite histoire de SDL2_gfxutils</h3>
<p><strong>SDL2_gfxutils</strong> est issue d'une collection de fonctions de génération de formes implémentée pour des besoins personnels.</p>
<p>À chaque fois que j'avais une idée de forme dans la tête j'essayais de l'implémenter - pendant plusieurs années…</p>
<p>J'ai commencé par écrire des fonctions <strong>Python</strong> avec le module <strong>pygame</strong> qui est basé sur la bibliothèqe <strong>SDL</strong>, étant parti d'une fonction qui calcule la position d'un pixel selon un rayon et un angle.</p>
<p><strong>SDL2_gfxutils</strong> a été écrit une première fois sous forme de bibliothèque <strong>C</strong> complémentaire à <a href="http://www.ferzkopp.net/Software/SDL2_gfx/Docs/html/index.html"><strong>SDL2_gfx</strong></a> (dont les fonctions sont utilisées uniquement pour l'affichage) et je me suis sacrément trompé en tronquant les données vers le type requis par SDL2_gfx: <code>int16_t</code>. </p>
<p>Mais <strong>SDL2_gfxutils</strong> a été entièrement réécrit et amélioré par la même occasion pour nous donner cette nouvelle implémentation, compatible <strong>C++</strong>.</p>
<h3 id="la-nouvelle-implémentation-de-sdl2_gfxutils">La nouvelle implémentation de SDL2_gfxutils</h3>
<p>Toutes les fonctions génératrices de formes retournent un pointeur sur un <a href="http://www.open-source-projects.net/libSDL2_gfxutils/libSDL2_gfxutils_presentation.html#Datatypes">type spécifique</a> SDL2_gfxutils (Polygon, Star, …) compatible avec le type générique <code>Form</code>.</p>
<p>Les pointeurs permettent de manipuler les formes générées pour les transformer par rotation, translation, mise à l'échelle et effet miroir, facilement.</p>
<p>Les pointeurs peuvent bien sur être détruits à volonté et cette mécanique est utilisée massivement dans la génération de forme. </p>
<p>Le type générique <code>Form</code> a changé pour contenir des coordonnées de type <code>float</code>, à la place de <code>int16_t</code>. Le calcul pour les rotations, translations, mise à l'échelle et effet miroir s'exécute correctement maintenant.</p>
<p>Avant les <code>int16_t</code> étaient doublés en interne pour les calculs. D'ailleurs si le cœur vous en dit il suffit de remplacer chaque occurrence du mot <em>float</em> par le mot <em>double</em> dans les fichiers source pour opérer en double précision (cela se fait en 5 minutes avec un <a href="//linuxfr.org/news/it-edit-un-editeur-de-texte-avec-terminaux-integres">éditeur de texte</a>). </p>
<p>Les membres du sous-type <code>Pixel</code> sont de type <code>float</code> maintenant.</p>
<ul>
<li>Certaines fonctions ont été enlevées, devenues inutiles avec la mécanique des pointeurs ;</li>
<li>D'autres fonctions ont été ajoutées, pour remplacer les fonctionnalités perdues, avec beaucoup d'avantages, surtout pour l'animation dans la boucle principale d'affichage ;</li>
<li>Toutes les fonctions ont été améliorées grâce à la mécanique des pointeurs de libSDL2_gfxutils.</li>
</ul><h3 id="présentation-de-libsdl2_gfxutils">Présentation de libSDL2_gfxutils.</h3>
<p>SDL2_gfxutils est une extension de SDL2_gfx pour aider à la création et animation (d'images fantastiques que vous pouvez imaginer.) SDL2_gfxutils fournit diverses fonctions pour divers usages:</p>
<ul>
<li>Des fonctions de <a href="http://www.open-source-projects.net/libSDL2_gfxutils/libSDL2_gfxutils_presentation.html#Forms-generating-functions">génération de formes</a> : du simple polygone à travers les étoîles fantasques vers les fractals les plus complexes.</li>
<li>Des fonctions de <a href="http://www.open-source-projects.net/libSDL2_gfxutils/libSDL2_gfxutils_presentation.html#Animating">transformation et d'animation</a> de haut niveau agissant sur le type générique <code>Form</code>.</li>
<li>Des fonctions de <a href="http://www.open-source-projects.net/libSDL2_gfxutils/libSDL2_gfxutils_presentation.html#Others">génération de lignes et d'arcs</a>.</li>
<li>Des fonctions de <a href="http://www.open-source-projects.net/libSDL2_gfxutils/libSDL2_gfxutils_presentation.html#Animating">bas niveau de transformation</a> et d'animation agissant sur un simple <code>Pixel</code>.</li>
<li>Des fonctions de gestion et de contrôle de la mémoire.</li>
</ul><p>Il est facile d'adapter SDL2_gfxutils pour être compatible avec d'autres bibliothèques que SDL2_gfx. Il suffit de changer les fonctions d'affichages_.</p>
<h4 id="opérations-de-transformation-de-formes">Opérations de transformation de formes</h4>
<ul>
<li>
<a href="http://www.open-source-projects.net/libSDL2_gfxutils/libSDL2_gfxutils_presentation.html#High-Level-Animating">Rotation d'une forme (<code>Form</code>)</a> autour de son centre du nombre de degrés voulu ;</li>
<li>
<a href="http://www.open-source-projects.net/libSDL2_gfxutils/libSDL2_gfxutils_presentation.html#High-Level-Animating">Mise à l'échelle</a> d'une forme de part un facteur ou une valeur ;</li>
<li>
<a href="http://www.open-source-projects.net/libSDL2_gfxutils/libSDL2_gfxutils_presentation.html#High-Level-Animating">Translation</a> d'une forme (<code>Form</code>) des valeurs de <code>x</code> et de <code>y</code> voulues ;</li>
<li>
<a href="http://www.open-source-projects.net/libSDL2_gfxutils/libSDL2_gfxutils_presentation.html#High-Level-Animating">Effet miroir</a> par un axe <code>X</code> ou <code>Y</code> selon un point central, soumis a condition <a href="http://www.open-source-projects.net/libSDL2_gfxutils/Documentation/Online/SDL2_gfxutils_documentation/html/index.html">(voir documentation)</a>.</li>
</ul><p>Il vaut mieux passer des valeurs entières ou de faible précision sinon si l'on boucle cela risque de perturber libsdl2_gfxutil.</p>
<h4 id="changement-de-paramètres-de-formes-les-setters">Changement de paramètres de formes: les setters</h4>
<ul>
<li>Changer le centre de gravité de la forme (<code>Form</code>) avec translation optionnelle des coordonnées ;</li>
<li>Changer le rayon de la forme (<code>Form</code>) ce qui équivaut à une mise a l'échelle en mettant la valeur directement (sans passer par un facteur de mise à l'échelle) ;</li>
<li>Assigner une nouvelle couleur à une forme (<code>Form</code>) ou ligne (<code>Line</code>).</li>
</ul><h4 id="récupérer-les-paramètres-dune-forme-les-getters">Récupérer les paramètres d'une forme: les getters</h4>
<ul>
<li>Récupérer le pixel (<code>Pixel</code>) central courant de la forme (<code>Form</code>) ;</li>
<li>Récupérer la couleur (<code>Color</code>) de la forme (<code>Form</code>) ;</li>
<li>Récupérer le rayon de la forme ;</li>
<li>Récupérer l'orientation courante de la forme ;</li>
<li>Récupérer le membre <code>real_length</code> de la forme (<code>Form</code>) qui correspond au point le plus éloigné du centre (utilisable par exemple pour les collisions formes).</li>
</ul><p>Il n'est pas toujours évident d'associer la notion de rayon à certaines formes.</p>
<h4 id="affichage-des-formes">Affichage des formes</h4>
<p>Chaque type de forme (<code>Form</code>) a ses propres fonctions d'affichage (sinon vous pouvez vous servir de celle que vous désirez mais le résultat sera indéfini et vous aurez des surprises.<br>
Pour chaque fonction d'affichage il existe une version anti-crénelage et une version pour assigner l'épaisseur du trait, excepté pour l'affichage en plein.</p>
<h4 id="longueur-et-distance-entre-2-pixels">Longueur et distance entre 2 pixels</h4>
<ul>
<li>Mesurer la longueur d'une ligne (<code>Line</code>)</li>
<li>Récupérer le milieu d'une ligne (<code>Line</code>)</li>
</ul><p>Enfin, cette extension à SDL2_gfx peut, de part sa structure, facilement être adaptée à d'autres bibliothèques que la <a href="https://www.libsdl.org/"><strong>SDL2</strong></a>.</p></div><div><a href="https://linuxfr.org/news/bibliotheque-de-generation-et-de-manipulation-de-formes-libsdl2_gfxutils.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/108046/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/news/bibliotheque-de-generation-et-de-manipulation-de-formes-libsdl2_gfxutils#comments">ouvrir dans le navigateur</a>
</p>
Linuxatorbubar🦥Benoît Sibaudpalm123https://linuxfr.org/nodes/108046/comments.atomtag:linuxfr.org,2005:Post/350192015-02-18T06:24:01+01:002015-02-18T06:24:01+01:00SDL2_gfxutils une bibliothèque complémentaire a SDL2_gfx. <p>Salut les Linuxiens de tout bords,</p>
<p>j'ai créer une bibliothèque partagée complémentaire a <a href="http://cms.ferzkopp.net/index.php/software/13-sdl-gfx">SDL2_gfx</a> qui est une extension de la bibliothèque pour la création de jeux vidéo <a href="https://www.libsdl.org/download-2.0.php">SDL2</a>.</p>
<p>Hors <a href="http://cms.ferzkopp.net/index.php/software/13-sdl-gfx">SDL2_gfx</a> est le pendant de <a href="https://www.libsdl.org/download-2.0.php">SDL2</a> pour dessiner dans le display et ma bibliothèque permet de générer des formes entre autres fonctionnalités et s'appelle <a href="http://www.cyber-sanktuary.fr/Programmation/Extensions/Librairies/prg_00001.py">SDL2_gfxutils</a>.<br><a href="http://www.cyber-sanktuary.fr/Programmation/Extensions/Librairies/prg_00001.py"><br>
SDL2_gfxutils</a> est une bibliothèque complémentaire a la la bibliothèque <a href="http://cms.ferzkopp.net/index.php/software/13-sdl-gfx">SDL2_gfx</a> et donc a <a href="https://www.libsdl.org/download-2.0.php">SDL2</a>.</p>
<p><a href="http://www.cyber-sanktuary.fr/Programmation/Extensions/Librairies/prg_00001.py">SDL2_gfxutils</a> est issue d'une collection de fonctions que j'ai implémenter sur plusieurs années,<br>
a chaque fois que j'avais une idée j'ai aussitôt essayer de l'implémenter, a la base dans le langage <strong>python</strong> avec le module <a href="http://pygame.org/news.html">pygame</a> qui est basé sur la <strong>SDL</strong>.<br>
J'ai commencer avec une simple fonction calculant les coordonnées d'un point selon un rayon et un angle.</p>
<p><a href="http://www.cyber-sanktuary.fr/Programmation/Extensions/Librairies/prg_00001.py">SDL2_gfxutils</a> est donc une translation de fonctions <strong>python</strong> dans le langage <strong>C</strong> et le standard <a href="http://cms.ferzkopp.net/index.php/software/13-sdl-gfx">SDL2_gfx</a>.</p>
<p><a href="http://www.cyber-sanktuary.fr/Programmation/Extensions/Librairies/prg_00001.py">SDL2_gfxutils</a> c'est d'abord une panoplie de fonctions génératrice de formes les plus diverses,<br>
en partant du simple <strong>polygone</strong> <em>convexe régulier</em>, en passant par le <strong>pentacle</strong> et les <strong>étoiles</strong> jusqu'au <strong>roues crantés</strong> <em>les plus complexes</em>.</p>
<p><a href="http://www.cyber-sanktuary.fr/Programmation/Extensions/Librairies/prg_00001.py">SDL2_gfxutils</a> vous mets également a disposition des fonctions d'<strong>affichages</strong> des différentes <strong>formes générées</strong>.</p>
<p><a href="http://www.cyber-sanktuary.fr/Programmation/Extensions/Librairies/prg_00001.py">SDL2_gfxutils</a> c'est aussi des fonctions de <strong>transformation</strong> de <strong>formes</strong>:</p>
<ul>
<li>
<strong>Rotation</strong>.</li>
<li>
<strong>Mise a l'échelle</strong>.</li>
<li>
<strong>Translation</strong>, <em>par deux valeurs (x et y)</em> ou <em>par rapport au centre de la forme</em>.</li>
</ul><p><a href="http://www.cyber-sanktuary.fr/Programmation/Extensions/Librairies/prg_00001.py">SDL2_gfxutils</a> vous mets a disposition des fonctions de <strong>mesure</strong>:</p>
<ul>
<li>D'<strong>aire</strong> d'un <strong>polygone</strong>.</li>
<li>De <strong>distance entre 2 pixels</strong>.</li>
</ul><p>Et de <strong>calcule</strong>:</p>
<ul>
<li>Du <strong>centre d'un polygone</strong>.</li>
<li>Le <strong>milieux d'un segment</strong>.</li>
<li>De <strong>trajectoire d'animation</strong>.</li>
</ul><p>Mais surtout <a href="http://www.cyber-sanktuary.fr/Programmation/Extensions/Librairies/prg_00001.py">SDL2_gfxutils</a> vous permet grâce a ses fonctions de bas-niveau de créer vos propre formes, si vous vous familiarisez avec la bibliothèque.</p>
<p>Il existe actuellement <strong>une version Linux</strong> qui s'installe d'un simple:</p>
<p>$ sudo make</p>
<p>NOTE: Il faut éventuellement corriger une ligne du fichier Makefile si le chemin des bibliothèques et|ou le chemin d'inclusion n'est pas le même sur votre système.</p>
<p>Il existe aussi une version pour <a href="http://www.mingw.org/">mingw</a>:<br>
Pour laquelle <em>la bibliothèque statique d'inclusion</em> et <em>le fichier *.dll</em> nécessaire sont fournis.</p>
<p>A noter que je vous ai fait <strong>une documentation</strong> <em>la plus complète possible</em>.<br>
Et si cela ne vous suffit pas plongez dans les sources.</p>
<p>Tout est fournis dans un seul fichier zip.</p>
<p>En espérant que vous prendrez autant de plaisir a utiliser <a href="http://www.cyber-sanktuary.fr/Programmation/Extensions/Librairies/prg_00001.py">SDL2_gfxutils</a> que j'en eu a la programmer. </p><div><a href="https://linuxfr.org/forums/programmation-c--2/posts/sdl2_gfxutils-une-bibliotheque-complementaire-a-sdl2_gfx.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/104841/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/forums/programmation-c--2/posts/sdl2_gfxutils-une-bibliotheque-complementaire-a-sdl2_gfx#comments">ouvrir dans le navigateur</a>
</p>
Linuxatorhttps://linuxfr.org/nodes/104841/comments.atom