Я нахожусь в незавидном положении работы с огромной установленной базой кода для приложения, которое должно работать как на Windows, так и на OSX. Раздел, в котором я сейчас работаю, содержит некоторый унаследованный код для инструмента выбора пипетки/цвета. К сожалению, у меня нет большого опыта разработки для Mac, поэтому я надеюсь, что кто-то может пролить свет на мою проблему.Как обеспечить, чтобы инструмент eyedropper возвращал постоянное значение, несмотря на разные профили отображения?
Цветовая палитра немного неправильна в некоторых случаях, и я проследил проблему с разницей между ожидаемым CGColorSpaceRef, который задается вызовом CGColorSpaceCreateWithName (kCGColorSpaceGenericRGB) и фактическим цветовым пространством, заданным основным профилем отображения. Настройка профиля отображения ОС на общий RGB устраняет несоответствие, но я хочу, чтобы пипетка получала согласованный цвет независимо от того, что представляет собой профиль отображения.
Извлечение профиля отображения основного монитора и использование этого вместо общего RGB гарантируют, что инструмент eyedropper получит согласованное значение? Я нашел функцию CGColorSpaceCreateWithPlatformColorSpace (...), но, согласно документации, она устарела с OSX 10.6. Каким будет нынешний способ справиться с этим в Quartz?
Я чувствую себя немного ограниченным, так как у меня нет ни полномочий, ни опыта, чтобы внести существенные изменения, такие как добавление зависимостей от дополнительных фреймворков.
Похоже, существующий вызов к CGColorSpaceCreateWithName (...) может быть проблема. Я заменил его на вызов CGColorSpaceCreateDeviceRGB(), и он, похоже, получает цветовое пространство, соответствующее профилю отображения, и не вызывает неправильных цветов eyedropper. Там могут быть риски, связанные с этим изменением, но если есть, я не знаю о них. – Ben