NegativeScreen

English version here
 

NegativeScreen est une application permettant d’inverser les couleurs de votre écran, afin par exemple, de ne pas se faire éblouir dans la pénombre.

Ce programme a été conçu pour faire son travail tout en gardant une fluidité d’animation maximale.
Les performances de l’ordinateur ne sont que très peu affectées.

Différents mode d’inversion sont proposés, dont des modes “intelligents”, permettant d’inverser le noir et le blanc tout en conservant des couleurs (presque) identiques.

Normal

Simple Inversion

Smart Inversion

 

Utilisation

 

Dès le lancement, l’inversion des couleurs s’active.
NegativeScreen ne possède qu’une interface graphique minimale sous la forme d’une icône associée à un menu contextuel, dans la zone de notification.
Le simple click active ou désactive l’inversion, tandis qu’un click droit fait apparaitre un menu contenant plus d’options.

En plus de ces commandes, NegativeScreen est aussi controlable uniquement en utilisant des touches de raccourcis.

 

Raccourcis par défaut

Win+Alt+H Termine l’application (Halt, en anglais)
Win+Alt+N Contrôle l’activation/désactivation du mode Nuit

Win+Alt+F1-à-F11: change le mode d’inversion:

F1: inversion standard
F2: inversion intelligente 1 – transformation optimale en théorie (mais couleurs pures désaturées)
F3: inversion intelligente 2 – haute saturation, couleurs pures bonnes
F4: inversion intelligente 3 – ensemble désaturé, jaunes et bleus mauvais, en fait plutot relaxant et assez agréable
F5: inversion intelligente 4 – haute saturation, jaunes et bleus mauvais, assez lisible
F6: inversion intelligente 5 – pas tellement lisible, bonne couleurs. (couleurs CMJ un peu désaturées, toujours plus saturées que la normale)
F7: sepia negatif
F8: noir et blanc negatif
F9: rouge negatif
F10: rouge
F11: noir et blanc

 

Configuration

La version 2.0 (et 1.13) introduit un fichier de configuration, permettant de configurer pratiquement toutes les fonctions de NegativeScreen.
Il est par exemple possible de choisir des raccourcis claviers personnalisés, ou même d’ajouter de nouveaux effets en plus de l’inversion de couleur !

Notez que cela nécessite des connaissances sur les matrices de couleurs (color matrices)…

Il est possible que j’ajoute un moyen d’en générer plus facilement dans une version future…

Si le fichier de configuration est manquant (negativescreen.conf), vous pouvez utiliser le menu “Edit Configuration” qui régénérera automatiquement la configuration par défaut.

Si quelque chose tourne mal après avoir édité le fichier (un mauvais raccourci clavier faisant crasher le programme…) vous pouvez simplement supprimer le fichier de configuration, la configuration interne par défaut sera utilisée.

 

Version pour Windows XP

 

Malheureusement, l’API Magnification utilisé par cette application n’existe pas sur Windows XP.
J’ai donc le regret d’annoncer qu’il n’y aura pas de version compatible Windows XP de NegativeScreen.

 

Téléchargements

 

NegativeScreen est distribué gratuitement, ainsi que son code source, sous licence GPL.

 

Dernière version binaire (directement utilisable)

Ancienne version (pas d’interface graphique, mais marche avec Windows Vista)

Sources C#

ColorMatrix Viewer. Un outil de visualisation et d’édition de ColorMatrix (en Anglais)…

 

► ChangeLog…

Version 2.3, 2014-03-28
------------------------
- [fixed] crash if more than one custom color effect is added without an associated hot key
- [added] (re)added the ShowAeroWarning configuration option from the version 1.*
- [added] check box next to the current color effect in the right click menu

Version 2.2, 2013-02-17
------------------------
- [fixed] avoid crash if a hot key cannot be registered
- [added] new ActiveOnStartup configuration option

Version 2.1, 2012-12-22
------------------------
- [fixed] crash on Windows 8 due to inter-threads calls
	(this was not a problem on Windows 7)
- [added] new MainLoopRefreshTime configuration option

Version 2.0, 2012-12-14
------------------------
Major update:
	- reworked entirely
	- better performances
	- smooth transitions
	- graphic interface (minimal)
	- configuration file:
		- fine grained configuration
		- custom hotkeys
		- custom color effects

