10-11-18, 08:52
(09-11-18, 23:46)mmoy a écrit : Il y a une mauvaise interaction entre le bouton « auto tune source » et les pipettes. Si on utilise les pipettes avant le color picker, tout est cassé : la zone utilisée en dernier par le colorpicker est utilisée par le bouton « auto tune source », et du coup ça fait n'importe quoi. Et ça continue à faire n'importe quoi longtemps après :-(.
Le problème est dans le code au niveau de optimize_button_pressed_callback : le module demande à utiliser le colorpicker sur l'ensemble de l'image, mais il enchaîne directement sur l'utilisation du résultat, alors que le pipeline n'a pas été relancé (dt_dev_reprocess_all(self->dev) n'a pas l'air de relancer le pipe immédiatement, si j'ai bien compris il demande à le relancer mais le calcul sera fait après). Il faudrait faire comme pour les callbacks des pipettes : quand on clique, positionner which_colorpicker sur une valeur spécifique à l'optimiseur, et dans un autre callback récupérer la valeur. Je n'ai pas trouvé de moyen simple d'avoir le fameux « autre callback ».
Ce bout là est toujours problématique dans master. C'est plus grave que ça en a l'air : le bouton reste cassé quand on réinitialise le module et quand on change d'image :-(. Donc faut vraiment corriger, c'est plus qu'un petit glitch de l'interface.
En fait, je me dis que le bouton « auto tune source » aurait tout intérêt à être une vraie pipette dans l'interface :
* Pour l'utilisateur, ça permet de spécifier une portion de l'image sur laquelle faire les mesures min/moyenne/max, par exemple pour exclure un point trop brillant (exemple : photo en contre-jour, on peut sélectionner un rectangle avec de l'ombre, un bout du sujet et un bout très éclairé, mais exclure le soleil du rectangle de mesure).
* En terme de cohérence d'interface graphique, ce bouton est très similaire à ce que fait la pipette de « exposition » (sauf que cette dernière ne regarde que le min et le max, pas la moyenne), et dans « exposition » c'est une pipette. Donc tant qu'à faire un truc similaire à une fonctionnalité existante, autant que la GUI soit similaire aussi.
* En terme de code, ça ramène aux cas déjà traités des autres pipettes, c'est plus facile d'être cohérent.
Bref, à mon avis c'est plus facile à coder et mieux pour l'utilisateur.