On Sat, May 28, 2011 at 10:50 PM, Roland King <r...@rols.org> wrote:
> You can use CGColorGetComponents on a CGColorRef to get the values of 
> whatever colorspace the CGColorRef is in and you can create new CGColorRefs 
> with those values.
>
> I don't see a way to convert from one colorspace to another however a quick 
> test on one UIColor constructed with HSV values shows its contained 
> CGColorRef to have an RGB colorspace which you could get the RGB values from. 
> Whether you can rely on that I don't know and haven't found any documentation 
> to back it up.

The only real way to convert between color spaces is to render the
color in a bitmap context that has the desired destination color
space.

Unfortunately there are very few color spaces available on iOS. The
color space name constants are not available, and there are no
device-independent color spaces.

The correct way to do what Graham is doing would require a
perceptually linear color space like Lab. Otherwise shifting hue from
blue to green, for example, would greatly increase the perceived
intensity of the color. Unfortunately, there's no predefined Lab color
space available; you have to provide tristimulus values yourself for
the black and white points.

There is a fair bit of code in OmniQuartz.framework's OQColor.h [1],
but sadly we haven't removed all the stuff that shouldn't be used. To
convert from one color space to another, you would want to use
OQCreateCompositeColorFromColors, which draws the provided array of
CGColorRefs into a 1-pixel CGBitmapContext in the desired color space.
For a simple colorspace conversion, just pass a 1-element array.

[1] 
https://github.com/omnigroup/OmniGroup/blob/master/Frameworks/OmniQuartz/OQColor.h

--Kyle Sluder
_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to