The last change in Inkscape version 1.3 that I’m going to cover in these articles is described as follows in the release notes: “The Filter Editor has been overhauled and is now easier to use!” Well, it’s definitely been overhauled. As to whether or not it’s easier to use… I’ll just describe the functionality and let you decide that for yourself. I first covered the Filter Editor dialog back in part 48 of this series (FCM #108). I then spent a further 9 issues detailing each of the individual filter primitives. Despite the overhaul in the Filter Editor’s UI, those details still mostly apply – so if you want to revise your filter knowledge, I suggest reading those articles as well. That first article described how to create a simple filter chain for a drop shadow effect so, at the risk of repeating myself over 100 issues later, I’m going to do the same with the new editor. In practice, I recommend using the Filters > Shadows and Glows > Drop Shadow… dialog for creating drop shadows on a day-to-day basis. The end result is a slightly different filter chain to the one we’ll be creating here, but it’s a quicker, easier, and more flexible option for most purposes. However, with the knowledge gained from creating your own filter chain from scratch, it will be easier to tweak Inkscape’s built-in offerings via the Filter Editor dialog, should you need to.
Le dernier changement de la version 1.3 d’Inkscape que je vais aborder dans ces articles est décrit comme suit dans les notes de publication : « L’Éditeur de filtres a été remanié et est désormais plus facile à utiliser ! » Eh bien, il a été vraiment remanié. Quant à savoir s’il est plus facile à utiliser ou non… Je vais simplement décrire les fonctionnalités et vous laisser décider par vous-même.
J’ai d’abord abordé la boîte de dialogue de l’Editeur de filtres dans la partie 48 de cette série (le FCM n° 108). J’ai ensuite passé 9 numéros supplémentaires à détailler chacune des primitives de filtre individuelles. Malgré la refonte de l’interface utilisateur de l’Éditeur de filtres, ces détails s’appliquent toujours pour la plupart – ainsi, si vous souhaitez réviser vos connaissances sur les filtres, je vous suggère de lire également ces articles. Ce premier article décrivait comment créer une chaîne de filtres simple pour un effet d’ombre portée. Au risque de me répéter plus de 100 numéros plus tard, je vais donc faire de même avec le nouvel éditeur.
En pratique, je recommande d’utiliser la boîte de dialogue Filtres > Ombres et lueurs > Ombre portée… pour créer des ombres portées au quotidien. Le résultat final est une chaîne de filtres légèrement différente de celle que nous allons créer ici, mais c’est une option plus rapide, plus simple et plus flexible pour la plupart des besoins. Cependant, avec les connaissances acquises en créant votre propre chaîne de filtres à partir de zéro, il sera plus facile de modifier les offres intégrées d’Inkscape via la boîte de dialogue Éditeur de filtres, si vous en avez besoin.
A filter is applied to one or more objects, either individually or contained within a group. It’s important to understand the difference: when a filter is applied to a group, it’s as though the entire contents of the group is flattened down to a single object before the filter is applied. This image shows the same shapes with the same drop shadow applied, but the pair on the left are separate elements, whereas the pair on the right are grouped together, with the filter being applied to the group. Of course you’re free to mix things up further, applying filters to objects before grouping them and adding another filter to the group itself, for example. Sometimes there are good reasons for creating such complex arrangements, but do bear in mind that filters come at a cost. They are calculated ‘live’, which gives you the advantage of being able to tweak their parameters later, but which can chew up computing power very easily once too many, or too complex, filters are applied to the drawing. For our simple drop shadow example, however, speed isn’t likely to be too much of a concern. Since a filter is applied to an object or group, we’ll first need to create something. Following the example in my old article, I’m going to work on a bold and colorful text object. First a reminder of how the Filter Editor dialog was arranged in earlier versions of Inkscape.
Un filtre est appliqué à un ou plusieurs objets, soit individuellement, soit contenus dans un groupe. Il est important de comprendre la différence : lorsqu’un filtre est appliqué à un groupe, c’est comme si tout le contenu du groupe était aplati en un seul objet avant l’application du filtre. Cette image montre les mêmes formes avec la même ombre portée appliquée, mais la paire de gauche est constituée d’éléments séparés, tandis que la paire de droite est regroupée, le filtre étant appliqué au groupe.
Bien sûr, vous êtes libre de varier les choses, en appliquant des filtres aux objets avant de les regrouper et en ajoutant un autre filtre au groupe lui-même, par exemple. Il existe parfois de bonnes raisons de créer des arrangements aussi complexes, mais gardez à l’esprit que les filtres ont un coût. Ils sont calculés « en direct », ce qui vous donne l’avantage de pouvoir modifier leurs paramètres ultérieurement, mais cela peut très facilement épuiser la puissance de calcul une fois que trop de filtres, ou de filtres trop complexes, sont appliqués au dessin. Pour notre exemple d’ombre portée simple, cependant, la vitesse ne devrait pas vous inquiéter trop.
Comme un filtre s’applique à un objet ou à un groupe, nous devons d’abord créer quelque chose. En suivant l’exemple de mon ancien article, je vais travailler sur un objet texte en gras et coloré. Tout d’abord, rappelons comment la boîte de dialogue de l’Éditeur de filtre était organisée dans les versions antérieures d’Inkscape.
And now the new layout, in version 1.3. There’s also an alternative layout which is automatically used if your dialog is wide enough, but, in my opinion, it puts the panels in the wrong order (the parameters for the selected primitive on the left, and the filter chain containing the list of primitives on the right – breaking the usual left-to-right flow of a parent-child relationship in the UI). Therefore, I’ll stick to the vertical layout in this article. Neither of these is particularly intuitive, but the old dialog at least had the benefit of a fairly large button labelled ‘New’ to hint at your starting point. The equivalent in the new design is the much smaller ‘+’ button towards the right of the top row of controls. Good luck if you’re using the symbolic icons, where this looks even less obviously like a button! Clicking that ‘+’ button creates a new filter with an automatically generated name (‘filter1’ in this image), and activates a little more of the UI. The text on the bottom panel becomes slightly more helpful, telling us to add an effect from the search bar. The search bar in question is the drop-down with the magnifying glass icon and the ‘Add effect’ placeholder text.
Et maintenant, la nouvelle disposition, dans la version 1.3. Il existe également une disposition alternative qui est automatiquement utilisée si votre boîte de dialogue est suffisamment large, mais, à mon avis, elle place les panneaux dans le mauvais ordre (les paramètres de la primitive sélectionnée à gauche et la chaîne de filtres contenant la liste des primitives à droite, ce qui brise le flux habituel de gauche à droite d’une relation parent-enfant dans l’interface utilisateur). Par conséquent, je m’en tiendrai à la mise en page verticale dans cet article.
Aucune de ces deux options n’est particulièrement intuitive, mais l’ancienne boîte de dialogue avait au moins l’avantage d’un bouton assez grand intitulé « Nouveau » pour indiquer votre point de départ. L’équivalent dans la nouvelle conception est le bouton « + » beaucoup plus petit vers la droite de la rangée supérieure de commandes. Bonne chance si vous utilisez les icônes symboliques, où cela ressemble encore moins à un bouton !
Cliquer sur ce bouton « + » crée un nouveau filtre avec un nom généré automatiquement (« filter1 » dans cette image) et active un peu plus l’interface utilisateur. Le texte du panneau inférieur devient légèrement plus utile, nous indiquant d'ajouter un effet à partir de la barre de recherche. La barre de recherche en question est le menu déroulant avec l'icône en forme de loupe et le texte d'espace réservé « Ajouter un effet ».
This search bar actually works in two different ways, which can be a little confusing at first. For most users, I recommend opening the pop-up by clicking the down-arrow at the right. The result is a categorised array of the filter primitives, each with a small icon that sort-of represents what it does. The icons aren’t always of much use in determining which primitive is which: the ones that I mix up the most (Blend, Merge and Composite) all share the same icon! But I find it’s useful to see all the primitives at once to help reassure myself that I’m picking the right one amongst all the options. The second mode kicks in if you type into the field. This presents a vertical list of primitives, filtered by the text you type. If you absolutely know you want the Gaussian Blur primitive, for example, typing ‘blur’ or even just ‘ga’ will be enough to restrict the list to the one you want. Whichever approach you take, select the Gaussian Blur primitive to add it to your filter chain. The main panel will now be updated to show the primitives in your chain (just the one, so far), while the bottom panel shows the parameters for that primitive.
Cette barre de recherche fonctionne en fait de deux manières différentes, ce qui peut être un peu déroutant au début. Pour la plupart des utilisateurs, je recommande d'ouvrir la fenêtre contextuelle en cliquant sur la flèche vers le bas à droite. Le résultat est un tableau catégorisé des primitives de filtre, chacune avec une petite icône qui représente plus ou moins ce qu'elle fait. Les icônes ne sont pas toujours d'une grande utilité pour déterminer quelle primitive est laquelle : celles que je mélange le plus (Fusionner, Fondre et Composite) partagent des icônes voisines ! Mais je trouve utile de voir toutes les primitives en même temps pour m'assurer que je choisis la bonne parmi toutes les options.
Le deuxième mode s'active si vous saisissez du texte dans le champ. Il présente une liste verticale de primitives, filtrées par le texte que vous saisissez. Si vous êtes absolument sûr de vouloir la primitive Flou gaussien, par exemple, saisir « flou » ou même simplement « ga » suffira à restreindre la liste à celle que vous souhaitez.
Quelle que soit l'approche que vous choisissez, sélectionnez la primitive Flou gaussien pour l'ajouter à votre chaîne de filtres. Le panneau principal sera désormais mis à jour pour afficher les primitives de votre chaîne (une seule, jusqu'à présent), tandis que le panneau inférieur affiche les paramètres de cette primitive.
Although the controls in this section will vary depending on the primitive, they all share the three icon buttons that are shown next to the name. Clicking the first opens a small pop-up, which contains some additional information about the primitive. The other two will duplicate or delete the primitive, respectively. In the older editor, these existed only on the context menu in the editor pane (where they can also still be found). It’s good that these have been more obviously surfaced in the UI, though my build does not show tooltips for either of them: although the icons make their function fairly obvious, it’s still reassuring to be able to see a textual representation of their purpose. At this point, we have a valid filter chain, but our text still looks as un-blurred as ever. This was a shortcoming of the old editor as well, but it would have been nice if the new redesign had gone so far as to automatically associate the filter with the object we had selected when we created it. To make this association, we have to manually click the checkbox next to the word ‘Filter’ on the top line – and voila, we have blurred text.
Bien que les contrôles de cette section varient en fonction de la primitive, ils partagent tous les trois boutons d’icône qui sont affichés à côté du nom. Cliquer sur le premier ouvre une petite fenêtre contextuelle, qui contient des informations supplémentaires sur la primitive. Les deux autres dupliqueront ou supprimeront respectivement la primitive. Dans l’ancien éditeur, ceux-ci n’existaient que dans le menu contextuel du panneau de l’éditeur (où ils peuvent également toujours être trouvés). Il est bon qu’ils soient apparus plus clairement dans l’interface utilisateur, bien que ma version n’affiche pas d’info-bulles pour l’un ou l’autre d’entre eux : bien que les icônes rendent leur fonction assez évidente, il est toujours rassurant de pouvoir voir une représentation textuelle de leur objectif.
À ce stade, nous avons une chaîne de filtres valide, mais notre texte semble toujours aussi net. C’était également une lacune de l’ancien éditeur, mais il aurait été appréciable que la nouvelle refonte soit allée jusqu’à associer automatiquement le filtre à l’objet que nous avions sélectionné lors de sa création. Pour réaliser cette association, nous devons cliquer manuellement sur la case à cocher à côté du mot « Filtre » sur la ligne supérieure – et voilà, nous avons un texte flou.
The old dialog showed a list of all the filters in the document on the left, with a checkbox to indicate which one applied to the selected object, and a count of the number of objects in the document which use that filter. Changing the name of a filter was done by double-clicking on it to edit it in-place, and there was a context menu for duplicating and deleting filters. The ‘Filter’ pop-up in the new dialog offers the same options, now with more obvious buttons (still with no tooltips though). Renaming just requires a single click on the filter name to enter editing mode, and the currently active filter is shown more correctly using radio buttons rather than checkboxes. The ‘check’ or ‘tick’ button is worth drawing attention to specifically. The lack of a tooltip had me puzzling over its purpose, since it didn’t seem to assign the selected filter to the current objects as you might imagine from its visual association with the checkbox in the main dialog. What it actually does is the exact opposite: given a selected filter in the pop-up, it selects all the objects on the canvas that use the filter. This is a great addition that I’ve wanted for years, to aid with de-duplication of filters in complex drawings – it’s just a shame that it’s got an ambiguous and nondescript icon with no tooltip.
L'ancienne boîte de dialogue affichait une liste de tous les filtres du document sur la gauche, avec une case à cocher pour indiquer lequel s'appliquait à l'objet sélectionné, et un décompte du nombre d'objets du document qui utilisent ce filtre. Pour modifier le nom d'un filtre, il fallait double-cliquer dessus pour le modifier sur place, et il y avait un menu contextuel pour dupliquer et supprimer des filtres.
La fenêtre contextuelle « Filtre » de la nouvelle boîte de dialogue offre les mêmes options, désormais avec des boutons plus évidents (toujours sans info-bulles). Le changement de nom nécessite simplement un clic sur le nom du filtre pour entrer en mode édition, et le filtre actuellement actif s'affiche plus correctement à l'aide de boutons radio plutôt que de cases à cocher.
Le bouton « cocher » mérite d'être particulièrement souligné. L'absence d'info-bulle m'a laissé perplexe quant à son utilité, car elle ne semblait pas attribuer le filtre sélectionné aux objets actuels comme vous pourriez l'imaginer d'après son association visuelle avec la case à cocher dans la boîte de dialogue principale. En réalité, il fait exactement le contraire : étant donné un filtre sélectionné dans la fenêtre contextuelle, il sélectionne tous les objets sur la toile qui utilisent le filtre. C’est un excellent ajout que je souhaitais depuis des années, pour aider à la déduplication des filtres dans les dessins complexes. C’est juste dommage qu’il ait une icône ambiguë et quelconque sans info-bulle.
At this point, you can rename your filter to something more descriptive (“Blur”, or “Drop shadow” as that’s where we’re going with it), and you can play around with the sliders in the bottom panel to adjust the amount of blur applied to the text. Inkscape veterans may be wondering where the old ‘Filter General Settings’ tab has gone to. This is used to set the maximum size of the filter area, and sometimes has to be adjusted to stop filters being clipped. It now lives behind the cog icon at the right of the top row of controls, but can probably be left set to ‘Automatic Region’ unless you have a specific clipping issue. Also missing for old-timers are the various sources listed to the right of the main editing panel, with only ‘Source Graphic’ and ‘Source Alpha’ being visible by default. The other options are still available, and can be toggled with the button next to the Search Bar. But to be honest, they’re either tricky to use or downright broken in Inkscape – and always have been. Much as I would love to see the underlying issues addressed to make these more useful, hiding them by default is definitely the best option for most users. In fact I would have gone a step further, and had the toggle button inside the ‘cog’ pop-up, where it would be less likely to tempt unsuspecting users.
À ce stade, vous pouvez renommer votre filtre en quelque chose de plus descriptif (« Flou » ou « Ombre portée », car c’est ce que nous voulons) et vous pouvez jouer avec les curseurs du panneau inférieur pour ajuster la quantité de flou appliquée au texte.
Les vétérans d’Inkscape se demandent peut-être où est passé l’ancien onglet « Paramètres généraux du filtre ». Il est utilisé pour définir la taille maximale de la zone de filtre et doit parfois être ajusté pour empêcher le découpage des filtres. Il se trouve désormais derrière l’icône en forme de roue dentée à droite de la rangée supérieure de commandes, mais peut probablement être laissé sur « Région automatique », à moins que vous n’ayez un problème de découpage spécifique.
Il manque également aux anciens les différentes sources répertoriées à droite du panneau d’édition principal, seules « Source image » et « Opacité de la source » étant visibles par défaut. Les autres options sont toujours disponibles et peuvent être activées à l’aide du bouton situé à côté de la barre de recherche. Mais pour être honnête, elles sont, soit difficiles à utiliser, soit carrément cassées dans Inkscape – et l’ont toujours été. Même si j'aimerais que les problèmes sous-jacents soient résolus pour les rendre plus utiles, les masquer par défaut est certainement la meilleure option pour la plupart des utilisateurs. En fait, j'aurais été plus loin et j'aurais placé le bouton de basculement à l'intérieur de la fenêtre contextuelle « engrenage », où il serait moins susceptible de tenter les utilisateurs peu méfiants.
The actual details of creating a filter chain haven’t really changed, unfortunately. We’re still stuck with a list-based view of the filter primitives which feels restrictive and archaic compared with the ‘node editor’ approach that is common for similar tools in other products. There’s no technical limitation with SVG that prevents Inkscape having such a UI but it would be a huge undertaking – so unless some intrepid developer with lots of free time wants to give it a go, I think we’ll be looking at minor variations on this list for a long time to come. Given that this part of the UI remains mostly the same, I’m going to rattle through the remaining steps of our drop-shadow filter quite quickly. See those older articles if you need a slower introduction. For the basic sort of drop-shadow we want, the shadow needs to be a blurred version of the object with a black fill, not the bright color we’re currently seeing. The classic answer to this, in filter terms, is to drag the handle from the triangle next to the Gaussian Blur filter, over to the right, dropping it on the Source Alpha column. That causes the input to our blur to be taken from the transparency of the object which, in practice, means that filled pixels in the source end up as black pixels in the alpha. It’s a quick way to turn our red blur into a black blur.
Les détails de la création d’une chaîne de filtres n’ont pas vraiment changé, malheureusement. Nous sommes toujours coincés avec une vue basée sur une liste des primitives de filtre qui semble restrictive et archaïque par rapport à l’approche « éditeur de nœuds » qui est courante pour des outils similaires dans d’autres produits. Il n’y a aucune limitation technique avec SVG qui empêche Inkscape d’avoir une telle interface utilisateur, mais ce serait une tâche énorme ; donc, à moins qu’un développeur intrépide avec beaucoup de temps libre ne veuille l’essayer, je pense que nous allons examiner des variations mineures sur cette liste pendant un bon bout de temps.
Étant donné que cette partie de l’interface utilisateur reste essentiellement la même, je vais parcourir assez rapidement les étapes restantes de notre filtre d’ombre portée. Consultez ces anciens articles si vous avez besoin d’une introduction plus lente.
Pour le type d’ombre portée de base que nous voulons, l’ombre doit être une version floue de l’objet avec un remplissage noir, pas la couleur vive que nous voyons actuellement. La solution classique, en termes de filtre, consiste à faire glisser la poignée du triangle situé à côté du filtre Flou gaussien vers la droite, en la déposant sur la colonne Opacité de la source. Ainsi, l'entrée de notre flou est extraite de la transparence de l'objet, ce qui, en pratique, signifie que les pixels remplis de la source finissent par devenir des pixels noirs dans l'alpha. C'est un moyen rapide de transformer notre flou rouge en flou noir.
Since this blurred version will be the shadow, we need to move it from its original position. This is done by adding an Offset filter primitive to the chain by selecting it via the effect search bar. My brain always wants to click the ‘+’ button, but that adds a whole new filter, not just another primitive. Remember that in the new UI, the act of selecting the primitive also adds it – there’s no confirmatory step required. Compared with the old UI, this makes it impossible to read the info text about a primitive until after you’ve added it (furthering my confusion between Blend, Merge and Composite). At least there’s now a more obvious button to delete it when you realise you’ve picked the wrong one. If the new primitive isn’t automatically linked to the one above, drag from the triangle on the Offset primitive up to the Gaussian Blur, then release the mouse button to create a visible connection. You can adjust the sliders for the Offset primitive to your taste. Remember that filters are ‘live’ and you can always re-adjust them later, so don’t get hung up on guessing the right values now. On the canvas you should see your blurred, black text move around as you change these values.
Étant donné que cette version floue sera l’ombre, nous devons la déplacer de sa position d’origine. Pour ce faire, nous ajoutons une primitive de filtre Décalage à la chaîne en la sélectionnant via la barre de recherche des effets. Mon cerveau veut toujours cliquer sur le bouton « + », mais cela ajoute un tout nouveau filtre, pas seulement une autre primitive. N’oubliez pas que dans la nouvelle interface utilisateur, le fait de sélectionner la primitive l’ajoute également – aucune étape de confirmation n’est requise. Par rapport à l’ancienne interface utilisateur, cela rend impossible la lecture du texte d’information sur une primitive avant de l’avoir ajoutée (ce qui renforce ma confusion entre Fusionner, Fondre et Composite). Il existe au moins désormais un bouton plus évident pour la supprimer lorsque vous réalisez que vous avez choisi la mauvaise.
Si la nouvelle primitive n’est pas automatiquement liée à celle du dessus, faites glisser le triangle de la primitive Décalage jusqu’au Flou gaussien, puis relâchez le bouton de la souris pour créer une connexion visible. Vous pouvez ajuster les curseurs de la primitive Décalage à votre goût. N’oubliez pas que les filtres sont « en direct » et que vous pouvez toujours les réajuster plus tard, alors ne vous attardez pas à deviner les bonnes valeurs maintenant. Sur le canevas, vous devriez voir votre texte noir flou se déplacer pendant la modification de ces valeurs.
The final step with a drop-shadow is to put a copy of the original object back on top. This is most easily done with the Merge primitive, which literally just layers things on top of each other in the order in which they’re linked. Again, add it using the effect search bar. If it’s not automatically connected, drag from the triangle up to the Offset primitive. A second triangle will be created below the first, which you should drag to the Source Graphic column to the right. Basically we’ve just told it to merge together two images – the output from the Offset primitive on the bottom, overlaid by the original object on top. Our filter is complete. In this image (top right) I’ve edited and resized the text, and edited the name of the filter itself, to give the final result – and a picture of what your filter chain should hopefully look like.
L’étape finale pour une ombre portée consiste à remettre une copie de l’objet d’origine sur le dessus. Cela se fait plus facilement avec la primitive Fusionner, qui superpose littéralement les éléments les uns sur les autres dans l’ordre dans lequel ils sont liés. Encore une fois, ajoutez-la à l’aide de la barre de recherche des effets. Si elle n’est pas automatiquement connectée, faites-la glisser du triangle jusqu’à la primitive Décalage. Un deuxième triangle sera créé sous le premier, que vous devrez faire glisser vers la colonne Source image à droite. En gros, nous venons de lui dire de fusionner deux images – la sortie de la primitive Décalage en bas, recouverte par l’objet d’origine en haut. Notre filtre est terminé.
Dans cette image (en haut à droite), j’ai édité et redimensionné le texte, et modifié le nom du filtre lui-même, pour obtenir le résultat final – et une image de ce à quoi votre chaîne de filtres devrait ressembler.