After the JavaScript detour of the past few months, it’s time to head back into the realms of pure Inkscape. Before we dive headlong into the next topic, however, I’m going to spend this month and next tidying up a few loose ends and updating you on some recent Inkscape news items. To begin with, let’s finish up with a little more polish on the JavaScript-based transform animation we’ve been building up through the last few articles. If you followed along, you’ll have ended up with four blocks of code that all look very similar, for each of skewX, skewY, scaleX and scaleY (top right).

Après le détour dans JavaScript de ces quelques derniers mois, il est temps de revenir dans le royaume du pur Inkscape. Cependant, avant de plonger dans le sujet suivant, je vais, ce mois-ci et le suivant, remettre un peu d'ordre sur des corrections mineures et vous mettre à jour sur de nouveaux éléments récents d'Inkscape.

Pour commencer, finissons l'animation de transformation basée sur JavaScript que nous avons construite ces quelques derniers mois, en la polissant un peu. Si vous nous avez suivi, nous avons terminé avec quatre blocs de code qui se ressemblent beaucoup, pour chacun des skewX(), skewY, scaleX et scaleY (en haut à droite).

All that changes between them are the variable names, and the only result we use from this code is the single value we create at the end. This block is an excellent candidate for splitting out into a single function that gets called for each of the four transform parameters. Reorganising code to make it simpler, clearer, or more efficient, is referred to as “refactoring”. To refactor this code, therefore, the first step is to copy it into a function of its own, and return the value we’re interested in. We’ll add the new function to the very end of the JS file (bottom right). We’re going to use this function to replace blocks of code that deal with multiple different properties, so it makes sense to also tidy up the variable names in the function to make them more generic. By passing in the relevant duration, min, and max, from the properties – and also passing the current running time that was supplied to the parent animate() function – we can simplify it to this general purpose function (below).

Toutes les différences entre eux tiennent aux noms des variables et le seul résultat que nous tirons de ce code est la valeur unique que nous créons à la fin. Ce bloc est un excellent candidat pour un découpage en une seule fonction appelée par chacun des quatre paramètres de transformation. La réorganisation du code pour le simplifier, le clarifier et l'améliorer s'appelle la « refonte » (refactoring). Par conséquent, pour refondre le code, la première étape est de le copier dans sa propre fonction et de retourner la valeur qui nous intéresse. Nous ajouterons la nouvelle fonction tout à la fin du fichier JS (en bas à droite).

Nous allons utiliser cette fonction pour remplacer les blocs de code qui ont trait aux multiples propriétés différentes ; aussi, il est logique de remettre en ordre les noms des variables dans la fonction pour les rendre plus génériques. En passant les durée, min et max adaptés depuis les propriétés - et en passant aussi l'instant présent qui a été fourni à la fonction parente animate() - nous pouvons le simplifier sous la forme de cette fonction d'usage général (ci-dessous).

Now we can replace the original four blocks with something much simpler. Here’s the line to use for skewX – I’ll leave it to you to work out what to do with the others. Note that I’ve split this across multiple lines to squeeze it into a single column in this article, though in a real file I would probably put all of this in a single line of code: const skewXAmount = getAnimAmount( props.skewXDuration, props.skewXMin, props.skewXMax, runningTime ); It almost goes without saying, but once you’ve replaced all four blocks of code you should save and reload your page. If everything was correct you should see no change in the animation.

Maintenant, nous pouvons remplacer les quatre blocs d'origine par quelque chose de beaucoup plus simple. Voici la ligne à utiliser pour skewX - je vous laisse faire le travail pour les autres. Notez que je l'ai découpée en plusieurs lignes pour les regrouper en une seule colonne dans cet article, bien que, dans la réalité, j'aurais probablement tout mis sur une seule ligne de code :

const skewXAmount =

getAnimAmount(
  props.skewXDuration, 
  props.skewXMin, 
  props.skewXMax, 
  runningTime
);

Ça va presque sans le dire, mais une fois que vous avez remplacé les quatre blocs de code, vous devrez sauvegarder et recharger votre page. Si tout est correct, vous ne devriez voir aucun changement dans l'animation.

You should, however, be able to see at a glance how much shorter and simpler this change makes the animate() function. It’s gone from being a mathematically heavy chunk of code to a much simpler series of lines that just set up some constants, applies them to the transform() attribute, then calls itself for the next iteration. If you dive further into coding you should always try to keep an eye out for repeated blocks of code that can be refactored into a single function. With that, I’m going to draw a line under this part of the series – at least metaphorically speaking, although you should now have enough understanding of SVG and JavaScript to be able to draw a literal line, if you wish.

