Retired Document
Important: This sample code may not represent best practices for current development. The project may use deprecated symbols and illustrate technologies and techniques that are no longer recommended.
Start Code/MultipleImages.c
// Graphics Importer and Exporter Samples |
// This example demonstrates how to display multiple images |
// Originally written by Sam Bushell for QuickTime "Live" '99 |
// WWDC 2000 Introduction to QuickTime |
#include "MacShell.h" |
void MultipleImage( void ) |
{ |
OSErr err = noErr; |
Handle hOpenTypeList = NewHandle(0); |
long numTypes = 0; |
FSSpec theFSSpec; |
GraphicsImportComponent importer = 0; |
Rect naturalBounds, windowBounds; |
WindowPtr window = NULL; |
unsigned long imageCount, imageIndex; |
ImageDescriptionHandle desc = NULL; |
MatrixRecord matrix; |
BuildGraphicsImporterValidFileTypes( hOpenTypeList, &numTypes ); |
HLock( hOpenTypeList ); |
err = GetOneFileWithPreview(numTypes, (OSTypePtr)*hOpenTypeList, &theFSSpec, NULL); |
DisposeHandle( hOpenTypeList ); |
if ( err ) return; |
// locate and open a graphics importer component |
err = GetGraphicsImporterForFile( &theFSSpec, &importer ); |
// get the native size of the image associated with the importer |
err = GraphicsImportGetNaturalBounds( importer, &naturalBounds ); |
windowBounds = naturalBounds; |
OffsetRect( &naturalBounds, 10, 45 ); |
window = NewCWindow( NULL, &naturalBounds, "\pMultiple Images", true, documentProc, (WindowPtr)-1, true, 0); |
// set the graphics port for drawing |
err = GraphicsImportSetGWorld( importer, GetWindowPort(window), NULL ); |
// ask the graphics importer how many images there are in this file |
// Step 1. Insert GetImageCount.clp here... |
for( imageIndex = 1; imageIndex <= imageCount; imageIndex++ ) { |
// set the index value for the image we want to draw |
// Step 2. Insert SetImageIndex.clp here... |
// each image in the file can have different dimensions, depth, etc. |
// if the image has an alpha, use StraightAlpha graphics mode to draw |
// Step 3. Insert SetGraphicsMode.clp here... |
DisposeHandle( (Handle)desc ); |
// set up the matrix |
// Step 4. Insert SetMatrix.clp here... |
SetPortWindowPort( window ); |
EraseRect( &windowBounds ); |
// draw the image |
err = GraphicsImportDraw( importer ); |
pause(); |
} |
// draw the images again but this type don't erase |
for( imageIndex = 2; imageIndex <= imageCount; imageIndex++ ) { |
err = GraphicsImportSetImageIndex( importer, imageIndex ); |
err = GraphicsImportGetImageDescription( importer, &desc ); |
if( (*desc)->depth == 32 ) |
err = GraphicsImportSetGraphicsMode( importer, graphicsModeStraightAlpha, NULL ); |
else |
err = GraphicsImportSetGraphicsMode( importer, ditherCopy, NULL ); |
DisposeHandle( (Handle)desc ); |
SetIdentityMatrix( &matrix ); |
GraphicsImportGetDefaultMatrix( importer, &matrix ); |
err = GraphicsImportSetMatrix( importer, &matrix ); |
err = GraphicsImportDraw( importer ); |
pause(); |
} |
CloseComponent( importer ); |
} |
Copyright © 2003 Apple Computer, Inc. All Rights Reserved. Terms of Use | Privacy Policy | Updated: 2003-01-14