home *** CD-ROM | disk | FTP | other *** search
- /*
- 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;
- }
-
-