|
|
/*
File: CGDataProvider.h Contains: CoreGraphics data provider Version: QuickTime 7.3 Copyright: (c) 2007 (c) 2000-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 CGDATAPROVIDER_H_
#define CGDATAPROVIDER_H_
#ifndef __CGBASE__
#include <CGBase.h>
#endif
#ifndef __CFURL__
#include <CFURL.h>
#endif
#if PRAGMA_ONCE
#pragma once
#endif
#ifdef __cplusplus
extern "C" { #endif
#if PRAGMA_IMPORT
#pragma import on
#endif
#if PRAGMA_STRUCT_ALIGN
#pragma options align=mac68k
#elif PRAGMA_STRUCT_PACKPUSH
#pragma pack(push, 2)
#elif PRAGMA_STRUCT_PACK
#pragma pack(2)
#endif
typedef struct CGDataProvider* CGDataProviderRef; typedef CALLBACK_API_C( size_t , CGGetBytesProcPtr )(void *info, void *buffer, size_t count); typedef CALLBACK_API_C( void , CGSkipBytesProcPtr )(void *info, size_t count); typedef CALLBACK_API_C( void , CGRewindProcPtr )(void * info); typedef CALLBACK_API_C( void , CGReleaseProviderProcPtr )(void * info); /* Callbacks for sequentially accessing data.
* `getBytes' is called to copy `count' bytes from the provider's data to * `buffer'. It should return the number of bytes copied, or 0 if there's * no more data. * `skipBytes' is called to skip ahead in the provider's data by `count' bytes. * `rewind' is called to rewind the provider to the beginning of the data. * `releaseProvider', if non-NULL, is called when the provider is freed. */ struct CGDataProviderCallbacks { CGGetBytesProcPtr getBytes; CGSkipBytesProcPtr skipBytes; CGRewindProcPtr rewind; CGReleaseProviderProcPtr releaseProvider; }; typedef struct CGDataProviderCallbacks CGDataProviderCallbacks; typedef CALLBACK_API_C( void *, CGGetBytePointerProcPtr )(void * info); typedef CALLBACK_API_C( void , CGReleaseByteProcPtr )(void *info, const void *pointer); typedef CALLBACK_API_C( size_t , CGGetBytesDirectProcPtr )(void *info, void *buffer, size_t offset, size_t count); /* Callbacks for directly accessing data.
* `getBytePointer', if non-NULL, is called to return a pointer to the * provider's entire block of data. * `releaseBytePointer', if non-NULL, is called to release a pointer to * the provider's entire block of data. * `getBytes', if non-NULL, is called to copy `count' bytes at offset * `offset' from the provider's data to `buffer'. It should return the * number of bytes copied, or 0 if there's no more data. * `releaseProvider', if non-NULL, is called when the provider is freed. * At least one of `getBytePointer' or `getBytes' must be non-NULL. */ struct CGDataProviderDirectAccessCallbacks { CGGetBytePointerProcPtr getBytePointer; CGReleaseByteProcPtr releaseBytePointer; CGGetBytesDirectProcPtr getBytes; CGReleaseProviderProcPtr releaseProvider; }; typedef struct CGDataProviderDirectAccessCallbacks CGDataProviderDirectAccessCallbacks; typedef CALLBACK_API_C( void , CGReleaseDataProcPtr )(void *info, const void *data, size_t size); /* Create a sequential-access data provider using `callbacks' to provide
* the data. `info' is passed to each of the callback functions. */ /*
* CGDataProviderCreate() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: in version 10.0 and later */ EXTERN_API_C( CGDataProviderRef ) CGDataProviderCreate( void * info, const CGDataProviderCallbacks * callbacks);
/* Create a direct-access data provider using `callbacks' to supply `size'
* bytes of data. `info' is passed to each of the callback functions. */ /*
* CGDataProviderCreateDirectAccess() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: in version 10.0 and later */ EXTERN_API_C( CGDataProviderRef ) CGDataProviderCreateDirectAccess( void * info, size_t size, const CGDataProviderDirectAccessCallbacks * callbacks);
/* Create a direct-access data provider using `data', an array of `size'
* bytes. `releaseData' is called when the data provider is freed, and is * passed `info' as its first argument. */ /*
* CGDataProviderCreateWithData() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: in version 10.0 and later */ EXTERN_API_C( CGDataProviderRef ) CGDataProviderCreateWithData( void * info, const void * data, size_t size, CGReleaseDataProcPtr releaseData);
/* Create a data provider using `url'. */ /*
* CGDataProviderCreateWithURL() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: in version 10.0 and later */ EXTERN_API_C( CGDataProviderRef ) CGDataProviderCreateWithURL(CFURLRef url);
/* Increment the retain count of `provider' and return it. All data
* providers are created with an initial retain count of 1. */ /*
* CGDataProviderRetain() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: in version 10.0 and later */ EXTERN_API_C( CGDataProviderRef ) CGDataProviderRetain(CGDataProviderRef provider);
/* Decrement the retain count of `provider'. If the retain count reaches
* 0, then free `provider' and any associated resources. */ /*
* CGDataProviderRelease() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: in version 10.0 and later */ EXTERN_API_C( void ) CGDataProviderRelease(CGDataProviderRef provider);
#if PRAGMA_STRUCT_ALIGN
#pragma options align=reset
#elif PRAGMA_STRUCT_PACKPUSH
#pragma pack(pop)
#elif PRAGMA_STRUCT_PACK
#pragma pack()
#endif
#ifdef PRAGMA_IMPORT_OFF
#pragma import off
#elif PRAGMA_IMPORT
#pragma import reset
#endif
#ifdef __cplusplus
} #endif
#endif /* CGDATAPROVIDER_H_ */
|