Cependant, vous devriez vous apercevoir au premier coup d'œil que la fonction animate() est beaucoup plus simple et plus courte grâce à cette modification. Nous sommes passé d'un paquet de code mathématiquement pesant à une série de lignes beaucoup plus simples qui paramètrent juste quelques constantes, les appliquent à un attribut transform(), puis s'appelle elle-même pour l'itération suivante. Si vous persévérez dans la création de code, vous devrez toujours essayer de garder un œil sur les blocs répétitifs de code qui peuvent être refondus en une seule fonction.

Avec ça, je vais tirer une ligne sous cette partie de la série - au moins sous forme de métaphore, bien que vous ayez maintenant une connaissance suffisante de SVG et JavaScript pour être capable d'en tirer réellement une, si vous le souhaitez.

Forum News I’m sad to announce that the long-standing semi-official forum for Inkscape, “inkscapeforum.com”, is no longer around. It hasn’t been actively supported by its administrator for a number of years, but had still been the go-to place for the English-speaking Inkscape community. Despite the efforts of a number of users and developers – myself included – to transfer the forum into the stewardship of the Inkscape project, the admin did not provide either a backup of the database, nor enough access for us to obtain it ourselves. A couple of months ago the site simply disappeared, and has not returned. Fortunately the lack of communication from the admin acted as a warning, and an officially-official forum was already up and running when the old one vanished – thanks mostly to the sterling efforts of Martin ‘Doctormo’ Owens, a long-standing contributor to the Inkscape project. With its main ‘competitor’ having self-destructed, the official forum has grown in popularity, and should now be seen as the best place to go if you have an Inkscape question, or just want to show off your Inkscape-created images. The new forum is linked from the main Inkscape website, or you can access it directly at the following address: https://inkscape.org/forums/

Nouvelles du Forum

J'ai le regret d'annoncer que le forum d'Inkscape, existant depuis longtemps et semi-officiel, « inkscapeforum.com », n'existe plus. Il n'a pas été soutenu activement par son administrateur depuis des années, mais a toujours été l'endroit de choix de la communauté Inkscape de langue anglaise. En dépit des efforts d'un certain nombre d'utilisateurs et de développeurs - j'en fais partie - pour transférer le forum sous la gérance du projet Inkscape, l'admin ne nous a fourni, ni une sauvegarde de la base de données, ni accès pour que nous l'obtenions par nous-mêmes. Il y a quelques mois, le site a simplement disparu et n'est pas réapparu.

Par chance, le manque de communication de l'admin a agi comme un avertisseur, et un forum « officiellement officiel » était déjà sur pied quand l'ancien a disparu - merci principalement à Martin « Doctormo » Owens, un contributeur de longue date au projet Inkscape, pour ses efforts exceptionnels. Avec l'auto-destructon de son « concurrent » principal, le forum officiel est devenu de plus en plus populaire et doit être vu maintenant comme le meilleur endroit où aller si vous avez une question sur Inkscape, ou que vous vouliez juste montrer les images que vous avez créées avec Inkscape. Un lien vers le nouveau forum existe sur la page principale du site Web d'Inkscape ; vous pouvez aussi y accéder directement à l'adresse suivante : https://inkscape.org/forums/

But what of the many years’ worth of hints, tips, tutorials, questions and answers that had accrued on the old forum? Thankfully it’s not all lost: the Inkscape website is hosting a read-only backup which mostly works, though some threads don’t seem to behave quite as they should. https://alpha.inkscape.org/vectors/www.inkscapeforum.com/ Alternatively the Wayback Machine at the Internet Archive site also has a snapshot of the old forum though, again, it’s not perfect. https://web.archive.org/web/20190910200439/http://www.inkscapeforum.com/

Mais que sont devenues toutes ces années de conseils, astuces, tutoriels, questions et réponses qui ont alimenté l'ancien forum ? Dieu merci, tout n'est pas perdu : le site Web d'Inkscape accueille une copie de sauvegarde en lecture seule qui fonctionne dans la plupart des cas, bien que certains fils semblent ne pas se comporter comme attendu. https://alpha.inkscape.org/vectors/www.inkscapeforum.com/

Comme autre solution, Wayback Machine de Internet Archive contient aussi un instantané de l'ancien forum qui, là aussi, n'est pas parfait. https://web.archive.org/web/20190910200439/http://www.inkscapeforum.com/

Hopefully between these two resources the bulk of the useful content from the site has been preserved. One very useful page from the old forum which hasn’t been completely captured is the index of my Full Circle Magazine articles. The last snapshot on the Wayback Machine dates to 2017 and, although the page on the Inkscape site is more up-to-date, I’ve nevertheless copied the content to my own site, where I can continue to update it as new articles are published. You can find it here: http://www.peppertop.com/blog/?p=1563

On peut espérer qu'avec ces deux ressources, l'immense majorité du contenu utile du site a été préservée.

