---
title: CGDataProvider
framework: coregraphics
role: symbol
role_heading: Class
path: coregraphics/cgdataprovider
---

# CGDataProvider

An abstraction for data-reading tasks that eliminates the need to manage a raw memory buffer.

## Declaration

```swift
class CGDataProvider
```

## Overview

Overview Data provider objects abstract the data-access task and eliminate the need for applications to manage data through a raw memory buffer. For information on how to use CGDataProvider functions, see Quartz 2D Programming Guide Programming Guide. See also CGDataConsumer.

## Topics

### Creating Sequential-Access Data Providers

- [init(sequentialInfo:callbacks:)](coregraphics/cgdataprovider/init(sequentialinfo:callbacks:).md)
- [CGDataProviderSequentialCallbacks](coregraphics/cgdataprovidersequentialcallbacks.md)
- [CGDataProviderRewindCallback](coregraphics/cgdataproviderrewindcallback.md)
- [CGDataProviderGetBytesCallback](coregraphics/cgdataprovidergetbytescallback.md)
- [CGDataProviderSkipForwardCallback](coregraphics/cgdataproviderskipforwardcallback.md)
- [CGDataProviderReleaseInfoCallback](coregraphics/cgdataproviderreleaseinfocallback.md)

### Creating Direct-Access Data Providers

- [init(directInfo:size:callbacks:)](coregraphics/cgdataprovider/init(directinfo:size:callbacks:).md)
- [init(data:)](coregraphics/cgdataprovider/init(data:).md)
- [init(url:)](coregraphics/cgdataprovider/init(url:).md)
- [init(dataInfo:data:size:releaseData:)](coregraphics/cgdataprovider/init(datainfo:data:size:releasedata:).md)
- [init(filename:)](coregraphics/cgdataprovider/init(filename:).md)
- [CGDataProviderDirectCallbacks](coregraphics/cgdataproviderdirectcallbacks.md)
- [CGDataProviderGetBytePointerCallback](coregraphics/cgdataprovidergetbytepointercallback.md)
- [CGDataProviderGetBytesAtPositionCallback](coregraphics/cgdataprovidergetbytesatpositioncallback.md)
- [CGDataProviderReleaseBytePointerCallback](coregraphics/cgdataproviderreleasebytepointercallback.md)
- [CGDataProviderReleaseInfoCallback](coregraphics/cgdataproviderreleaseinfocallback.md)
- [CGDataProviderReleaseDataCallback](coregraphics/cgdataproviderreleasedatacallback.md)

### Getting Data from a Data Provider

- [data](coregraphics/cgdataprovider/data.md)

### Working with Core Foundation Types

- [typeID](coregraphics/cgdataprovider/typeid.md)

### Instance Properties

- [info](coregraphics/cgdataprovider/info.md)

## Relationships

### Conforms To

- [Equatable](swift/equatable.md)
- [Hashable](swift/hashable.md)

## See Also

### Related Documentation

- [Quartz 2D Programming Guide](apple-archive/documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/Introduction.md)

### Utility and Support Classes

- [CGDataConsumer](coregraphics/cgdataconsumer.md)
- [CGShading](coregraphics/cgshading.md)
- [CGGradient](coregraphics/cggradient.md)
- [CGFunction](coregraphics/cgfunction.md)
- [CGPattern](coregraphics/cgpattern.md)
