Inspection de Canvas à l'aide des outils pour les développeurs Chrome

Introduction

Peu importe que vous utilisiez un contexte 2D ou WebGL, toute personne ayant déjà travaillé avec l'élément <canvas> sait qu'il peut être extrêmement difficile à déboguer. L'utilisation d'un canevas implique généralement une liste d'appels longue et difficile à suivre:

function draw() {

  context.clearRect(0, 0, 258, 258);
  context.fillStyle = "#EEEEEE";
  context.beginPath();
  context.arc(129, 129, 127, 0, 6.28, true);
  context.closePath();
  context.fill();

  // … and on and on
}

Parfois, vous avez besoin de capturer les instructions envoyées au contexte de canevas et de les parcourir une par une. Heureusement, les outils de développement Chrome disposent d'une nouvelle fonctionnalité d'inspection de canevas qui nous permet de le faire.

Dans cet article, je vais vous montrer comment utiliser cette fonctionnalité pour commencer à déboguer le canevas. L'outil d'inspection est compatible avec les contextes 2D et WebGL. Quel que soit celui que vous utilisez, vous devriez pouvoir obtenir immédiatement des informations de débogage utiles.

Getting Started

Pour commencer, accédez à about:flags dans Chrome, puis activez l'option Activer les expériences liées aux outils de développement

Activation des tests des outils pour les développeurs dans about:flags.
Figure 1 : Activation des tests des outils pour les développeurs dans about:flags

Accédez ensuite aux outils de développement et cliquez sur l'icône en forme de roue dentée Icône en forme de roue dentée en bas à droite. Accédez ensuite à Tests et activez l'Inspection du canevas:

Activer l&#39;inspection Canvas dans les tests des outils de développement
Figure 2 : Activation de l'inspection de canevas dans les tests des outils de développement

Pour que les modifications soient prises en compte, vous devez fermer, puis rouvrir les outils de développement (vous pouvez utiliser Alt+R ou Option+R, une alternative pratique).

Lorsque les outils de développement s'ouvrent à nouveau, accédez à la section "Profiles" pour afficher une nouvelle option Canvas Profiler.

Vous remarquerez d'abord que Canvas Profiler est désactivé. Une fois que votre page contient un canevas à déboguer, appuyez simplement sur Enable (Activer) pour actualiser la page afin de capturer les appels <canvas>:

Activer Canvas Profiler
Figure 3 : Activation du profileur Canvas

Vous devez déterminer si vous souhaitez capturer une seule image ou des images consécutives, où chaque image est identique à celle que vous voyez dans la timeline des outils de développement.

Frame unique capture les appels jusqu'à la fin de l'image actuelle, puis s'arrête. En revanche, les images consécutives capturent toutes les images de tous les éléments <canvas> jusqu'à ce que vous lui demandiez de s'arrêter. Le mode que vous choisissez dépend de la manière dont vous utilisez l'élément <canvas>. Pour une animation en cours, vous pouvez capturer une seule image. Pour une brève animation qui se produit en réponse à un événement utilisateur, vous devrez peut-être capturer des images consécutives.

Choisir le nombre d&#39;images à capturer
Figure 4 : Choisir le nombre d'images à capturer

Vous pouvez maintenant commencer à filmer.

Capture d'images

Pour cela, il vous suffit d'appuyer sur Start (Démarrer), puis d'interagir avec votre application comme vous le feriez normalement. Après un certain temps, revenez dans les outils de développement et, si vous enregistrez plusieurs images de manière consécutive, appuyez sur Arrêter.

Vous disposez désormais d'un nouveau profil dans la liste de gauche, avec le nombre d'appels de contexte capturés pour tous les éléments <canvas>. Cliquez sur le profil. Un écran ressemblant à ceci s'affiche:

Profil de canevas dans les outils de développement.
Figure 5 : Profil de canevas dans les outils de développement

Le volet inférieur affiche la liste de tous les frames capturés que vous pouvez parcourir. Lorsque vous cliquez sur chacun d'eux, la capture d'écran du haut affiche l'état de l'élément <canvas> à la fin de ce frame. Si vous avez plusieurs éléments <canvas>, vous pouvez choisir celui à afficher à l'aide du menu situé juste en dessous de la capture d'écran.

Choix du contexte de la toile.
Figure 6 : Choisir le contexte de la toile

Dans le cadre, vous verrez des groupes d'appels dessinés. Chaque groupe d'appels de dessin contient un seul appel de dessin, qui sera le dernier appel du groupe. Alors, qu'est-ce qu'un appel de dessin ? Pour un contexte 2D, ce serait clearRect(), drawImage(), fill(), stroke(), putImageData() ou toute fonction de rendu de texte, et pour WebGL, il s'agirait de clear(), drawArrays() ou drawElements(). Il s'agit essentiellement de toute modification susceptible de modifier le contenu du tampon de dessin actuel. (Si vous n'aimez pas les graphiques, vous pouvez considérer un tampon comme un bitmap avec des pixels que nous manipulons.)

Il ne vous reste plus qu'à parcourir la liste. Vous pouvez le faire au niveau du cadre, de l'affichage d'un groupe d'appels ou d'un appel. Quelle que soit la méthode choisie pour parcourir la liste (et des boutons situés juste en dessous de la capture d'écran vous permettent d'y accéder rapidement), vous verrez le contexte à ce stade, ce qui vous permettra de trouver et de corriger rapidement les bugs à mesure qu'ils apparaissent.

Boutons de navigation pour passer facilement d&#39;une liste à l&#39;autre
Figure 7 : boutons de navigation permettant de passer facilement d'une liste à l'autre

Trouvez la différence

Une autre fonctionnalité utile vous permet d'identifier les propriétés et les variables qui ont changé entre deux appels.

Cliquez simplement sur le bouton de la barre latérale (Icône de la barre latérale.) pour ouvrir une nouvelle vue. À mesure que vous parcourez les appels de dessin, vous pouvez voir les propriétés qui ont été mises à jour. Si vous pointez dessus, les tampons ou les tableaux affichent leur contenu.

Trouvez la différence

Faites-vous entendre !

Vous savez désormais comment déboguer votre canevas dans les outils pour les développeurs Chrome. Si vous avez des commentaires sur l'outil Canvas Profiler, veuillez signaler un bug ou publier un message sur le groupe des outils pour les développeurs Chrome. N'hésitez pas à nous contacter si vous rencontrez des bugs ou si vous souhaitez nous signaler d'autres problèmes lors de l'inspection d'un <canvas>. En effet, seule l'utilisation des développeurs et les commentaires nous permettent d'améliorer les outils Chrome.