L'index de mes articles du Full Circle Magazine est une page très utile de l'ancien forum qui n'a pas été capturée complètement. Le dernier instantané sur Wayback Machine date de 2017, et, bien que la page du site d'Inkscape soit plus à jour, j'en ai copié le contenu vers mon propre site, où je continue à la mettre à jour au fur et à mesure de la publication de nouveaux articles. Vous pouvez la trouver ici : http://www.peppertop.com/blog/?p=1563

Video Tutorials When I was first starting to learn how to use Inkscape, a valuable resource was a series of tutorial videos created by ‘Heathenx’ and Richard Querin. Unfortunately, their website has long-since disappeared, but I was able to get a current email address for Heathenx and contacted him about re-posting the videos online. I’m delighted to report that he was extremely helpful, and happy for them to be uploaded to Youtube. There are over a hundred videos in total, most of which are still relevant to the current Inkscape release. I uploaded them over a number of months, adding my own notes to clarify any tweaks or changes that are required for recent Inkscape versions. I urge you to take a look at them, as they provide a great example of the many and varied effects that can be produced with Inkscape if you have a little artistic flair. https://www.youtube.com/c/PeppertopComics

Tutoriels en vidéo

Quand je commencais à apprendre comment utiliser Inkscape, la série des tutoriels vidéos créés par « Heathenx » et Richard Querin était une ressource de qualité. Malheureusement, ce site Web a disparu depuis longtemps, mais j'ai pu obtenir une adresse mail actuelle de Heathenx et je l'ai contacté au sujet de la rediffusion de ses vidéos en ligne. Je suis heureux de dire qu'il a été extrèmement serviable et content qu'elles soient téléversées sur YouTube. Il y a plus d'une centaine de vidéos au total, et la plupart sont toujours valables pour la publication actuelle d'Inkscape. Je les ai téléversées pendant un certain nombre de mois, y ajoutant mes propres notes pour clarifier les ajustements ou modifications qui sont nécessaires avec les versions récentes d'Inkscape. Je vous prie d'y jeter un coup d'œil car elles fournissent un bon exemple des effets nombreux et variés qui peuvent être produits avec Inkscape si vous avez tant soit peu la fibre artistique.

https://www.youtube.com/c/PeppertopComics

A Shameless Plug While we’re on the topic of Inkscape resources I’ve posted online, I’m going to take this opportunity for a spot of blatant self-promotion. Long-term readers of this column (or those who read the byline at the end of an article) will know that I create comics and cartoon strips using Inkscape (with the help of a far more artistically talented friend). We’ve been working together in our spare time for over 25 years now, but it’s the last decade that has been the most interesting as far as this column is concerned. During that time, we’ve used Inkscape in the creation of over 250 strips which can be freely viewed on our website. To help encourage new Inkscape users, we’ve made the vast majority of our source files available for download as well, so you can see how we put things together or modify the cartoons to suit your own needs.

Une publicité éhontée

Pendant que nous sommes dans le chapitre des ressources d'Inkscape que j'ai postées en ligne, je profite de cette opportunité pour une page d'auto-promotion flagrante. Les lecteurs de longue date de cette rubrique (ou ceux qui lisent la signature en bas de l'article) sauront que je crée des bandes dessinées comiques en utilisant Inkscape (avec l'aide d'un ami tellement plus talentueux artistiquement). Nous travaillons ensemble pendant notre temps libre depuis plus de 25 ans maintenant, mais c'est la dernière décennie qui a été la plus intéressante pour ce qui concerne cette rubrique. Pendant ce temps, nous avons utilisé Inkscape pour créer plus de 250 bandes dessinées qui peuvent être visionnées gratuitement sur notre site Web. Pour aider les nouveaux utilisateurs d'Inkscape, nous avons aussi rendu disponible la vaste majorité de nos fichiers sources, de sorte que vous pouvez voir comment nous assemblons les dessins ou les modifier pour qu'ils correspondent à vos propres besoins.

Given that you’re reading a Linux magazine, I’d like to draw particular attention to our “Elvie” comic strip. This appeared in every edition of the much-missed Linux Voice magazine, and has continued every month in Linux Pro Magazine (just “Linux Magazine” outside North America). Thanks to the kind generosity of the editors and publishers, we’ve been able to release these strips under a very liberal license (Creative Commons BY-SA), and have a Git repository with our Inkscape and MyPaint source files. We’ve even gone so far as to use fonts that are under liberal licenses, so that every single part of these cartoons is as free as possible. Aside from Elvie, our other cartoons have appeared in magazines and newspapers, and even in an exhibition at the National Media Museum in the UK. They can all be viewed and downloaded from our website: http://www.peppertop.com

