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/SGPictPanel.c
/* |
File: SGPictPanel.c |
Written by: Peter Hoddie |
Copyright: © 1992 by Apple Computer, Inc., all rights reserved. |
*/ |
#include <Dialogs.h> |
#include <Errors.h> |
#include <Memory.h> |
#include <QuickDraw.h> |
#include <Resources.h> |
#include <QuickTimeComponents.h> |
#define sgcPictShowTicksType 'TICK' |
typedef struct { |
ComponentInstance self; |
ControlHandle ch; |
} PictPanelGlobalsRecord, *PictPanelGlobals; |
pascal ComponentResult PictPanelDispatcher(ComponentParameters *params, Handle storage); |
pascal ComponentResult PictPanelOpen (PictPanelGlobals store, ComponentInstance self); |
pascal ComponentResult PictPanelClose (PictPanelGlobals store, ComponentInstance self); |
pascal ComponentResult PictPanelCanDo (PictPanelGlobals store, short ftnNumber ); |
pascal ComponentResult PictPanelVersion (PictPanelGlobals store); |
pascal ComponentResult PictPanelPanelGetDitl (PictPanelGlobals store, Handle *ditl); |
pascal ComponentResult PictPanelPanelInstall (PictPanelGlobals store, SGChannel c, DialogPtr d, short itemOffset); |
pascal ComponentResult PictPanelPanelItem (PictPanelGlobals store, SGChannel c, DialogPtr d, short itemOffset, short itemNum); |
pascal ComponentResult PictPanelPanelRemove (PictPanelGlobals store, SGChannel c, DialogPtr d, short itemOffset); |
pascal ComponentResult PictPanelPanelGetSettings (PictPanelGlobals store, SGChannel c, UserData *ud, long flags); |
pascal ComponentResult PictPanelPanelSetSettings (PictPanelGlobals store, SGChannel c, UserData ud, long flags); |
// only for PICT channels |
pascal ComponentResult SGSetShowTickCount (SGChannel c, Boolean show) = {0x2f3c,2,0x100,0x7000,0xA82A}; |
pascal ComponentResult SGGetShowTickCount (SGChannel c, Boolean *show) = {0x2f3c,4,0x101,0x7000,0xA82A}; |
pascal ComponentResult PictPanelDispatcher(ComponentParameters *params, Handle storage) |
{ |
OSErr err = badComponentSelector; |
ComponentFunction componentProc = 0; |
switch (params->what) { |
case kComponentOpenSelect: componentProc = PictPanelOpen; break; |
case kComponentCloseSelect: componentProc = PictPanelClose; break; |
case kComponentCanDoSelect: componentProc = PictPanelCanDo; break; |
case kComponentVersionSelect: componentProc = PictPanelVersion; break; |
case kSGCPanelGetDitlSelect: componentProc = PictPanelPanelGetDitl; break; |
case kSGCPanelInstallSelect: componentProc = PictPanelPanelInstall; break; |
case kSGCPanelItemSelect: componentProc = PictPanelPanelItem; break; |
case kSGCPanelRemoveSelect: componentProc = PictPanelPanelRemove; break; |
case kSGCPanelGetSettingsSelect: componentProc = PictPanelPanelGetSettings; break; |
case kSGCPanelSetSettingsSelect: componentProc = PictPanelPanelSetSettings; break; |
} |
if (componentProc) |
err = CallComponentFunctionWithStorage(storage, params, componentProc); |
return err; |
} |
pascal ComponentResult PictPanelCanDo (PictPanelGlobals store, short ftnNumber ) |
{ |
switch (ftnNumber) { |
case kComponentOpenSelect: |
case kComponentCloseSelect: |
case kComponentCanDoSelect: |
case kComponentVersionSelect: |
case kSGCPanelGetDitlSelect: |
case kSGCPanelInstallSelect: |
case kSGCPanelItemSelect: |
case kSGCPanelRemoveSelect: |
case kSGCPanelGetSettingsSelect: |
case kSGCPanelSetSettingsSelect: |
return true; |
default: |
return false; |
} |
} |
pascal ComponentResult PictPanelVersion (PictPanelGlobals store) |
{ |
return 0x00020001; |
} |
pascal ComponentResult PictPanelOpen (PictPanelGlobals store, ComponentInstance self) |
{ |
OSErr err; |
store = (PictPanelGlobals)NewPtrClear(sizeof(PictPanelGlobalsRecord)); |
if (err = MemError()) goto bail; |
store->self = self; |
SetComponentInstanceStorage(self, (Handle)store); |
bail: |
return err; |
} |
pascal ComponentResult PictPanelClose (PictPanelGlobals store, ComponentInstance self) |
{ |
if (store) DisposePtr((Ptr)store); |
return noErr; |
} |
pascal ComponentResult PictPanelPanelGetDitl (PictPanelGlobals store, Handle *ditl) |
{ |
*ditl = GetResource('DITL', 7001); |
if (!*ditl) return resNotFound; |
DetachResource(*ditl); |
return noErr; |
} |
pascal ComponentResult PictPanelPanelInstall (PictPanelGlobals store, SGChannel c, DialogPtr d, short itemOffset) |
{ |
Rect r; |
short kind; |
Handle h; |
Boolean ticksShowing; |
GetDItem(d, 1 + itemOffset, &kind, &h, &r); |
store->ch = (ControlHandle)h; |
SGGetShowTickCount(c, &ticksShowing); |
SetCtlValue(store->ch, ticksShowing); |
return noErr; |
} |
pascal ComponentResult PictPanelPanelItem (PictPanelGlobals store, SGChannel c, DialogPtr d, short itemOffset, short itemNum) |
{ |
if ((itemNum - itemOffset) == 1) { |
Boolean showing = GetCtlValue(store->ch); |
SetCtlValue(store->ch, !showing); |
SGSetShowTickCount(c, !showing); |
} |
return noErr; |
} |
pascal ComponentResult PictPanelPanelRemove (PictPanelGlobals store, SGChannel c, DialogPtr d, short itemOffset) |
{ |
store->ch = nil; |
return noErr; |
} |
pascal ComponentResult PictPanelPanelGetSettings (PictPanelGlobals store, SGChannel c, UserData *result, long flags) |
{ |
OSErr err; |
UserData ud; |
Boolean ticksShowing; |
if (err = NewUserData(&ud)) goto bail; |
if (err = SGGetShowTickCount(c, &ticksShowing)) goto bail; |
if (err = SetUserDataItem(ud, &ticksShowing, sizeof(ticksShowing), sgcPictShowTicksType, 1)) goto bail; |
bail: |
if (err) { |
DisposeUserData(ud); |
ud = 0; |
} |
*result = ud; |
return err; |
} |
pascal ComponentResult PictPanelPanelSetSettings (PictPanelGlobals store, SGChannel c, UserData ud, long flags) |
{ |
Boolean ticksShowing; |
if (GetUserDataItem(ud, &ticksShowing, sizeof(ticksShowing), sgcPictShowTicksType, 1) == noErr) |
SGSetShowTickCount(c, ticksShowing); |
return noErr; |
} |
Copyright © 2003 Apple Computer, Inc. All Rights Reserved. Terms of Use | Privacy Policy | Updated: 2003-01-14