Если я пишу код рисования в Core Graphics в Mac OS X или iPhone OS, я могу установить активный цвет заливки на красный, вызвав:
CGContextSetRGBFillColor(context, 1.0, 0.0, 0.0, 1.0); // RGB(1,0,0)
Если я хочу 50% серого, я могу позвонить:
CGContextSetRGBFillColor(context, 0.5, 0.5, 0.5, 1.0); // RGB(0.5,0.5,0.5)
Но для оттенков серого заманчиво сделать более короткую линию и позвонить:
CGContextSetGrayFillColor(context, 0.5, 1.0);
Однако эта функция НЕ просто вызывает метод RGB со значением интенсивности, скопированным три раза; вместо этого он меняет цветовое пространство контекста с DeviceRGB на DeviceGray. Следующий вызов метода RGB переключит его обратно.
Мне интересно знать:
- Какой штраф за переключение цветовых пространств?
- Существует ли штраф за рисование, если цветовое пространство вашего контекста не соответствует цветовому пространству вашего устройства? (т. е. рисование в DeviceGray по сравнению с DeviceRGB)
Я спрашиваю из технического любопытства, а не из-за желания преждевременно оптимизировать, поэтому, пожалуйста, сведите к минимуму ваши предупреждения, пожалуйста.