L'interface graphique d'Apple
Résumé : L'interface graphique du Mac utilise utilise une collection d'objets graphiques organisée en couches successives de frameworks.
Depuis la sortie du Lisa (1983) une interface graphique est indispensable à un système informatique ; l'interface graphique ne se contente pas d'afficher des choses sur un écran graphique ; elle doit aussi gérer toutes les réactions de l'utilisateur : frappes au clavier, déplacements et clics de souris, choix d'options et clic de boutons sur l'écran. Ces contraintes ont entraîné une profonde modification des techniques de développement, la programmation par événements. L'ordinateur passe son temps à surveiller les périphériques (écran, souris, clavier), et stocke en temps réel les interventions de l'utilisateur dans une queue d'événements. Il utilise ensuite cette queue d'événements pour exécuter les opérations qui ont été demandées. L'utilisateur doit avoir l'impression que ces choses là sont simultanées.
La complexité entraînée par l'interface utilisateur graphique a absorbé depuis 25 ans la majeure partie des progrès en puissance des micro-processeurs. Grâce à ces progrès, les choses sont devenues plus fluides, les images plus belles, mais fondamentalement, cela n'a pas beaucoup changé : le travail repose sur un ensemble de couches logicielles superposées, qui communiquent entre elles : à la base, les couches qui gèrent le matériel, et au sommet, les couches qui intéressent les applications, et l'utilisateur.
Apple a cependant progressivement raffiné les choses :
A la base, deux technologies du domaine public :
• OpenGL (Graphics Library) est une bibliothèque de fonctions graphiques 3D, développée par Silicon Graphics.
• OpenCL (Computing Language) a été proposé par Apple pour mieux utiliser les CPU multicœurs et les GPUs. C'est un ensemble d'APIs utilisant le langage C.
Au niveau intermédiaire se trouve une collection de frameworks pour le dessin (Core Graphics), le traitement des images (Core Image), l'animation de celles-ci (Core Animation) et la Vidéo (Core Video) ; Quartz Composer y ajoute la composition des couleurs.
Au niveau supérieur, tout repose sur l'AppKit : un ensemble de frameworks qui définissent l'interface utilisateur, la gestion des fontes et des couleurs, certains services du système (impression, parole, aide, presse-papier), et finalement les graphiques (voir à gauche) ; des frameworks spécialisés (imageKit, PDFKit, WebKit) s'y ajoutent. L'essentiel est constitué par les APIs de l'interface utilisateur, qui sont représentées ci-dessous.
Si vous y regardez bien, vous pourrez découvrir dans ce tableau tout ce qui fait votre quotidien sur le Mac : les fenêtres (NS Window), les menus (NSMenu), les boutons à cliquer (NSButton), des morceaux de texte (NSTextView), mais aussi plein d'autres choses plus complexes. Tous ces éléments représentent des objets, le plus souvent graphiques, dans un environnement de Programmation Orientée Objet ; chaque objet se caractérise par son état (un ensemble d'attributs), et son comportement (ce qu'il peut comprendre et ce qu'il sait faire) ; c'est au programmeur de les connaître et de les utiliser à bon escient. Le préfixe NS de tous ces objets est un héritage de NeXTSTEP.
Source des images de cette page : documentation Apple.