Étant donné que vous lisez un magazine sur Linux, je voudrais surtout attirer votre attention sur notre bande dessinée « Elvie ». Elle apparaissait dans chaque édition du très regretté magazine Linux Voice et continue mensuellement dans Linux Pro Magazine (simplement « Linux Magazine » en dehors de l'Amérique du Nord). Grâce à la générosité des rédacteurs et éditeurs, nous avons la possibilité de publier ces bandes dessinées sous une licence très libérale (Créative Commons BY-CA) et nous avons un dépôt Git avec nos fichiers source d'Inkscape et MyPaint. Nous sommes même allés jusqu'à l'utilisation de polices de caractères sous licences libérales, de sorte que chaque élément séparé de ces dessins est aussi libre que possible.

À part Elvie, nos autres bandes dessinées sont apparues dans des magazines et des journaux, et même dans une exposition au National Media Museum au Royaume-Uni. Elles peuvent toutes être vues et téléchargées sur notre site Web :

http://www.peppertop.com

If you want to support us in the work we do to promote Inkscape – or if you want to help in our goal to raise enough funds to relicense some of our earlier cartoons as BY-SA – we also have the near-obligatory Patreon page: https://www.patreon.com/peppertop Inkscape v1.0 Beta In classic ‘saving the best for last’ tradition, the final item in this hodgepodge of an article is the announcement of the long awaited release of Inkscape v1.0. Well, nearly.

Si vous voulez nous soutenir dans le travail que nous faisons pour promouvoir Inkscape - ou si vous voulez nous aider à lever suffisamment de fonds pour passer nos bandes dessinées les plus anciennes sous une license comme BY-SA - nous avons aussi un page Patreon quasi obligatoire :

https://www.patreon.com/peppertop

Inkscape v1.0 Beta

Dans la tradition classique du « garder le meilleur pour la fin »; le sujet final de cet article méli-mélo est l'annonce de la publication longtemps attendue de Inkscape v1.0. Enfin, presque.

At the time of writing, the second beta of v1.0 has been released, and is available via the download link on the Inkscape website (https://inkscape.org). There’s no definite date for the final release, and I don’t know if there will be any other beta releases in the meantime, but what’s there already feels pretty stable and polished. I encourage readers to give the beta a try, and report any issues they find to the Inkscape bugtracker. Note that the project is no longer using Launchpad to track issues, having switched to GitLab some time ago. If you do want to file a bug report, or view those that have already been filed, there’s a page on the Inkscape site that will redirect you to the correct location: https://inkscape.org/report

Inkscape v1.0 Bêta

Au moment où j'écris, la seconde bêta de la v1.0 a été publiée, et est disponible via le lien de téléchargement sur le site Web d'Inkscape (https://inkscape.org). La date de publication finale n'est pas encore connue et je ne sais pas s'il y aura d'autres publications bêta d'ici là ; mais, ce qui est déjà sorti paraît vraiment stable et fini. J'encourage les lecteurs à essayer la bêta et à remonter les problèmes qu'ils trouvent dans le traceur des défauts d'Inkscape (Inkscape bugtracker). Notez que le projet n'utilise plus du tout Launchpad pour suivre les problèmes, étant passé à GitLab depuis pas mal de temps. Si vous voulez enregistrer un rapport de bogue, ou voir ceux qui sont déjà enregistrés, il y a une page sur le site d'Inkscape qui vous redirigera vers l'emplacement correct.

https://inkscape.org/report

A fond farewell… until next month I had originally intended for this to be my last Inkscape column, having covered just about every feature the program has to offer during the past 8 years. With the imminent arrival of v1.0, however, I’ve decided to stick around to introduce the new features and important changes. Initially this coverage will necessarily be based on the beta versions, but it’s unlikely that there will be significant UI changes before the full release so I’m sure anything I write will still be relevant in a few months’ time. Next month, I’ll be detailing a couple of minor features in Inkscape that have managed to slip through the cracks in previous instalments, to fully ‘clear the decks’ before diving into the exciting new features of v1.0.

Un grand au-revoir… jusqu'au mois prochain

J'avais d'abord pensé que ce serait mon dernier article sur Inkscape, ayant parlé d'à peu près toutes les fonctionnalités proposées par le programme pendant ces huit dernières années. Cependant, avec l'arrivée imminente de la v1.0, j'ai décidé de continuer pour parler des nouvelles fonctionnalités et des changements importants. Au début, ces sujets s'appuyeront nécessairement sur les versions bêta, mais il y a peu de chance qu'il y ait de grosses modifications de l'interface graphique avant la publication finale ; aussi, je suis sûr que tout ce que j'écrirai restera valable pendant ces quelques prochains mois.

Le mois prochain, je détaillerai quelques modifications mineures dans Inkscape qui nous ont échappées dans les numéros précédents, pour « bien dégager la piste » avant de plonger dans les nouvelles et attirantes fonctionnalités de la v1.0.