COLORIMÈTRE NUMÉRIQUE LINUX

Signaler
Messages postés
4
Date d'inscription
lundi 14 février 2005
Statut
Membre
Dernière intervention
9 janvier 2012
-
Messages postés
2
Date d'inscription
mercredi 19 décembre 2007
Statut
Membre
Dernière intervention
30 janvier 2012
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/53936-colorimetre-numerique-linux

Messages postés
2
Date d'inscription
mercredi 19 décembre 2007
Statut
Membre
Dernière intervention
30 janvier 2012

Pour la compilation, c'est bien lié au compilateur: par réflexe, ne faisant que rarement du C, j'avais le source mis dans un fichier d'extension cpp. Ce qui donne:
$ gcc -o color color.cpp -lX11
/tmp/ccZ6jt2n.o:(.eh_frame+0x12): undefined reference to `__gxx_personality_v0'
$ gcc -o color color.c -lX11
# OK
Messages postés
1
Date d'inscription
mercredi 1 septembre 2010
Statut
Membre
Dernière intervention
30 janvier 2012

Bonjour Alec078

Pour ce qui est des problèmes de compilation, je pense que c'est lié au binaire utilisé : g++ au lieu de gcc. Ce code est en C.
Sinon en ce qui concerne la remarque sur la non fonctionnalité du programme, je crois comprendre ce que tu dis; j'ai fais ce bout de code car j'avais besoin d'un programme équivalent à celui existant sur Mac, comme précisé dans la description; je m'en sers en peinture lorsque j'ai un modèle sur écran et que j'ai un doute sur la couleur d'une portion de l'image. Je n'ai donc pas l'utilité de récupérer ces valeurs dans un programme... Mais cela pourrait être une amélioration de ce code, assez simple à mettre en place je pense.

Bonne journée
Messages postés
2
Date d'inscription
mercredi 19 décembre 2007
Statut
Membre
Dernière intervention
30 janvier 2012

Voici les modifications que j'ai effectuées pour que cela compile:

$ uname -a
Linux lucid 2.6.32-34-generic #77-Ubuntu SMP Tue Sep 13 19:39:17 UTC 2011 x86_64 GNU/Linux

$ lsb_release -a
[...]
Description: Ubuntu 10.04.3 LTS

J'ai du caster ces 2 malloc:

$ g++ -o color color.cpp -lX11
color.cpp: In function ‘void init()’:
color.cpp:111: error: invalid conversion from ‘void*’ to ‘XTextProperty*’
color.cpp:125: error: invalid conversion from ‘void*’ to ‘XColor*’
color.cpp: At global scope:
color.cpp:144: error: ‘::main’ must return ‘int’

1/
title=(XTextProperty *) malloc(sizeof(XTextProperty));
2/
c= (XColor *) malloc(sizeof(XColor));

puis renvoyer un int plutôt que void dans le main, ce qui est plus dans la norme.

Le programme fonctionne comme prévu pour ce qui est de la colorimétrie.
Par contre changer le curseur en croix ne rend pas le pointage plus précis, c'est le rôle de la loupe.

Et surtout, et c'est ce qui rend le programme non fonctionnel, les événements X sont tous interceptés par l'application, ce qui rend son utilisation compliquée; quand on en arrive au point d'utiliser un colorimètre, c'est qu'on est en train de programmer, et qu'on a besoin de ces valeurs (bien souvent plusieurs en série si on veut les couleurs dans un dégrade). Et obliger l'utilisateur a quitter et relancer l'application, entre chaque valeur, sans compter qu'il doit compter sur sa mémoire entre deux.

Pourquoi ne pas juste dumper les valeurs aux points cliqués ?
Messages postés
4
Date d'inscription
lundi 14 février 2005
Statut
Membre
Dernière intervention
9 janvier 2012

library = bibliothèque en français à moins que tu ne fasse payer tes fonctions ...