Version 1.13, 2013-07-04
------------------------
- [added] implemented the configuration file for the version 1.*
- [added] configuration option to disable the message warning about aero being disabled

Version 1.12, 2012-12-14
------------------------
- [fixed] crash on Windows 8

Version 1.11, 2012-06-26
------------------------
- [added] new red and negative red filters bound on F9 and F10

Version 1.10, 2012-05-15
------------------------
- [fixed] infinite flickering on Vista (introduced in 1.8)

Version 1.9, 2012-04-16
------------------------
- [fixed] stupid bug if the Windows taskbar is vertical

Version 1.8, 2012-03-22
------------------------
- [fixed] execution is no longer prevented if aero is disabled (previous bug corrected)
		however, the performances will still be horrible

Version 1.7, 2012-03-21
------------------------
- [fixed] works as expected when using custom DPI settings

Version 1.6, 2012-02-27
------------------------
- [fixed] crash on X86 on launch
- [fixed] prevent execution if aero is disabled
		(prevent undesirable behaviours: black screens, 100% CPU usage...)

Version 1.5, 2012-02-16
------------------------
- [fixed] (internal) ColorMatrix implementation
- [added] new feature: choice between 9 inversion modes
		(smart mode, etc... see readme for details)

Version 1.4, 2012-02-09
------------------------
- [fixed] does not crash anymore on Windows Vista

Version 1.3, 2012-02-01
------------------------
- [fixed] multi-screen should finally work!
		after a lot of tests and coding, I re-thought completely the architecture
- [knownbug] in some screen configurations, if the primary screen if smaller than the other screen,
		the second larger screen has a black border at its bottom.
		It could be a bug in the Windows API...

Version 1.2, 2011-09-18
------------------------
- [fixed] multi-screen support (again) : bug with main screen on the right

Version 1.1, 2011-09-13
------------------------
- [fixed] multi-screen support
- [fixed] when halted while paused, the application never stopped

Version 1.0, 2011-09-06
------------------------
- Initial release


