Blogue

Le bogue violet de Sim Daltonisme

En 2016, j’ai converti l’algorithme de filtre de Sim Daltonisme 1.0 en un « shader » OpenGL pour qu’il puisse rouler sur un processeur graphique avec une meilleure performance. Ceci a aussi rendu possible l’application iOS qui filtre en temps réel les images de la caméra. Un bogue c’est glissé dans le filtre cependant.

Avec une roue des couleurs filtrée, on peut observer qu’une région dans les bleus saturés devient violette. Ceci ne fait aucun sens visuellement : la lumière violette est un mélange de bleu et de rouge, et cette zone violette apparaît même pour la protanopie (pas de cône rouges). Cette couleur n’apparaissait pas non plus ni avec la version 1, ni sur le Color Laboratory d’où l’algorithme du filtre est tiré.

J’ai ressorti le code de la version 1 pour tenter de trouver des différences. Après avoir cherché des différences algorithmiques sans succès, j’ai tenté de ramener certaine valeurs à l’intérieur de la plage 0…1 où elles étaient supposées rester ; théoriquement le résultat des calculs ne devrait pas sortir de cette plage, mais ceci ne tient pas compte des erreurs d’arrondi dans les calculs de nombres à virgule flottante. Les processeurs graphiques sont très rapides, mais sacrifient parfois de la précision pour gagner en vitesse. Et ceci a réglé le problème.

Il y a donc maintenant une nouvelle version de Sim Daltonisme avec un filtre corrigé dans les applications Mac et iOS. Merci à Lisa Charlotte Rost pour m’avoir signalé le bogue après avoir comparé avec d’autre outils de simulation.


Plus de raccourcis clavier dans Black Light Pro

Certaines personnes trouvent leur écran trop lumineux, et certains écrans sont en effet trop lumineux. Vous pouvez réduire la luminosité de l’écran, mais que faire si la luminosité minimale est encore trop grande ? Vous pouvez alors utiliser Black Light ou Black Light Pro pour réduire la luminosité encore plus… problème réglé ? Pas entièrement il semblerait.

Je reçois occasionnellement des demandes pour un raccourci clavier global pour ajuster la luminosité. Dans Black Light Pro vous pouvez configurer différents effets avec chacun leur niveau de luminosité propre, vous pouvez ensuite assigner à chacun un raccourci clavier. Mais ne serait-il pas mieux d’avoir simplement deux touches pour l’augmenter ou la diminuer ? La nouvelle version de Black Light Pro rend ceci possible, et plus.

Avec la version 1.2 de Black Light Pro vous pouvez maintenant choisir des raccourcis clavier pour diminuer et augmenter la luminosité, changer la teinte et son intensité, activer le filtre d’inversion des couleurs, etc. Ces changements seront sauvegardés dans l’effet actif.

Si vous avez plus d’un écran, vous pouvez appliquer le même effet à tous les écrans ou bien définir un effet séparé pour chacun. Dans le premier cas, les touches de raccourcis s’appliqueront à tous les écrans. Dans le deuxième chaque écran est contrôlé indépendamment, une touche permettant de basculer d’un à l’autre.

Black Light Pro vient avec une période d’essai de 30 jours qui vous permet de vérifier si l’expérience vous convient.


macOS Catalina: Autoriser les captures d’écran

macOS Catalina renforce la sécurité de diverse façons. L’une d’elle consiste à empêcher les applications de voir ce qui se passe à votre écran. Les applications qui veulent voir l’écran doivent maintenant avoir une autorisation spéciale de l’utilisateur. Ceci affecte deux de mes applications : Sim Daltonisme et Red Stripe.

La première fois que vous ouvrez l’application, macOS vous expliquera que l’application tente d’enregistrer l’écran et vous présentera l’option d’ouvrir les préférences système. Sans votre autorisation dans les préférences système, tout ce que l’application peut voir de votre écran sera l’image de fond de votre bureau.

Vous pouvez ouvrir les préférences à partir de l’alerte présentée par macOS la première fois que vous ouvrez l’application, ce qui vous mènera immédiatement au bon endroit. Autrement, vous pouvez y aller en choisissant Préférences Système dans le menu pomme. À partir de là, ouvrez le panneau Sécurité et confidentialité, choisissez l’onglet Confidentialité et sélectionnez la catégorie Enregistrement de l’écran.


