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.
TumblerSource/Tumbler_utility.c
// |
// |
// utility.c |
// |
// Utility routines. |
// |
// |
// Author: Nick Thompson & Pablo Fernicola, with thanks to the QuickDraw 3D team |
// |
// Copyright © 1992-95 Apple Computer, Inc., All Rights Reserved |
// |
// |
#include "Tumbler_prototypes.h" |
#include "Tumbler_utility.h" |
// |
// PStrCmp returns true if the two given pascal strings are equal. |
// |
short PStrCmp(char *s1, char *s2) |
{ short size, index; |
size = s1[0] + 1; |
while (size--) { |
if (*(s1++) != *(s2++)) |
return(false); |
} |
return(true); |
} |
//-------------------------------------------------------------------------------- |
// Given two rects, this function centers the second one within the first. |
void CenterRectInRect(Rect *outerRect, Rect *innerRect) |
{ |
PositionRectInRect(outerRect, innerRect, FixRatio(1, 2), FixRatio(1, 2)); |
} |
//------------------------------------------------------------------------------------------- |
// Given two rectangles, this function positions the second within the first |
// one so that it maintains the spacing specified by the horzRatio and |
// vertRatio parameters. In other words, to center an inner rectangle |
// hoizontally, but have its center be 1/3 from the top of the outer rectangle, |
// call this function with horzRatio = FixRatio(1, 2), vertRatio = |
// FixRatio(1, 3). We use Fixed rather than floating point to avoid |
// complications when mixing MC68881/non-MC68881 versions of Utilities. |
void PositionRectInRect(Rect *outerRect, Rect *innerRect, Fixed horzRatio, Fixed vertRatio) |
{ |
short outerRectHeight; |
short outerRectWidth; |
short innerRectHeight; |
short innerRectWidth; |
short yLocation; |
short xLocation; |
outerRectHeight = outerRect->bottom - outerRect->top; |
outerRectWidth = outerRect->right - outerRect->left; |
innerRectHeight = innerRect->bottom - innerRect->top; |
innerRectWidth = innerRect->right - innerRect->left; |
yLocation = Fix2Long(FixMul(Long2Fix(outerRectHeight - innerRectHeight), vertRatio)) |
+ outerRect->top; |
xLocation = Fix2Long(FixMul(Long2Fix(outerRectWidth - innerRectWidth), horzRatio)) |
+ outerRect->left; |
innerRect->top = yLocation; |
innerRect->left = xLocation; |
innerRect->bottom = yLocation + innerRectHeight; |
innerRect->right = xLocation + innerRectWidth; |
} |
Copyright © 2003 Apple Computer, Inc. All Rights Reserved. Terms of Use | Privacy Policy | Updated: 2003-01-14