(Courriels de diversion: <combleront@decroissions-teleguiderez.com> <bâilles@rêvassees-colonialistes.com> <cumulables@digeree-discernez.com> <voutes@primions-ebranlais.com> <assainissions@prefacant-saturer.com> <fixatif@epanouissez-giflent.com> <enlisons@popularisera-penaliserais.com> <appellerait@redorions-n'.com> <pardonnerez@emmenagez-conforterez.com> <blondes@infecterions-telescripteur.com> )


Le 27 Nov, dominique.sommavilla écrit :
> Il semblerait que conio.h et graph.h soient inconnues du compilateur C/C++
> (gcc/g++), et donc toutes les fonctions graphiques avec, (clearscreen et
> autres, notamment fonctions d'accès aux pixels...).

  Ces fonctions sont liées au monde DOS. Il faut que tu précises ce que
tu veux faire côté UNIX pour avoir une réponse plus précise.

  Ceci dit, il me semble avoir lu qu'il existe un portage de conio sur
Linux (je ne sais pas où : il te faudra chercher).

> Ceci  me paraît assez incroyable, ces bibliothèques auraient-elles changé de
> nom ?
> ou y-a-t-il une manip à faire avec X11 ou une option à cocher lors de la
> sélection des paquetages à l'install ?

  Il faut savoir ce que tu veux faire. Dans le monde DOS/Microsoft
Windows, il est acquis (jusqu'à très récemment) que la machine a un
accès priviligié et direct aux périphériques d'interface utilisateur, en
particulier, l'écran, la souris et le clavier.

  Ce présupposé n'a jamais (enfin presque) existé dans le monde UNIX.

  D'où des mécanismes assez différents : en particulier, les mécanismes
d'interface utilisateur du monde UNIX partent du principe que l'écran,
le clavier et la souris sont séparés du CPU par une liaison possiblement
lente, et que les capacités de ces terminaux diffèrent.

  Si tu veux faire une interface textuelle (en mode terminal, par
exemple une console VT100), il te faut utiliser curses (ou ncurses, ou
slang). Le principe est de faire fonctionner l'interface utilisateur
avec des dessins à base de lettres (largeur fixe, donc ; même si tu peux
éventuellement utiliser des caractères étendus pour faire des traits
horizontaux et verticaux, des croisements, des clignotements ou des
effets de variation d'intensité lumineuse). Pour cela, la bibliothèque
utilisée maintient en mémoire centrale une image de ce qui doit
apparaître à l'écran, et le transmet sur commande (prévois une commande
de rafraîchissement, traditionnellement Control-L ou Control-R).

  Dans ce cadre, demander la couleur d'un pixel n'a pas de sens, puisque
tu ne manipules pas de pixels. Et, quoique tu demandes, tu n'auras accès
qu'à la représentation en mémoire centrale de ce qui doit être dessiné.

  Si tu veux faire du graphique non textuel, tu as deux voies : vgalib
ou X11. Le premier est spécifique PC (Linux ?) et suppose que les
périphériques sont déirectement accessibles : le fonctionnement sera
donc proche de ce que tu pourrais faire avec DOS ; mais en même temps en
aura les limites, en termes de portabilité.

  Avec X11, tu as un système d'interface utilisateur réseau : le fait
que chez toi, l'écran et le clavier sont branchés sur l'arrière du CPU
n'est plus important : cela fonctionnera aussi bien (quoique plus
lentement :-) si l'écran et le clavier sont derrière ma machine à moi,
malgré les ~5km qui nous séparent à vol d'oiseau.

  Évidemment cela impose des contraintes : tu ne peux pas accéder aux
pixels de mon écran, car cela prendrait trop de temps.

  Donc le principe est le même que pour l'interface textuelle (puisque
les contraintes sont les mêmes) : si tu veux savoir quelle est la
couleur d'un pixel sur mon écran, il faut te construire une
représentation en mémoire centrale de ce que tu veux afficher sur
celui-ci.

  Mais tout n'est pas encore dit. X11 est juste le protocole réseau
d'affichage et d'acquisition du clavier et de la souris. Tu peux
contrôler ce qui se passe, mais c'est franchement primitif (et
compliqué, au vu de la diversité de périphériques existants).

  Pour faciliter les choses, il a été créé des couches par dessus X11,
qui offrent la possibilité de faire des interactions utilisateur
standardisées : ce sont les boîtes à outils (« toolkits ») et les
ensembles d'élements d'interface utilisateur qui vont avec (boutons,
menus, etc). Mais il est important de comprendre que ces choses sont
gérées du côté CPU, et non du côté du serveur (écran + clavier +
souris).

  Ces ensembles sont nommés Athéna (libre ; toolkit Xt ; de base avec
X11), Motif (commercial <URL:http://www.opengroup.org/>, toolkit Xt ; le
plus utilisé dans les UNIX commerciaux), Qt (statut inconnu de moi ; à
la base de KDE), GTk (statut libre ; à la base de GNOME), Tk (statut
libre <URL://www.scriptics.com>; portable vers Microsoft Windows et
MacOs ; extrèmement puissant et simple d'emploi), et une foultitude
d'autres.

-- 
Marc Thirion              | Toulouse, France
Un Travail pour Chacun    : http://www.multimania.com/untravailchacun/
Marc.Thirion@ISOscope.com : http://www.ISOscope.com/Pérennité des logiciels et des systèmes



---------------------------------------------------------------------
Aide sur la liste: <URL:mailto:linux-31-help@savage.iut-blagnac.fr>Le CULTe sur le web: <URL:http://www.CULTe.org/>