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.
Sample Components/PreviewPICS.c
/* |
File: PreviewPICS.r |
Written by: Peter Hoddie |
Copyright: © 1992 by Apple Computer, Inc., all rights reserved. |
*/ |
#include <Aliases.h> |
#include <Errors.h> |
#include <QuickDraw.h> |
#include <Resources.h> |
#include <Components.h> |
#include <QuickTimeComponents.h> |
typedef struct { |
ComponentInstance self; |
} PICSPreviewRecord, **PICSPreviewGlobals; |
pascal ComponentResult PICSPreviewDispatch( ComponentParameters *params, Handle store ); |
pascal ComponentResult PICSPreviewOpen(PICSPreviewGlobals store, ComponentInstance self); |
pascal ComponentResult PICSPreviewClose(PICSPreviewGlobals store, ComponentInstance self); |
pascal ComponentResult PICSPreviewCanDo( PICSPreviewGlobals store, short ftnNumber ); |
pascal ComponentResult PICSPreviewVersion( PICSPreviewGlobals store ); |
pascal ComponentResult PICSPreviewShowData(PICSPreviewGlobals store, OSType dataType, |
Handle data, const Rect *inHere); |
// entry point for all Component Manager requests |
pascal ComponentResult PICSPreviewDispatch( ComponentParameters *params, Handle store ) |
{ |
OSErr err = badComponentSelector; |
ComponentFunction componentProc = 0; |
switch (params->what) { |
case kComponentOpenSelect: componentProc = PICSPreviewOpen; break; |
case kComponentCloseSelect: componentProc = PICSPreviewClose; break; |
case kComponentCanDoSelect: componentProc = PICSPreviewCanDo; break; |
case kComponentVersionSelect: componentProc = PICSPreviewVersion; break; |
case kPreviewShowDataSelector: componentProc = PICSPreviewShowData; break; |
} |
if (componentProc) |
err = CallComponentFunctionWithStorage(store, params, componentProc); |
return err; |
} |
pascal ComponentResult PICSPreviewCanDo( PICSPreviewGlobals store, short ftnNumber ) |
{ |
switch (ftnNumber) { |
case kComponentOpenSelect: |
case kComponentCloseSelect: |
case kComponentCanDoSelect: |
case kComponentVersionSelect: |
case kPreviewShowDataSelector: |
return true; |
default: |
return false; |
} |
} |
pascal ComponentResult PICSPreviewVersion( PICSPreviewGlobals store ) |
{ |
return 0x00010001; |
} |
pascal ComponentResult PICSPreviewOpen(PICSPreviewGlobals store, ComponentInstance self) |
{ |
store = (PICSPreviewGlobals)NewHandle(sizeof(PICSPreviewRecord)); |
if (!store) return MemError(); |
SetComponentInstanceStorage(self, (Handle)store); |
(**store).self = self; |
return noErr; |
} |
pascal ComponentResult PICSPreviewClose(PICSPreviewGlobals store, ComponentInstance self) |
{ |
if (store) DisposeHandle((Handle)store); |
return noErr; |
} |
pascal ComponentResult PICSPreviewShowData(PICSPreviewGlobals store, OSType dataType, |
Handle data, const Rect *inHere) |
{ |
OSErr err = noErr; |
short resRef = 0, saveRes = CurResFile(); |
FSSpec theFile; |
Boolean whoCares; |
Handle thePict = nil; |
ComponentInstance ci; |
// because our Component has the pnotComponentNeedsNoCache flag set, we should |
// only be called to display files. |
if (dataType != rAliasType) |
return paramErr; |
// open up the file to preview |
if (err = ResolveAlias(nil, (AliasHandle)data, &theFile, &whoCares)) goto bail; |
resRef = FSpOpenResFile(&theFile, fsRdPerm); |
if (err = ResError()) goto bail; |
// get the first PICT |
UseResFile(resRef); |
thePict = Get1IndResource('PICT', 1); |
if (!thePict) goto bail; |
// use the PICT Preview Component to display the preview |
if (ci = OpenDefaultComponent(ShowFilePreviewComponentType, 'PICT')) { |
PreviewShowData(ci, 'PICT', thePict, inHere); |
CloseComponent(ci); |
} |
bail: |
if (resRef) CloseResFile(resRef); |
UseResFile(saveRes); |
return err; |
} |
Copyright © 2003 Apple Computer, Inc. All Rights Reserved. Terms of Use | Privacy Policy | Updated: 2003-01-14