> On 25 Jun 2017, at 7:39 pm, Gerriet M. Denkmann <gerri...@icloud.com> wrote:
> 
> Which of these two lines is preferable:
>       NSString *colorSpaceName = useColour ? NSDeviceRGBColorSpace : 
> NSDeviceWhiteColorSpace; 
>       NSString *colorSpaceName = useColour ? NSCalibratedRGBColorSpace : 
> NSCalibratedWhiteColorSpace;
> ?

Well, it depends on what you want to do with the image. If it’s content that 
gets displayed or printed, then calibrated ensures that it will look the same 
across a range of devices.

>> You may want to save and restore the current context around this, just to be 
>> sure your method isn’t going to have the unwanted side effect of changing 
>> the current context. It’s likely OK, but better safe than sorry.
> 
> I just did. Turns out that the oldContext seems to be nil. But as you rightly 
> said: “better safe than sorry”.

You just needs to use +[NSGraphicsContext saveGraphicsState]; and 
+[NSGraphicsContext restoreGraphicsState]; if you know currentContext is nil, 
it suggests you aren’t doing it that way.

>> 
>> Just use NSZeroRect for destRect. This is interpreted to mean “the size of 
>> the destination image”, which is already <subRect>, rounded up. If you set 
>> the size here and it’s not a whole number for some reason, there is the 
>> potential for the very edge pixels not to get set, leaving a visible edge at 
>> the right and bottom of the result.
> 
> I tried this. But got a rather small image (just 88 bytes - usually 337 
> bytes) and the resulting image looks rather empty. It has the right size, but 
> not a single pixel is set - all are transparent.

OK, that’s weird. I’m not sure why that’s happening.

> But heading your warning about non-whole numbers, I added at the very start:
> 
> - (NSData *)subImagePngDataWithRect: (NSRect)suxRect  useColour: 
> (BOOL)useColour
> {
>       NSRect subRect = NSIntegralRect(suxRect);
>       …
> }

Good idea.

—G.
_______________________________________________

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:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

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

Reply via email to