Palette logique

Une palette logique est une palette de couleurs qu’une application crée et associe à un contexte d’appareil donné. Les palettes logiques permettent aux applications de définir et d’utiliser des couleurs qui répondent à leurs besoins spécifiques. Les applications peuvent créer n’importe quel nombre de palettes logiques, en les utilisant pour des contextes d’appareil distincts ou en basculant entre elles pour un contexte d’appareil unique. Le nombre maximal de palettes qu’une application peut créer dépend des ressources du système.

Une application crée une palette logique à l’aide de la fonction CreatePalette . L’application remplit une structure LOGPALETTE , qui spécifie le nombre d’entrées et les valeurs de couleur pour chaque entrée, puis l’application transmet la structure à CreatePalette. La fonction retourne un handle de palette que l’application utilise dans toutes les opérations suivantes pour identifier la palette. Pour utiliser des couleurs dans la palette logique, l’application sélectionne la palette dans un contexte d’appareil à l’aide de la fonction SelectPalette , puis réalise la palette à l’aide de la fonction RealizePalette . Les couleurs de la palette sont disponibles dès que la palette logique est réalisée.

Une application doit limiter la taille de ses palettes logiques à juste assez d’entrées pour représenter les couleurs nécessaires. Les applications ne peuvent pas créer de palettes logiques supérieures à la taille maximale de la palette, une valeur dépendante de l’appareil. Les applications peuvent obtenir la taille maximale à l’aide de la fonction GetDeviceCaps pour récupérer la valeur SIZEPALETTE.

Bien qu’une application puisse spécifier n’importe quelle valeur de couleur pour une entrée donnée dans une palette logique, toutes les couleurs ne peuvent pas être générées par l’appareil donné. Le système ne permet pas de découvrir quelles couleurs sont prises en charge, mais l’application peut découvrir le nombre total de ces couleurs en récupérant la résolution des couleurs de l’appareil. La résolution des couleurs, spécifiée en bits de couleur par pixel, est égale à la valeur COLORRES retournée par la fonction GetDeviceCaps . Un appareil qui a une résolution de couleur de 18 a 262 144 couleurs possibles. Si une application demande une couleur qui n’est pas prise en charge, le système choisit une approximation appropriée.

Une fois qu’une palette logique est créée, une application peut modifier les couleurs de la palette à l’aide de la fonction SetPaletteEntries . Si la palette logique a été sélectionnée et réalisée, la modification de la palette n’affecte pas immédiatement les couleurs affichées. L’application doit utiliser les fonctions UnrealizeObject et RealizePalette pour mettre à jour les couleurs. Dans certains cas, l’application peut avoir besoin de désélectionner, d’annuler, de sélectionner et de réaliser la palette logique pour s’assurer que les couleurs sont mises à jour exactement comme demandé. Si une application sélectionne une palette logique dans plusieurs contextes d’appareil, les modifications apportées à la palette logique affectent tous les contextes d’appareil pour lesquels elle est sélectionnée.

Une application peut modifier le nombre d’entrées d’une palette logique à l’aide de la fonction ResizePalette . Si l’application réduit la taille, les entrées restantes sont inchangées. Si l’application étend la taille, le système définit la couleur de chaque nouvelle entrée sur noir (0, 0, 0) et l’indicateur sur zéro.

Une application peut récupérer les valeurs de couleur et d’indicateur des entrées d’une palette logique donnée à l’aide de la fonction GetPaletteEntries . Une application peut récupérer l’index de l’entrée dans une palette logique donnée qui correspond le plus à une valeur de couleur spécifiée à l’aide de la fonction GetNearestPaletteIndex .

Lorsqu’une application n’a plus besoin d’une palette logique, elle peut la supprimer à l’aide de la fonction DeleteObject . L’application doit s’assurer que la palette logique n’est plus sélectionnée dans un contexte d’appareil avant de supprimer la palette.