> I have cause to display something like an application badge on
> the docktile of my app, but [the regular one won't do] ...

Solution (I think ...):

I ended up finding a basically sane way to do this -- just
one method, and I did not have to subclass NSView -- but
with a large hack for one feature:

I was using a pre-existing image for the docktile.  That was
what I wanted to put the badge on.

I created an offscreen window, added an NSImageView the same
size as my image to its view hierarchy, then added an instance
of NSText as a subview thereof, at an appropriate location.
By loading my image into the image view and then drawing the
text with a suitable background color, I was able to get a
decent "badge".

Before doing the drawing, I saved the graphics context and
set up a new one with the view, and locked focus on the view;
I unlocked and restored later.  That setup allowed me to use
NSBitmapImageRep:initWithFocusedViewRect: to grab the bits
as drawn.  I loaded the bitmap into a new instance of NSImage,
which I could then assign to my docktile.

Now the hack:  My original image had some transparent areas,
and I could not figure out a reasonable technique for capturing
the bitmap drawn by the above procedure without also getting the
bits for whatever background lay *behind* the transparent areas
of my original image.  I don't do a lot of graphics work, so if
I am overlooking something obvious I will be very grateful if
someone will tell me.

My hack took advantage of the fact that my badged image did
not have any of a certain color.  I ended up setting the window
background color to that color, then going through the captured
bitmap one pixel at a time, changing all pixels that were
approximately that color to transparent.  (Actually, I had to
make a whole new bitmap and copy or make-transparent; the
captured bitmap did not have an alpha plane.)  That did work,
but it is not a very graceful technique or a very general one.

--  Jay Reynolds Freeman
---------------------
jay_reynolds_free...@mac.com
http://web.mac.com/jay_reynolds_freeman (personal web site)

_______________________________________________

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