Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

IndigoFuzzy

macrumors newbie
Original poster
I'm currently working on a visualizer plugin for iTunes.

I have most of it working, but i need a way to draw a transparent black rectangle. (For a nice fade-out effect)

I haven't been able to find what I need in any of the API references - That is, I'm not sure if I should have 2 large bitmaps (one all black, one light grey as an alpha channel) and call CopyMask, or wether I should do something with CoreGraphics (in which case I don't know where to start, I haven't used any of OSX's "Core" APIs yet.

Any help would be greatly appreciated.
 

IndigoFuzzy

macrumors newbie
Original poster
Some good and bad news:
1, i figured out how to use Quartz to do the fading, but it's slowing things down horribly.

Here's the code I used:

Code:
GrafPtr			oldPort;
		GDHandle		oldDevice;
		Rect			srcRect;
		RGBColor		foreColor;
		short			j;
		long			vw, vh, hw, hh, hs, hd;
		CGContextRef	cgc;
		CGRect			fadeRect;
		CGColorRef			chroma;
		OSErr			err;
		float			fadeColor[4];
						
		srcRect		= *destRect;

		GetGWorld(&oldPort, &oldDevice);
		SetGWorld(destPort, nil);
		
		
		vw = srcRect.right - srcRect.left;
		vh = srcRect.bottom - srcRect.top;
		hw = vw/2;
		hh = vh/2;
		hs = hw+hh;
		hd = hw-hh;
		
		err = CreateCGContextForPort(destPort,&cgc);
		if (err == noErr)
		{
			fadeColor[0] = 0.0;
			fadeColor[1] = 0.0;
			fadeColor[2] = 0.0;
			fadeColor[3] = 0.03;
			
			//CGContextSetBlendMode(cgc,kCGBlendModeMultiply);
			chroma = CGColorCreate(CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB),fadeColor);
			CGContextSetFillColorWithColor(cgc,chroma);
			fadeRect = CGRectMake(0,0,vw,vh);
			CGContextFillRect(cgc,fadeRect);
			CGContextFlush(cgc);
			CGContextRelease(cgc);
		}
		else
		{
			foreColor.red = foreColor.green = foreColor.blue = 0;
			PaintRect(destRect);
		}

any reason why this would cause a slowdown, and any possible fixes?

And I suppose I should ask: is calling CoreGraphics here before doing the rest of my drawing with QuickDraw a bad idea?
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.