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.
QTMultiImage.c
////////// |
// |
// File: QTMultiImage.c |
// |
// Contains: Code for displaying multiple images contained in a single image file. |
// |
// Written by: Tim Monroe |
// |
// Copyright: © 1998 by Apple Computer, Inc., all rights reserved. |
// |
// Change History (most recent first): |
// |
// <3> 03/21/00 rtm changed QTMulti_ShowAllImagesInFile to use FSSpec parameter |
// <2> 10/30/98 rtm cleaned up code; verified on both Mac and Windows |
// <1> 09/30/98 rtm first file |
// |
// This file contains code that illustrates how to determine whether an image file contains |
// more than one image and how to display any of those images. This is useful for working with |
// FlashPix files (which contain multiple resolutions of an image) and PhotoShop files (which |
// store layers as separate images), among others. |
// |
// The key new functions to use are GraphicsImportGetImageCount and GraphicsImportSetImageIndex. |
// The rest of the image-handling is done using graphics importer routines that have previously |
// been available. |
// |
// This file defines a single function that prompts the user for an image file, determines |
// how many images are contained in that file, and then displays each such image for a short |
// period of time (2 seconds). |
// |
////////// |
#include "QTMultiImage.h" |
WindowPtr gImageWindow = NULL; // the window we display the image in |
GraphicsImportComponent gImporter = NULL; |
////////// |
// |
// QTMulti_ShowAllImagesInFile |
// Display all the images contained in the specified image file. |
// |
////////// |
OSErr QTMulti_ShowAllImagesInFile (FSSpecPtr theFSSpecPtr) |
{ |
Rect myRect; |
unsigned long myCount, myIndex, myIgnore; |
OSErr myErr = noErr; |
if (theFSSpecPtr == NULL) |
goto bail; |
////////// |
// |
// get a graphics importer for the image file and determine how many images are contained in it |
// |
////////// |
myErr = GetGraphicsImporterForFile(theFSSpecPtr, &gImporter); |
if (myErr != noErr) |
goto bail; |
myErr = GraphicsImportGetImageCount(gImporter, &myCount); |
if (myErr != noErr) |
goto bail; |
////////// |
// |
// loop thru all images the image file, drawing each into a window |
// |
////////// |
for (myIndex = 1; myIndex <= myCount; myIndex++) { |
// set the image index we want to display |
myErr = GraphicsImportSetImageIndex(gImporter, myIndex); |
if (myErr != noErr) |
goto bail; |
// determine the natural size of the image |
myErr = GraphicsImportGetNaturalBounds(gImporter, &myRect); |
if (myErr != noErr) |
goto bail; |
MacOffsetRect(&myRect, 50, 50); |
// create a window to display the image in |
gImageWindow = NewCWindow(NULL, &myRect, theFSSpecPtr->name, true, movableDBoxProc, (WindowPtr)-1L, true, 0); |
if (gImageWindow == NULL) |
goto bail; |
// set the current port and draw |
GraphicsImportSetGWorld(gImporter, (CGrafPtr)gImageWindow, NULL); |
GraphicsImportDraw(gImporter); |
Delay(kImageDisplayTime, &myIgnore); |
DisposeWindow(gImageWindow); |
} |
bail: |
if (myErr != noErr) |
if (gImporter != NULL) |
CloseComponent(gImporter); |
return(myErr); |
} |
Copyright © 2003 Apple Computer, Inc. All Rights Reserved. Terms of Use | Privacy Policy | Updated: 2003-01-14