home *** CD-ROM | disk | FTP | other *** search
- #include "PICSDialogs.h"
- #include "PICSPreferencesDialog.h"
- #include "PICSCompositeDialog.h"
-
- #include "PICS_Operations.h"
- #include "PICS_Composite.h"
- #include "PICS_Types.h"
- #include "PICS_Utils.h"
-
- #include "PICSViewer.h"
-
- #include "main.h" // For AppInBackground()
- #include "DialogUtils.h"
- #include "MovableModalDialogs.h"
- #include "Monitors.h" // For Place()
- #include "assert_mac.h"
- #include "SimpleError.h"
- #include "KeyUtils.h" // To handle key-down events
- #include "GrayDraw 3D.h"
-
- // ---------------------------------------------------------------------------
-
- static struct {
- FSSpec picsFile;
- short fileRefNum;
- short numFrames;
- short oldHelpItem;
- Rect areaToCrop;
- } sCompositeData;
-
- // ---------------------------------------------------------------------------
-
- /*
- Both arguments to SetupPICSFileComposite are optional.
-
- If no <picsFile> is provided, the routine will put up a standard
- get file dialog box.
-
- We may get a crop rect from the PICSViewer window, so we have
- to provide the <areaToCrop> argument here.
- If it is NULL, SetupPICSFileComposite will derive the
- crop rect from the PICS file itself.
- */
-
- void SetupPICSFileComposite(FSSpec *picsFile, const Rect *areaToCrop) {
- FSSpec file;
- OSErr myErr;
-
- if (picsFile == NULL) {
- // If we're passed NULL, do a StandardGetFile...
- if (!OpenPICSFile(&file)) return;
- }
- else {
- // Else we already have a file ready for us...
- file = *picsFile;
-
- // Check for correct file type. Although we specified in
- // our app res fork that we wanted all file types for
- // drag and drop ('****') we have to filter it out as
- // follows: for compositing, we don't accept PICT files.
- FInfo fileInfo;
- myErr = FSpGetFInfo(&file, &fileInfo);
- if (myErr == noErr && fileInfo.fdType == kPICTFileType) {
- SimpleError(kAlertErrID, kErrMsgID, kDontAcceptPICTFileErrMsg);
- return;
- }
- }
-
- // Pre-fetch some PICS info
- Rect cropRect;
- short outputDepth;
- short numFrames;
-
- if (areaToCrop != NULL) {
- cropRect = *areaToCrop;
- }
- else {
- if (!FetchPICSFileInfo(&file, &cropRect, &outputDepth, &numFrames)) {
- return;
- }
- }
-
- SetupCompositeDialog(&file, -1, &cropRect, numFrames);
- } // END SetupPICSFIleComposite
-
- // ---------------------------------------------------------------------------
-
- enum {
- kCompositeDlogID = 128,
-
- kCompositeDlog_CompositeBtn = 1,
- kCompositeDlog_CancelBtn,
-
- kCompositeDlog_CropBtn,
-
- kCompositeDlog_AssembleBtn,
- kCompositeDlog_LeftToRightBtn,
- kCompositeDlog_TopToBottomBtn,
-
- kCompositeDlog_UseAllFramesBtn,
- kCompositeDlog_UseRangeFramesBtn,
-
- kCompositeDlog_UsePICSFileDepthBtn,
- kCompositeDlog_UseMonitorDepthBtn,
- kCompositeDlog_Use32bitBtn,
- kCompositeDlog_Use16bitBtn,
- kCompositeDlog_Use8bitBtn,
- kCompositeDlog_Use4bitBtn,
- kCompositeDlog_Use1bitBtn,
-
- kCompositeDlog_HelpBtn,
-
- kCompositeDlog_LeftCropInput,
- kCompositeDlog_TopCropInput,
- kCompositeDlog_RightCropInput,
- kCompositeDlog_BottomCropInput,
-
- kCompositeDlog_StartFrameInput,
- kCompositeDlog_StopFrameInput,
-
- kCompositeDlog_InputOptionsBox,
- kCompositeDlog_OutputOptionsBox,
- kCompositeDlog_HelpBox,
-
- kCompositeDlog_Line1,
- kCompositeDlog_Line2
- };
-
- // ---------------------------------------------------------------------------
-
- static void DisposeCompositeDialog(DialogPtr compDlog, Boolean doComposite);
- static void CompositeDialogHandleHit(DialogPtr compDlog, EventRecord *theEvt, short itemHit);
- static Boolean CompositeDialogHandleKey(DialogPtr compDlog, EventRecord *theEvt);
- static void CompositeDialogHandleUpdate(DialogPtr compDlog, EventRecord *theEvt, Boolean frontMost);
- static void CompositeDialogHandleActivate(DialogPtr compDlog, Boolean activate);
- static void CompositeDialogHandleIdle(DialogPtr compDlog);
-
- static Boolean GetCropRect(DialogPtr theDlog, short leftCropItem, Rect *cropResult);
-
- // ---------------------------------------------------------------------------
-
- void SetupCompositeDialog(
- FSSpec *picsFile,
- short fileRefNum,
- const Rect *areaToCrop,
- short numFrames) {
-
- PrefsHandle prefs;
- DialogPtr compDlog;
- Str15 dlogStr;
-
- ASSERT(areaToCrop != NULL);
- if (picsFile == NULL && fileRefNum == -1) {
- ASSERT(true);
- }
-
- prefs = LoadPrefs();
- ASSERT(prefs != NULL);
-
- HLock((Handle)prefs);
-
- // Store parameters in global, since we'll need it after we exit
- // this routine
- if (picsFile != NULL)
- sCompositeData.picsFile = *picsFile;
- sCompositeData.fileRefNum = fileRefNum;
- sCompositeData.areaToCrop = *areaToCrop;
- sCompositeData.numFrames = numFrames;
-
- // Get options...
- compDlog = GetNewDialog(kCompositeDlogID, NULL, (WindowPtr)-1);
- SetPort(compDlog);
- // Because there are edit text items, we have to do the following
- // in addition to calling TextFont() and TextSize()
- TextFont(geneva);
- TextSize(9);
- (**((DialogPeek)compDlog)->textH).txFont = geneva;
- (**((DialogPeek)compDlog)->textH).txSize = 9;
- //(**((DialogPeek)compDlog)->textH).lineHeight = 9;
-
- // Pre-set values in dialog before showing it...
- // Set the crop rect
- SetDlogCtlValue(compDlog, kCompositeDlog_CropBtn, (**prefs).composite.doCrop);
- NumToString(areaToCrop->left, dlogStr);
- SetDItemText(compDlog, kCompositeDlog_LeftCropInput, dlogStr);
- NumToString(areaToCrop->top, dlogStr);
- SetDItemText(compDlog, kCompositeDlog_TopCropInput, dlogStr);
- NumToString(areaToCrop->right, dlogStr);
- SetDItemText(compDlog, kCompositeDlog_RightCropInput, dlogStr);
- NumToString(areaToCrop->bottom, dlogStr);
- SetDItemText(compDlog, kCompositeDlog_BottomCropInput, dlogStr);
-
- // Set the assemble check box
- SetDlogCtlValue(compDlog, kCompositeDlog_AssembleBtn, (**prefs).composite.doAssemble);
- if ((**prefs).composite.assembleLeftToRight)
- SetDlogCtlValue(compDlog, kCompositeDlog_LeftToRightBtn, 1);
- else
- SetDlogCtlValue(compDlog, kCompositeDlog_TopToBottomBtn, 1);
-
- // If not assemble, disable assembling method
- if (!(**prefs).composite.doAssemble) {
- DisableDlogCtl(compDlog, kCompositeDlog_LeftToRightBtn);
- DisableDlogCtl(compDlog, kCompositeDlog_TopToBottomBtn);
- }
-
- // Set output depth radio btn
- switch((**prefs).composite.outputDepthType) {
- case kUseMonitorOutputDepth:
- SetDlogCtlValue(compDlog, kCompositeDlog_UseMonitorDepthBtn, 1);
- break;
- case kUsePICSFileOutputDepth:
- SetDlogCtlValue(compDlog, kCompositeDlog_UsePICSFileDepthBtn, 1);
- break;
- case kUse32bitOutputDepth:
- SetDlogCtlValue(compDlog, kCompositeDlog_Use32bitBtn, 1);
- break;
- case kUse16bitOutputDepth:
- SetDlogCtlValue(compDlog, kCompositeDlog_Use16bitBtn, 1);
- break;
- case kUse8bitOutputDepth:
- SetDlogCtlValue(compDlog, kCompositeDlog_Use8bitBtn, 1);
- break;
- case kUse4bitOutputDepth:
- SetDlogCtlValue(compDlog, kCompositeDlog_Use4bitBtn, 1);
- break;
- case kUse1bitOutputDepth:
- SetDlogCtlValue(compDlog, kCompositeDlog_Use1bitBtn, 1);
- break;
- } // END switch
-
- // Set range start & stop
- /*
- if ((**prefs).composite.frameStart == 0) {
- // Means use all frames
- SetDlogCtlValue(compDlog, kCompositeDlog_UseAllFramesBtn, 1);
- NumToString((**prefs).composite.frameStart+1, dlogStr);
- }
- else {
- SetDlogCtlValue(compDlog, kCompositeDlog_UseRangeFramesBtn, 1);
- dlogStr[0] = 1; dlogStr[1] = '1';
- }
- SetDItemText(compDlog, kCompositeDlog_StartFrameInput, dlogStr);
- if ((**prefs).composite.frameStop > numFrames ||
- (**prefs).composite.frameStop < 1)
- (**prefs).composite.frameStop = numFrames;
- NumToString((**prefs).composite.frameStop, dlogStr);
- SetDItemText(compDlog, kCompositeDlog_StopFrameInput, dlogStr);
- */
- SetDlogCtlValue(compDlog, kCompositeDlog_UseAllFramesBtn, 1);
- dlogStr[0] = 1; dlogStr[1] = '1';
- SetDItemText(compDlog, kCompositeDlog_StartFrameInput, dlogStr);
- NumToString(numFrames, dlogStr);
- SetDItemText(compDlog, kCompositeDlog_StopFrameInput, dlogStr);
-
- RegisterMovableModalDialog(compDlog,
- CompositeDialogHandleHit,
- CompositeDialogHandleKey,
- CompositeDialogHandleUpdate,
- CompositeDialogHandleActivate,
- CompositeDialogHandleIdle);
-
- // Show it and do some extra drawing
- SelIText(compDlog, kCompositeDlog_LeftCropInput, 0, 32767);
-
- HUnlock((Handle)prefs);
- ReleaseResource((Handle)prefs);
-
- sCompositeData.oldHelpItem = 0;
- Place(compDlog, kCenterOnDeepDevice);
- } // END SetupCompositeDialog
-
- // ---------------------------------------------------------------------------
-
- void DisposeCompositeDialog(DialogPtr compDlog, Boolean doComposite) {
- CompositeOptions options;
-
- if (doComposite) {
- long number;
- PrefsHandle prefs = LoadPrefs();
-
- // Get cropping or not
- (**prefs).composite.doCrop = GetDlogCtlValue(compDlog, kCompositeDlog_CropBtn);
- if ((**prefs).composite.doCrop) {
- (void)GetCropRect(compDlog,
- kCompositeDlog_LeftCropInput, &sCompositeData.areaToCrop);
- }
-
- // Get assembling or not
- (**prefs).composite.doAssemble = GetDlogCtlValue(compDlog,
- kCompositeDlog_AssembleBtn);
- (**prefs).composite.assembleLeftToRight = GetDlogCtlValue(compDlog,
- kCompositeDlog_LeftToRightBtn);
-
- // Get frame range
- (**prefs).composite.frameStart = 0;
- (**prefs).composite.frameStop = sCompositeData.numFrames;
- if (GetDlogCtlValue(compDlog, kCompositeDlog_UseRangeFramesBtn)) {
- (void)CheckValidNumeral(compDlog,
- kCompositeDlog_StartFrameInput, &number);
- (**prefs).composite.frameStart = number;
- (void)CheckValidNumeral(compDlog,
- kCompositeDlog_StopFrameInput, &number);
- (**prefs).composite.frameStop = number;
- }
-
- // Get output depth
- short outputDepthRadio;
- outputDepthRadio = GetRadioBtn(compDlog,
- kCompositeDlog_UsePICSFileDepthBtn, kCompositeDlog_Use1bitBtn);
- switch(outputDepthRadio) {
- case kCompositeDlog_UsePICSFileDepthBtn:
- (**prefs).composite.outputDepth = 64; // Special...
- (**prefs).composite.outputDepthType = kUsePICSFileOutputDepth;
- break;
- case kCompositeDlog_UseMonitorDepthBtn:
- (**prefs).composite.outputDepth = 0;
- (**prefs).composite.outputDepthType = kUseMonitorOutputDepth;
- break;
- case kCompositeDlog_Use32bitBtn:
- (**prefs).composite.outputDepth = 32;
- (**prefs).composite.outputDepthType = kUse32bitOutputDepth;
- break;
- case kCompositeDlog_Use16bitBtn:
- (**prefs).composite.outputDepth = 16;
- (**prefs).composite.outputDepthType = kUse16bitOutputDepth;
- break;
- case kCompositeDlog_Use8bitBtn:
- (**prefs).composite.outputDepth = 8;
- (**prefs).composite.outputDepthType = kUse8bitOutputDepth;
- break;
- case kCompositeDlog_Use4bitBtn:
- (**prefs).composite.outputDepth = 4;
- (**prefs).composite.outputDepthType = kUse4bitOutputDepth;
- break;
- case kCompositeDlog_Use1bitBtn:
- (**prefs).composite.outputDepth = 1;
- (**prefs).composite.outputDepthType = kUse1bitOutputDepth;
- break;
- }
-
- ChangedResource((Handle)prefs);
- WriteResource((Handle)prefs);
-
- options = (**prefs).composite;
- HUnlock((Handle)prefs);
- ReleaseResource((Handle)prefs);
- }
-
- HideWindow(compDlog);
- DisposeDialog(compDlog);
- UnregisterMovableModalDialog(compDlog);
-
- if (doComposite) {
- if (sCompositeData.fileRefNum == -1)
- CompositePICS(&options, &sCompositeData.picsFile, -1,
- &sCompositeData.areaToCrop);
- else
- CompositePICS(&options, &sCompositeData.picsFile, sCompositeData.fileRefNum,
- &sCompositeData.areaToCrop);
- }
- } // END DisposeCompositeDialog
-
- // ---------------------------------------------------------------------------
-
- void CompositeDialogHandleHit(DialogPtr compDlog, EventRecord *theEvt, short itemHit) {
- long number;
-
- switch(itemHit) {
- case kCompositeDlog_CropBtn:
- FlipCtlValue(compDlog, itemHit);
- break;
-
- case kCompositeDlog_AssembleBtn:
- FlipCtlValue(compDlog, itemHit);
- if (GetDlogCtlValue(compDlog, itemHit)) {
- EnableDlogCtl(compDlog, kCompositeDlog_LeftToRightBtn);
- EnableDlogCtl(compDlog, kCompositeDlog_TopToBottomBtn);
- }
- else {
- DisableDlogCtl(compDlog, kCompositeDlog_LeftToRightBtn);
- DisableDlogCtl(compDlog, kCompositeDlog_TopToBottomBtn);
- }
- break;
-
- case kCompositeDlog_LeftToRightBtn:
- case kCompositeDlog_TopToBottomBtn:
- SelectRadioBtn(compDlog, itemHit,
- kCompositeDlog_LeftToRightBtn,
- kCompositeDlog_TopToBottomBtn);
- break;
-
- case kCompositeDlog_LeftCropInput:
- case kCompositeDlog_TopCropInput:
- case kCompositeDlog_RightCropInput:
- case kCompositeDlog_BottomCropInput:
- SetDlogCtlValue(compDlog, kCompositeDlog_CropBtn, 1);
- (void)CheckValidNumeral(compDlog, itemHit, &number);
- break;
-
- case kCompositeDlog_UseAllFramesBtn:
- case kCompositeDlog_UseRangeFramesBtn:
- SelectRadioBtn(compDlog, itemHit,
- kCompositeDlog_UseAllFramesBtn, kCompositeDlog_UseRangeFramesBtn);
- break;
-
- case kCompositeDlog_StartFrameInput:
- case kCompositeDlog_StopFrameInput:
- SelectRadioBtn(compDlog, kCompositeDlog_UseRangeFramesBtn,
- kCompositeDlog_UseAllFramesBtn, kCompositeDlog_UseRangeFramesBtn);
- (void)CheckValidNumeral(compDlog, itemHit, &number);
- break;
-
- case kCompositeDlog_UsePICSFileDepthBtn:
- case kCompositeDlog_UseMonitorDepthBtn:
- case kCompositeDlog_Use32bitBtn:
- case kCompositeDlog_Use16bitBtn:
- case kCompositeDlog_Use8bitBtn:
- case kCompositeDlog_Use4bitBtn:
- case kCompositeDlog_Use1bitBtn:
- SelectRadioBtn(compDlog, itemHit,
- kCompositeDlog_UsePICSFileDepthBtn,
- kCompositeDlog_Use1bitBtn);
- break;
-
- case kCompositeDlog_HelpBtn:
- FlipCtlValue(compDlog, kCompositeDlog_HelpBtn);
- break;
-
- case kCompositeDlog_CompositeBtn:
- // Isn't all this error-checking a pain-in-the-butt? :-p
- // Check crops
- Boolean doCrop, doAssemble, doRange;
- doCrop = GetDlogCtlValue(compDlog,
- kCompositeDlog_CropBtn);
- doAssemble = GetDlogCtlValue(compDlog,
- kCompositeDlog_AssembleBtn);
- doRange = GetDlogCtlValue(compDlog,
- kCompositeDlog_UseRangeFramesBtn);
-
- if (doCrop) {
- if (!GetCropRect(compDlog,
- kCompositeDlog_LeftCropInput, &sCompositeData.areaToCrop)) {
- itemHit = 0;
- }
- }
-
-
- if (itemHit != 0) {
- if (!doCrop && !doAssemble) {
- // No operations!
- SimpleError(kAlertErrID,
- kErrMsgID, kNoOperationSelectedErrMsg);
- itemHit = 0;
- }
- }
-
- long frameStart, frameStop;
- if (itemHit != 0 && doRange) {
- if (!CheckValidNumeral(compDlog,
- kCompositeDlog_StartFrameInput, &frameStart)) {
- SelectDialogItemText(compDlog, kCompositeDlog_StartFrameInput, 0, 32767);
- itemHit = 0;
- }
- if (itemHit != 0) {
- if (!CheckValidNumeral(compDlog,
- kCompositeDlog_StopFrameInput, &frameStop)) {
- SelectDialogItemText(compDlog, kCompositeDlog_StopFrameInput, 0, 32767);
- itemHit = 0;
- }
- if (itemHit != 0) {
- if (frameStop < 1) {
- SimpleError(kAlertErrID, kErrMsgID, kInvalidFrameRangeErrMsg);
- SelectDialogItemText(compDlog, kCompositeDlog_StopFrameInput, 0, 32767);
- itemHit = 0;
- }
- else if (frameStop > sCompositeData.numFrames) {
- SimpleError(kAlertErrID, kErrMsgID, kInvalidFrameRangeErrMsg);
- SelectDialogItemText(compDlog, kCompositeDlog_StopFrameInput, 0, 32767);
- itemHit = 0;
- }
- else if (frameStart < 1) {
- SimpleError(kAlertErrID, kErrMsgID, kInvalidFrameRangeErrMsg);
- SelectDialogItemText(compDlog, kCompositeDlog_StartFrameInput, 0, 32767);
- itemHit = 0;
- }
- else if (frameStart > sCompositeData.numFrames) {
- SimpleError(kAlertErrID, kErrMsgID, kInvalidFrameRangeErrMsg);
- SelectDialogItemText(compDlog, kCompositeDlog_StartFrameInput, 0, 32767);
- itemHit = 0;
- }
- else if (frameStart > frameStop) {
- SimpleError(kAlertErrID, kErrMsgID, kInvalidFrameRangeErrMsg);
- SelectDialogItemText(compDlog, kCompositeDlog_StartFrameInput, 0, 32767);
- itemHit = 0;
- }
- }
- }
- }
-
- if (itemHit != 0)
- DisposeCompositeDialog(compDlog, true);
- break;
-
- case kCompositeDlog_CancelBtn:
- DisposeCompositeDialog(compDlog, false);
- break;
-
- default:
- break;
- } // END switch
- } // END CompositeDialogHandleHit
-
- // ---------------------------------------------------------------------------
-
- Boolean CompositeDialogHandleKey(DialogPtr compDlog, EventRecord *theEvt) {
- char key = theEvt->message & charCodeMask;
- Boolean handledIt = false;
-
- switch(key) {
- case kReturn_Key:
- PushButton(compDlog, kCompositeDlog_CompositeBtn);
- DisposeCompositeDialog(compDlog, true);
- handledIt = true;
- break;
-
- case kEscape_Key:
- PushButton(compDlog, kCompositeDlog_CancelBtn);
- DisposeCompositeDialog(compDlog, false);
- handledIt = true;
- break;
-
- }
-
- return(handledIt);
- } // END CompositeDialogHandleKey
-
- // ---------------------------------------------------------------------------
-
- void CompositeDialogHandleUpdate(DialogPtr compDlog, EventRecord *theEvt, Boolean frontMost) {
- Rect boxRect;
- GetDItemRect(compDlog, kCompositeDlog_InputOptionsBox, &boxRect);
- GrayDrawShadowBox(&boxRect, NULL);
- GetDItemRect(compDlog, kCompositeDlog_OutputOptionsBox, &boxRect);
- GrayDrawShadowBox(&boxRect, NULL);
- GetDItemRect(compDlog, kCompositeDlog_HelpBox, &boxRect);
- GrayDrawShadowBox(&boxRect, NULL);
-
- GetDItemRect(compDlog, kCompositeDlog_Line1, &boxRect);
- GrayDrawShadowLine(&boxRect, NULL);
- GetDItemRect(compDlog, kCompositeDlog_Line2, &boxRect);
- GrayDrawShadowLine(&boxRect, NULL);
-
- DrawDefaultBorder(compDlog, kCompositeDlog_CompositeBtn);
-
- if (!frontMost) {
- }
- } // END CompositeDialogHandleUpdate
-
- // ---------------------------------------------------------------------------
-
- void CompositeDialogHandleActivate(DialogPtr compDlog, Boolean activate) {
- short hiliteMode;
- short i;
-
- if (activate)
- hiliteMode = 0;
- else
- hiliteMode = 255;
-
- for (i = kCompositeDlog_CompositeBtn;
- i <= kCompositeDlog_HelpBtn; i++)
- HiliteControl((ControlHandle)GetDItemHdl(compDlog, i), hiliteMode);
-
- PrefsHandle prefs = LoadPrefs();
- ASSERT(prefs != NULL);
- if (prefs != NULL && !(**prefs).composite.doAssemble) {
- DisableDlogCtl(compDlog, kCompositeDlog_LeftToRightBtn);
- DisableDlogCtl(compDlog, kCompositeDlog_TopToBottomBtn);
- }
- if (prefs != NULL)
- ReleaseResource((Handle)prefs);
-
- /*
- We won't even bother with grayishTextOr'ing the static text here,
- because there are edit text items in the dialog. Because of
- this, the Dialog Manager always resets the textmode to srcOr.
- This is the last time I'll be using the Dialog Manager for anything
- more than modal dialogs - it just plain sucks. Inconsistent
- action, resetting and hardwiring port variables such as the
- textfont and textmode. It's just too much for me to take!
- */
-
- DrawDefaultBorder(compDlog, kCompositeDlog_CompositeBtn);
- } // END CompositeDialogHandleActivate
-
- // ---------------------------------------------------------------------------
-
- void CompositeDialogHandleIdle(DialogPtr compDlog) {
- short i, isInside;
- Rect itemRect;
- Str255 helpStr;
- GrafPtr savePort;
- Point mouseLoc;
-
- GetPort(&savePort);
- SetPort(compDlog);
-
- if (!GetDlogCtlValue(compDlog, kCompositeDlog_HelpBtn)) {
- if (sCompositeData.oldHelpItem != 0) {
- GetDItemRect(compDlog, kCompositeDlog_HelpBox, &itemRect);
- InsetRect(&itemRect, 2, 2);
- EraseRect(&itemRect);
- sCompositeData.oldHelpItem = 0;
- }
- SetPort(savePort);
- return;
- }
-
- GetMouse(&mouseLoc);
- isInside = false;
- for (i = kCompositeDlog_CompositeBtn; i <= kCompositeDlog_StopFrameInput; i++) {
- GetDItemRect(compDlog, i, &itemRect);
-
- if (PtInRect(mouseLoc, &itemRect)) {
- // We're inside an item; is it a new item or is mouse still
- // on old item? (If new, write new text)
- if (i != sCompositeData.oldHelpItem) {
- GetIndString(helpStr, kCompositeDlogID, i);
-
- GetDItemRect(compDlog, kCompositeDlog_HelpBox, &itemRect);
- TextFont(geneva);
- TextSize(9);
- InsetRect(&itemRect, 5, 4);
- TextBox(&helpStr[1], helpStr[0], &itemRect, teForceLeft);
-
- sCompositeData.oldHelpItem = i;
- }
- isInside = true;
- break;
- }
- }
-
- if (!isInside && sCompositeData.oldHelpItem != 0) {
- GetDItemRect(compDlog, kCompositeDlog_HelpBox, &itemRect);
- InsetRect(&itemRect, 2, 2);
- EraseRect(&itemRect);
- sCompositeData.oldHelpItem = 0;
- }
-
- SetPort(savePort);
- } // END CompositeDialogHandleIdle
-
- // ---------------------------------------------------------------------------
-
- Boolean GetCropRect(DialogPtr theDlog, short leftCropItem, Rect *cropResult) {
- Rect cropRect;
- long number;
- Str15 dlogStr;
-
- ASSERT(cropResult != NULL);
-
- for (short i = leftCropItem; i < leftCropItem+4; i++) {
- GetIText(GetDItemHdl(theDlog, i), dlogStr);
- if (dlogStr[0] == 0) {
- SimpleError(kAlertErrID, kErrMsgID, kInvalidCropRectErrMsg);
- return(false);
- }
- }
-
- if (!CheckValidNumeral(theDlog, leftCropItem++, &number)) return(false);
- cropRect.left = number;
- if (!CheckValidNumeral(theDlog, leftCropItem++, &number)) return(false);
- cropRect.top = number;
- if (!CheckValidNumeral(theDlog, leftCropItem++, &number)) return(false);
- cropRect.right = number;
- if (!CheckValidNumeral(theDlog, leftCropItem, &number)) return(false);
- cropRect.bottom = number;
-
- if (EmptyRect(&cropRect)) {
- SimpleError(kAlertErrID, kErrMsgID, kInvalidCropRectErrMsg);
- return(false);
- }
- else {
- *cropResult = cropRect;
- return(true);
- }
- } // END GetCropRect