iOS核心图形之CGDataProvider
前言
CGDataProvider
对象抽象了数据访问任务,消除了应用程序通过原始内存缓冲区管理数据的需要。
CGDataProvider
杂项功能
创建顺序访问数据提供程序
CGDataProviderRef CGDataProviderCreate (
void *info,
const CGDataProviderCallbacks *callbacks
);
- info
指向任何类型或NULL数据的指针。当Core Graphics
调用callbacks参数中指定的函数时,它向每个函数发送这个数据 - callbacks
指向CGDataProviderCallbacks
结构的指针,该结构指定为处理数据提供程序的基本内存管理而实现的回调函数
创建直接访问数据提供程序
CGDataProviderRef CGDataProviderCreateDirectAccess (
void *info,
size_t size,
const CGDataProviderDirectAccessCallbacks *callbacks
);
- size
指定数据提供程序包含的字节数的值
创建使用程序提供的数据的直接访问数据提供程序
CGDataProviderRef CGDataProviderCreateWithData(void *info, const void *data, size_t size, CGDataProviderReleaseDataCallback releaseData);
创建使用URL提供数据的直接访问数据提供程序
CGDataProviderRef CGDataProviderCreateWithURL(CFURLRef url);
使用此函数可创建直接访问数据提供程序,该提供程序从URL提供数据。当您使用直接访问数据提供程序提供
Core Graphics
时,Core Graphics
将在整个块中从您的程序中获取数据
创建使用文件提供数据的直接访问数据提供程序
CGDataProviderRef CGDataProviderCreateWithFilename(const char *filename);
创建从CFData
对象读取的数据提供程序。
CGDataProviderRef CGDataProviderCreateWithCFData(CFDataRef data);
以上所有方法都需要调用
CGDataProviderRelease
或CFRelease
释放对象
释放对象
void CGDataProviderRelease(CGDataProviderRef provider)
获取CGDataProvider typeID
CFTypeID CGDataProviderGetTypeID(void)
返回CGDataProvider的数据拷贝
CFDataRef CGDataProviderCopyData(CGDataProviderRef provider)
增加数据提供程序的保留计数
CGDataProviderRef CGDataProviderRetain(CGDataProviderRef provider); // 等同于CFRetain
创建顺序访问数据提供程序
CGDataProviderRef CGDataProviderCreateSequential(void *info, const CGDataProviderSequentialCallbacks *callbacks);
创建直接访问数据提供程序
CGDataProviderRef CGDataProviderCreateDirect(void *info, off_t size, const CGDataProviderDirectCallbacks *callbacks);
CallBacks
从提供程序数据流复制到核心图形缓冲区的回调函数
typedef size_t (*CGDataProviderGetBytesCallback)(void *info, void *buffer, size_t count);
Core Graphics
准备好从提供程序数据流接收数据时,将调用函数。它应该将指定的字节数复制到缓冲区中
回调函数,释放与数据提供程序关联的任何私有数据或资源
typedef void (*CGDataProviderReleaseInfoCallback)(void *info)
一个回调函数,将数据流中的当前位置移回起始位置
typedef void (*CGDataProviderRewindCallback)(void *info)
一个回调函数,提供程序提供的数据流中的当前位置
void (*CGDataProviderSkipBytesCallback) (
void *info,
size_t count
);
一个回调函数,提供程序提供的数据流中的当前位置
typedef off_t (*CGDataProviderSkipForwardCallback)(void *info, off_t count);
一个回调函数,返回指向提供程序数据的通用指针
typedef const void * _Nullable (*CGDataProviderGetBytePointerCallback)(void *info);
回调函数,将数据从提供程序复制到Core Graphics
缓冲区
typedef size_t (*CGDataProviderGetBytesAtOffsetCallback) (
void *info,
void *buffer,
size_t offset,
size_t count
);
一个回调函数,释放通过调用CGDataProviderGetBytePointerCallback
获得的指针
typedef void (*CGDataProviderReleaseBytePointerCallback)(void *info, const void *pointer);
一个回调函数,释放提供给函数CGDataProviderCreateWithData
的数据。
typedef void (*CGDataProviderReleaseDataCallback)(void *info, const void *data, size_t size);
回调函数,将数据从CGDataProvider
复制到Core Graphics
缓冲区
typedef size_t (*CGDataProviderGetBytesAtPositionCallback)(void *info, void *buffer, off_t pos, size_t cnt);
Data Types
CGDataProviderRef
概述:数据读取任务的抽象,它消除了管理原始内存缓冲区的需要
一些核心图形例程为程序提供数据块。与读取原始内存缓冲区不同,CGDataProviderRef
类型的对象允许为Core Graphics
函数提供数据。
CGDataProviderRef
派生自CFTypeRef
,并继承所有核心基础类型共有的属性
CGDataProviderCallbacks
struct CGDataProviderCallbacks {
CGDataProviderGetBytesCallback getBytes;
CGDataProviderSkipBytesCallback skipBytes;
CGDataProviderRewindCallback rewind;
CGDataProviderReleaseInfoCallback releaseProvider;
};
typedef struct CGDataProviderCallbacks CGDataProviderCallbacks;
一个结构体,该结构包含指向客户端定义的回调函数的指针,这些回调函数管理顺序访问数据提供程序的数据发送
CGDataProviderCallbacks
结构指定的函数负责将数据顺序复制到内存缓冲区中,以供核心图形使用。这些函数还负责处理数据提供程序的基本内存管理。为函数CGDataProviderCreate
提供CGDataProviderCallbacks
结构,以创建顺序访问数据提供程序
CGDataProviderDirectAccessCallbacks
定义指向客户端定义的回调函数的指针,这些回调函数管理直接访问数据提供程序的数据发送
struct CGDataProviderDirectAccessCallbacks {
CGDataProviderGetBytePointerCallback getBytePointer;
CGDataProviderReleaseBytePointerCallback releaseBytePointer;
CGDataProviderGetBytesAtOffsetCallback getBytes;
CGDataProviderReleaseInfoCallback releaseProvider;
};
typedef struct CGDataProviderDirectAccessCallbacks CGDataProviderDirectAccessCallbacks
为函数
CGDataProviderCreateDirectAccess
提供一个cgdataproviderdirectaccesscallback
结构,以创建用于直接访问的数据提供程序。CGDataProviderDirectAccessCallbacks
结构指定的函数负责每次将数据块复制到内存缓冲区中,供核心图形使用。这些函数还负责处理数据提供程序的基本内存管理。要使回调生效,getBytePointer
和getBytes
参数之一必须是非空的。如果两者都是非空的,则使用getBytePointer
访问数据。
CGDataProviderDirectCallbacks
struct CGDataProviderDirectCallbacks {
CGDataProviderGetBytePointerCallback getBytePointer;
CGDataProviderGetBytesAtPositionCallback getBytesAtPosition;
CGDataProviderReleaseBytePointerCallback releaseBytePointer;
CGDataProviderReleaseInfoCallback releaseInfo;
unsigned int version;
};
typedef struct CGDataProviderDirectCallbacks CGDataProviderDirectCallbacks
定义指向客户端定义的回调函数的指针,这些回调函数管理直接访问数据提供程序的数据发送。
为函数
CGDataProviderCreateDirect
提供一个CGDataProviderDirectCallbacks
结构,以创建用于直接访问的数据提供程序。CGDataProviderDirectCallbacks
结构指定的函数负责每次将数据块复制到内存缓冲区中,供核心图形使用。这些函数还负责处理数据提供程序的基本内存管理。要使回调生效,getBytePointer
和getBytesAtPosition
参数之一必须是非空的。如果两者都是非空的,则使用getBytePointer
访问数据
CGDataProviderSequentialCallbacks
struct CGDataProviderSequentialCallbacks {
CGDataProviderGetBytesCallback getBytes;
CGDataProviderRewindCallback rewind;
CGDataProviderSkipForwardCallback skipForward;
CGDataProviderReleaseInfoCallback releaseInfo;
unsigned int version;
};
typedef struct CGDataProviderSequentialCallbacks CGDataProviderSequentialCallbacks
定义一个结构,该结构包含指向客户端定义的回调函数的指针,这些回调函数管理顺序访问数据提供程序的数据发送
CGDataProviderSequentialCallbacks
结构指定的函数负责将数据顺序复制到内存缓冲区中,以供核心图形使用。这些函数还负责处理数据提供程序的基本内存管理。为函数CGDataProviderCreateSequential
提供CGDataProviderCallbacks
结构,以创建顺序访问数据提供程序