Vous verrez une liste des applications qui ont demandé à voir l’image à l’écran. Cochez celles que vous voulez autoriser. Vous serez peut-être convié à quitter l’application pour que les changements prennent effet, mais ce n’est pas nécessaire dans le cas de Sim Daltonisme et Red Stripe.


Black Light Pro 1.1 dans l'App Store

La version résumée de cet article est que Black Light Pro 1.1 est sorti, et est aussi maintenant disponible dans le Mac App Store. Si vous être intéressé à l’histoire qui a mené à ça, lisez la suite.


L’année dernière, quand je développais Black Light Pro, j’avais l’intention de publier l’application sur l’App Store en plus de mon site web, comme pour toutes mes autres applications. Les choses ne fonctionnent pas toujours comme prévu, cependant. L’App Store est connu pour ses règles strictes de l’environnement contrôlé (sandbox), bloquant l’accès à toute sortes de fonctions de macOS au nom de la sécurité. Une de ces fonctions est celle qui change le profil de couleur d’un écran.


Il y a deux façons de modifier comment le système d’exploitation affiche les couleurs rendues sur l’écran :

  1. On peut changer directement la table de transfert de l’écran pour avoir un effet instantané. C’est un peu fragile parce que plusieurs choses peuvent rétablir la table d’origine, telle que rallumer un écran, quitter d’autres applications, etc.

  2. On peut changer le profil de couleurs de l’écran. Le profil de couleur contient toutes sortes d’informations à propos de l’écran, l’une d’elle étant la table de transfert à utiliser. Quand la table de transfert d’origine est rétablie après avoir utilisé la méthode #1, c’est celle du profil qui s’applique. Ceci rend le profil l’endroit idéal pour appliquer un effet de longue durée.

Black Light a toujours utilisé la méthode #1. Pour Black Light Pro je voulais utiliser la méthode #2 pour rendre l’effet plus robuste en changeant le profil pendant que l’application est en marche. C’est mieux parce que ça évite les flashs de couleurs « normales » qui arrivent quand la table de transfert du profil est rétablie.


Donc l’environnement contrôlé (sandbox) bloque les choses. Puisqu’il est impossible de changer le profil dans un tel environnement, cette fonctionnalité doit être exclue de la version Mac App Store. L’application pourrait toujours fonctionner, mais changer le profil ne fonctionnerait pas.

Je ne voulais pas enlever la fonctionnalité (parce que je la trouve vraiment utile), et je ne voulais pas créer une version différente pour l’environnement contrôlé pour éviter diverses complications. Finalement, j’ai publié l’application uniquement sur ce site web.


Il y a quelque mois, j’ai constaté que Black Light Pro pouvait parfois planter sans y avoir touché. Ceci se manifeste par l’icône de l’application disparaissant de la barre des menus et les effets prévus à l’horaire qui ne s’appliquent plus. D’après les rapports de crash, ça semblait venir du code qui effectuait le changement de profil.

Je n’ai pas pu trouver exactement comment reproduire le problème, mais ça ressemble à un problème de compteur de référence d’un appel de fonction servant à changer le profil. Sans être certain de si je pouvais y faire quelque chose (le bogue pourrait être du côté d’Apple), j’ai décidé de déplacer le code qui applique le profil dans un processus séparé : si le processus séparé plante, alors un nouveau est reparti et continue où le précédent a laissé. Le système est tolérant aux plantages maintenant !


Cette réparation de bogue pour le moins compliquée a un effet intéressant : il est maintenant possible de placer le processus principal de Black Light Pro dans l’environnement contrôlé. Et en conséquence il est maintenant compatible avec le Mac App Store… tant que la fonctionnalité touchant au profil n’y est pas incluse. Et c’est ce que j’ai fait pour la version 1.1.

Je suis donc fier d’annoncer que Black Light Pro est maintenant disponible sur l’App Store. Et pour la version directe, le code de gestion du profil de couleur est beaucoup plus robuste maintenant.



  • © 2003–2020 Michel Fortin.