Vous pouvez retrouver ici l’article technique sur la réalisation de ce projet.

  • #1 written by dan
    about 9 months ago

    Thank you very much for this app. It greatly reduced my eyes strain due to long hours of staring at the screen.
    Ideea of improvement: when you switch to a type of negative screen, it would be nice to have 2 things:
    -a) an inverted desktop selected (because double inversion = Normal)
    -b) the files&folders of the desktop keep original colors (because on invert, the white text with black shadow, turns into a not so easy to read black text with withe shadow)

    For a) it think it would be easy enough because it can be done as follows:
    -for Win7 – HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Desktop\General\WallpaperSource
    -for XP – [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Wallpaper
    -for W8 – HKEY_CURRENT_USER\Control Panel\Desktop\TranscodedImageCache
    More details and also 2 Vbscripts(one for XP/7 and one for 8) here:
    http://www.winhelponline.com/blog/find-current-wallpaper-file-path-windows-8/
    For b) it’s a little tricky because I could not find something that worked.
    Anyway hope you’ll at least think about it and if you decide to implement these features, hoped I helped a little.
    All the best,
    Dan.

    • #2 written by Yaurthek
      about 9 months ago

      Sadly, neither of your suggestions are easy to implement.
      The second one because I have no idea where to begin,
      and the first one simply because the transformation is not necessarily reversible (that is, a double transformation does not necessarily yields the exact same colours). Actually, that’s the reason why there are so many variations of the “smart” inversion: to let the user select the one they prefer.

  • #3 written by Chris
    about 1 year ago

    Merci pour ce superbe utilitaire.

    Suggestion: ajouter un changement automatique du sens pour ClearType.
    En effet, lorsqu’on inverse les couleurs (RGB->BGR), le texte se retrouve avec un lissage d’escalier inverse et on perd vraiment en lisibilité.
    Je crois que les modifications globales du réglage de ClearType nécessitent un droit administrateur, malheureusement (à vérifier toutefois).

    Quelques infos ici:
    http://msdn.microsoft.com/en-us/library/windows/desktop/dd183433%28v=vs.85%29.aspx

    • #4 written by Yaurthek
      about 1 year ago

      Oui, ClearType n’est pas génial avec l’inversion “intelligente”…
      J’avais déja noté ce problème, mais sans vraiment chercher de solution rapport à KISS, et aussi par flemme je l’avoue.
      Merci pour le lien, je vais regarder si je peux faire quelque chose. :)

    • #5 written by Yaurthek
      about 1 year ago

      Bon, après avoir fait quelques tests, c’est un peu n’importe quoi la gestion du lissage des polices sur Windows, pas moyen de faire ça simplement…
      Chaque application gère la chose à sa manière, et d’après mes tests, la lisibilité n’est pas forcément améliorée en désactivant ClearType et/ou le lissage des polices.
      Bien que le halo rouge diminue ou disparaisse suivant les cas, ClearType améliore vraiment la forme des caractères, et on perd en lisibilité lorsqu’il est désactivé.

      • #6 written by Chris
        about 1 year ago

        Sur mon PC, si je me contente d’inverser le sens RGBBGR, le résultat devient bon en écran négatif.
        Bonne nouvelle: ça ne nécessite pas de pouvoir administrateur.

        Mon code qui fonctionne bien:
        [DllImport(“user32.dll”, SetLastError = true)]
        [return: MarshalAs(UnmanagedType.Bool)]
        static extern bool SystemParametersInfo(uint uiAction, uint uiParam, ref bool pvParam, uint fWinIni);
        [DllImport(“user32.dll”, SetLastError = true)]
        [return: MarshalAs(UnmanagedType.Bool)]
        static extern bool SystemParametersInfo(uint uiAction, uint uiParam, ref uint pvParam, uint fWinIni); // T = any type
        [DllImport(“user32.dll”, SetLastError = true)]
        [return: MarshalAs(UnmanagedType.Bool)]
        static extern bool SystemParametersInfo(uint uiAction, uint uiParam, uint pvParam, uint fWinIni); // T = any type
        readonly uint SPI_GETFONTSMOOTHING = 0x4A;
        readonly uint SPI_SETFONTSMOOTHINGORIENTATION = 0x2013;
        readonly uint SPI_GETFONTSMOOTHINGORIENTATION = 0x2012;
        readonly uint FE_FONTSMOOTHINGORIENTATIONBGR = 0x0000;
        readonly uint FE_FONTSMOOTHINGORIENTATIONRGB = 0x0001;
        readonly uint SPIF_SENDCHANGE = 2;
        readonly uint SPIF_UPDATEINIFILE = 1;

        public ChangeLeSensDeClearType()
        {
        bool ClearTypeIsActivated = false;
        bool retval = SystemParametersInfo(SPI_GETFONTSMOOTHING, 0, ref ClearTypeIsActivated, 0);

        uint Orientation = 0;
        retval = SystemParametersInfo(SPI_GETFONTSMOOTHINGORIENTATION, 0, ref Orientation, 0);

        uint NouvelleOrientation = Orientation == FE_FONTSMOOTHINGORIENTATIONRGB ? FE_FONTSMOOTHINGORIENTATIONBGR : FE_FONTSMOOTHINGORIENTATIONRGB;

        retval = SystemParametersInfo(SPI_SETFONTSMOOTHINGORIENTATION, 0, NouvelleOrientation, SPIF_SENDCHANGE | SPIF_UPDATEINIFILE);
        }

        J’espère que ça pourra aider.

        • #7 written by Chris
          about 1 year ago

          correction:
          SPIF_UPDATEINIFILE n’est pas nécessaire, apparemment (il est même plutôt nuisible car il sauvegarde l’état, ce qui n’est pas souhaitable).

        • #8 written by Yaurthek
          about 1 year ago

          Ah je n’avais pas pensé à tester le changement d’orientation !

          Mais je dois dire que je ne vois pas de changement flagrant…
          Le halo rouge change juste de sens, mais est toujours autant présent.

          http://arcanesanctum.net/other/3%20rgb.png vs http://arcanesanctum.net/other/4%20bgr.png

          La meilleure chose à faire serait probablement de désactiver complétement ClearType, mais comme je disais plus haut, les caractères sont alors “abimés”.

          Il est aussi possible de désactiver le lissage des polices (Font Smoothing), qui est une chose différente de ClearType, et c’est d’ailleurs avec ça que j’ai obtenu les meilleurs résultats (plus de frange colorée du tout. Par contre, les polices sont un peu pixellisées).
          Le problème c’est que comme chaque application, voir chaque controle au sein d’une application, gère le lissage différemment, il est quasiment impossible d’obtenir un résultat correcte partout…

          • #9 written by Chris
            about 1 year ago

            Sur mon PC, la différence est nette. Par contre, il arrive que des applications n’affichent pas tout de suite la différence, ou partiellement (Visual Studio est un des pires pour ça, d’ailleurs on le voit bien sur vos captures: des zones dans une orientation ou d’autres zones à l’inverse, dans la même fenêtre). J’ai l’impression qu’il y a une question de cache qui n’est pas effacé lors du changement d’orientation. À vérifier après un redémarrage ou après une déconnexion.

            J’ai essayé de mettre en mode “gris” (avec SystemParametersInfo(SPI_SETFONTSMOOTHINGTYPE, 0, FE_FONTSMOOTHINGCLEARTYPE, SPIF_SENDCHANGE /*| SPIF_UPDATEINIFILE*/); ),
            mais il n’y a eu aucun changement immédiat.

            Toutefois, il serait peut-être intéressant d’avoir une commande dans le menu de NegativeScreen “Toggle ClearType orientation”. Ça serait déjà du temps de gagné par rapport à devoir aller dans le panneau de configuration (sans compter que celui-ci nécessite un droit administrateur pour valider le changement).

          • #10 written by Chris
            about 1 year ago

            Je devrais me relire trois fois: je voulais écrire
            FE_FONTSMOOTHINGSTANDARD

          • #11 written by Yaurthek
            about 1 year ago

            Dans mes précédents tests, je n’ai pas réussi à faire fonctionner l’appel avec SETFONTSMOOTHINGTYPE. La fonction retourne false et GetLastError() m’indique que “Value does not fall within the expected range.”…

            Conçernant l’ajout du changement de l’orientation de ClearType dans NegativeScreen, je ne pense pas l’implémenter.
            Je n’ai personnellement pas constaté de changement flagrant, et je n’y vois que des inconvénients par rapport à ce que cela apporterait. (cela n’est utile que pour certains effets, et si l’appli crash, on reste bloqué dans le mode actuel)

          • #12 written by Chris
            about 1 year ago

            Je comprends ça, et puis les programmes en font un peu à leur tête pour ce qui est de respecter les règles de Windows.
            Par exemple pour que FireFox prenne en compte le changement d’orientation, il a fallu que désactive puis réactive son accélération matérielle. Rien à faire pour Visual Studio (sauf peut-être redémarrer Windows).

            En tout cas, merci pour vos réponses et vos efforts. Et surtout pour ce superbe logiciel qui sauve les yeux ! :)
            Une bonne année !

          • #13 written by Yaurthek
            about 1 year ago

            Merci à toi, c’est toujours agréable de voir que NegativeScreen est utile à quelqu’un. :)

            Bonne année également !

  • #14 written by pr7421
    about 2 years ago

    Merci pour cette excellente application qui permet enfin une utilisation agréable de son PC la nuit.
    Il y a juste un petit bug lorsque la barre des tâches Windows se trouve sur la gauche de l’écran. Dans ce cas, j’obtiens (de gauche à droite) la barre des tâches, puis le natif de la barre des tâches et finalement le bureau. Le pointeur de la souris est aussi décalé. Il faut viser à gauche des boutons de l’on souhaite cliquer (de l’épaisseur de la barre des tâches).
    A+

    • #15 written by Yaurthek
      about 2 years ago

      Merci d’avoir signalé le problème, c’est réglé. :)

  • #16 written by Yaurthek
    about 2 years ago

    à propos de XP, voir la mise à jour de la page…

  • #17 written by Yaurthek
    about 2 years ago

    Concernant le parametrage des raccourcis, c’est prevu dans une version future…

    Peux tu préciser quel type de bug tu as sur XP ?

  • #18 written by fab
    about 2 years ago

    salut ta version compilée bug sur mon XP

  • #19 written by fab
    about 2 years ago

    excellent, merciii
    une petite version avec l’avantage de choisir son propre raccourci clavier serait un must

    a bientot