diff options
| author | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
|---|---|---|
| committer | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
| commit | 3bf9df6b2785fa6d951086978a3e66f49427166a (patch) | |
| tree | 2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /common/quicktime_win32/HIShape.h | |
| download | archived-source-engine-2018-hl2-src-master.tar.xz archived-source-engine-2018-hl2-src-master.zip | |
Diffstat (limited to 'common/quicktime_win32/HIShape.h')
| -rw-r--r-- | common/quicktime_win32/HIShape.h | 653 |
1 files changed, 653 insertions, 0 deletions
diff --git a/common/quicktime_win32/HIShape.h b/common/quicktime_win32/HIShape.h new file mode 100644 index 0000000..d332417 --- /dev/null +++ b/common/quicktime_win32/HIShape.h @@ -0,0 +1,653 @@ +/* + File: HIShape.h + + Contains: Generic Abstract Shape API + + Version: QuickTime 7.3 + + Copyright: (c) 2007 (c) 2001 by Apple Computer, Inc., all rights reserved. + + Bugs?: For bug reports, consult the following page on + the World Wide Web: + + http://developer.apple.com/bugreporter/ + +*/ +#ifndef __HISHAPE__ +#define __HISHAPE__ + +#ifndef __APPLICATIONSERVICES__ +#include <ApplicationServices.h> +#endif + +#ifndef __CARBONEVENTS__ +#include <CarbonEvents.h> +#endif + + + + +#if PRAGMA_ONCE +#pragma once +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#if PRAGMA_IMPORT +#pragma import on +#endif + + +/* + * HIShape + * + * Discussion: + * HIShape is an abstract shape object for use with some of the + * HIToolbox APIs. It is designed as a replacement for RgnHandles + * (though it is currently implemented in terms of them at the time + * of this writing). This abstraction will allow us to avoid using + * QD types in our APIs, particularly in HIView. + * + * One of the biggest benefits of HIShape is that we have mutable + * and immutable variants. This means that immutable shapes can be + * created and passed around and 'copied' very quickly, since they + * are actually refcounted when copied. This avoids needing to do + * the handle-to-handle copies that occur right now with + * RgnHandle-based APIs. + */ +typedef const struct __HIShape* HIShapeRef; +typedef struct __HIShape* HIMutableShapeRef; + + +/* + * HIShapeGetTypeID() + * + * Discussion: + * Returns the CF type ID for the HIShape class. + * + * Result: + * A CF type ID. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later + * Mac OS X: in version 10.2 and later + */ +EXTERN_API_C( CFTypeID ) +HIShapeGetTypeID(void); + + + + + +/*======================================================================================*/ +/* IMMUTABLE FUNCTIONS */ +/*======================================================================================*/ +/* + * HIShapeCreateWithQDRgn() + * + * Discussion: + * Creates an immutable shape based on an existing Quickdraw region + * handle. + * + * Parameters: + * + * inRgn: + * The Quickdraw region from which to create the HIShape. + * + * Result: + * An immutable HIShape reference. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later + * Mac OS X: in version 10.2 and later + */ +EXTERN_API_C( HIShapeRef ) +HIShapeCreateWithQDRgn(RgnHandle inRgn); + + +/* + * HIShapeCreateWithRect() + * + * Discussion: + * Creates an immutable, rectangular shape based on a given + * rectangle. + * + * Parameters: + * + * inRect: + * The HIRect from which to create the resulting shape. + * + * Result: + * An immutable HIShape reference. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later + * Mac OS X: in version 10.2 and later + */ +EXTERN_API_C( HIShapeRef ) +HIShapeCreateWithRect(const HIRect * inRect); + + +/* + * HIShapeCreateCopy() + * + * Discussion: + * Creates an immutable copy of a mutable or immutable HIShape. + * + * Parameters: + * + * inShape: + * The existing HIShapeRef you wish to copy. + * + * Result: + * An immutable HIShape reference. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later + * Mac OS X: in version 10.2 and later + */ +EXTERN_API_C( HIShapeRef ) +HIShapeCreateCopy(HIShapeRef inShape); + + +/* + * HIShapeCreateIntersection() + * + * Discussion: + * Creates a new immutable shape which is the intersection of two + * others. + * + * Parameters: + * + * inShape1: + * An existing HIShapeRef. + * + * inShape2: + * An existing HIShapeRef. + * + * Result: + * A new immutable HIShapeRef. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later + * Mac OS X: in version 10.2 and later + */ +EXTERN_API_C( HIShapeRef ) +HIShapeCreateIntersection( + HIShapeRef inShape1, + HIShapeRef inShape2); + + +/* + * HIShapeCreateDifference() + * + * Discussion: + * Creates a new immutable shape which is the difference of two + * others. The second shape is subtracted from the first. + * + * Parameters: + * + * inShape1: + * An existing HIShapeRef. + * + * inShape2: + * An existing HIShapeRef. + * + * Result: + * A new immutable HIShapeRef. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later + * Mac OS X: in version 10.2 and later + */ +EXTERN_API_C( HIShapeRef ) +HIShapeCreateDifference( + HIShapeRef inShape1, + HIShapeRef inShape2); + + +/* + * HIShapeCreateUnion() + * + * Discussion: + * Creates a new immutable shape which is the union of two others. + * + * Parameters: + * + * inShape1: + * An existing HIShapeRef. + * + * inShape2: + * An existing HIShapeRef. + * + * Result: + * A new immutable HIShapeRef. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later + * Mac OS X: in version 10.2 and later + */ +EXTERN_API_C( HIShapeRef ) +HIShapeCreateUnion( + HIShapeRef inShape1, + HIShapeRef inShape2); + + +/* + * HIShapeIsEmpty() + * + * Discussion: + * Returns true if the given HIShapeRef is empty, i.e. its area is + * empty. + * + * Parameters: + * + * inShape: + * The existing HIShapeRef you wish to test. + * + * Result: + * A boolean result. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later + * Mac OS X: in version 10.2 and later + */ +EXTERN_API_C( Boolean ) +HIShapeIsEmpty(HIShapeRef inShape); + + +/* + * HIShapeIsRectangular() + * + * Discussion: + * Returns true if the given HIShapeRef is rectangular. + * + * Parameters: + * + * inShape: + * The existing HIShapeRef you wish to test. + * + * Result: + * A boolean result. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later + * Mac OS X: in version 10.2 and later + */ +EXTERN_API_C( Boolean ) +HIShapeIsRectangular(HIShapeRef inShape); + + +/* + * HIShapeContainsPoint() + * + * Discussion: + * Returns true if the given HIShapeRef contains the point passed in. + * + * Parameters: + * + * inShape: + * An existing HIShapeRef. + * + * inPoint: + * The point to check. + * + * Result: + * A boolean result. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later + * Mac OS X: in version 10.2 and later + */ +EXTERN_API_C( Boolean ) +HIShapeContainsPoint( + HIShapeRef inShape, + const HIPoint * inPoint); + + +/* + * HIShapeGetBounds() + * + * Discussion: + * Returns the bounding rectangle of a given HIShapeRef. + * + * Parameters: + * + * inShape: + * An existing HIShapeRef. + * + * outRect: + * Receives the bounding rectangle. + * + * Result: + * A pointer to the rectangle you passed in, for convenience. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later + * Mac OS X: in version 10.2 and later + */ +EXTERN_API_C( HIRect * ) +HIShapeGetBounds( + HIShapeRef inShape, + HIRect * outRect); + + +/* + * HIShapeGetAsQDRgn() + * + * Discussion: + * Changes a given Quickdraw region handle to have the same shape as + * a given HIShapeRef. Essentially you are converting an HIShapeRef + * into a RgnHandle. This conversion may lose fidelity depending on + * how the shape was created originally. + * + * Parameters: + * + * inShape: + * An existing HIShapeRef. + * + * outRgn: + * An existing region to change. + * + * Result: + * An operating system status code. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later + * Mac OS X: in version 10.2 and later + */ +EXTERN_API_C( OSStatus ) +HIShapeGetAsQDRgn( + HIShapeRef inShape, + RgnHandle outRgn); + + +/* + * HIShapeReplacePathInCGContext() + * + * Discussion: + * Given an HIShapeRef and a CGContextRef, make the current path in + * the context represent the shape. You might use this to clip to a + * shape, for example. You could call this function and then + * immediately call CGContextClip. + * + * Parameters: + * + * inShape: + * An existing HIShapeRef. + * + * inContext: + * The context to apply the shape to. + * + * Result: + * An operating system status code. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later + * Mac OS X: in version 10.2 and later + */ +EXTERN_API_C( OSStatus ) +HIShapeReplacePathInCGContext( + HIShapeRef inShape, + CGContextRef inContext); + + +/* + * HIShapeSetQDClip() + * + * Discussion: + * Given an HIShapeRef and a Quickdraw port, set the current clip in + * the port to the shape. + * + * Parameters: + * + * inShape: + * An existing HIShapeRef. + * + * inPort: + * The port to set the clip for. + * + * Result: + * An operating system status code. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later + * Mac OS X: in version 10.2 and later + */ +EXTERN_API_C( OSStatus ) +HIShapeSetQDClip( + HIShapeRef inShape, + CGrafPtr inPort); + + + + +/*======================================================================================*/ +/* MUTABLE FUNCTIONS */ +/*======================================================================================*/ +/* + * HIShapeCreateMutable() + * + * Discussion: + * Creates a new, mutable, empty shape. + * + * Result: + * A mutable shape reference. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later + * Mac OS X: in version 10.2 and later + */ +EXTERN_API_C( HIMutableShapeRef ) +HIShapeCreateMutable(void); + + +/* + * HIShapeCreateMutableCopy() + * + * Discussion: + * Given an existing HIShapeRef, creates a new mutable copy. + * + * Parameters: + * + * inOrig: + * The shape to copy. + * + * Result: + * A mutable shape reference. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later + * Mac OS X: in version 10.2 and later + */ +EXTERN_API_C( HIMutableShapeRef ) +HIShapeCreateMutableCopy(HIShapeRef inOrig); + + +/* + * HIShapeSetEmpty() + * + * Discussion: + * Sets a mutable shape to be an empty shape. + * + * Parameters: + * + * inShape: + * The shape to empty. + * + * Result: + * An operating system status code. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later + * Mac OS X: in version 10.2 and later + */ +EXTERN_API_C( OSStatus ) +HIShapeSetEmpty(HIMutableShapeRef inShape); + + +/* + * HIShapeIntersect() + * + * Discussion: + * Takes two shapes and sets a third to be their intersection. + * + * Parameters: + * + * inShape1: + * The first shape. + * + * inShape2: + * The second shape. + * + * outResult: + * The shape to receive the result of the intersection. This can + * be one of the source shapes. + * + * Result: + * An operating system status code. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later + * Mac OS X: in version 10.2 and later + */ +EXTERN_API_C( OSStatus ) +HIShapeIntersect( + HIShapeRef inShape1, + HIShapeRef inShape2, + HIMutableShapeRef outResult); + + +/* + * HIShapeDifference() + * + * Discussion: + * Takes two shapes and sets a third to be their difference. The + * second shape is subtracted from the first. + * + * Parameters: + * + * inShape1: + * The first shape. + * + * inShape2: + * The second shape. + * + * outResult: + * The shape to receive the result of the intersection. This can + * be one of the source shapes. + * + * Result: + * An operating system status code. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later + * Mac OS X: in version 10.2 and later + */ +EXTERN_API_C( OSStatus ) +HIShapeDifference( + HIShapeRef inShape1, + HIShapeRef inShape2, + HIMutableShapeRef outResult); + + +/* + * HIShapeUnion() + * + * Discussion: + * Takes two shapes and sets a third to be their union. + * + * Parameters: + * + * inShape1: + * The first shape. + * + * inShape2: + * The second shape. + * + * outResult: + * The shape to receive the result of the union. This can be one + * of the source shapes. + * + * Result: + * An operating system status code. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later + * Mac OS X: in version 10.2 and later + */ +EXTERN_API_C( OSStatus ) +HIShapeUnion( + HIShapeRef inShape1, + HIShapeRef inShape2, + HIMutableShapeRef outResult); + + +/* + * HIShapeOffset() + * + * Discussion: + * Offsets a shape by some delta. + * + * Parameters: + * + * inShape: + * The shape to offset. + * + * inDX: + * The delta to move the shape on the X axis. + * + * inDY: + * The delta to move the shape on the Y axis. + * + * Result: + * An operating system status code. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later + * Mac OS X: in version 10.2 and later + */ +EXTERN_API_C( OSStatus ) +HIShapeOffset( + HIMutableShapeRef inShape, + float inDX, + float inDY); + + + + +#ifdef PRAGMA_IMPORT_OFF +#pragma import off +#elif PRAGMA_IMPORT +#pragma import reset +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* __HISHAPE__ */ + |