1 votes

Comment fonctionne le système de fenêtrage sous MacOS ?

Je suis vraiment intéressé par l'infographie et j'aimerais savoir comment les systèmes de fenêtrage et d'infographie fonctionnent sous MacOS. J'ai commencé à apprendre comment créer une fenêtre en objective-c mais je me suis dit que ça n'expliquait pas ce qu'objective-c "demande" au matériel exactement. J'ai donc lu sur X11 mais j'ai dû installer un autre programme 'XQuartz'.

Avez-vous des suggestions pour apprendre à créer une fenêtre à partir de zéro sans utiliser de framework ou de bibliothèque sur MacOS, si c'est même possible ? Et si ce n'est pas possible sur MacOS, savez-vous ce qui rend la chose impossible (ou compliquée) sur MacOS ?

1voto

Tom Harrington Points 2112

Les Macs ont leur propre système de fenêtrage appelé AppKit qui n'est pas basé sur X11. Vous pouvez certainement installer X11 et l'utiliser, mais ce n'est pas ainsi que fonctionnent la plupart des applications Mac. La création d'une fenêtre à partir de rien, sans frameworks, va demander un certain travail, et est peut-être mieux adaptée pour Stack Overflow . Mais même dans ce cas, il s'agit d'un besoin si rare que vous aurez peut-être du mal à obtenir une réponse.

Si vous voulez entrer dans les détails de bas niveau pour faire fonctionner les choses, des ressources existent, mais vous pouvez sans doute chercher sur Google aussi bien que moi. Un bon point de départ pourrait être le Nouveau livre sur OSX site.

Un exemple simple avec un code minimal pourrait ressembler à ceci :

import Foundation
import AppKit

let aWindow = NSWindow(
    contentRect: NSMakeRect(0, 0, 400, 210), 
    styleMask: [.titled, .closable], 
    backing: .buffered, 
    defer: false)
aWindow.makeKeyAndOrderFront(nil)

RunLoop.current.run()

0voto

benwiggy Points 21125

Qu'est-ce qu'objective-c "demande" au matériel exactement ?

Les développeurs utilisent les API de MacOS pour demander au système d'exploitation d'effectuer des tâches courantes, comme la création d'une fenêtre, le déplacement d'une fenêtre, le redimensionnement d'une fenêtre. Cela évite aux développeurs de devoir coder au niveau matériel, ou de réécrire sans cesse du code pour écrire Windows. Ce qui se passe "en dessous" est largement transparent.

Apple a publié certaines parties de l'OS comme Source ouverte mais je ne pense pas que Core Graphics en fasse partie.

La programmation est une série d'abstractions. En fin de compte, l'ordinateur doit tracer des couleurs pour chaque pixel de l'écran. Imaginez donc un tableau qui décrit la valeur de la couleur pour chaque pixel de l'écran. Imaginez maintenant un moyen de regrouper les cellules de ce tableau sous forme de rectangles, cercles, lignes et autres formes. Puis, placez NSWindow tout en haut.

X11 a été créé comme un "frontal" commun à une variété de matériels différents sous Unix. Comme c'est le cas pour les API de MacOS, il ne permet pas vraiment de savoir ce qui se passe "en dessous". Si vous souhaitez rechercher des cadres de pilotes vidéo ou une programmation matérielle de bas niveau, vous trouverez des ressources à cet effet.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X