Как убедиться, что инструмент пипетка возвращает постоянное значение, несмотря на разные профили отображения?

Я нахожусь в незавидном положении работы с огромной установленной кодовой базой для приложения, которое должно работать как на Windows, так и на OSX. Раздел, над которым я сейчас работаю, содержит унаследованный код для инструмента «Пипетка / средство выбора цвета». К сожалению, у меня нет большого опыта разработки для Mac, поэтому я надеюсь, что кто-то сможет пролить свет на мою проблему.

В некоторых случаях цвета пипетки немного неправильные, и я проследил проблему до разницы между ожидаемым CGColorSpaceRef, который устанавливается вызовом CGColorSpaceCreateWithName (kCGColorSpaceGenericRGB), и фактическим цветовым пространством, установленным основным профилем отображения. Установка в качестве общего профиля RGB профиля дисплея устраняет расхождение, но я хочу, чтобы пипетка получала постоянный цвет независимо от профиля дисплея.

Будет ли получение профиля отображения основного монитора и использование его вместо обычного RGB гарантирующим, что инструмент пипетки получает постоянное значение? Я обнаружил функцию CGColorSpaceCreateWithPlatformColorSpace (…), но согласно документации она устарела начиная с OSX 10.6. Каким будет текущий способ справиться с этим в Кварце?

Я чувствую себя немного стесненным в этом, поскольку у меня нет ни полномочий, ни опыта для внесения серьезных изменений, таких как добавление зависимостей от дополнительных структур.

0

Решение

NSColor имеет эту функцию:

-(void)getRed:(CGFloat *)red green:(CGFloat *)green blue:(CGFloat *)blue alpha:(CGFloat *)alpha

Который будет возвращать компоненты RGB, преобразованные из зависящих от устройства цветовых пространств.

Пример взят из Radiant Color Picker

CGFloat red, green, blue, a;
NSColor *colorAsRGB = [_color colorUsingColorSpaceName:NSDeviceRGBColorSpace];
[colorAsRGB getRed:&red green:&green blue:&blue alpha:&a];

Соответствующие ссылки:

NSColor

Работа с цветовыми пространствами

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]