This example loads an image using QuickTime. It will import a large number of image types as supported by QuickTime. This example is shown using a .pct (PICT image).
//-----------------------------------------------------------------------
// Jim Wrenholt, Nordic Software, Inc.
//-----------------------------------------------------------------------
// create a new project
// double click the main.nib to open interface builder
// drag the HIImageView to your window and size it.
// in the ImageViewInspector/Control set the
// signature = mVue
// id = 130
// save & quit interface builder
// place your background image in your project folder
// drag the image to the resources folder of your xCode project
// this uses QuickTime so you need to add the QuickTime.framework to your project.
#include <Carbon/Carbon.h>
#include <QuickTime/QuickTime.h>
#define kMyHIViewSignature 'mVue'
#define kMyHIViewFieldID 130
//-----------------------------------------------------------------------
CGImageRef LoadImageQT( CFStringRef inName )
{
CGImageRef imageRef = NULL;
CFBundleRef appBundle = CFBundleGetMainBundle();
if ( appBundle )
{
OSErr err;
GraphicsImportComponent gi;
Handle dataRef;
OSType dataRefType;
CFURLRef url = CFBundleCopyResourceURL( appBundle, inName, NULL, NULL );
err = QTNewDataReferenceFromCFURL(url, 0, &dataRef, &dataRefType);
CFRelease(url);
if (NULL != dataRef)
{
err = GetGraphicsImporterForDataRef(dataRef, dataRefType, &gi);
err = GraphicsImportCreateCGImage(gi, &imageRef, 0);
DisposeHandle(dataRef);
CloseComponent(gi);
}
}
return imageRef;
}
//-----------------------------------------------------------------------
void AttachImage(WindowRef window)
{
static const HIViewID myHIViewID = {kMyHIViewSignature, kMyHIViewFieldID};
OSStatus err;
HIViewRef myHIView;
HIViewFindByID(HIViewGetRoot(window), myHIViewID, &myHIView);
CGImageRef splashImage = LoadImageQT(CFSTR("MySplash.pct"));
err = HIImageViewSetImage(myHIView, splashImage);
CGImageRelease(splashImage);
}
//-----------------------------------------------------------------------
int main(int argc, char* argv[])
{
IBNibRef nibRef;
WindowRef window;
OSStatus err;
err = CreateNibReference(CFSTR("main"), &nibRef);
require_noerr( err, CantGetNibRef );
err = SetMenuBarFromNib(nibRef, CFSTR("MenuBar"));
require_noerr( err, CantSetMenuBar );
err = CreateWindowFromNib(nibRef, CFSTR("MainWindow"), &window);
require_noerr( err, CantCreateWindow );
DisposeNibReference(nibRef);
AttachImage(window);
ShowWindow( window );
RunApplicationEventLoop();
CantCreateWindow:
CantSetMenuBar:
CantGetNibRef:
return err;
}