2017-11-27 15:44:06 +00:00
SkSurface Reference
===
2018-10-16 14:30:28 +00:00
2018-10-08 18:57:48 +00:00
< a name = 'SkSurface' > < / a >
2018-05-16 11:07:07 +00:00
2018-10-16 14:30:28 +00:00
---
2018-10-08 18:57:48 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2018-11-09 21:04:58 +00:00
class < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > : public < a href = 'undocumented#SkRefCnt' > SkRefCnt< / a > {
2018-11-29 17:05:25 +00:00
2018-11-09 21:04:58 +00:00
static < a href = 'undocumented#sk_sp' > sk_sp< / a > < < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > > < a href = '#SkSurface_MakeRasterDirect' > MakeRasterDirect< / a > (const < a href = 'SkImageInfo_Reference#SkImageInfo' > SkImageInfo< / a > & imageInfo, void* pixels,
2018-11-29 17:05:25 +00:00
size_t rowBytes,
const < a href = 'undocumented#SkSurfaceProps' > SkSurfaceProps< / a > * surfaceProps = nullptr);
2018-11-09 21:04:58 +00:00
static < a href = 'undocumented#sk_sp' > sk_sp< / a > < < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > > < a href = '#SkSurface_MakeRasterDirectReleaseProc' > MakeRasterDirectReleaseProc< / a > (const < a href = 'SkImageInfo_Reference#SkImageInfo' > SkImageInfo< / a > & imageInfo, void* pixels,
size_t rowBytes,
void (*releaseProc)(void* pixels, void* context),
void* context, const < a href = 'undocumented#SkSurfaceProps' > SkSurfaceProps< / a > * surfaceProps = nullptr);
static < a href = 'undocumented#sk_sp' > sk_sp< / a > < < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > > < a href = '#SkSurface_MakeRaster' > MakeRaster< / a > (const < a href = 'SkImageInfo_Reference#SkImageInfo' > SkImageInfo< / a > & imageInfo, size_t rowBytes,
const < a href = 'undocumented#SkSurfaceProps' > SkSurfaceProps< / a > * surfaceProps);
static < a href = 'undocumented#sk_sp' > sk_sp< / a > < < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > > < a href = '#SkSurface_MakeRaster' > MakeRaster< / a > (const < a href = 'SkImageInfo_Reference#SkImageInfo' > SkImageInfo< / a > & imageInfo,
const < a href = 'undocumented#SkSurfaceProps' > SkSurfaceProps< / a > * props = nullptr);
static < a href = 'undocumented#sk_sp' > sk_sp< / a > < < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > > < a href = '#SkSurface_MakeRasterN32Premul' > MakeRasterN32Premul< / a > (int width, int height,
const < a href = 'undocumented#SkSurfaceProps' > SkSurfaceProps< / a > * surfaceProps = nullptr);
static < a href = 'undocumented#sk_sp' > sk_sp< / a > < < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > > < a href = '#SkSurface_MakeFromBackendTexture' > MakeFromBackendTexture< / a > (< a href = 'undocumented#GrContext' > GrContext< / a > * context,
const < a href = 'undocumented#GrBackendTexture' > GrBackendTexture< / a > & backendTexture,
< a href = 'undocumented#GrSurfaceOrigin' > GrSurfaceOrigin< / a > origin, int sampleCnt,
< a href = 'SkImageInfo_Reference#SkColorType' > SkColorType< / a > colorType,
< a href = 'undocumented#sk_sp' > sk_sp< / a > < < a href = 'undocumented#SkColorSpace' > SkColorSpace< / a > > colorSpace,
const < a href = 'undocumented#SkSurfaceProps' > SkSurfaceProps< / a > * surfaceProps);
static < a href = 'undocumented#sk_sp' > sk_sp< / a > < < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > > < a href = '#SkSurface_MakeFromBackendRenderTarget' > MakeFromBackendRenderTarget< / a > (< a href = 'undocumented#GrContext' > GrContext< / a > * context,
const < a href = 'undocumented#GrBackendRenderTarget' > GrBackendRenderTarget< / a > & backendRenderTarget,
< a href = 'undocumented#GrSurfaceOrigin' > GrSurfaceOrigin< / a > origin,
< a href = 'SkImageInfo_Reference#SkColorType' > SkColorType< / a > colorType,
< a href = 'undocumented#sk_sp' > sk_sp< / a > < < a href = 'undocumented#SkColorSpace' > SkColorSpace< / a > > colorSpace,
const < a href = 'undocumented#SkSurfaceProps' > SkSurfaceProps< / a > * surfaceProps);
static < a href = 'undocumented#sk_sp' > sk_sp< / a > < < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > > < a href = '#SkSurface_MakeFromBackendTextureAsRenderTarget' > MakeFromBackendTextureAsRenderTarget< / a > (< a href = 'undocumented#GrContext' > GrContext< / a > * context,
const < a href = 'undocumented#GrBackendTexture' > GrBackendTexture< / a > & backendTexture,
< a href = 'undocumented#GrSurfaceOrigin' > GrSurfaceOrigin< / a > origin,
int sampleCnt,
< a href = 'SkImageInfo_Reference#SkColorType' > SkColorType< / a > colorType,
< a href = 'undocumented#sk_sp' > sk_sp< / a > < < a href = 'undocumented#SkColorSpace' > SkColorSpace< / a > > colorSpace,
const < a href = 'undocumented#SkSurfaceProps' > SkSurfaceProps< / a > * surfaceProps);
static < a href = 'undocumented#sk_sp' > sk_sp< / a > < < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > > < a href = '#SkSurface_MakeRenderTarget' > MakeRenderTarget< / a > (< a href = 'undocumented#GrContext' > GrContext< / a > * context, < a href = 'undocumented#SkBudgeted' > SkBudgeted< / a > budgeted,
const < a href = 'SkImageInfo_Reference#SkImageInfo' > SkImageInfo< / a > & imageInfo,
int sampleCount, < a href = 'undocumented#GrSurfaceOrigin' > GrSurfaceOrigin< / a > surfaceOrigin,
const < a href = 'undocumented#SkSurfaceProps' > SkSurfaceProps< / a > * surfaceProps,
bool shouldCreateWithMips = false);
static < a href = 'undocumented#sk_sp' > sk_sp< / a > < < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > > < a href = '#SkSurface_MakeRenderTarget' > MakeRenderTarget< / a > (< a href = 'undocumented#GrContext' > GrContext< / a > * context, < a href = 'undocumented#SkBudgeted' > SkBudgeted< / a > budgeted,
const < a href = 'SkImageInfo_Reference#SkImageInfo' > SkImageInfo< / a > & imageInfo, int sampleCount,
const < a href = 'undocumented#SkSurfaceProps' > SkSurfaceProps< / a > * props);
static < a href = 'undocumented#sk_sp' > sk_sp< / a > < < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > > < a href = '#SkSurface_MakeRenderTarget' > MakeRenderTarget< / a > (< a href = 'undocumented#GrContext' > GrContext< / a > * context, < a href = 'undocumented#SkBudgeted' > SkBudgeted< / a > budgeted,
const < a href = 'SkImageInfo_Reference#SkImageInfo' > SkImageInfo< / a > & imageInfo);
static < a href = 'undocumented#sk_sp' > sk_sp< / a > < < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > > < a href = '#SkSurface_MakeRenderTarget' > MakeRenderTarget< / a > (< a href = 'undocumented#GrContext' > GrContext< / a > * context,
const < a href = 'undocumented#SkSurfaceCharacterization' > SkSurfaceCharacterization< / a > & characterization,
< a href = 'undocumented#SkBudgeted' > SkBudgeted< / a > budgeted);
static < a href = 'undocumented#sk_sp' > sk_sp< / a > < < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > > < a href = '#SkSurface_MakeNull' > MakeNull< / a > (int width, int height);
int < a href = '#SkSurface_width' > width()< / a > const;
int < a href = '#SkSurface_height' > height()< / a > const;
uint32_t < a href = '#SkSurface_generationID' > generationID< / a > ();
enum < a href = '#SkSurface_ContentChangeMode' > ContentChangeMode< / a > {
2018-10-08 18:57:48 +00:00
< a href = '#SkSurface_kDiscard_ContentChangeMode' > kDiscard_ContentChangeMode< / a > ,
< a href = '#SkSurface_kRetain_ContentChangeMode' > kRetain_ContentChangeMode< / a > ,
};
2018-05-16 11:07:07 +00:00
2018-11-09 21:04:58 +00:00
void < a href = '#SkSurface_notifyContentWillChange' > notifyContentWillChange< / a > (< a href = '#SkSurface_ContentChangeMode' > ContentChangeMode< / a > mode);
2018-05-16 11:07:07 +00:00
2018-11-09 21:04:58 +00:00
enum < a href = '#SkSurface_BackendHandleAccess' > BackendHandleAccess< / a > {
2018-10-08 18:57:48 +00:00
< a href = '#SkSurface_kFlushRead_BackendHandleAccess' > kFlushRead_BackendHandleAccess< / a > ,
< a href = '#SkSurface_kFlushWrite_BackendHandleAccess' > kFlushWrite_BackendHandleAccess< / a > ,
< a href = '#SkSurface_kDiscardWrite_BackendHandleAccess' > kDiscardWrite_BackendHandleAccess< / a > ,
};
2018-05-16 11:07:07 +00:00
2018-11-09 21:04:58 +00:00
< a href = 'undocumented#GrBackendTexture' > GrBackendTexture< / a > < a href = '#SkSurface_getBackendTexture' > getBackendTexture< / a > (< a href = '#SkSurface_BackendHandleAccess' > BackendHandleAccess< / a > backendHandleAccess);
< a href = 'undocumented#GrBackendRenderTarget' > GrBackendRenderTarget< / a > < a href = '#SkSurface_getBackendRenderTarget' > getBackendRenderTarget< / a > (< a href = '#SkSurface_BackendHandleAccess' > BackendHandleAccess< / a > backendHandleAccess);
2018-10-08 18:57:48 +00:00
< a href = 'SkCanvas_Reference#SkCanvas' > SkCanvas< / a > * < a href = '#SkSurface_getCanvas' > getCanvas< / a > ();
2018-11-09 21:04:58 +00:00
< a href = 'undocumented#sk_sp' > sk_sp< / a > < < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > > < a href = '#SkSurface_makeSurface' > makeSurface< / a > (const < a href = 'SkImageInfo_Reference#SkImageInfo' > SkImageInfo< / a > & imageInfo);
2018-10-08 18:57:48 +00:00
< a href = 'undocumented#sk_sp' > sk_sp< / a > < < a href = 'SkImage_Reference#SkImage' > SkImage< / a > > < a href = '#SkSurface_makeImageSnapshot' > makeImageSnapshot< / a > ();
2018-11-21 16:45:57 +00:00
< a href = 'undocumented#sk_sp' > sk_sp< / a > < < a href = 'SkImage_Reference#SkImage' > SkImage< / a > > < a href = '#SkSurface_makeImageSnapshot' > makeImageSnapshot< / a > (const < a href = 'SkIRect_Reference#SkIRect' > SkIRect< / a > & bounds);
2018-11-09 21:04:58 +00:00
void draw(< a href = 'SkCanvas_Reference#SkCanvas' > SkCanvas< / a > * < a href = 'SkCanvas_Reference#Canvas' > canvas< / a > , < a href = 'undocumented#SkScalar' > SkScalar< / a > x, < a href = 'undocumented#SkScalar' > SkScalar< / a > y, const < a href = 'SkPaint_Reference#SkPaint' > SkPaint< / a > * < a href = 'SkPaint_Reference#Paint' > paint< / a > );
bool < a href = '#SkSurface_peekPixels' > peekPixels< / a > (< a href = 'SkPixmap_Reference#SkPixmap' > SkPixmap< / a > * < a href = 'SkPixmap_Reference#Pixmap' > pixmap< / a > );
bool < a href = '#SkSurface_readPixels' > readPixels< / a > (const < a href = 'SkPixmap_Reference#SkPixmap' > SkPixmap< / a > & dst, int srcX, int srcY);
bool < a href = '#SkSurface_readPixels' > readPixels< / a > (const < a href = 'SkImageInfo_Reference#SkImageInfo' > SkImageInfo< / a > & dstInfo, void* dstPixels, size_t dstRowBytes,
int srcX, int srcY);
bool < a href = '#SkSurface_readPixels' > readPixels< / a > (const < a href = 'SkBitmap_Reference#SkBitmap' > SkBitmap< / a > & dst, int srcX, int srcY);
void < a href = '#SkSurface_writePixels' > writePixels< / a > (const < a href = 'SkPixmap_Reference#SkPixmap' > SkPixmap< / a > & src, int dstX, int dstY);
void < a href = '#SkSurface_writePixels' > writePixels< / a > (const < a href = 'SkBitmap_Reference#SkBitmap' > SkBitmap< / a > & src, int dstX, int dstY);
const < a href = 'undocumented#SkSurfaceProps' > SkSurfaceProps< / a > & < a href = '#SkSurface_props' > props()< / a > const;
void < a href = '#SkSurface_flush' > flush()< / a > ;
< a href = 'undocumented#GrSemaphoresSubmitted' > GrSemaphoresSubmitted< / a > < a href = '#SkSurface_flushAndSignalSemaphores' > flushAndSignalSemaphores< / a > (int numSemaphores,
< a href = 'undocumented#GrBackendSemaphore' > GrBackendSemaphore< / a > signalSemaphores[]);
bool wait(int numSemaphores, const < a href = 'undocumented#GrBackendSemaphore' > GrBackendSemaphore< / a > * waitSemaphores);
bool < a href = '#SkSurface_characterize' > characterize< / a > (< a href = 'undocumented#SkSurfaceCharacterization' > SkSurfaceCharacterization< / a > * characterization) const;
bool draw(< a href = 'undocumented#SkDeferredDisplayList' > SkDeferredDisplayList< / a > * deferredDisplayList);
2018-10-08 18:57:48 +00:00
};
2018-11-29 17:05:25 +00:00
2018-10-08 18:57:48 +00:00
< / pre >
2018-05-16 11:07:07 +00:00
2018-11-09 21:04:58 +00:00
< a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > is responsible for managing the pixels that a < a href = 'SkCanvas_Reference#Canvas' > canvas< / a > draws into. The pixels can be
allocated either in CPU memory, if a < a href = 'undocumented#Raster_Surface' > raster surface< / a > ; or on the GPU, for a < a href = 'undocumented#GrRenderTarget' > GrRenderTarget< / a > < a href = 'SkSurface_Reference#Surface' > surface< / a > .
< a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > takes care of allocating a < a href = 'SkCanvas_Reference#SkCanvas' > SkCanvas< / a > that will draw into the < a href = 'SkSurface_Reference#Surface' > surface< / a > . Call
< a href = 'SkSurface_Reference#Surface' > surface< / a > ->< a href = '#SkSurface_getCanvas' > getCanvas< / a > () to use that < a href = 'SkCanvas_Reference#Canvas' > canvas< / a > . The caller should not delete the returned < a href = 'SkCanvas_Reference#Canvas' > canvas< / a > ;
it is owned by < a href = 'SkSurface_Reference#Surface' > surface< / a > .
2018-11-07 19:59:03 +00:00
2018-11-09 21:04:58 +00:00
< a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > always has non-zero dimensions. If there is a request for a new < a href = 'SkSurface_Reference#Surface' > surface< / a > , and either
of the requested dimensions are zero, then nullptr will be returned.
2017-11-27 15:44:06 +00:00
2018-05-16 11:07:07 +00:00
< a name = 'SkSurface_MakeRasterDirect' > < / a >
2018-10-16 14:30:28 +00:00
---
2017-11-27 15:44:06 +00:00
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
2018-11-09 21:04:58 +00:00
static < a href = 'undocumented#sk_sp' > sk_sp< / a > < < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > > < a href = '#SkSurface_MakeRasterDirect' > MakeRasterDirect< / a > (const < a href = 'SkImageInfo_Reference#SkImageInfo' > SkImageInfo< / a > & imageInfo, void* pixels, size_t rowBytes,
const < a href = 'undocumented#SkSurfaceProps' > SkSurfaceProps< / a > * surfaceProps = nullptr)
2017-11-27 15:44:06 +00:00
< / pre >
2018-11-09 21:04:58 +00:00
Allocates raster < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > . < a href = 'SkCanvas_Reference#SkCanvas' > SkCanvas< / a > returned by < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > draws directly into < a href = '#SkSurface_MakeRasterDirect_pixels' > pixels< / a > .
2017-11-27 15:44:06 +00:00
2018-11-09 21:04:58 +00:00
< a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > is returned if all parameters are valid.
2017-11-27 15:44:06 +00:00
Valid parameters include:
info dimensions are greater than zero;
2018-11-09 21:04:58 +00:00
info contains < a href = 'SkImageInfo_Reference#SkColorType' > SkColorType< / a > and < a href = 'SkImageInfo_Reference#SkAlphaType' > SkAlphaType< / a > supported by < a href = 'undocumented#Raster_Surface' > raster surface< / a > ;
< a href = '#SkSurface_MakeRasterDirect_pixels' > pixels< / a > is not nullptr;
< a href = '#SkSurface_MakeRasterDirect_rowBytes' > rowBytes< / a > is large enough to contain info width < a href = '#SkSurface_MakeRasterDirect_pixels' > pixels< / a > of < a href = 'SkImageInfo_Reference#SkColorType' > SkColorType< / a > .
2017-11-27 15:44:06 +00:00
2018-11-09 21:04:58 +00:00
< a href = 'undocumented#Pixel' > Pixel< / a > buffer < a href = 'undocumented#Size' > size< / a > should be info height times computed < a href = '#SkSurface_MakeRasterDirect_rowBytes' > rowBytes< / a > .
2018-10-31 16:14:03 +00:00
Pixels are not initialized.
2018-11-09 21:04:58 +00:00
To access < a href = '#SkSurface_MakeRasterDirect_pixels' > pixels< / a > after drawing, call < a href = '#SkSurface_flush' > flush()< / a > or < a href = '#SkSurface_peekPixels' > peekPixels< / a > ().
2017-11-27 15:44:06 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkSurface_MakeRasterDirect_imageInfo' > < code > < strong > imageInfo< / strong > < / code > < / a > < / td >
2018-10-31 16:14:03 +00:00
< td > width, height, < a href = 'SkImageInfo_Reference#SkColorType' > SkColorType< / a > , < a href = 'SkImageInfo_Reference#SkAlphaType' > SkAlphaType< / a > , < a href = 'undocumented#SkColorSpace' > SkColorSpace< / a > ,< / td >
2018-05-16 11:07:07 +00:00
< / tr >
2018-10-31 16:14:03 +00:00
< / table >
of < a href = 'undocumented#Raster_Surface' > raster surface< / a > ; width and height must be greater than zero
### Parameters
< table > < tr > < td > < a name = 'SkSurface_MakeRasterDirect_pixels' > < code > < strong > pixels< / strong > < / code > < / a > < / td >
2018-11-09 21:04:58 +00:00
< td > pointer to destination < a href = '#SkSurface_MakeRasterDirect_pixels' > pixels< / a > buffer< / td >
2018-05-16 11:07:07 +00:00
< / tr >
< tr > < td > < a name = 'SkSurface_MakeRasterDirect_rowBytes' > < code > < strong > rowBytes< / strong > < / code > < / a > < / td >
2018-11-09 21:04:58 +00:00
< td > interval from one < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > row to the next< / td >
2018-05-16 11:07:07 +00:00
< / tr >
< tr > < td > < a name = 'SkSurface_MakeRasterDirect_surfaceProps' > < code > < strong > surfaceProps< / strong > < / code > < / a > < / td >
2018-11-09 21:04:58 +00:00
< td > LCD striping orientation and setting for < a href = 'undocumented#Device' > device< / a > independent fonts;< / td >
2017-11-27 15:44:06 +00:00
< / tr >
< / table >
2018-10-31 16:14:03 +00:00
may be nullptr
2017-11-27 15:44:06 +00:00
### Return Value
2018-11-09 21:04:58 +00:00
< a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > if all parameters are valid; otherwise, nullptr
2017-11-27 15:44:06 +00:00
### Example
< div > < fiddle-embed name = "3f5aeb870104187643197354a7f1d27a" >
#### Example Output
~~~~
---
-x-
---
~~~~
< / fiddle-embed > < / div >
### See Also
2018-11-07 19:59:03 +00:00
< a href = '#SkSurface_MakeRasterDirectReleaseProc' > MakeRasterDirectReleaseProc< / a > < a href = '#SkSurface_MakeRaster' > MakeRaster< / a > < a href = '#SkSurface_MakeRasterN32Premul' > MakeRasterN32Premul< / a > < a href = 'SkCanvas_Reference#SkCanvas' > SkCanvas< / a > ::< a href = '#SkCanvas_MakeRasterDirect' > MakeRasterDirect< / a >
2017-11-27 15:44:06 +00:00
2018-05-16 11:07:07 +00:00
< a name = 'SkSurface_MakeRasterDirectReleaseProc' > < / a >
2018-10-16 14:30:28 +00:00
---
2017-11-27 15:44:06 +00:00
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
2018-11-09 21:04:58 +00:00
static < a href = 'undocumented#sk_sp' > sk_sp< / a > < < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > > < a href = '#SkSurface_MakeRasterDirectReleaseProc' > MakeRasterDirectReleaseProc< / a > (const < a href = 'SkImageInfo_Reference#SkImageInfo' > SkImageInfo< / a > & imageInfo, void* pixels,
size_t rowBytes, void (*releaseProc) (void* pixels,
void* context) , void* context,
const < a href = 'undocumented#SkSurfaceProps' > SkSurfaceProps< / a > * surfaceProps = nullptr)
2017-11-27 15:44:06 +00:00
< / pre >
2018-11-09 21:04:58 +00:00
Allocates raster < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > . < a href = 'SkCanvas_Reference#SkCanvas' > SkCanvas< / a > returned by < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > draws directly into < a href = '#SkSurface_MakeRasterDirectReleaseProc_pixels' > pixels< / a > .
< a href = '#SkSurface_MakeRasterDirectReleaseProc_releaseProc' > releaseProc< / a > is called with < a href = '#SkSurface_MakeRasterDirectReleaseProc_pixels' > pixels< / a > and < a href = '#SkSurface_MakeRasterDirectReleaseProc_context' > context< / a > when < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > is deleted.
2017-11-27 15:44:06 +00:00
2018-11-09 21:04:58 +00:00
< a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > is returned if all parameters are valid.
2017-11-27 15:44:06 +00:00
Valid parameters include:
info dimensions are greater than zero;
2018-11-09 21:04:58 +00:00
info contains < a href = 'SkImageInfo_Reference#SkColorType' > SkColorType< / a > and < a href = 'SkImageInfo_Reference#SkAlphaType' > SkAlphaType< / a > supported by < a href = 'undocumented#Raster_Surface' > raster surface< / a > ;
< a href = '#SkSurface_MakeRasterDirectReleaseProc_pixels' > pixels< / a > is not nullptr;
< a href = '#SkSurface_MakeRasterDirectReleaseProc_rowBytes' > rowBytes< / a > is large enough to contain info width < a href = '#SkSurface_MakeRasterDirectReleaseProc_pixels' > pixels< / a > of < a href = 'SkImageInfo_Reference#SkColorType' > SkColorType< / a > .
2017-11-27 15:44:06 +00:00
2018-11-09 21:04:58 +00:00
< a href = 'undocumented#Pixel' > Pixel< / a > buffer < a href = 'undocumented#Size' > size< / a > should be info height times computed < a href = '#SkSurface_MakeRasterDirectReleaseProc_rowBytes' > rowBytes< / a > .
2018-10-31 16:14:03 +00:00
Pixels are not initialized.
2018-11-09 21:04:58 +00:00
To access < a href = '#SkSurface_MakeRasterDirectReleaseProc_pixels' > pixels< / a > after drawing, call < a href = '#SkSurface_flush' > flush()< / a > or < a href = '#SkSurface_peekPixels' > peekPixels< / a > ().
2017-11-27 15:44:06 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkSurface_MakeRasterDirectReleaseProc_imageInfo' > < code > < strong > imageInfo< / strong > < / code > < / a > < / td >
2018-10-31 16:14:03 +00:00
< td > width, height, < a href = 'SkImageInfo_Reference#SkColorType' > SkColorType< / a > , < a href = 'SkImageInfo_Reference#SkAlphaType' > SkAlphaType< / a > , < a href = 'undocumented#SkColorSpace' > SkColorSpace< / a > ,< / td >
2018-05-16 11:07:07 +00:00
< / tr >
2018-10-31 16:14:03 +00:00
< / table >
of < a href = 'undocumented#Raster_Surface' > raster surface< / a > ; width and height must be greater than zero
### Parameters
< table > < tr > < td > < a name = 'SkSurface_MakeRasterDirectReleaseProc_pixels' > < code > < strong > pixels< / strong > < / code > < / a > < / td >
2018-11-09 21:04:58 +00:00
< td > pointer to destination < a href = '#SkSurface_MakeRasterDirectReleaseProc_pixels' > pixels< / a > buffer< / td >
2018-05-16 11:07:07 +00:00
< / tr >
< tr > < td > < a name = 'SkSurface_MakeRasterDirectReleaseProc_rowBytes' > < code > < strong > rowBytes< / strong > < / code > < / a > < / td >
2018-11-09 21:04:58 +00:00
< td > interval from one < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > row to the next< / td >
2018-05-16 11:07:07 +00:00
< / tr >
< tr > < td > < a name = 'SkSurface_MakeRasterDirectReleaseProc_releaseProc' > < code > < strong > releaseProc< / strong > < / code > < / a > < / td >
2018-11-09 21:04:58 +00:00
< td > called when < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > is deleted; may be nullptr< / td >
2018-05-16 11:07:07 +00:00
< / tr >
< tr > < td > < a name = 'SkSurface_MakeRasterDirectReleaseProc_context' > < code > < strong > context< / strong > < / code > < / a > < / td >
2018-11-09 21:04:58 +00:00
< td > passed to < a href = '#SkSurface_MakeRasterDirectReleaseProc_releaseProc' > releaseProc< / a > ; may be nullptr< / td >
2018-05-16 11:07:07 +00:00
< / tr >
< tr > < td > < a name = 'SkSurface_MakeRasterDirectReleaseProc_surfaceProps' > < code > < strong > surfaceProps< / strong > < / code > < / a > < / td >
2018-11-09 21:04:58 +00:00
< td > LCD striping orientation and setting for < a href = 'undocumented#Device' > device< / a > independent fonts;< / td >
2017-11-27 15:44:06 +00:00
< / tr >
< / table >
2018-10-31 16:14:03 +00:00
may be nullptr
2017-11-27 15:44:06 +00:00
### Return Value
2018-11-09 21:04:58 +00:00
< a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > if all parameters are valid; otherwise, nullptr
2017-11-27 15:44:06 +00:00
### Example
< div > < fiddle-embed name = "8e6530b26ab4096a9a91cfaadda1c568" >
#### Example Output
~~~~
---
-x-
---
expected release context
~~~~
< / fiddle-embed > < / div >
### See Also
2018-11-07 19:59:03 +00:00
< a href = '#SkSurface_MakeRasterDirect' > MakeRasterDirect< / a > < a href = '#SkSurface_MakeRasterN32Premul' > MakeRasterN32Premul< / a > < a href = '#SkSurface_MakeRaster' > MakeRaster< / a >
2017-11-27 15:44:06 +00:00
2018-05-16 11:07:07 +00:00
< a name = 'SkSurface_MakeRaster' > < / a >
2018-10-16 14:30:28 +00:00
---
2017-11-27 15:44:06 +00:00
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
2018-11-09 21:04:58 +00:00
static < a href = 'undocumented#sk_sp' > sk_sp< / a > < < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > > < a href = '#SkSurface_MakeRaster' > MakeRaster< / a > (const < a href = 'SkImageInfo_Reference#SkImageInfo' > SkImageInfo< / a > & imageInfo, size_t rowBytes,
const < a href = 'undocumented#SkSurfaceProps' > SkSurfaceProps< / a > * surfaceProps)
2017-11-27 15:44:06 +00:00
< / pre >
2018-11-09 21:04:58 +00:00
Allocates raster < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > . < a href = 'SkCanvas_Reference#SkCanvas' > SkCanvas< / a > returned by < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > draws directly into pixels.
Allocates and zeroes < a href = 'undocumented#Pixel' > pixel< / a > memory. < a href = 'undocumented#Pixel' > Pixel< / a > memory < a href = 'undocumented#Size' > size< / a > is < a href = '#SkSurface_MakeRaster_imageInfo' > imageInfo< / a > .< a href = '#SkImageInfo_height' > height()< / a > times
< a href = '#SkSurface_MakeRaster_rowBytes' > rowBytes< / a > , or times < a href = '#SkSurface_MakeRaster_imageInfo' > imageInfo< / a > .< a href = '#SkImageInfo_minRowBytes' > minRowBytes< / a > () if < a href = '#SkSurface_MakeRaster_rowBytes' > rowBytes< / a > is zero.
< a href = 'undocumented#Pixel' > Pixel< / a > memory is deleted when < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > is deleted.
2017-11-27 15:44:06 +00:00
2018-11-09 21:04:58 +00:00
< a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > is returned if all parameters are valid.
2017-11-27 15:44:06 +00:00
Valid parameters include:
info dimensions are greater than zero;
2018-11-09 21:04:58 +00:00
info contains < a href = 'SkImageInfo_Reference#SkColorType' > SkColorType< / a > and < a href = 'SkImageInfo_Reference#SkAlphaType' > SkAlphaType< / a > supported by < a href = 'undocumented#Raster_Surface' > raster surface< / a > ;
< a href = '#SkSurface_MakeRaster_rowBytes' > rowBytes< / a > is large enough to contain info width pixels of < a href = 'SkImageInfo_Reference#SkColorType' > SkColorType< / a > , or is zero.
2017-11-27 15:44:06 +00:00
2018-11-09 21:04:58 +00:00
If < a href = '#SkSurface_MakeRaster_rowBytes' > rowBytes< / a > is not zero, subsequent images returned by < a href = '#SkSurface_makeImageSnapshot' > makeImageSnapshot< / a > ()
2018-05-16 11:07:07 +00:00
have the same < a href = '#SkSurface_MakeRaster_rowBytes' > rowBytes< / a > .
2017-11-27 15:44:06 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkSurface_MakeRaster_imageInfo' > < code > < strong > imageInfo< / strong > < / code > < / a > < / td >
2018-10-31 16:14:03 +00:00
< td > width, height, < a href = 'SkImageInfo_Reference#SkColorType' > SkColorType< / a > , < a href = 'SkImageInfo_Reference#SkAlphaType' > SkAlphaType< / a > , < a href = 'undocumented#SkColorSpace' > SkColorSpace< / a > ,< / td >
2018-05-16 11:07:07 +00:00
< / tr >
2018-10-31 16:14:03 +00:00
< / table >
of < a href = 'undocumented#Raster_Surface' > raster surface< / a > ; width and height must be greater than zero
### Parameters
< table > < tr > < td > < a name = 'SkSurface_MakeRaster_rowBytes' > < code > < strong > rowBytes< / strong > < / code > < / a > < / td >
2018-11-09 21:04:58 +00:00
< td > interval from one < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > row to the next; may be zero< / td >
2018-05-16 11:07:07 +00:00
< / tr >
< tr > < td > < a name = 'SkSurface_MakeRaster_surfaceProps' > < code > < strong > surfaceProps< / strong > < / code > < / a > < / td >
2018-11-09 21:04:58 +00:00
< td > LCD striping orientation and setting for < a href = 'undocumented#Device' > device< / a > independent fonts;< / td >
2017-11-27 15:44:06 +00:00
< / tr >
< / table >
2018-10-31 16:14:03 +00:00
may be nullptr
2017-11-27 15:44:06 +00:00
### Return Value
2018-11-09 21:04:58 +00:00
< a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > if all parameters are valid; otherwise, nullptr
2017-11-27 15:44:06 +00:00
### Example
< div > < fiddle-embed name = "a803910ada4f8733f0b62456afead55f" >
#### Example Output
~~~~
---
-x-
---
~~~~
< / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkSurface_MakeRasterDirect' > MakeRasterDirect< / a > < a href = '#SkSurface_MakeRasterN32Premul' > MakeRasterN32Premul< / a > < a href = '#SkSurface_MakeRasterDirectReleaseProc' > MakeRasterDirectReleaseProc< / a >
2017-11-27 15:44:06 +00:00
2018-05-16 11:07:07 +00:00
< a name = 'SkSurface_MakeRaster_2' > < / a >
2018-01-26 17:56:22 +00:00
2018-10-16 14:30:28 +00:00
---
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
2018-11-09 21:04:58 +00:00
static < a href = 'undocumented#sk_sp' > sk_sp< / a > < < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > > < a href = '#SkSurface_MakeRaster' > MakeRaster< / a > (const < a href = 'SkImageInfo_Reference#SkImageInfo' > SkImageInfo< / a > & imageInfo,
const < a href = 'undocumented#SkSurfaceProps' > SkSurfaceProps< / a > * props = nullptr)
2017-11-27 15:44:06 +00:00
< / pre >
2018-11-09 21:04:58 +00:00
Allocates raster < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > . < a href = 'SkCanvas_Reference#SkCanvas' > SkCanvas< / a > returned by < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > draws directly into pixels.
Allocates and zeroes < a href = 'undocumented#Pixel' > pixel< / a > memory. < a href = 'undocumented#Pixel' > Pixel< / a > memory < a href = 'undocumented#Size' > size< / a > is < a href = '#SkSurface_MakeRaster_2_imageInfo' > imageInfo< / a > .< a href = '#SkImageInfo_height' > height()< / a > times
2018-10-31 16:14:03 +00:00
< a href = '#SkSurface_MakeRaster_2_imageInfo' > imageInfo< / a > .< a href = '#SkImageInfo_minRowBytes' > minRowBytes< / a > ().
2018-11-09 21:04:58 +00:00
< a href = 'undocumented#Pixel' > Pixel< / a > memory is deleted when < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > is deleted.
2017-11-27 15:44:06 +00:00
2018-11-09 21:04:58 +00:00
< a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > is returned if all parameters are valid.
2017-11-27 15:44:06 +00:00
Valid parameters include:
info dimensions are greater than zero;
2018-11-09 21:04:58 +00:00
info contains < a href = 'SkImageInfo_Reference#SkColorType' > SkColorType< / a > and < a href = 'SkImageInfo_Reference#SkAlphaType' > SkAlphaType< / a > supported by < a href = 'undocumented#Raster_Surface' > raster surface< / a > .
2017-11-27 15:44:06 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkSurface_MakeRaster_2_imageInfo' > < code > < strong > imageInfo< / strong > < / code > < / a > < / td >
2018-10-31 16:14:03 +00:00
< td > width, height, < a href = 'SkImageInfo_Reference#SkColorType' > SkColorType< / a > , < a href = 'SkImageInfo_Reference#SkAlphaType' > SkAlphaType< / a > , < a href = 'undocumented#SkColorSpace' > SkColorSpace< / a > ,< / td >
2018-05-16 11:07:07 +00:00
< / tr >
2018-10-31 16:14:03 +00:00
< / table >
of < a href = 'undocumented#Raster_Surface' > raster surface< / a > ; width and height must be greater than zero
### Parameters
< table > < tr > < td > < a name = 'SkSurface_MakeRaster_2_props' > < code > < strong > props< / strong > < / code > < / a > < / td >
2018-11-09 21:04:58 +00:00
< td > LCD striping orientation and setting for < a href = 'undocumented#Device' > device< / a > independent fonts;< / td >
2017-11-27 15:44:06 +00:00
< / tr >
< / table >
2018-10-31 16:14:03 +00:00
may be nullptr
2017-11-27 15:44:06 +00:00
### Return Value
2018-11-09 21:04:58 +00:00
< a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > if all parameters are valid; otherwise, nullptr
2017-11-27 15:44:06 +00:00
### Example
< div > < fiddle-embed name = "c6197d204ef9e4ccfb583242651fb2a7" > < / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkSurface_MakeRasterDirect' > MakeRasterDirect< / a > < a href = '#SkSurface_MakeRasterN32Premul' > MakeRasterN32Premul< / a > < a href = '#SkSurface_MakeRasterDirectReleaseProc' > MakeRasterDirectReleaseProc< / a >
2017-11-27 15:44:06 +00:00
2018-05-16 11:07:07 +00:00
< a name = 'SkSurface_MakeRasterN32Premul' > < / a >
2018-10-16 14:30:28 +00:00
---
2017-11-27 15:44:06 +00:00
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
2018-11-09 21:04:58 +00:00
static < a href = 'undocumented#sk_sp' > sk_sp< / a > < < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > > < a href = '#SkSurface_MakeRasterN32Premul' > MakeRasterN32Premul< / a > (int width, int height,
const < a href = 'undocumented#SkSurfaceProps' > SkSurfaceProps< / a > * surfaceProps = nullptr)
2017-11-27 15:44:06 +00:00
< / pre >
2018-11-09 21:04:58 +00:00
Allocates raster < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > . < a href = 'SkCanvas_Reference#SkCanvas' > SkCanvas< / a > returned by < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > draws directly into pixels.
Allocates and zeroes < a href = 'undocumented#Pixel' > pixel< / a > memory. < a href = 'undocumented#Pixel' > Pixel< / a > memory < a href = 'undocumented#Size' > size< / a > is < a href = '#SkSurface_MakeRasterN32Premul_height' > height< / a > times < a href = '#SkSurface_MakeRasterN32Premul_width' > width< / a > times
four. < a href = 'undocumented#Pixel' > Pixel< / a > memory is deleted when < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > is deleted.
2017-11-27 15:44:06 +00:00
2018-11-09 21:04:58 +00:00
Internally, sets < a href = 'SkImageInfo_Reference#SkImageInfo' > SkImageInfo< / a > to < a href = '#SkSurface_MakeRasterN32Premul_width' > width< / a > , < a href = '#SkSurface_MakeRasterN32Premul_height' > height< / a > , native < a href = 'SkImageInfo_Reference#Color_Type' > color type< / a > , and
2018-05-16 11:07:07 +00:00
< a href = 'SkImageInfo_Reference#kPremul_SkAlphaType' > kPremul_SkAlphaType< / a > .
2017-11-27 15:44:06 +00:00
2018-11-09 21:04:58 +00:00
< a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > is returned if < a href = '#SkSurface_MakeRasterN32Premul_width' > width< / a > and < a href = '#SkSurface_MakeRasterN32Premul_height' > height< / a > are greater than zero.
2017-11-27 15:44:06 +00:00
2018-11-09 21:04:58 +00:00
Use to create < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > that matches < a href = 'SkColor_Reference#SkPMColor' > SkPMColor< / a > , the native < a href = 'undocumented#Pixel' > pixel< / a > arrangement on
the platform. < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > drawn to output < a href = 'undocumented#Device' > device< / a > skips converting its < a href = 'undocumented#Pixel' > pixel< / a > format.
2017-11-27 15:44:06 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkSurface_MakeRasterN32Premul_width' > < code > < strong > width< / strong > < / code > < / a > < / td >
2018-11-09 21:04:58 +00:00
< td > < a href = 'undocumented#Pixel' > pixel< / a > column count; must be greater than zero< / td >
2018-05-16 11:07:07 +00:00
< / tr >
< tr > < td > < a name = 'SkSurface_MakeRasterN32Premul_height' > < code > < strong > height< / strong > < / code > < / a > < / td >
2018-11-09 21:04:58 +00:00
< td > < a href = 'undocumented#Pixel' > pixel< / a > row count; must be greater than zero< / td >
2018-05-16 11:07:07 +00:00
< / tr >
< tr > < td > < a name = 'SkSurface_MakeRasterN32Premul_surfaceProps' > < code > < strong > surfaceProps< / strong > < / code > < / a > < / td >
2018-11-09 21:04:58 +00:00
< td > LCD striping orientation and setting for < a href = 'undocumented#Device' > device< / a > independent< / td >
2017-11-27 15:44:06 +00:00
< / tr >
< / table >
2018-10-31 16:14:03 +00:00
fonts; may be nullptr
2017-11-27 15:44:06 +00:00
### Return Value
2018-11-09 21:04:58 +00:00
< a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > if all parameters are valid; otherwise, nullptr
2017-11-27 15:44:06 +00:00
### Example
2018-07-11 05:28:17 +00:00
< div > < fiddle-embed name = "b932a2bd68455fb0af2e7a1ed19e36b3" >
2017-11-27 15:44:06 +00:00
#### Example Output
~~~~
---
-x-
---
~~~~
< / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkSurface_MakeRasterDirect' > MakeRasterDirect< / a > < a href = '#SkSurface_MakeRasterN32Premul' > MakeRasterN32Premul< / a > < a href = '#SkSurface_MakeRasterDirectReleaseProc' > MakeRasterDirectReleaseProc< / a >
2017-11-27 15:44:06 +00:00
2018-05-16 11:07:07 +00:00
< a name = 'SkSurface_MakeFromBackendTexture' > < / a >
2018-10-16 14:30:28 +00:00
---
2017-11-27 15:44:06 +00:00
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
2018-11-09 21:04:58 +00:00
static < a href = 'undocumented#sk_sp' > sk_sp< / a > < < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > > < a href = '#SkSurface_MakeFromBackendTexture' > MakeFromBackendTexture< / a > (< a href = 'undocumented#GrContext' > GrContext< / a > * context,
const < a href = 'undocumented#GrBackendTexture' > GrBackendTexture< / a > & backendTexture,
< a href = 'undocumented#GrSurfaceOrigin' > GrSurfaceOrigin< / a > origin, int sampleCnt,
< a href = 'SkImageInfo_Reference#SkColorType' > SkColorType< / a > colorType,
< a href = 'undocumented#sk_sp' > sk_sp< / a > < < a href = 'undocumented#SkColorSpace' > SkColorSpace< / a > > colorSpace,
const < a href = 'undocumented#SkSurfaceProps' > SkSurfaceProps< / a > * surfaceProps)
2017-11-27 15:44:06 +00:00
< / pre >
2018-11-09 21:04:58 +00:00
Wraps a GPU-backed < a href = 'undocumented#Texture' > texture< / a > into < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > . Caller must ensure the < a href = 'undocumented#Texture' > texture< / a > is
valid for the lifetime of returned < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > . If < a href = '#SkSurface_MakeFromBackendTexture_sampleCnt' > sampleCnt< / a > greater than zero,
creates an intermediate MSAA < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > which is used for drawing < a href = '#SkSurface_MakeFromBackendTexture_backendTexture' > backendTexture< / a > .
2017-11-27 15:44:06 +00:00
2018-11-09 21:04:58 +00:00
< a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > is returned if all parameters are valid. < a href = '#SkSurface_MakeFromBackendTexture_backendTexture' > backendTexture< / a > is valid if
its < a href = 'undocumented#Pixel' > pixel< / a > configuration agrees with < a href = '#SkSurface_MakeFromBackendTexture_colorSpace' > colorSpace< / a > and < a href = '#SkSurface_MakeFromBackendTexture_context' > context< / a > ; for instance, if
< a href = '#SkSurface_MakeFromBackendTexture_backendTexture' > backendTexture< / a > has an sRGB configuration, then < a href = '#SkSurface_MakeFromBackendTexture_context' > context< / a > must support sRGB,
and < a href = '#SkSurface_MakeFromBackendTexture_colorSpace' > colorSpace< / a > must be present. Further, < a href = '#SkSurface_MakeFromBackendTexture_backendTexture' > backendTexture< / a > width and height must
not exceed < a href = '#SkSurface_MakeFromBackendTexture_context' > context< / a > capabilities, and the < a href = '#SkSurface_MakeFromBackendTexture_context' > context< / a > must be able to support
2017-11-27 15:44:06 +00:00
back-end textures.
2018-01-04 21:11:51 +00:00
If SK_SUPPORT_GPU is defined as zero, has no effect and returns nullptr.
2017-11-27 15:44:06 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkSurface_MakeFromBackendTexture_context' > < code > < strong > context< / strong > < / code > < / a > < / td >
2018-10-31 16:14:03 +00:00
< td > < a href = 'undocumented#GPU_Context' > GPU context< / a > < / td >
2018-05-16 11:07:07 +00:00
< / tr >
< tr > < td > < a name = 'SkSurface_MakeFromBackendTexture_backendTexture' > < code > < strong > backendTexture< / strong > < / code > < / a > < / td >
2018-11-09 21:04:58 +00:00
< td > < a href = 'undocumented#Texture' > texture< / a > residing on GPU< / td >
2018-05-16 11:07:07 +00:00
< / tr >
< tr > < td > < a name = 'SkSurface_MakeFromBackendTexture_origin' > < code > < strong > origin< / strong > < / code > < / a > < / td >
2018-10-31 16:14:03 +00:00
< td > one of: < a href = 'undocumented#kBottomLeft_GrSurfaceOrigin' > kBottomLeft_GrSurfaceOrigin< / a > , < a href = 'undocumented#kTopLeft_GrSurfaceOrigin' > kTopLeft_GrSurfaceOrigin< / a > < / td >
2018-05-16 11:07:07 +00:00
< / tr >
< tr > < td > < a name = 'SkSurface_MakeFromBackendTexture_sampleCnt' > < code > < strong > sampleCnt< / strong > < / code > < / a > < / td >
2018-11-09 21:04:58 +00:00
< td > samples per < a href = 'undocumented#Pixel' > pixel< / a > , or 0 to disable full scene < a href = 'SkPaint_Reference#Anti_Alias' > anti-aliasing< / a > < / td >
2018-05-16 11:07:07 +00:00
< / tr >
< tr > < td > < a name = 'SkSurface_MakeFromBackendTexture_colorType' > < code > < strong > colorType< / strong > < / code > < / a > < / td >
2018-10-31 16:14:03 +00:00
< td > one of:< / td >
2018-05-16 11:07:07 +00:00
< / tr >
2018-10-31 16:14:03 +00:00
< / table >
< a href = 'SkImageInfo_Reference#kUnknown_SkColorType' > kUnknown_SkColorType< / a > , < a href = 'SkImageInfo_Reference#kAlpha_8_SkColorType' > kAlpha_8_SkColorType< / a > , < a href = 'SkImageInfo_Reference#kRGB_565_SkColorType' > kRGB_565_SkColorType< / a > ,
< a href = 'SkImageInfo_Reference#kARGB_4444_SkColorType' > kARGB_4444_SkColorType< / a > , < a href = 'SkImageInfo_Reference#kRGBA_8888_SkColorType' > kRGBA_8888_SkColorType< / a > ,
< a href = 'SkImageInfo_Reference#kRGB_888x_SkColorType' > kRGB_888x_SkColorType< / a > , < a href = 'SkImageInfo_Reference#kBGRA_8888_SkColorType' > kBGRA_8888_SkColorType< / a > ,
< a href = 'SkImageInfo_Reference#kRGBA_1010102_SkColorType' > kRGBA_1010102_SkColorType< / a > , < a href = 'SkImageInfo_Reference#kRGB_101010x_SkColorType' > kRGB_101010x_SkColorType< / a > ,
< a href = 'SkImageInfo_Reference#kGray_8_SkColorType' > kGray_8_SkColorType< / a > , < a href = 'SkImageInfo_Reference#kRGBA_F16_SkColorType' > kRGBA_F16_SkColorType< / a >
### Parameters
< table > < tr > < td > < a name = 'SkSurface_MakeFromBackendTexture_colorSpace' > < code > < strong > colorSpace< / strong > < / code > < / a > < / td >
2018-05-16 11:07:07 +00:00
< td > range of colors; may be nullptr< / td >
< / tr >
< tr > < td > < a name = 'SkSurface_MakeFromBackendTexture_surfaceProps' > < code > < strong > surfaceProps< / strong > < / code > < / a > < / td >
2018-11-09 21:04:58 +00:00
< td > LCD striping orientation and setting for < a href = 'undocumented#Device' > device< / a > independent< / td >
2017-12-20 19:53:21 +00:00
< / tr >
< / table >
2018-10-31 16:14:03 +00:00
fonts; may be nullptr
2017-12-20 19:53:21 +00:00
### Return Value
2018-11-09 21:04:58 +00:00
< a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > if all parameters are valid; otherwise, nullptr
2017-12-20 19:53:21 +00:00
### Example
2018-03-20 19:53:27 +00:00
< div > < fiddle-embed name = "d3aec071998f871809f515e58abb1b0e" gpu = "true" cpu = "true" > < / fiddle-embed > < / div >
2017-12-20 19:53:21 +00:00
### See Also
2018-11-07 19:59:03 +00:00
< a href = 'undocumented#GrBackendTexture' > GrBackendTexture< / a > < a href = '#SkSurface_MakeFromBackendRenderTarget' > MakeFromBackendRenderTarget< / a > < a href = '#SkSurface_MakeRenderTarget' > MakeRenderTarget< / a >
2017-12-20 19:53:21 +00:00
2018-05-16 11:07:07 +00:00
< a name = 'SkSurface_MakeFromBackendRenderTarget' > < / a >
2018-10-16 14:30:28 +00:00
---
2017-11-27 15:44:06 +00:00
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
2018-11-09 21:04:58 +00:00
static < a href = 'undocumented#sk_sp' > sk_sp< / a > < < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > > < a href = '#SkSurface_MakeFromBackendRenderTarget' > MakeFromBackendRenderTarget< / a > (< a href = 'undocumented#GrContext' > GrContext< / a > * context,
const < a href = 'undocumented#GrBackendRenderTarget' > GrBackendRenderTarget< / a > & backendRenderTarget,
< a href = 'undocumented#GrSurfaceOrigin' > GrSurfaceOrigin< / a > origin, < a href = 'SkImageInfo_Reference#SkColorType' > SkColorType< / a > colorType,
< a href = 'undocumented#sk_sp' > sk_sp< / a > < < a href = 'undocumented#SkColorSpace' > SkColorSpace< / a > > colorSpace,
const < a href = 'undocumented#SkSurfaceProps' > SkSurfaceProps< / a > * surfaceProps)
2017-11-27 15:44:06 +00:00
< / pre >
2018-11-09 21:04:58 +00:00
Wraps a GPU-backed buffer into < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > . Caller must ensure < a href = '#SkSurface_MakeFromBackendRenderTarget_backendRenderTarget' > backendRenderTarget< / a >
2018-10-31 16:14:03 +00:00
is valid for the lifetime of returned < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > .
2017-11-27 15:44:06 +00:00
2018-11-09 21:04:58 +00:00
< a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > is returned if all parameters are valid. < a href = '#SkSurface_MakeFromBackendRenderTarget_backendRenderTarget' > backendRenderTarget< / a > is valid if
its < a href = 'undocumented#Pixel' > pixel< / a > configuration agrees with < a href = '#SkSurface_MakeFromBackendRenderTarget_colorSpace' > colorSpace< / a > and < a href = '#SkSurface_MakeFromBackendRenderTarget_context' > context< / a > ; for instance, if
< a href = '#SkSurface_MakeFromBackendRenderTarget_backendRenderTarget' > backendRenderTarget< / a > has an sRGB configuration, then < a href = '#SkSurface_MakeFromBackendRenderTarget_context' > context< / a > must support sRGB,
and < a href = '#SkSurface_MakeFromBackendRenderTarget_colorSpace' > colorSpace< / a > must be present. Further, < a href = '#SkSurface_MakeFromBackendRenderTarget_backendRenderTarget' > backendRenderTarget< / a > width and height must
not exceed < a href = '#SkSurface_MakeFromBackendRenderTarget_context' > context< / a > capabilities, and the < a href = '#SkSurface_MakeFromBackendRenderTarget_context' > context< / a > must be able to support
2017-11-27 15:44:06 +00:00
back-end render targets.
2018-01-04 21:11:51 +00:00
If SK_SUPPORT_GPU is defined as zero, has no effect and returns nullptr.
2017-11-27 15:44:06 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkSurface_MakeFromBackendRenderTarget_context' > < code > < strong > context< / strong > < / code > < / a > < / td >
2018-10-31 16:14:03 +00:00
< td > < a href = 'undocumented#GPU_Context' > GPU context< / a > < / td >
2018-05-16 11:07:07 +00:00
< / tr >
< tr > < td > < a name = 'SkSurface_MakeFromBackendRenderTarget_backendRenderTarget' > < code > < strong > backendRenderTarget< / strong > < / code > < / a > < / td >
< td > GPU intermediate memory buffer< / td >
< / tr >
< tr > < td > < a name = 'SkSurface_MakeFromBackendRenderTarget_origin' > < code > < strong > origin< / strong > < / code > < / a > < / td >
2018-10-31 16:14:03 +00:00
< td > one of: < a href = 'undocumented#kBottomLeft_GrSurfaceOrigin' > kBottomLeft_GrSurfaceOrigin< / a > , < a href = 'undocumented#kTopLeft_GrSurfaceOrigin' > kTopLeft_GrSurfaceOrigin< / a > < / td >
2018-05-16 11:07:07 +00:00
< / tr >
< tr > < td > < a name = 'SkSurface_MakeFromBackendRenderTarget_colorType' > < code > < strong > colorType< / strong > < / code > < / a > < / td >
2018-10-31 16:14:03 +00:00
< td > one of:< / td >
2018-05-16 11:07:07 +00:00
< / tr >
2018-10-31 16:14:03 +00:00
< / table >
< a href = 'SkImageInfo_Reference#kUnknown_SkColorType' > kUnknown_SkColorType< / a > , < a href = 'SkImageInfo_Reference#kAlpha_8_SkColorType' > kAlpha_8_SkColorType< / a > ,
< a href = 'SkImageInfo_Reference#kRGB_565_SkColorType' > kRGB_565_SkColorType< / a > ,
< a href = 'SkImageInfo_Reference#kARGB_4444_SkColorType' > kARGB_4444_SkColorType< / a > , < a href = 'SkImageInfo_Reference#kRGBA_8888_SkColorType' > kRGBA_8888_SkColorType< / a > ,
< a href = 'SkImageInfo_Reference#kRGB_888x_SkColorType' > kRGB_888x_SkColorType< / a > , < a href = 'SkImageInfo_Reference#kBGRA_8888_SkColorType' > kBGRA_8888_SkColorType< / a > ,
< a href = 'SkImageInfo_Reference#kRGBA_1010102_SkColorType' > kRGBA_1010102_SkColorType< / a > , < a href = 'SkImageInfo_Reference#kRGB_101010x_SkColorType' > kRGB_101010x_SkColorType< / a > ,
< a href = 'SkImageInfo_Reference#kGray_8_SkColorType' > kGray_8_SkColorType< / a > , < a href = 'SkImageInfo_Reference#kRGBA_F16_SkColorType' > kRGBA_F16_SkColorType< / a >
### Parameters
< table > < tr > < td > < a name = 'SkSurface_MakeFromBackendRenderTarget_colorSpace' > < code > < strong > colorSpace< / strong > < / code > < / a > < / td >
2018-05-16 11:07:07 +00:00
< td > range of colors< / td >
< / tr >
< tr > < td > < a name = 'SkSurface_MakeFromBackendRenderTarget_surfaceProps' > < code > < strong > surfaceProps< / strong > < / code > < / a > < / td >
2018-11-09 21:04:58 +00:00
< td > LCD striping orientation and setting for < a href = 'undocumented#Device' > device< / a > independent< / td >
2017-12-20 19:53:21 +00:00
< / tr >
< / table >
2018-10-31 16:14:03 +00:00
fonts; may be nullptr
2017-12-20 19:53:21 +00:00
### Return Value
2018-11-09 21:04:58 +00:00
< a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > if all parameters are valid; otherwise, nullptr
2017-12-20 19:53:21 +00:00
### Example
< pre style = "padding: 1em 1em 1em 1em; font-size: 13px width: 62.5em; background-color: #f0f0f0 " >
2018-03-05 18:26:16 +00:00
2017-12-20 19:53:21 +00:00
SkPaint paint;
paint.setTextSize(32);
GrContext* context = canvas->getGrContext();
if (!context) {
canvas->drawString("GPU only!", 20, 40, paint);
return;
}
sk_sp< SkSurface > gpuSurface = SkSurface::MakeFromBackendRenderTarget(context,
backEndRenderTarget, kTopLeft_GrSurfaceOrigin, kRGBA_8888_SkColorType,
nullptr, nullptr);
auto surfaceCanvas = gpuSurface->getCanvas();
surfaceCanvas->drawString("GPU rocks!", 20, 40, paint);
sk_sp< SkImage > image(gpuSurface->makeImageSnapshot());
canvas->drawImage(image, 0, 0);
2018-03-05 18:26:16 +00:00
2017-12-20 19:53:21 +00:00
< / pre >
### See Also
2018-11-07 19:59:03 +00:00
< a href = '#SkSurface_MakeFromBackendTexture' > MakeFromBackendTexture< / a > < a href = '#SkSurface_MakeRenderTarget' > MakeRenderTarget< / a >
2017-12-20 19:53:21 +00:00
2018-05-16 11:07:07 +00:00
< a name = 'SkSurface_MakeFromBackendTextureAsRenderTarget' > < / a >
2018-10-16 14:30:28 +00:00
---
2017-11-27 15:44:06 +00:00
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
2018-11-09 21:04:58 +00:00
static < a href = 'undocumented#sk_sp' > sk_sp< / a > < < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > > < a href = '#SkSurface_MakeFromBackendTextureAsRenderTarget' > MakeFromBackendTextureAsRenderTarget< / a > (< a href = 'undocumented#GrContext' > GrContext< / a > * context,
const < a href = 'undocumented#GrBackendTexture' > GrBackendTexture< / a > & backendTexture,
< a href = 'undocumented#GrSurfaceOrigin' > GrSurfaceOrigin< / a > origin, int sampleCnt,
< a href = 'SkImageInfo_Reference#SkColorType' > SkColorType< / a > colorType, < a href = 'undocumented#sk_sp' > sk_sp< / a > < < a href = 'undocumented#SkColorSpace' > SkColorSpace< / a > > colorSpace,
const < a href = 'undocumented#SkSurfaceProps' > SkSurfaceProps< / a > * surfaceProps)
2017-11-27 15:44:06 +00:00
< / pre >
2018-11-09 21:04:58 +00:00
Wraps a GPU-backed < a href = 'undocumented#Texture' > texture< / a > into < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > . Caller must ensure < a href = '#SkSurface_MakeFromBackendTextureAsRenderTarget_backendTexture' > backendTexture< / a > is
valid for the lifetime of returned < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > . If < a href = '#SkSurface_MakeFromBackendTextureAsRenderTarget_sampleCnt' > sampleCnt< / a > greater than zero,
creates an intermediate MSAA < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > which is used for drawing < a href = '#SkSurface_MakeFromBackendTextureAsRenderTarget_backendTexture' > backendTexture< / a > .
2018-03-20 19:53:27 +00:00
2018-11-09 21:04:58 +00:00
< a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > is returned if all parameters are valid. < a href = '#SkSurface_MakeFromBackendTextureAsRenderTarget_backendTexture' > backendTexture< / a > is valid if
its < a href = 'undocumented#Pixel' > pixel< / a > configuration agrees with < a href = '#SkSurface_MakeFromBackendTextureAsRenderTarget_colorSpace' > colorSpace< / a > and < a href = '#SkSurface_MakeFromBackendTextureAsRenderTarget_context' > context< / a > ; for instance, if
< a href = '#SkSurface_MakeFromBackendTextureAsRenderTarget_backendTexture' > backendTexture< / a > has an sRGB configuration, then < a href = '#SkSurface_MakeFromBackendTextureAsRenderTarget_context' > context< / a > must support sRGB,
and < a href = '#SkSurface_MakeFromBackendTextureAsRenderTarget_colorSpace' > colorSpace< / a > must be present. Further, < a href = '#SkSurface_MakeFromBackendTextureAsRenderTarget_backendTexture' > backendTexture< / a > width and height must
not exceed < a href = '#SkSurface_MakeFromBackendTextureAsRenderTarget_context' > context< / a > capabilities.
2018-03-20 19:53:27 +00:00
2018-11-09 21:04:58 +00:00
Returned < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > is available only for drawing into, and cannot generate an
2018-10-31 16:14:03 +00:00
< a href = 'SkImage_Reference#SkImage' > SkImage< / a > .
2017-11-27 15:44:06 +00:00
2018-01-04 21:11:51 +00:00
If SK_SUPPORT_GPU is defined as zero, has no effect and returns nullptr.
2017-11-27 15:44:06 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkSurface_MakeFromBackendTextureAsRenderTarget_context' > < code > < strong > context< / strong > < / code > < / a > < / td >
2018-10-31 16:14:03 +00:00
< td > < a href = 'undocumented#GPU_Context' > GPU context< / a > < / td >
2018-05-16 11:07:07 +00:00
< / tr >
< tr > < td > < a name = 'SkSurface_MakeFromBackendTextureAsRenderTarget_backendTexture' > < code > < strong > backendTexture< / strong > < / code > < / a > < / td >
2018-11-09 21:04:58 +00:00
< td > < a href = 'undocumented#Texture' > texture< / a > residing on GPU< / td >
2018-05-16 11:07:07 +00:00
< / tr >
< tr > < td > < a name = 'SkSurface_MakeFromBackendTextureAsRenderTarget_origin' > < code > < strong > origin< / strong > < / code > < / a > < / td >
2018-10-31 16:14:03 +00:00
< td > one of: < a href = 'undocumented#kBottomLeft_GrSurfaceOrigin' > kBottomLeft_GrSurfaceOrigin< / a > , < a href = 'undocumented#kTopLeft_GrSurfaceOrigin' > kTopLeft_GrSurfaceOrigin< / a > < / td >
2018-05-16 11:07:07 +00:00
< / tr >
< tr > < td > < a name = 'SkSurface_MakeFromBackendTextureAsRenderTarget_sampleCnt' > < code > < strong > sampleCnt< / strong > < / code > < / a > < / td >
2018-11-09 21:04:58 +00:00
< td > samples per < a href = 'undocumented#Pixel' > pixel< / a > , or 0 to disable full scene < a href = 'SkPaint_Reference#Anti_Alias' > anti-aliasing< / a > < / td >
2018-05-16 11:07:07 +00:00
< / tr >
< tr > < td > < a name = 'SkSurface_MakeFromBackendTextureAsRenderTarget_colorType' > < code > < strong > colorType< / strong > < / code > < / a > < / td >
2018-10-31 16:14:03 +00:00
< td > one of:< / td >
2018-05-16 11:07:07 +00:00
< / tr >
2018-10-31 16:14:03 +00:00
< / table >
< a href = 'SkImageInfo_Reference#kUnknown_SkColorType' > kUnknown_SkColorType< / a > , < a href = 'SkImageInfo_Reference#kAlpha_8_SkColorType' > kAlpha_8_SkColorType< / a > , < a href = 'SkImageInfo_Reference#kRGB_565_SkColorType' > kRGB_565_SkColorType< / a > ,
< a href = 'SkImageInfo_Reference#kARGB_4444_SkColorType' > kARGB_4444_SkColorType< / a > , < a href = 'SkImageInfo_Reference#kRGBA_8888_SkColorType' > kRGBA_8888_SkColorType< / a > ,
< a href = 'SkImageInfo_Reference#kRGB_888x_SkColorType' > kRGB_888x_SkColorType< / a > , < a href = 'SkImageInfo_Reference#kBGRA_8888_SkColorType' > kBGRA_8888_SkColorType< / a > ,
< a href = 'SkImageInfo_Reference#kRGBA_1010102_SkColorType' > kRGBA_1010102_SkColorType< / a > , < a href = 'SkImageInfo_Reference#kRGB_101010x_SkColorType' > kRGB_101010x_SkColorType< / a > ,
< a href = 'SkImageInfo_Reference#kGray_8_SkColorType' > kGray_8_SkColorType< / a > , < a href = 'SkImageInfo_Reference#kRGBA_F16_SkColorType' > kRGBA_F16_SkColorType< / a >
### Parameters
< table > < tr > < td > < a name = 'SkSurface_MakeFromBackendTextureAsRenderTarget_colorSpace' > < code > < strong > colorSpace< / strong > < / code > < / a > < / td >
2018-05-16 11:07:07 +00:00
< td > range of colors; may be nullptr< / td >
< / tr >
< tr > < td > < a name = 'SkSurface_MakeFromBackendTextureAsRenderTarget_surfaceProps' > < code > < strong > surfaceProps< / strong > < / code > < / a > < / td >
2018-11-09 21:04:58 +00:00
< td > LCD striping orientation and setting for < a href = 'undocumented#Device' > device< / a > independent< / td >
2017-12-20 19:53:21 +00:00
< / tr >
< / table >
2018-10-31 16:14:03 +00:00
fonts; may be nullptr
2017-12-20 19:53:21 +00:00
### Return Value
2018-11-09 21:04:58 +00:00
< a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > if all parameters are valid; otherwise, nullptr
2017-12-20 19:53:21 +00:00
### Example
2018-03-20 19:53:27 +00:00
< div > < fiddle-embed name = "5e87093b9cbe95124ae14cbe77091eb7" gpu = "true" > < / fiddle-embed > < / div >
2017-12-20 19:53:21 +00:00
### See Also
2018-11-07 19:59:03 +00:00
< a href = '#SkSurface_MakeFromBackendRenderTarget' > MakeFromBackendRenderTarget< / a > < a href = '#SkSurface_MakeRenderTarget' > MakeRenderTarget< / a >
2017-12-20 19:53:21 +00:00
2018-05-16 11:07:07 +00:00
< a name = 'SkSurface_MakeRenderTarget' > < / a >
2018-10-16 14:30:28 +00:00
---
2017-11-27 15:44:06 +00:00
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
2018-11-09 21:04:58 +00:00
static < a href = 'undocumented#sk_sp' > sk_sp< / a > < < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > > < a href = '#SkSurface_MakeRenderTarget' > MakeRenderTarget< / a > (< a href = 'undocumented#GrContext' > GrContext< / a > * context, < a href = 'undocumented#SkBudgeted' > SkBudgeted< / a > budgeted,
const < a href = 'SkImageInfo_Reference#SkImageInfo' > SkImageInfo< / a > & imageInfo, int sampleCount,
< a href = 'undocumented#GrSurfaceOrigin' > GrSurfaceOrigin< / a > surfaceOrigin,
const < a href = 'undocumented#SkSurfaceProps' > SkSurfaceProps< / a > * surfaceProps,
bool shouldCreateWithMips = false)
2017-11-27 15:44:06 +00:00
< / pre >
2018-11-09 21:04:58 +00:00
Returns < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > on GPU indicated by < a href = '#SkSurface_MakeRenderTarget_context' > context< / a > . Allocates memory for
pixels, based on the width, height, and < a href = 'SkImageInfo_Reference#SkColorType' > SkColorType< / a > in < a href = 'SkImageInfo_Reference#SkImageInfo' > SkImageInfo< / a > . < a href = '#SkSurface_MakeRenderTarget_budgeted' > budgeted< / a >
2018-05-16 11:07:07 +00:00
selects whether allocation for pixels is tracked by < a href = '#SkSurface_MakeRenderTarget_context' > context< / a > . < a href = '#SkSurface_MakeRenderTarget_imageInfo' > imageInfo< / a >
2018-11-09 21:04:58 +00:00
describes the < a href = 'undocumented#Pixel' > pixel< / a > format in < a href = 'SkImageInfo_Reference#SkColorType' > SkColorType< / a > , and transparency in
< a href = 'SkImageInfo_Reference#SkAlphaType' > SkAlphaType< / a > , and < a href = 'SkColor_Reference#Color' > color< / a > matching in < a href = 'undocumented#SkColorSpace' > SkColorSpace< / a > .
2017-11-27 15:44:06 +00:00
2018-11-09 21:04:58 +00:00
< a href = '#SkSurface_MakeRenderTarget_sampleCount' > sampleCount< / a > requests the number of samples per < a href = 'undocumented#Pixel' > pixel< / a > .
2018-10-31 16:14:03 +00:00
Pass zero to disable < a href = 'undocumented#Multi_Sample_Anti_Aliasing' > multi-sample anti-aliasing< / a > . The request is rounded
2017-11-27 15:44:06 +00:00
up to the next supported count, or rounded down if it is larger than the
maximum supported count.
2018-11-09 21:04:58 +00:00
< a href = '#SkSurface_MakeRenderTarget_surfaceOrigin' > surfaceOrigin< / a > pins either the top-left or the bottom-left corner to the origin.
2017-11-27 15:44:06 +00:00
2018-11-09 21:04:58 +00:00
< a href = '#SkSurface_MakeRenderTarget_shouldCreateWithMips' > shouldCreateWithMips< / a > hints that < a href = 'SkImage_Reference#SkImage' > SkImage< / a > returned by < a href = '#SkSurface_makeImageSnapshot' > makeImageSnapshot< / a > () is < a href = 'undocumented#Mip_Map' > mip map< / a > .
2017-11-27 15:44:06 +00:00
2018-01-04 21:11:51 +00:00
If SK_SUPPORT_GPU is defined as zero, has no effect and returns nullptr.
2017-11-27 15:44:06 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkSurface_MakeRenderTarget_context' > < code > < strong > context< / strong > < / code > < / a > < / td >
2018-10-31 16:14:03 +00:00
< td > < a href = 'undocumented#GPU_Context' > GPU context< / a > < / td >
2018-05-16 11:07:07 +00:00
< / tr >
< tr > < td > < a name = 'SkSurface_MakeRenderTarget_budgeted' > < code > < strong > budgeted< / strong > < / code > < / a > < / td >
2018-10-31 16:14:03 +00:00
< td > one of: < a href = 'undocumented#SkBudgeted' > SkBudgeted< / a > ::< a href = '#SkBudgeted_kNo' > kNo< / a > , < a href = 'undocumented#SkBudgeted' > SkBudgeted< / a > ::< a href = '#SkBudgeted_kYes' > kYes< / a > < / td >
2018-05-16 11:07:07 +00:00
< / tr >
< tr > < td > < a name = 'SkSurface_MakeRenderTarget_imageInfo' > < code > < strong > imageInfo< / strong > < / code > < / a > < / td >
2018-10-31 16:14:03 +00:00
< td > width, height, < a href = 'SkImageInfo_Reference#SkColorType' > SkColorType< / a > , < a href = 'SkImageInfo_Reference#SkAlphaType' > SkAlphaType< / a > , < a href = 'undocumented#SkColorSpace' > SkColorSpace< / a > ;< / td >
2018-05-16 11:07:07 +00:00
< / tr >
2018-10-31 16:14:03 +00:00
< / table >
width, or height, or both, may be zero
### Parameters
< table > < tr > < td > < a name = 'SkSurface_MakeRenderTarget_sampleCount' > < code > < strong > sampleCount< / strong > < / code > < / a > < / td >
2018-11-09 21:04:58 +00:00
< td > samples per < a href = 'undocumented#Pixel' > pixel< / a > , or 0 to disable full scene < a href = 'SkPaint_Reference#Anti_Alias' > anti-aliasing< / a > < / td >
2018-05-16 11:07:07 +00:00
< / tr >
< tr > < td > < a name = 'SkSurface_MakeRenderTarget_surfaceOrigin' > < code > < strong > surfaceOrigin< / strong > < / code > < / a > < / td >
2018-10-31 16:14:03 +00:00
< td > one of: < a href = 'undocumented#kBottomLeft_GrSurfaceOrigin' > kBottomLeft_GrSurfaceOrigin< / a > , < a href = 'undocumented#kTopLeft_GrSurfaceOrigin' > kTopLeft_GrSurfaceOrigin< / a > < / td >
2018-05-16 11:07:07 +00:00
< / tr >
< tr > < td > < a name = 'SkSurface_MakeRenderTarget_surfaceProps' > < code > < strong > surfaceProps< / strong > < / code > < / a > < / td >
2018-11-09 21:04:58 +00:00
< td > LCD striping orientation and setting for < a href = 'undocumented#Device' > device< / a > independent< / td >
2018-05-16 11:07:07 +00:00
< / tr >
2018-10-31 16:14:03 +00:00
< / table >
fonts; may be nullptr
### Parameters
< table > < tr > < td > < a name = 'SkSurface_MakeRenderTarget_shouldCreateWithMips' > < code > < strong > shouldCreateWithMips< / strong > < / code > < / a > < / td >
2018-11-09 21:04:58 +00:00
< td > hint that < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > will host < a href = 'undocumented#Mip_Map' > mip map< / a > images< / td >
2017-11-27 15:44:06 +00:00
< / tr >
< / table >
### Return Value
2018-11-09 21:04:58 +00:00
< a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > if all parameters are valid; otherwise, nullptr
2017-11-27 15:44:06 +00:00
### Example
2017-12-11 21:03:17 +00:00
< div > < fiddle-embed name = "67b6609471a3f1ed0f4b1657004cdecb" gpu = "true" > < / fiddle-embed > < / div >
2017-11-27 15:44:06 +00:00
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkSurface_MakeFromBackendRenderTarget' > MakeFromBackendRenderTarget< / a > < a href = '#SkSurface_MakeFromBackendTextureAsRenderTarget' > MakeFromBackendTextureAsRenderTarget< / a >
2017-11-27 15:44:06 +00:00
2018-05-16 11:07:07 +00:00
< a name = 'SkSurface_MakeRenderTarget_2' > < / a >
2018-01-26 17:56:22 +00:00
2018-10-16 14:30:28 +00:00
---
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
2018-11-09 21:04:58 +00:00
static < a href = 'undocumented#sk_sp' > sk_sp< / a > < < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > > < a href = '#SkSurface_MakeRenderTarget' > MakeRenderTarget< / a > (< a href = 'undocumented#GrContext' > GrContext< / a > * context, < a href = 'undocumented#SkBudgeted' > SkBudgeted< / a > budgeted,
const < a href = 'SkImageInfo_Reference#SkImageInfo' > SkImageInfo< / a > & imageInfo, int sampleCount,
const < a href = 'undocumented#SkSurfaceProps' > SkSurfaceProps< / a > * props)
2017-11-27 15:44:06 +00:00
< / pre >
2018-11-09 21:04:58 +00:00
Returns < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > on GPU indicated by < a href = '#SkSurface_MakeRenderTarget_2_context' > context< / a > . Allocates memory for
pixels, based on the width, height, and < a href = 'SkImageInfo_Reference#SkColorType' > SkColorType< / a > in < a href = 'SkImageInfo_Reference#SkImageInfo' > SkImageInfo< / a > . < a href = '#SkSurface_MakeRenderTarget_2_budgeted' > budgeted< / a >
2018-05-16 11:07:07 +00:00
selects whether allocation for pixels is tracked by < a href = '#SkSurface_MakeRenderTarget_2_context' > context< / a > . < a href = '#SkSurface_MakeRenderTarget_2_imageInfo' > imageInfo< / a >
2018-11-09 21:04:58 +00:00
describes the < a href = 'undocumented#Pixel' > pixel< / a > format in < a href = 'SkImageInfo_Reference#SkColorType' > SkColorType< / a > , and transparency in
< a href = 'SkImageInfo_Reference#SkAlphaType' > SkAlphaType< / a > , and < a href = 'SkColor_Reference#Color' > color< / a > matching in < a href = 'undocumented#SkColorSpace' > SkColorSpace< / a > .
2017-11-27 15:44:06 +00:00
2018-11-09 21:04:58 +00:00
< a href = '#SkSurface_MakeRenderTarget_2_sampleCount' > sampleCount< / a > requests the number of samples per < a href = 'undocumented#Pixel' > pixel< / a > .
2018-10-31 16:14:03 +00:00
Pass zero to disable < a href = 'undocumented#Multi_Sample_Anti_Aliasing' > multi-sample anti-aliasing< / a > . The request is rounded
2017-11-27 15:44:06 +00:00
up to the next supported count, or rounded down if it is larger than the
maximum supported count.
2018-11-09 21:04:58 +00:00
< a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > bottom-left corner is pinned to the origin.
2017-11-27 15:44:06 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkSurface_MakeRenderTarget_2_context' > < code > < strong > context< / strong > < / code > < / a > < / td >
2018-10-31 16:14:03 +00:00
< td > < a href = 'undocumented#GPU_Context' > GPU context< / a > < / td >
2018-05-16 11:07:07 +00:00
< / tr >
< tr > < td > < a name = 'SkSurface_MakeRenderTarget_2_budgeted' > < code > < strong > budgeted< / strong > < / code > < / a > < / td >
2018-10-31 16:14:03 +00:00
< td > one of: < a href = 'undocumented#SkBudgeted' > SkBudgeted< / a > ::< a href = '#SkBudgeted_kNo' > kNo< / a > , < a href = 'undocumented#SkBudgeted' > SkBudgeted< / a > ::< a href = '#SkBudgeted_kYes' > kYes< / a > < / td >
2018-05-16 11:07:07 +00:00
< / tr >
< tr > < td > < a name = 'SkSurface_MakeRenderTarget_2_imageInfo' > < code > < strong > imageInfo< / strong > < / code > < / a > < / td >
2018-10-31 16:14:03 +00:00
< td > width, height, < a href = 'SkImageInfo_Reference#SkColorType' > SkColorType< / a > , < a href = 'SkImageInfo_Reference#SkAlphaType' > SkAlphaType< / a > , < a href = 'undocumented#SkColorSpace' > SkColorSpace< / a > ,< / td >
2018-05-16 11:07:07 +00:00
< / tr >
2018-10-31 16:14:03 +00:00
< / table >
of < a href = 'undocumented#Raster_Surface' > raster surface< / a > ; width, or height, or both, may be zero
### Parameters
< table > < tr > < td > < a name = 'SkSurface_MakeRenderTarget_2_sampleCount' > < code > < strong > sampleCount< / strong > < / code > < / a > < / td >
2018-11-09 21:04:58 +00:00
< td > samples per < a href = 'undocumented#Pixel' > pixel< / a > , or 0 to disable < a href = 'undocumented#Multi_Sample_Anti_Aliasing' > multi-sample anti-aliasing< / a > < / td >
2018-05-16 11:07:07 +00:00
< / tr >
< tr > < td > < a name = 'SkSurface_MakeRenderTarget_2_props' > < code > < strong > props< / strong > < / code > < / a > < / td >
2018-11-09 21:04:58 +00:00
< td > LCD striping orientation and setting for < a href = 'undocumented#Device' > device< / a > independent< / td >
2017-11-27 15:44:06 +00:00
< / tr >
< / table >
2018-10-31 16:14:03 +00:00
fonts; may be nullptr
2017-11-27 15:44:06 +00:00
### Return Value
2018-11-09 21:04:58 +00:00
< a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > if all parameters are valid; otherwise, nullptr
2017-11-27 15:44:06 +00:00
### Example
2018-11-07 19:59:03 +00:00
< div > < fiddle-embed name = "640321e8ecfb3f9329f3bc6e1f02485f" gpu = "true" cpu = "true" > < div > < a href = 'SkPaint_Reference#LCD_Text' > LCD text< / a > takes advantage of raster striping to improve resolution. Only one of
2018-02-06 14:41:53 +00:00
the four combinations is correct, depending on whether monitor LCD striping is
2017-11-27 15:44:06 +00:00
horizontal or vertical, and whether the order of the stripes is red blue green
2018-03-05 18:26:16 +00:00
or red green blue.
< / div > < / fiddle-embed > < / div >
2017-11-27 15:44:06 +00:00
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkSurface_MakeFromBackendRenderTarget' > MakeFromBackendRenderTarget< / a > < a href = '#SkSurface_MakeFromBackendTextureAsRenderTarget' > MakeFromBackendTextureAsRenderTarget< / a >
2017-11-27 15:44:06 +00:00
2018-05-16 11:07:07 +00:00
< a name = 'SkSurface_MakeRenderTarget_3' > < / a >
2018-01-26 17:56:22 +00:00
2018-10-16 14:30:28 +00:00
---
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
2018-11-09 21:04:58 +00:00
static < a href = 'undocumented#sk_sp' > sk_sp< / a > < < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > > < a href = '#SkSurface_MakeRenderTarget' > MakeRenderTarget< / a > (< a href = 'undocumented#GrContext' > GrContext< / a > * context, < a href = 'undocumented#SkBudgeted' > SkBudgeted< / a > budgeted,
const < a href = 'SkImageInfo_Reference#SkImageInfo' > SkImageInfo< / a > & imageInfo)
2017-11-27 15:44:06 +00:00
< / pre >
2018-11-09 21:04:58 +00:00
Returns < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > on GPU indicated by < a href = '#SkSurface_MakeRenderTarget_3_context' > context< / a > . Allocates memory for
pixels, based on the width, height, and < a href = 'SkImageInfo_Reference#SkColorType' > SkColorType< / a > in < a href = 'SkImageInfo_Reference#SkImageInfo' > SkImageInfo< / a > . < a href = '#SkSurface_MakeRenderTarget_3_budgeted' > budgeted< / a >
2018-05-16 11:07:07 +00:00
selects whether allocation for pixels is tracked by < a href = '#SkSurface_MakeRenderTarget_3_context' > context< / a > . < a href = '#SkSurface_MakeRenderTarget_3_imageInfo' > imageInfo< / a >
2018-11-09 21:04:58 +00:00
describes the < a href = 'undocumented#Pixel' > pixel< / a > format in < a href = 'SkImageInfo_Reference#SkColorType' > SkColorType< / a > , and transparency in
< a href = 'SkImageInfo_Reference#SkAlphaType' > SkAlphaType< / a > , and < a href = 'SkColor_Reference#Color' > color< / a > matching in < a href = 'undocumented#SkColorSpace' > SkColorSpace< / a > .
2017-11-27 15:44:06 +00:00
2018-11-09 21:04:58 +00:00
< a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > bottom-left corner is pinned to the origin.
2017-11-27 15:44:06 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkSurface_MakeRenderTarget_3_context' > < code > < strong > context< / strong > < / code > < / a > < / td >
2018-10-31 16:14:03 +00:00
< td > < a href = 'undocumented#GPU_Context' > GPU context< / a > < / td >
2018-05-16 11:07:07 +00:00
< / tr >
< tr > < td > < a name = 'SkSurface_MakeRenderTarget_3_budgeted' > < code > < strong > budgeted< / strong > < / code > < / a > < / td >
2018-10-31 16:14:03 +00:00
< td > one of: < a href = 'undocumented#SkBudgeted' > SkBudgeted< / a > ::< a href = '#SkBudgeted_kNo' > kNo< / a > , < a href = 'undocumented#SkBudgeted' > SkBudgeted< / a > ::< a href = '#SkBudgeted_kYes' > kYes< / a > < / td >
2018-05-16 11:07:07 +00:00
< / tr >
< tr > < td > < a name = 'SkSurface_MakeRenderTarget_3_imageInfo' > < code > < strong > imageInfo< / strong > < / code > < / a > < / td >
2018-10-31 16:14:03 +00:00
< td > width, height, < a href = 'SkImageInfo_Reference#SkColorType' > SkColorType< / a > , < a href = 'SkImageInfo_Reference#SkAlphaType' > SkAlphaType< / a > , < a href = 'undocumented#SkColorSpace' > SkColorSpace< / a > ,< / td >
2017-11-27 15:44:06 +00:00
< / tr >
< / table >
2018-10-31 16:14:03 +00:00
of < a href = 'undocumented#Raster_Surface' > raster surface< / a > ; width, or height, or both, may be zero
2017-11-27 15:44:06 +00:00
### Return Value
2018-11-09 21:04:58 +00:00
< a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > if all parameters are valid; otherwise, nullptr
2017-11-27 15:44:06 +00:00
### Example
2018-07-19 03:49:13 +00:00
< div > < fiddle-embed name = "5c7629c15e9ac93f098335e72560fa2e" gpu = "true" > < / fiddle-embed > < / div >
2017-11-27 15:44:06 +00:00
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkSurface_MakeFromBackendRenderTarget' > MakeFromBackendRenderTarget< / a > < a href = '#SkSurface_MakeFromBackendTextureAsRenderTarget' > MakeFromBackendTextureAsRenderTarget< / a >
2017-11-27 15:44:06 +00:00
2018-05-16 11:07:07 +00:00
< a name = 'SkSurface_MakeRenderTarget_4' > < / a >
2018-03-31 06:19:35 +00:00
2018-10-16 14:30:28 +00:00
---
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
2018-11-09 21:04:58 +00:00
static < a href = 'undocumented#sk_sp' > sk_sp< / a > < < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > > < a href = '#SkSurface_MakeRenderTarget' > MakeRenderTarget< / a > (< a href = 'undocumented#GrContext' > GrContext< / a > * context,
const < a href = 'undocumented#SkSurfaceCharacterization' > SkSurfaceCharacterization< / a > & characterization,
< a href = 'undocumented#SkBudgeted' > SkBudgeted< / a > budgeted)
2018-03-31 06:19:35 +00:00
< / pre >
2018-11-09 21:04:58 +00:00
Returns < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > on GPU indicated by < a href = '#SkSurface_MakeRenderTarget_4_context' > context< / a > that is compatible with the provided
< a href = '#SkSurface_MakeRenderTarget_4_characterization' > characterization< / a > . < a href = '#SkSurface_MakeRenderTarget_4_budgeted' > budgeted< / a > selects whether allocation for pixels is tracked by < a href = '#SkSurface_MakeRenderTarget_4_context' > context< / a > .
2018-03-31 06:19:35 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkSurface_MakeRenderTarget_4_context' > < code > < strong > context< / strong > < / code > < / a > < / td >
2018-10-31 16:14:03 +00:00
< td > < a href = 'undocumented#GPU_Context' > GPU context< / a > < / td >
2018-05-16 11:07:07 +00:00
< / tr >
< tr > < td > < a name = 'SkSurface_MakeRenderTarget_4_characterization' > < code > < strong > characterization< / strong > < / code > < / a > < / td >
2018-10-31 16:14:03 +00:00
< td > description of the desired < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > < / td >
2018-05-16 11:07:07 +00:00
< / tr >
< tr > < td > < a name = 'SkSurface_MakeRenderTarget_4_budgeted' > < code > < strong > budgeted< / strong > < / code > < / a > < / td >
2018-10-31 16:14:03 +00:00
< td > one of: < a href = 'undocumented#SkBudgeted' > SkBudgeted< / a > ::< a href = '#SkBudgeted_kNo' > kNo< / a > , < a href = 'undocumented#SkBudgeted' > SkBudgeted< / a > ::< a href = '#SkBudgeted_kYes' > kYes< / a > < / td >
2018-03-31 06:19:35 +00:00
< / tr >
< / table >
### Return Value
2018-11-09 21:04:58 +00:00
< a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > if all parameters are valid; otherwise, nullptr
2018-03-31 06:19:35 +00:00
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkSurface_MakeFromBackendRenderTarget' > MakeFromBackendRenderTarget< / a > < a href = '#SkSurface_MakeFromBackendTextureAsRenderTarget' > MakeFromBackendTextureAsRenderTarget< / a >
2018-03-31 06:19:35 +00:00
2018-05-16 11:07:07 +00:00
< a name = 'SkSurface_MakeNull' > < / a >
2018-10-16 14:30:28 +00:00
---
2017-11-27 15:44:06 +00:00
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
2018-11-09 21:04:58 +00:00
static < a href = 'undocumented#sk_sp' > sk_sp< / a > < < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > > < a href = '#SkSurface_MakeNull' > MakeNull< / a > (int width, int height)
2017-11-27 15:44:06 +00:00
< / pre >
2018-11-09 21:04:58 +00:00
Returns < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > without backing pixels. Drawing to < a href = 'SkCanvas_Reference#SkCanvas' > SkCanvas< / a > returned from < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a >
has no effect. Calling < a href = '#SkSurface_makeImageSnapshot' > makeImageSnapshot< / a > () on returned < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > returns nullptr.
2017-11-27 15:44:06 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkSurface_MakeNull_width' > < code > < strong > width< / strong > < / code > < / a > < / td >
< td > one or greater< / td >
< / tr >
< tr > < td > < a name = 'SkSurface_MakeNull_height' > < code > < strong > height< / strong > < / code > < / a > < / td >
< td > one or greater< / td >
2017-11-27 15:44:06 +00:00
< / tr >
< / table >
### Return Value
2018-11-09 21:04:58 +00:00
< a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > if < a href = '#SkSurface_MakeNull_width' > width< / a > and < a href = '#SkSurface_MakeNull_height' > height< / a > are positive; otherwise, nullptr
2017-11-27 15:44:06 +00:00
### Example
2018-07-04 05:33:26 +00:00
< div > < fiddle-embed name = "99a54b814ccab7d2b1143c88581649ff" >
2017-11-27 15:44:06 +00:00
#### Example Output
~~~~
SkSurface::MakeNull(0, 0) == nullptr
surf->makeImageSnapshot() == nullptr
~~~~
< / fiddle-embed > < / div >
### See Also
2018-11-07 19:59:03 +00:00
< a href = '#SkSurface_MakeRaster' > MakeRaster< / a > < a href = '#SkSurface_MakeRenderTarget' > MakeRenderTarget< / a >
2017-11-27 15:44:06 +00:00
2018-10-16 14:30:28 +00:00
< a name = 'Property' > < / a >
2018-05-16 11:07:07 +00:00
< a name = 'SkSurface_width' > < / a >
2018-10-16 14:30:28 +00:00
---
2017-11-27 15:44:06 +00:00
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
2018-11-29 17:05:25 +00:00
int < a href = '#SkSurface_width' > width()< / a > const
2017-11-27 15:44:06 +00:00
< / pre >
2018-11-09 21:04:58 +00:00
Returns < a href = 'undocumented#Pixel' > pixel< / a > count in each row; may be zero or greater.
2017-11-27 15:44:06 +00:00
### Return Value
2018-11-09 21:04:58 +00:00
number of < a href = 'undocumented#Pixel' > pixel< / a > columns
2017-11-27 15:44:06 +00:00
### Example
< div > < fiddle-embed name = "df066b56dd97c7c589fd2bb6a2539de8" >
#### Example Output
~~~~
surface width=37 canvas width=37
~~~~
< / fiddle-embed > < / div >
### See Also
2018-11-07 19:59:03 +00:00
< a href = '#SkSurface_height' > height()< / a >
2017-11-27 15:44:06 +00:00
2018-05-16 11:07:07 +00:00
< a name = 'SkSurface_height' > < / a >
2018-10-16 14:30:28 +00:00
---
2017-11-27 15:44:06 +00:00
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
2018-11-29 17:05:25 +00:00
int < a href = '#SkSurface_height' > height()< / a > const
2017-11-27 15:44:06 +00:00
< / pre >
2018-11-09 21:04:58 +00:00
Returns < a href = 'undocumented#Pixel' > pixel< / a > row count; may be zero or greater.
2017-11-27 15:44:06 +00:00
### Return Value
2018-11-09 21:04:58 +00:00
number of < a href = 'undocumented#Pixel' > pixel< / a > rows
2017-11-27 15:44:06 +00:00
### Example
< div > < fiddle-embed name = "20571cc23e3146deaa09046b64cc0aef" >
#### Example Output
~~~~
surface height=1000 canvas height=1000
~~~~
< / fiddle-embed > < / div >
### See Also
2018-11-07 19:59:03 +00:00
< a href = '#SkSurface_width' > width()< / a >
2017-11-27 15:44:06 +00:00
2018-05-16 11:07:07 +00:00
< a name = 'SkSurface_generationID' > < / a >
2018-10-16 14:30:28 +00:00
---
2017-11-27 15:44:06 +00:00
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
uint32_t < a href = '#SkSurface_generationID' > generationID< / a > ()
2017-11-27 15:44:06 +00:00
< / pre >
2018-11-09 21:04:58 +00:00
Returns unique value identifying the content of < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > . Returned value changes
2017-11-27 15:44:06 +00:00
each time the content changes. Content is changed by drawing, or by calling
2018-10-31 16:14:03 +00:00
< a href = '#SkSurface_notifyContentWillChange' > notifyContentWillChange< / a > ().
2017-11-27 15:44:06 +00:00
### Return Value
unique content identifier
### Example
2018-07-19 14:50:44 +00:00
< div > < fiddle-embed name = "be9574c4a14f891e1abb4ec2b1e51d6c" >
2017-11-27 15:44:06 +00:00
#### Example Output
~~~~
surface generationID: 1
surface generationID: 2
surface generationID: 3
~~~~
< / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkSurface_notifyContentWillChange' > notifyContentWillChange< / a > < a href = '#SkSurface_ContentChangeMode' > ContentChangeMode< / a > < a href = '#SkSurface_getCanvas' > getCanvas< / a >
2017-11-27 15:44:06 +00:00
2018-10-16 14:30:28 +00:00
< a name = 'SkSurface_ContentChangeMode' > < / a >
2017-11-27 15:44:06 +00:00
2018-10-16 14:30:28 +00:00
---
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2018-05-16 11:07:07 +00:00
enum < a href = '#SkSurface_ContentChangeMode' > ContentChangeMode< / a > {
2018-10-08 18:57:48 +00:00
< a href = '#SkSurface_kDiscard_ContentChangeMode' > kDiscard_ContentChangeMode< / a > ,
< a href = '#SkSurface_kRetain_ContentChangeMode' > kRetain_ContentChangeMode< / a > ,
2018-04-03 12:43:27 +00:00
};
2018-03-05 18:26:16 +00:00
< / pre >
2017-11-27 15:44:06 +00:00
2018-11-09 21:04:58 +00:00
< a href = '#SkSurface_ContentChangeMode' > ContentChangeMode< / a > members are parameters to < a href = '#SkSurface_notifyContentWillChange' > notifyContentWillChange< / a > .
2017-11-27 15:44:06 +00:00
### Constants
2018-05-16 11:07:07 +00:00
< table style = 'border-collapse: collapse; width: 62.5em' >
< tr >< th style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > Const</ th >
< th style = 'text-align: center; border: 2px solid #dddddd ; padding: 8px; ' > Value</ th >
< th style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > Description</ th ></ tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a name = 'SkSurface_kDiscard_ContentChangeMode' >< code > SkSurface::kDiscard_ContentChangeMode</ code ></ a ></ td >
< td style = 'text-align: center; border: 2px solid #dddddd ; padding: 8px; ' > #Line # discards surface on change ##</ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >
2018-11-09 21:04:58 +00:00
Pass to < a href = '#SkSurface_notifyContentWillChange' > notifyContentWillChange< / a > to discard < a href = 'SkSurface_Reference#Surface' > surface< / a > contents when
the < a href = 'SkSurface_Reference#Surface' > surface< / a > is cleared or overwritten.
2018-03-05 18:26:16 +00:00
< / td >
2017-11-27 15:44:06 +00:00
< / tr >
< tr >
2018-05-16 11:07:07 +00:00
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a name = 'SkSurface_kRetain_ContentChangeMode' >< code > SkSurface::kRetain_ContentChangeMode</ code ></ a ></ td >
< td style = 'text-align: center; border: 2px solid #dddddd ; padding: 8px; ' > #Line # preserves surface on change ##</ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >
2018-11-09 21:04:58 +00:00
Pass to < a href = '#SkSurface_notifyContentWillChange' > notifyContentWillChange< / a > when to preserve < a href = 'SkSurface_Reference#Surface' > surface< / a > contents.
If a snapshot has been generated, this copies the < a href = 'SkSurface_Reference#Surface' > Surface< / a > contents.
2018-03-05 18:26:16 +00:00
< / td >
2017-11-27 15:44:06 +00:00
< / tr >
< / table >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkSurface_notifyContentWillChange' > notifyContentWillChange< / a > < a href = '#SkSurface_generationID' > generationID< / a >
2017-11-27 15:44:06 +00:00
2018-10-16 14:30:28 +00:00
< a name = 'Miscellaneous' > < / a >
2017-11-27 15:44:06 +00:00
2018-05-16 11:07:07 +00:00
< a name = 'SkSurface_notifyContentWillChange' > < / a >
2018-10-16 14:30:28 +00:00
---
2017-11-27 15:44:06 +00:00
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
2018-11-09 21:04:58 +00:00
void < a href = '#SkSurface_notifyContentWillChange' > notifyContentWillChange< / a > (< a href = '#SkSurface_ContentChangeMode' > ContentChangeMode< / a > mode)
2017-11-27 15:44:06 +00:00
< / pre >
2018-11-15 13:25:12 +00:00
Notifies that < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > contents will be changed by code outside of Skia.
Subsequent calls to < a href = '#SkSurface_generationID' > generationID< / a > () return a different value.
2018-10-08 18:57:48 +00:00
2017-11-27 15:44:06 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkSurface_notifyContentWillChange_mode' > < code > < strong > mode< / strong > < / code > < / a > < / td >
2018-11-07 19:59:03 +00:00
< td > one of: < a href = '#SkSurface_kDiscard_ContentChangeMode' > kDiscard_ContentChangeMode< / a > , < a href = '#SkSurface_kRetain_ContentChangeMode' > kRetain_ContentChangeMode< / a > < / td >
2017-11-27 15:44:06 +00:00
< / tr >
< / table >
### Example
2018-07-19 03:49:13 +00:00
< div > < fiddle-embed name = "be9574c4a14f891e1abb4ec2b1e51d6c" > < / fiddle-embed > < / div >
2017-11-27 15:44:06 +00:00
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkSurface_ContentChangeMode' > ContentChangeMode< / a > < a href = '#SkSurface_generationID' > generationID< / a >
2017-11-27 15:44:06 +00:00
2018-10-16 14:30:28 +00:00
< a name = 'SkSurface_BackendHandleAccess' > < / a >
2017-11-27 15:44:06 +00:00
2018-10-16 14:30:28 +00:00
---
2017-11-27 15:44:06 +00:00
< pre style = "padding: 1em 1em 1em 1em;width: 62.5em; background-color: #f0f0f0 " >
2018-05-16 11:07:07 +00:00
enum < a href = '#SkSurface_BackendHandleAccess' > BackendHandleAccess< / a > {
2018-10-08 18:57:48 +00:00
< a href = '#SkSurface_kFlushRead_BackendHandleAccess' > kFlushRead_BackendHandleAccess< / a > ,
< a href = '#SkSurface_kFlushWrite_BackendHandleAccess' > kFlushWrite_BackendHandleAccess< / a > ,
< a href = '#SkSurface_kDiscardWrite_BackendHandleAccess' > kDiscardWrite_BackendHandleAccess< / a > ,
2018-04-03 12:43:27 +00:00
};
2018-11-15 13:25:12 +00:00
static const < a href = '#SkSurface_BackendHandleAccess' > BackendHandleAccess< / a > kFlushRead_TextureHandleAccess =
2018-10-08 18:57:48 +00:00
< a href = '#SkSurface_kFlushRead_BackendHandleAccess' > kFlushRead_BackendHandleAccess< / a > ;
2018-11-15 13:25:12 +00:00
static const < a href = '#SkSurface_BackendHandleAccess' > BackendHandleAccess< / a > kFlushWrite_TextureHandleAccess =
2018-10-08 18:57:48 +00:00
< a href = '#SkSurface_kFlushWrite_BackendHandleAccess' > kFlushWrite_BackendHandleAccess< / a > ;
2018-11-15 13:25:12 +00:00
static const < a href = '#SkSurface_BackendHandleAccess' > BackendHandleAccess< / a > kDiscardWrite_TextureHandleAccess =
2018-10-08 18:57:48 +00:00
< a href = '#SkSurface_kDiscardWrite_BackendHandleAccess' > kDiscardWrite_BackendHandleAccess< / a > ;
2018-03-05 18:26:16 +00:00
< / pre >
2017-11-27 15:44:06 +00:00
### Constants
2018-05-16 11:07:07 +00:00
< table style = 'border-collapse: collapse; width: 62.5em' >
< tr >< th style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > Const</ th >
< th style = 'text-align: center; border: 2px solid #dddddd ; padding: 8px; ' > Value</ th >
< th style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' > Description</ th ></ tr >
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a name = 'SkSurface_kFlushRead_BackendHandleAccess' >< code > SkSurface::kFlushRead_BackendHandleAccess</ code ></ a ></ td >
< td style = 'text-align: center; border: 2px solid #dddddd ; padding: 8px; ' > 0</ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >
Caller may read from the back-end object.
2018-03-05 18:26:16 +00:00
< / td >
2017-11-27 15:44:06 +00:00
< / tr >
< tr >
2018-05-16 11:07:07 +00:00
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a name = 'SkSurface_kFlushWrite_BackendHandleAccess' >< code > SkSurface::kFlushWrite_BackendHandleAccess</ code ></ a ></ td >
< td style = 'text-align: center; border: 2px solid #dddddd ; padding: 8px; ' > 1</ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >
Caller may write to the back-end object.
2018-03-05 18:26:16 +00:00
< / td >
2017-11-27 15:44:06 +00:00
< / tr >
2018-05-16 11:07:07 +00:00
< tr style = 'background-color: #f0f0f0 ; ' >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >< a name = 'SkSurface_kDiscardWrite_BackendHandleAccess' >< code > SkSurface::kDiscardWrite_BackendHandleAccess</ code ></ a ></ td >
< td style = 'text-align: center; border: 2px solid #dddddd ; padding: 8px; ' > 2</ td >
< td style = 'text-align: left; border: 2px solid #dddddd ; padding: 8px; ' >
Caller must overwrite the entire back-end object.
< / td >
2018-01-04 21:11:51 +00:00
< / tr >
2017-11-27 15:44:06 +00:00
< / table >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkSurface_getBackendTexture' > getBackendTexture< / a > < a href = '#SkSurface_getBackendRenderTarget' > getBackendRenderTarget< / a >
2017-11-27 15:44:06 +00:00
2018-05-16 11:07:07 +00:00
< a name = 'SkSurface_getBackendTexture' > < / a >
2018-10-16 14:30:28 +00:00
---
2018-04-06 06:23:24 +00:00
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
2018-11-09 21:04:58 +00:00
< a href = 'undocumented#GrBackendTexture' > GrBackendTexture< / a > < a href = '#SkSurface_getBackendTexture' > getBackendTexture< / a > (< a href = '#SkSurface_BackendHandleAccess' > BackendHandleAccess< / a > backendHandleAccess)
2018-04-06 06:23:24 +00:00
< / pre >
2018-11-09 21:04:58 +00:00
Retrieves the back-end < a href = 'undocumented#Texture' > texture< / a > . If < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > has no back-end < a href = 'undocumented#Texture' > texture< / a > , an invalid
object is returned. Call < a href = 'undocumented#GrBackendTexture' > GrBackendTexture< / a > ::< a href = '#GrBackendTexture_isValid' > isValid< / a > to determine if the result
2018-04-06 06:23:24 +00:00
is valid.
2018-11-09 21:04:58 +00:00
The returned < a href = 'undocumented#GrBackendTexture' > GrBackendTexture< / a > should be discarded if the < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > is drawn to or deleted.
2018-04-06 06:23:24 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkSurface_getBackendTexture_backendHandleAccess' > < code > < strong > backendHandleAccess< / strong > < / code > < / a > < / td >
2018-10-31 16:14:03 +00:00
< td > one of: < a href = '#SkSurface_kFlushRead_BackendHandleAccess' > kFlushRead_BackendHandleAccess< / a > ,< / td >
2018-04-06 06:23:24 +00:00
< / tr >
< / table >
2018-10-31 16:14:03 +00:00
< a href = '#SkSurface_kFlushWrite_BackendHandleAccess' > kFlushWrite_BackendHandleAccess< / a > ,
< a href = '#SkSurface_kDiscardWrite_BackendHandleAccess' > kDiscardWrite_BackendHandleAccess< / a >
2018-04-06 06:23:24 +00:00
### Return Value
2018-10-31 16:14:03 +00:00
< a href = 'undocumented#GPU_Texture' > GPU texture< / a > reference; invalid on failure
2018-04-06 06:23:24 +00:00
### See Also
2018-05-16 11:07:07 +00:00
< a href = 'undocumented#GrBackendTexture' > GrBackendTexture< / a > < a href = '#SkSurface_BackendHandleAccess' > BackendHandleAccess< / a > < a href = '#SkSurface_getBackendRenderTarget' > getBackendRenderTarget< / a >
2018-04-06 06:23:24 +00:00
2018-05-16 11:07:07 +00:00
< a name = 'SkSurface_getBackendRenderTarget' > < / a >
2018-10-16 14:30:28 +00:00
---
2018-04-06 06:23:24 +00:00
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
2018-11-09 21:04:58 +00:00
< a href = 'undocumented#GrBackendRenderTarget' > GrBackendRenderTarget< / a > < a href = '#SkSurface_getBackendRenderTarget' > getBackendRenderTarget< / a > (< a href = '#SkSurface_BackendHandleAccess' > BackendHandleAccess< / a > backendHandleAccess)
2018-04-06 06:23:24 +00:00
< / pre >
2018-11-09 21:04:58 +00:00
Retrieves the back-end < a href = 'undocumented#Render_Target' > render target< / a > . If < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > has no back-end < a href = 'undocumented#Render_Target' > render target< / a > , an invalid
object is returned. Call < a href = 'undocumented#GrBackendRenderTarget' > GrBackendRenderTarget< / a > ::< a href = '#GrBackendRenderTarget_isValid' > isValid< / a > to determine if the result
2018-04-06 06:23:24 +00:00
is valid.
2018-11-09 21:04:58 +00:00
The returned < a href = 'undocumented#GrBackendRenderTarget' > GrBackendRenderTarget< / a > should be discarded if the < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > is drawn to
2018-04-06 06:23:24 +00:00
or deleted.
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkSurface_getBackendRenderTarget_backendHandleAccess' > < code > < strong > backendHandleAccess< / strong > < / code > < / a > < / td >
2018-10-31 16:14:03 +00:00
< td > one of: < a href = '#SkSurface_kFlushRead_BackendHandleAccess' > kFlushRead_BackendHandleAccess< / a > ,< / td >
2018-04-06 06:23:24 +00:00
< / tr >
< / table >
2018-10-31 16:14:03 +00:00
< a href = '#SkSurface_kFlushWrite_BackendHandleAccess' > kFlushWrite_BackendHandleAccess< / a > ,
< a href = '#SkSurface_kDiscardWrite_BackendHandleAccess' > kDiscardWrite_BackendHandleAccess< / a >
2018-04-06 06:23:24 +00:00
### Return Value
2018-10-31 16:14:03 +00:00
GPU < a href = 'undocumented#Render_Target' > render target< / a > reference; invalid on failure
2018-04-06 06:23:24 +00:00
### See Also
2018-05-16 11:07:07 +00:00
< a href = 'undocumented#GrBackendRenderTarget' > GrBackendRenderTarget< / a > < a href = '#SkSurface_BackendHandleAccess' > BackendHandleAccess< / a > < a href = '#SkSurface_getBackendTexture' > getBackendTexture< / a >
2018-04-06 06:23:24 +00:00
2018-05-16 11:07:07 +00:00
< a name = 'SkSurface_getCanvas' > < / a >
2018-10-16 14:30:28 +00:00
---
2017-11-27 15:44:06 +00:00
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
< a href = 'SkCanvas_Reference#SkCanvas' > SkCanvas< / a > * < a href = '#SkSurface_getCanvas' > getCanvas< / a > ()
2017-11-27 15:44:06 +00:00
< / pre >
2018-11-09 21:04:58 +00:00
Returns < a href = 'SkCanvas_Reference#SkCanvas' > SkCanvas< / a > that draws into < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > . Subsequent calls return the same < a href = 'SkCanvas_Reference#SkCanvas' > SkCanvas< / a > .
< a href = 'SkCanvas_Reference#SkCanvas' > SkCanvas< / a > returned is managed and owned by < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > , and is deleted when < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a >
2017-11-27 15:44:06 +00:00
is deleted.
### Return Value
2018-11-09 21:04:58 +00:00
drawing < a href = 'SkCanvas_Reference#SkCanvas' > SkCanvas< / a > for < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a >
2017-11-27 15:44:06 +00:00
### Example
< div > < fiddle-embed name = "33d0c5ad5a4810e533ae1010e29f8b75" > < / fiddle-embed > < / div >
### See Also
2018-11-07 19:59:03 +00:00
< a href = '#SkSurface_makeSurface' > makeSurface< / a > < a href = '#SkSurface_makeImageSnapshot' > makeImageSnapshot< / a > < a href = '#SkSurface_draw' > draw< / a >
2017-11-27 15:44:06 +00:00
2018-05-16 11:07:07 +00:00
< a name = 'SkSurface_makeSurface' > < / a >
2018-10-16 14:30:28 +00:00
---
2017-11-27 15:44:06 +00:00
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
2018-11-09 21:04:58 +00:00
< a href = 'undocumented#sk_sp' > sk_sp< / a > < < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > > < a href = '#SkSurface_makeSurface' > makeSurface< / a > (const < a href = 'SkImageInfo_Reference#SkImageInfo' > SkImageInfo< / a > & imageInfo)
2017-11-27 15:44:06 +00:00
< / pre >
2018-11-09 21:04:58 +00:00
Returns a compatible < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > , or nullptr. Returned < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > contains
2018-10-31 16:14:03 +00:00
the same raster, GPU, or null properties as the original. Returned < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a >
2017-11-27 15:44:06 +00:00
does not share the same pixels.
2018-11-09 21:04:58 +00:00
Returns nullptr if < a href = '#SkSurface_makeSurface_imageInfo' > imageInfo< / a > width or height are zero, or if < a href = '#SkSurface_makeSurface_imageInfo' > imageInfo< / a >
2018-10-31 16:14:03 +00:00
is incompatible with < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > .
2017-11-27 15:44:06 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkSurface_makeSurface_imageInfo' > < code > < strong > imageInfo< / strong > < / code > < / a > < / td >
2018-10-31 16:14:03 +00:00
< td > width, height, < a href = 'SkImageInfo_Reference#SkColorType' > SkColorType< / a > , < a href = 'SkImageInfo_Reference#SkAlphaType' > SkAlphaType< / a > , < a href = 'undocumented#SkColorSpace' > SkColorSpace< / a > ,< / td >
2017-11-27 15:44:06 +00:00
< / tr >
< / table >
2018-11-09 21:04:58 +00:00
of < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > ; width and height must be greater than zero
2018-10-31 16:14:03 +00:00
2017-11-27 15:44:06 +00:00
### Return Value
2018-11-09 21:04:58 +00:00
compatible < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > or nullptr
2017-11-27 15:44:06 +00:00
### Example
2018-07-19 14:50:44 +00:00
< div > < fiddle-embed name = "a9889b519a26896b900da0444e423c61" > < / fiddle-embed > < / div >
2017-11-27 15:44:06 +00:00
### See Also
2018-11-07 19:59:03 +00:00
< a href = '#SkSurface_makeImageSnapshot' > makeImageSnapshot< / a > < a href = '#SkSurface_getCanvas' > getCanvas< / a > < a href = '#SkSurface_draw' > draw< / a >
2017-11-27 15:44:06 +00:00
2018-05-16 11:07:07 +00:00
< a name = 'SkSurface_makeImageSnapshot' > < / a >
2018-10-16 14:30:28 +00:00
---
2017-11-27 15:44:06 +00:00
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
2018-11-09 21:04:58 +00:00
< a href = 'undocumented#sk_sp' > sk_sp< / a > < < a href = 'SkImage_Reference#SkImage' > SkImage< / a > > < a href = '#SkSurface_makeImageSnapshot' > makeImageSnapshot< / a > ()
2017-11-27 15:44:06 +00:00
< / pre >
2018-11-09 21:04:58 +00:00
Returns < a href = 'SkImage_Reference#SkImage' > SkImage< / a > capturing < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > contents. Subsequent drawing to < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > contents
are not captured. < a href = 'SkImage_Reference#SkImage' > SkImage< / a > allocation is accounted for if < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > was created with
2018-10-31 16:14:03 +00:00
< a href = 'undocumented#SkBudgeted' > SkBudgeted< / a > ::< a href = '#SkBudgeted_kYes' > kYes< / a > .
2017-11-27 15:44:06 +00:00
### Return Value
2018-11-09 21:04:58 +00:00
< a href = 'SkImage_Reference#SkImage' > SkImage< / a > initialized with < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > contents
2017-11-27 15:44:06 +00:00
### Example
2018-07-08 05:32:09 +00:00
< div > < fiddle-embed name = "46f1fa0d95e590a64bed0140407ce5f7" > < / fiddle-embed > < / div >
2017-11-27 15:44:06 +00:00
### See Also
2018-11-21 16:45:57 +00:00
< a href = '#SkSurface_draw' > draw< / a > < a href = '#SkSurface_getCanvas' > getCanvas< / a >
< a name = 'SkSurface_makeImageSnapshot_2' > < / a >
---
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
< a href = 'undocumented#sk_sp' > sk_sp< / a > < < a href = 'SkImage_Reference#SkImage' > SkImage< / a > > < a href = '#SkSurface_makeImageSnapshot' > makeImageSnapshot< / a > (const < a href = 'SkIRect_Reference#SkIRect' > SkIRect< / a > & bounds)
< / pre >
Like the no-parameter version, this returns an < a href = 'SkImage_Reference#Image' > image< / a > of the current < a href = 'SkSurface_Reference#Surface' > surface< / a > contents.
This variant takes a rectangle specifying the subset of the < a href = 'SkSurface_Reference#Surface' > surface< / a > that is of interest.
These bounds will be sanitized before being used.
- If bounds extends beyond the < a href = 'SkSurface_Reference#Surface' > surface</ a > , it will be trimmed to just the intersection of
it and the < a href = 'SkSurface_Reference#Surface' > surface< / a > .
- If bounds does not intersect the < a href = 'SkSurface_Reference#Surface' > surface</ a > , then this returns nullptr.
- If bounds == the < a href = 'SkSurface_Reference#Surface' > surface</ a > , then this is the same as calling the no-parameter variant.
### Example
< div > < fiddle-embed name = "b18b8ab693b09eb70a1d22ab63790cc7" > < / fiddle-embed > < / div >
### See Also
2017-11-27 15:44:06 +00:00
2018-11-07 19:59:03 +00:00
< a href = '#SkSurface_draw' > draw< / a > < a href = '#SkSurface_getCanvas' > getCanvas< / a >
2017-11-27 15:44:06 +00:00
2018-10-16 14:30:28 +00:00
< a name = 'Pixels' > < / a >
2018-05-16 11:07:07 +00:00
< a name = 'SkSurface_draw' > < / a >
2018-10-16 14:30:28 +00:00
---
2017-11-27 15:44:06 +00:00
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
2018-11-09 21:04:58 +00:00
void draw(< a href = 'SkCanvas_Reference#SkCanvas' > SkCanvas< / a > * < a href = 'SkCanvas_Reference#Canvas' > canvas< / a > , < a href = 'undocumented#SkScalar' > SkScalar< / a > x, < a href = 'undocumented#SkScalar' > SkScalar< / a > y, const < a href = 'SkPaint_Reference#SkPaint' > SkPaint< / a > * < a href = 'SkPaint_Reference#Paint' > paint< / a > )
2017-11-27 15:44:06 +00:00
< / pre >
2018-11-09 21:04:58 +00:00
Draws < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > contents to < a href = '#SkSurface_draw_canvas' > canvas< / a > , with its top-left corner at (< a href = '#SkSurface_draw_x' > x< / a > , < a href = '#SkSurface_draw_y' > y< / a > ).
2017-11-27 15:44:06 +00:00
2018-11-09 21:04:58 +00:00
If < a href = 'SkPaint_Reference#SkPaint' > SkPaint< / a > < a href = '#SkSurface_draw_paint' > paint< / a > is not nullptr, apply < a href = 'undocumented#SkColorFilter' > SkColorFilter< / a > , < a href = 'SkColor_Reference#Alpha' > alpha< / a > , < a href = 'undocumented#SkImageFilter' > SkImageFilter< / a > ,
< a href = 'SkBlendMode_Reference#SkBlendMode' > SkBlendMode< / a > , and < a href = 'undocumented#SkDrawLooper' > SkDrawLooper< / a > .
2017-11-27 15:44:06 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkSurface_draw_canvas' > < code > < strong > canvas< / strong > < / code > < / a > < / td >
2018-11-09 21:04:58 +00:00
< td > < a href = 'SkCanvas_Reference#SkCanvas' > SkCanvas< / a > drawn into< / td >
2018-05-16 11:07:07 +00:00
< / tr >
< tr > < td > < a name = 'SkSurface_draw_x' > < code > < strong > x< / strong > < / code > < / a > < / td >
2018-10-31 16:14:03 +00:00
< td > horizontal offset in < a href = 'SkCanvas_Reference#SkCanvas' > SkCanvas< / a > < / td >
2018-05-16 11:07:07 +00:00
< / tr >
< tr > < td > < a name = 'SkSurface_draw_y' > < code > < strong > y< / strong > < / code > < / a > < / td >
2018-10-31 16:14:03 +00:00
< td > vertical offset in < a href = 'SkCanvas_Reference#SkCanvas' > SkCanvas< / a > < / td >
2018-05-16 11:07:07 +00:00
< / tr >
< tr > < td > < a name = 'SkSurface_draw_paint' > < code > < strong > paint< / strong > < / code > < / a > < / td >
2018-11-09 21:04:58 +00:00
< td > < a href = 'SkPaint_Reference#SkPaint' > SkPaint< / a > containing < a href = 'SkBlendMode_Reference#SkBlendMode' > SkBlendMode< / a > , < a href = 'undocumented#SkColorFilter' > SkColorFilter< / a > , < a href = 'undocumented#SkImageFilter' > SkImageFilter< / a > ,< / td >
2017-11-27 15:44:06 +00:00
< / tr >
< / table >
2018-10-31 16:14:03 +00:00
and so on; or nullptr
2017-11-27 15:44:06 +00:00
### Example
< div > < fiddle-embed name = "0de693f4d8dd898a60be8cfba23952be" > < / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkSurface_makeImageSnapshot' > makeImageSnapshot< / a > < a href = '#SkSurface_getCanvas' > getCanvas< / a >
2017-11-27 15:44:06 +00:00
2018-05-16 11:07:07 +00:00
< a name = 'SkSurface_peekPixels' > < / a >
2018-10-16 14:30:28 +00:00
---
2017-11-27 15:44:06 +00:00
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
2018-11-07 19:59:03 +00:00
bool < a href = '#SkSurface_peekPixels' > peekPixels< / a > (< a href = 'SkPixmap_Reference#SkPixmap' > SkPixmap< / a > * < a href = 'SkPixmap_Reference#Pixmap' > pixmap< / a > )
2017-11-27 15:44:06 +00:00
< / pre >
2018-11-09 21:04:58 +00:00
Copies < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > < a href = 'undocumented#Pixel' > pixel< / a > address, row bytes, and < a href = 'SkImageInfo_Reference#SkImageInfo' > SkImageInfo< / a > to < a href = 'SkPixmap_Reference#SkPixmap' > SkPixmap< / a > , if address
is available, and returns true. If < a href = 'undocumented#Pixel' > pixel< / a > address is not available, return
false and leave < a href = 'SkPixmap_Reference#SkPixmap' > SkPixmap< / a > unchanged.
2017-11-27 15:44:06 +00:00
2018-11-09 21:04:58 +00:00
< a href = '#SkSurface_peekPixels_pixmap' > pixmap< / a > contents become invalid on any future change to < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > .
2017-11-27 15:44:06 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkSurface_peekPixels_pixmap' > < code > < strong > pixmap< / strong > < / code > < / a > < / td >
2018-11-09 21:04:58 +00:00
< td > storage for < a href = 'undocumented#Pixel' > pixel< / a > state if pixels are readable; otherwise, ignored< / td >
2017-11-27 15:44:06 +00:00
< / tr >
< / table >
### Return Value
2018-11-09 21:04:58 +00:00
true if < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > has direct access to pixels
2017-11-27 15:44:06 +00:00
### Example
2018-07-09 05:28:19 +00:00
< div > < fiddle-embed name = "8c6184f22cfe068f021704cf92a147a1" > < / fiddle-embed > < / div >
2017-11-27 15:44:06 +00:00
### See Also
2018-11-07 19:59:03 +00:00
< a href = '#SkSurface_readPixels' > readPixels< / a > < a href = '#SkSurface_writePixels' > writePixels< / a >
2017-11-27 15:44:06 +00:00
2018-05-16 11:07:07 +00:00
< a name = 'SkSurface_readPixels' > < / a >
2018-10-16 14:30:28 +00:00
---
2017-11-27 15:44:06 +00:00
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
2018-11-09 21:04:58 +00:00
bool < a href = '#SkSurface_readPixels' > readPixels< / a > (const < a href = 'SkPixmap_Reference#SkPixmap' > SkPixmap< / a > & dst, int srcX, int srcY)
2017-11-27 15:44:06 +00:00
< / pre >
2018-11-09 21:04:58 +00:00
Copies < a href = 'SkRect_Reference#Rect' > Rect< / a > of pixels to < a href = '#SkSurface_readPixels_dst' > dst< / a > .
2017-11-27 15:44:06 +00:00
2018-11-09 21:04:58 +00:00
Source < a href = 'SkRect_Reference#Rect' > Rect< / a > corners are (< a href = '#SkSurface_readPixels_srcX' > srcX< / a > , < a href = '#SkSurface_readPixels_srcY' > srcY< / a > ) and < a href = 'SkSurface_Reference#Surface' > Surface< / a > (< a href = '#SkSurface_width' > width()< / a > , < a href = '#SkSurface_height' > height()< / a > ).
Destination < a href = 'SkRect_Reference#Rect' > Rect< / a > corners are (0, 0) and (< a href = '#SkSurface_readPixels_dst' > dst< / a > .< a href = '#SkPixmap_width' > width()< / a > , < a href = '#SkSurface_readPixels_dst' > dst< / a > .< a href = '#SkPixmap_height' > height()< / a > ).
Copies each readable < a href = 'undocumented#Pixel' > pixel< / a > intersecting both rectangles, without scaling,
converting to < a href = '#SkSurface_readPixels_dst' > dst< / a > .< a href = '#SkPixmap_colorType' > colorType< / a > () and < a href = '#SkSurface_readPixels_dst' > dst< / a > .< a href = '#SkPixmap_alphaType' > alphaType< / a > () if required.
2017-11-27 15:44:06 +00:00
2018-11-09 21:04:58 +00:00
Pixels are readable when < a href = 'SkSurface_Reference#Surface' > Surface< / a > is raster, or backed by a GPU.
2017-11-27 15:44:06 +00:00
2018-11-09 21:04:58 +00:00
The destination < a href = 'undocumented#Pixel_Storage' > pixel storage< / a > must be allocated by the caller.
2017-11-27 15:44:06 +00:00
2018-11-09 21:04:58 +00:00
< a href = 'undocumented#Pixel' > Pixel< / a > values are converted only if < a href = '#Image_Info_Color_Type' > Color_Type< / a > and < a href = '#Image_Info_Alpha_Type' > Alpha_Type< / a >
do not match. Only pixels within both source and destination rectangles
are copied. < a href = '#SkSurface_readPixels_dst' > dst< / a > contents outside < a href = 'SkRect_Reference#Rect' > Rect< / a > intersection are unchanged.
2017-11-27 15:44:06 +00:00
2018-11-09 21:04:58 +00:00
Pass negative values for < a href = '#SkSurface_readPixels_srcX' > srcX< / a > or < a href = '#SkSurface_readPixels_srcY' > srcY< / a > to offset pixels across or down destination.
2017-11-27 15:44:06 +00:00
2018-11-09 21:04:58 +00:00
Does not copy, and returns false if:
2017-11-27 15:44:06 +00:00
< table > < tr >
2018-05-16 11:07:07 +00:00
< td > Source and destination rectangles do not intersect.< / td >
< / tr > < tr >
2018-11-09 21:04:58 +00:00
< td > < a href = 'SkPixmap_Reference#Pixmap' > Pixmap< / a > pixels could not be allocated.< / td >
2018-05-16 11:07:07 +00:00
< / tr > < tr >
2018-11-09 21:04:58 +00:00
< td > < a href = '#SkSurface_readPixels_dst' > dst< / a > .< a href = '#SkPixmap_rowBytes' > rowBytes< / a > () is too small to contain one row of pixels.< / td >
2018-05-16 11:07:07 +00:00
< / tr >
2017-11-27 15:44:06 +00:00
< / table >
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkSurface_readPixels_dst' > < code > < strong > dst< / strong > < / code > < / a > < / td >
2018-11-07 19:59:03 +00:00
< td > storage for pixels copied from < a href = 'SkSurface_Reference#Surface' > Surface< / a > < / td >
2018-05-16 11:07:07 +00:00
< / tr >
< tr > < td > < a name = 'SkSurface_readPixels_srcX' > < code > < strong > srcX< / strong > < / code > < / a > < / td >
2018-06-14 16:28:14 +00:00
< td > offset into readable pixels on x-axis; may be negative< / td >
2018-05-16 11:07:07 +00:00
< / tr >
< tr > < td > < a name = 'SkSurface_readPixels_srcY' > < code > < strong > srcY< / strong > < / code > < / a > < / td >
2018-06-14 16:28:14 +00:00
< td > offset into readable pixels on y-axis; may be negative< / td >
2017-11-27 15:44:06 +00:00
< / tr >
< / table >
### Return Value
true if pixels were copied
### Example
2018-07-16 05:29:00 +00:00
< div > < fiddle-embed name = "9f454fb93bca6482598d198b4121f0a6" > < / fiddle-embed > < / div >
2017-11-27 15:44:06 +00:00
### See Also
2018-11-07 19:59:03 +00:00
< a href = '#SkSurface_peekPixels' > peekPixels< / a > < a href = '#SkSurface_writePixels' > writePixels< / a >
2017-11-27 15:44:06 +00:00
2018-05-16 11:07:07 +00:00
< a name = 'SkSurface_readPixels_2' > < / a >
2018-01-26 17:56:22 +00:00
2018-10-16 14:30:28 +00:00
---
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
2018-11-09 21:04:58 +00:00
bool < a href = '#SkSurface_readPixels' > readPixels< / a > (const < a href = 'SkImageInfo_Reference#SkImageInfo' > SkImageInfo< / a > & dstInfo, void* dstPixels, size_t dstRowBytes, int srcX, int srcY)
2017-11-27 15:44:06 +00:00
< / pre >
2018-11-09 21:04:58 +00:00
Copies < a href = 'SkRect_Reference#Rect' > Rect< / a > of pixels from < a href = 'SkCanvas_Reference#Canvas' > Canvas< / a > into < a href = '#SkSurface_readPixels_2_dstPixels' > dstPixels< / a > .
2017-11-27 15:44:06 +00:00
2018-11-09 21:04:58 +00:00
Source < a href = 'SkRect_Reference#Rect' > Rect< / a > corners are (< a href = '#SkSurface_readPixels_2_srcX' > srcX< / a > , < a href = '#SkSurface_readPixels_2_srcY' > srcY< / a > ) and < a href = 'SkSurface_Reference#Surface' > Surface< / a > (< a href = '#SkSurface_width' > width()< / a > , < a href = '#SkSurface_height' > height()< / a > ).
Destination < a href = 'SkRect_Reference#Rect' > Rect< / a > corners are (0, 0) and (< a href = '#SkSurface_readPixels_2_dstInfo' > dstInfo< / a > .< a href = '#SkImageInfo_width' > width()< / a > , < a href = '#SkSurface_readPixels_2_dstInfo' > dstInfo< / a > .< a href = '#SkImageInfo_height' > height()< / a > ).
Copies each readable < a href = 'undocumented#Pixel' > pixel< / a > intersecting both rectangles, without scaling,
converting to < a href = '#SkSurface_readPixels_2_dstInfo' > dstInfo< / a > .< a href = '#SkImageInfo_colorType' > colorType< / a > () and < a href = '#SkSurface_readPixels_2_dstInfo' > dstInfo< / a > .< a href = '#SkImageInfo_alphaType' > alphaType< / a > () if required.
2017-11-27 15:44:06 +00:00
2018-11-09 21:04:58 +00:00
Pixels are readable when < a href = 'SkSurface_Reference#Surface' > Surface< / a > is raster, or backed by a GPU.
2017-11-27 15:44:06 +00:00
2018-11-09 21:04:58 +00:00
The destination < a href = 'undocumented#Pixel_Storage' > pixel storage< / a > must be allocated by the caller.
2017-11-27 15:44:06 +00:00
2018-11-09 21:04:58 +00:00
< a href = 'undocumented#Pixel' > Pixel< / a > values are converted only if < a href = '#Image_Info_Color_Type' > Color_Type< / a > and < a href = '#Image_Info_Alpha_Type' > Alpha_Type< / a >
do not match. Only pixels within both source and destination rectangles
are copied. < a href = '#SkSurface_readPixels_2_dstPixels' > dstPixels< / a > contents outside < a href = 'SkRect_Reference#Rect' > Rect< / a > intersection are unchanged.
2017-11-27 15:44:06 +00:00
2018-11-09 21:04:58 +00:00
Pass negative values for < a href = '#SkSurface_readPixels_2_srcX' > srcX< / a > or < a href = '#SkSurface_readPixels_2_srcY' > srcY< / a > to offset pixels across or down destination.
2017-11-27 15:44:06 +00:00
2018-11-09 21:04:58 +00:00
Does not copy, and returns false if:
2017-11-27 15:44:06 +00:00
< table > < tr >
2018-05-16 11:07:07 +00:00
< td > Source and destination rectangles do not intersect.< / td >
< / tr > < tr >
2018-11-09 21:04:58 +00:00
< td > < a href = 'SkSurface_Reference#Surface' > Surface< / a > pixels could not be converted to < a href = '#SkSurface_readPixels_2_dstInfo' > dstInfo< / a > .< a href = '#SkImageInfo_colorType' > colorType< / a > () or < a href = '#SkSurface_readPixels_2_dstInfo' > dstInfo< / a > .< a href = '#SkImageInfo_alphaType' > alphaType< / a > ().< / td >
2018-05-16 11:07:07 +00:00
< / tr > < tr >
2018-11-09 21:04:58 +00:00
< td > < a href = '#SkSurface_readPixels_2_dstRowBytes' > dstRowBytes< / a > is too small to contain one row of pixels.< / td >
2018-05-16 11:07:07 +00:00
< / tr >
2017-11-27 15:44:06 +00:00
< / table >
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkSurface_readPixels_2_dstInfo' > < code > < strong > dstInfo< / strong > < / code > < / a > < / td >
2018-11-09 21:04:58 +00:00
< td > width, height, < a href = '#Image_Info_Color_Type' > Color_Type< / a > , and < a href = '#Image_Info_Alpha_Type' > Alpha_Type< / a > of < a href = '#SkSurface_readPixels_2_dstPixels' > dstPixels< / a > < / td >
2018-05-16 11:07:07 +00:00
< / tr >
< tr > < td > < a name = 'SkSurface_readPixels_2_dstPixels' > < code > < strong > dstPixels< / strong > < / code > < / a > < / td >
2018-11-09 21:04:58 +00:00
< td > storage for pixels; < a href = '#SkSurface_readPixels_2_dstInfo' > dstInfo< / a > .< a href = '#SkImageInfo_height' > height()< / a > times < a href = '#SkSurface_readPixels_2_dstRowBytes' > dstRowBytes< / a > , or larger< / td >
2018-05-16 11:07:07 +00:00
< / tr >
< tr > < td > < a name = 'SkSurface_readPixels_2_dstRowBytes' > < code > < strong > dstRowBytes< / strong > < / code > < / a > < / td >
2018-11-09 21:04:58 +00:00
< td > < a href = 'undocumented#Size' > size< / a > of one destination row; < a href = '#SkSurface_readPixels_2_dstInfo' > dstInfo< / a > .< a href = '#SkImageInfo_width' > width()< / a > times < a href = 'undocumented#Pixel' > pixel< / a > < a href = 'undocumented#Size' > size< / a > , or larger< / td >
2018-05-16 11:07:07 +00:00
< / tr >
< tr > < td > < a name = 'SkSurface_readPixels_2_srcX' > < code > < strong > srcX< / strong > < / code > < / a > < / td >
2018-06-14 16:28:14 +00:00
< td > offset into readable pixels on x-axis; may be negative< / td >
2018-05-16 11:07:07 +00:00
< / tr >
< tr > < td > < a name = 'SkSurface_readPixels_2_srcY' > < code > < strong > srcY< / strong > < / code > < / a > < / td >
2018-06-14 16:28:14 +00:00
< td > offset into readable pixels on y-axis; may be negative< / td >
2017-11-27 15:44:06 +00:00
< / tr >
< / table >
### Return Value
true if pixels were copied
### Example
2018-11-09 21:04:58 +00:00
< div > < fiddle-embed name = "484d60dab5d846bf28c7a4d48892324a" > < div > A black < a href = 'undocumented#Oval' > oval< / a > drawn on a red background provides an < a href = 'SkImage_Reference#Image' > image< / a > to copy.
< a href = '#SkSurface_readPixels' > readPixels< / a > copies one quarter of the < a href = 'SkSurface_Reference#Surface' > Surface< / a > into each of the four corners.
The copied quarter < a href = 'undocumented#Oval' > ovals< / a > overdraw the original < a href = 'undocumented#Oval' > oval< / a > .
2018-03-05 18:26:16 +00:00
< / div > < / fiddle-embed > < / div >
2017-11-27 15:44:06 +00:00
### See Also
2018-11-07 19:59:03 +00:00
< a href = '#SkSurface_peekPixels' > peekPixels< / a > < a href = '#SkSurface_writePixels' > writePixels< / a >
2017-11-27 15:44:06 +00:00
2018-05-16 11:07:07 +00:00
< a name = 'SkSurface_readPixels_3' > < / a >
2018-01-26 17:56:22 +00:00
2018-10-16 14:30:28 +00:00
---
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
2018-11-09 21:04:58 +00:00
bool < a href = '#SkSurface_readPixels' > readPixels< / a > (const < a href = 'SkBitmap_Reference#SkBitmap' > SkBitmap< / a > & dst, int srcX, int srcY)
2017-11-27 15:44:06 +00:00
< / pre >
2018-11-09 21:04:58 +00:00
Copies < a href = 'SkRect_Reference#Rect' > Rect< / a > of pixels from < a href = 'SkSurface_Reference#Surface' > Surface< / a > into < a href = 'SkBitmap_Reference#Bitmap' > bitmap< / a > .
2017-11-27 15:44:06 +00:00
2018-11-09 21:04:58 +00:00
Source < a href = 'SkRect_Reference#Rect' > Rect< / a > corners are (< a href = '#SkSurface_readPixels_3_srcX' > srcX< / a > , < a href = '#SkSurface_readPixels_3_srcY' > srcY< / a > ) and < a href = 'SkSurface_Reference#Surface' > Surface< / a > (< a href = '#SkSurface_width' > width()< / a > , < a href = '#SkSurface_height' > height()< / a > ).
Destination < a href = 'SkRect_Reference#Rect' > Rect< / a > corners are (0, 0) and (< a href = 'SkBitmap_Reference#Bitmap' > bitmap< / a > .< a href = '#SkSurface_width' > width()< / a > , < a href = 'SkBitmap_Reference#Bitmap' > bitmap< / a > .< a href = '#SkSurface_height' > height()< / a > ).
Copies each readable < a href = 'undocumented#Pixel' > pixel< / a > intersecting both rectangles, without scaling,
converting to < a href = '#SkSurface_readPixels_3_dst' > dst< / a > .< a href = '#SkBitmap_colorType' > colorType< / a > () and < a href = '#SkSurface_readPixels_3_dst' > dst< / a > .< a href = '#SkBitmap_alphaType' > alphaType< / a > () if required.
2017-11-27 15:44:06 +00:00
2018-11-09 21:04:58 +00:00
Pixels are readable when < a href = 'SkSurface_Reference#Surface' > Surface< / a > is raster, or backed by a GPU.
2017-11-27 15:44:06 +00:00
2018-11-09 21:04:58 +00:00
The destination < a href = 'undocumented#Pixel_Storage' > pixel storage< / a > must be allocated by the caller.
2017-11-27 15:44:06 +00:00
2018-11-09 21:04:58 +00:00
< a href = 'undocumented#Pixel' > Pixel< / a > values are converted only if < a href = '#Image_Info_Color_Type' > Color_Type< / a > and < a href = '#Image_Info_Alpha_Type' > Alpha_Type< / a >
do not match. Only pixels within both source and destination rectangles
are copied. < a href = '#SkSurface_readPixels_3_dst' > dst< / a > contents outside < a href = 'SkRect_Reference#Rect' > Rect< / a > intersection are unchanged.
2017-11-27 15:44:06 +00:00
2018-11-09 21:04:58 +00:00
Pass negative values for < a href = '#SkSurface_readPixels_3_srcX' > srcX< / a > or < a href = '#SkSurface_readPixels_3_srcY' > srcY< / a > to offset pixels across or down destination.
2017-11-27 15:44:06 +00:00
2018-11-09 21:04:58 +00:00
Does not copy, and returns false if:
2017-11-27 15:44:06 +00:00
< table > < tr >
2018-05-16 11:07:07 +00:00
< td > Source and destination rectangles do not intersect.< / td >
< / tr > < tr >
2018-11-09 21:04:58 +00:00
< td > < a href = 'SkSurface_Reference#Surface' > Surface< / a > pixels could not be converted to < a href = '#SkSurface_readPixels_3_dst' > dst< / a > .< a href = '#SkBitmap_colorType' > colorType< / a > () or < a href = '#SkSurface_readPixels_3_dst' > dst< / a > .< a href = '#SkBitmap_alphaType' > alphaType< / a > ().< / td >
2018-05-16 11:07:07 +00:00
< / tr > < tr >
2018-11-09 21:04:58 +00:00
< td > < a href = '#SkSurface_readPixels_3_dst' > dst< / a > pixels could not be allocated.< / td >
2018-05-16 11:07:07 +00:00
< / tr > < tr >
2018-11-09 21:04:58 +00:00
< td > < a href = '#SkSurface_readPixels_3_dst' > dst< / a > .< a href = '#SkBitmap_rowBytes' > rowBytes< / a > () is too small to contain one row of pixels.< / td >
2018-05-16 11:07:07 +00:00
< / tr >
2017-11-27 15:44:06 +00:00
< / table >
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkSurface_readPixels_3_dst' > < code > < strong > dst< / strong > < / code > < / a > < / td >
2018-11-07 19:59:03 +00:00
< td > storage for pixels copied from < a href = 'SkSurface_Reference#Surface' > Surface< / a > < / td >
2018-05-16 11:07:07 +00:00
< / tr >
< tr > < td > < a name = 'SkSurface_readPixels_3_srcX' > < code > < strong > srcX< / strong > < / code > < / a > < / td >
2018-06-14 16:28:14 +00:00
< td > offset into readable pixels on x-axis; may be negative< / td >
2018-05-16 11:07:07 +00:00
< / tr >
< tr > < td > < a name = 'SkSurface_readPixels_3_srcY' > < code > < strong > srcY< / strong > < / code > < / a > < / td >
2018-06-14 16:28:14 +00:00
< td > offset into readable pixels on y-axis; may be negative< / td >
2017-11-27 15:44:06 +00:00
< / tr >
< / table >
### Return Value
true if pixels were copied
### Example
2018-05-16 11:07:07 +00:00
< div > < fiddle-embed name = "2d991a231e49d1de13eeb2ba9b440e01" > < / fiddle-embed > < / div >
2017-11-27 15:44:06 +00:00
### See Also
2018-11-07 19:59:03 +00:00
< a href = '#SkSurface_peekPixels' > peekPixels< / a > < a href = '#SkSurface_writePixels' > writePixels< / a >
2018-02-08 19:45:18 +00:00
2018-05-16 11:07:07 +00:00
< a name = 'SkSurface_writePixels' > < / a >
2018-10-16 14:30:28 +00:00
---
2018-02-08 19:45:18 +00:00
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
2018-11-09 21:04:58 +00:00
void < a href = '#SkSurface_writePixels' > writePixels< / a > (const < a href = 'SkPixmap_Reference#SkPixmap' > SkPixmap< / a > & src, int dstX, int dstY)
2018-02-08 19:45:18 +00:00
< / pre >
2018-11-09 21:04:58 +00:00
Copies < a href = 'SkRect_Reference#Rect' > Rect< / a > of pixels from the < a href = '#SkSurface_writePixels_src' > src< / a > < a href = 'SkPixmap_Reference#Pixmap' > Pixmap< / a > to the < a href = 'SkSurface_Reference#Surface' > Surface< / a > .
2018-02-08 19:45:18 +00:00
2018-11-09 21:04:58 +00:00
Source < a href = 'SkRect_Reference#Rect' > Rect< / a > corners are (0, 0) and (< a href = '#SkSurface_writePixels_src' > src< / a > .< a href = '#SkPixmap_width' > width()< / a > , < a href = '#SkSurface_writePixels_src' > src< / a > .< a href = '#SkPixmap_height' > height()< / a > ).
Destination < a href = 'SkRect_Reference#Rect' > Rect< / a > corners are (< a href = '#SkSurface_writePixels_dstX' > dstX< / a > , < a href = '#SkSurface_writePixels_dstY' > dstY< / a > ) and
2018-11-07 19:59:03 +00:00
< code > (< a href = '#SkSurface_writePixels_dstX' > dstX< / a > + < a href = 'SkSurface_Reference#Surface' > Surface< / a > < a href = '#SkSurface_width' > width()< / a > , < a href = '#SkSurface_writePixels_dstY' > dstY< / a > + < a href = 'SkSurface_Reference#Surface' > Surface< / a > < a href = '#SkSurface_height' > height()< / a > )< / code > .
2018-02-08 19:45:18 +00:00
2018-11-09 21:04:58 +00:00
Copies each readable < a href = 'undocumented#Pixel' > pixel< / a > intersecting both rectangles, without scaling,
converting to < a href = 'SkSurface_Reference#Surface' > Surface< / a > < a href = 'SkImageInfo_Reference#SkColorType' > SkColorType< / a > and < a href = 'SkImageInfo_Reference#SkAlphaType' > SkAlphaType< / a > if required.
2018-02-08 19:45:18 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkSurface_writePixels_src' > < code > < strong > src< / strong > < / code > < / a > < / td >
2018-11-07 19:59:03 +00:00
< td > storage for pixels to copy to < a href = 'SkSurface_Reference#Surface' > Surface< / a > < / td >
2018-05-16 11:07:07 +00:00
< / tr >
< tr > < td > < a name = 'SkSurface_writePixels_dstX' > < code > < strong > dstX< / strong > < / code > < / a > < / td >
2018-11-09 21:04:58 +00:00
< td > x-axis position relative to < a href = 'SkSurface_Reference#Surface' > Surface< / a > to begin copy; may be negative< / td >
2018-05-16 11:07:07 +00:00
< / tr >
< tr > < td > < a name = 'SkSurface_writePixels_dstY' > < code > < strong > dstY< / strong > < / code > < / a > < / td >
2018-11-09 21:04:58 +00:00
< td > y-axis position relative to < a href = 'SkSurface_Reference#Surface' > Surface< / a > to begin copy; may be negative< / td >
2018-02-08 19:45:18 +00:00
< / tr >
< / table >
### Example
2018-05-17 16:17:28 +00:00
< div > < fiddle-embed name = "760793bcf0ef193fa61ea03e6e8fc825" > < / fiddle-embed > < / div >
2018-02-08 19:45:18 +00:00
### See Also
2018-11-07 19:59:03 +00:00
< a href = '#SkSurface_readPixels' > readPixels< / a > < a href = '#SkSurface_peekPixels' > peekPixels< / a >
2018-02-08 19:45:18 +00:00
2018-05-16 11:07:07 +00:00
< a name = 'SkSurface_writePixels_2' > < / a >
2018-02-08 19:45:18 +00:00
2018-10-16 14:30:28 +00:00
---
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
2018-11-09 21:04:58 +00:00
void < a href = '#SkSurface_writePixels' > writePixels< / a > (const < a href = 'SkBitmap_Reference#SkBitmap' > SkBitmap< / a > & src, int dstX, int dstY)
2018-02-08 19:45:18 +00:00
< / pre >
2018-11-09 21:04:58 +00:00
Copies < a href = 'SkRect_Reference#Rect' > Rect< / a > of pixels from the < a href = '#SkSurface_writePixels_2_src' > src< / a > < a href = 'SkBitmap_Reference#Bitmap' > Bitmap< / a > to the < a href = 'SkSurface_Reference#Surface' > Surface< / a > .
2018-02-08 19:45:18 +00:00
2018-11-09 21:04:58 +00:00
Source < a href = 'SkRect_Reference#Rect' > Rect< / a > corners are (0, 0) and (< a href = '#SkSurface_writePixels_2_src' > src< / a > .< a href = '#SkBitmap_width' > width()< / a > , < a href = '#SkSurface_writePixels_2_src' > src< / a > .< a href = '#SkBitmap_height' > height()< / a > ).
Destination < a href = 'SkRect_Reference#Rect' > Rect< / a > corners are (< a href = '#SkSurface_writePixels_2_dstX' > dstX< / a > , < a href = '#SkSurface_writePixels_2_dstY' > dstY< / a > ) and
2018-11-07 19:59:03 +00:00
< code > (< a href = '#SkSurface_writePixels_2_dstX' > dstX< / a > + < a href = 'SkSurface_Reference#Surface' > Surface< / a > < a href = '#SkSurface_width' > width()< / a > , < a href = '#SkSurface_writePixels_2_dstY' > dstY< / a > + < a href = 'SkSurface_Reference#Surface' > Surface< / a > < a href = '#SkSurface_height' > height()< / a > )< / code > .
2018-02-08 19:45:18 +00:00
2018-11-09 21:04:58 +00:00
Copies each readable < a href = 'undocumented#Pixel' > pixel< / a > intersecting both rectangles, without scaling,
converting to < a href = 'SkSurface_Reference#Surface' > Surface< / a > < a href = 'SkImageInfo_Reference#SkColorType' > SkColorType< / a > and < a href = 'SkImageInfo_Reference#SkAlphaType' > SkAlphaType< / a > if required.
2018-02-08 19:45:18 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkSurface_writePixels_2_src' > < code > < strong > src< / strong > < / code > < / a > < / td >
2018-11-07 19:59:03 +00:00
< td > storage for pixels to copy to < a href = 'SkSurface_Reference#Surface' > Surface< / a > < / td >
2018-05-16 11:07:07 +00:00
< / tr >
< tr > < td > < a name = 'SkSurface_writePixels_2_dstX' > < code > < strong > dstX< / strong > < / code > < / a > < / td >
2018-11-09 21:04:58 +00:00
< td > x-axis position relative to < a href = 'SkSurface_Reference#Surface' > Surface< / a > to begin copy; may be negative< / td >
2018-05-16 11:07:07 +00:00
< / tr >
< tr > < td > < a name = 'SkSurface_writePixels_2_dstY' > < code > < strong > dstY< / strong > < / code > < / a > < / td >
2018-11-09 21:04:58 +00:00
< td > y-axis position relative to < a href = 'SkSurface_Reference#Surface' > Surface< / a > to begin copy; may be negative< / td >
2018-02-08 19:45:18 +00:00
< / tr >
< / table >
### Example
2018-07-19 14:50:44 +00:00
< div > < fiddle-embed name = "d77790dd3bc9f678fa4f582347fb8fba" > < / fiddle-embed > < / div >
2018-02-08 19:45:18 +00:00
### See Also
2018-11-07 19:59:03 +00:00
< a href = '#SkSurface_readPixels' > readPixels< / a > < a href = '#SkSurface_peekPixels' > peekPixels< / a >
2017-11-27 15:44:06 +00:00
2018-05-16 11:07:07 +00:00
< a name = 'SkSurface_props' > < / a >
2018-10-16 14:30:28 +00:00
---
2017-11-27 15:44:06 +00:00
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
2018-11-29 17:05:25 +00:00
const < a href = 'undocumented#SkSurfaceProps' > SkSurfaceProps< / a > & < a href = '#SkSurface_props' > props()< / a > const
2017-11-27 15:44:06 +00:00
< / pre >
2018-11-09 21:04:58 +00:00
Returns < a href = 'undocumented#SkSurfaceProps' > SkSurfaceProps< / a > for < a href = 'SkSurface_Reference#Surface' > surface< / a > .
2017-11-27 15:44:06 +00:00
### Return Value
2018-11-09 21:04:58 +00:00
LCD striping orientation and setting for < a href = 'undocumented#Device' > device< / a > independent fonts
2017-11-27 15:44:06 +00:00
### Example
< div > < fiddle-embed name = "13cf9e7b2894ae6e98c1fd719040bf01" >
#### Example Output
~~~~
surf.props(): kRGB_H_SkPixelGeometry
~~~~
< / fiddle-embed > < / div >
### See Also
2018-05-16 11:07:07 +00:00
< a href = 'undocumented#SkSurfaceProps' > SkSurfaceProps< / a >
2017-11-27 15:44:06 +00:00
2018-10-16 14:30:28 +00:00
< a name = 'Utility' > < / a >
2018-02-06 14:41:53 +00:00
2018-05-16 11:07:07 +00:00
< a name = 'SkSurface_flush' > < / a >
2018-10-16 14:30:28 +00:00
---
2017-11-27 15:44:06 +00:00
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
2018-11-07 19:59:03 +00:00
void < a href = '#SkSurface_flush' > flush()< / a >
2017-11-27 15:44:06 +00:00
< / pre >
2018-11-09 21:04:58 +00:00
Issues pending < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > commands to the GPU-backed API and resolves any < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > MSAA.
2017-11-27 15:44:06 +00:00
2018-01-04 21:11:51 +00:00
Skia flushes as needed, so it is not necessary to call this if Skia manages
drawing and object lifetime. Call when interleaving Skia calls with native
GPU calls.
2017-11-27 15:44:06 +00:00
### See Also
2018-05-16 11:07:07 +00:00
< a href = 'undocumented#GrBackendSemaphore' > GrBackendSemaphore< / a >
2017-11-27 15:44:06 +00:00
2018-05-16 11:07:07 +00:00
< a name = 'SkSurface_flushAndSignalSemaphores' > < / a >
2018-10-16 14:30:28 +00:00
---
2017-11-27 15:44:06 +00:00
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
2018-11-09 21:04:58 +00:00
< a href = 'undocumented#GrSemaphoresSubmitted' > GrSemaphoresSubmitted< / a > < a href = '#SkSurface_flushAndSignalSemaphores' > flushAndSignalSemaphores< / a > (int numSemaphores,
< a href = 'undocumented#GrBackendSemaphore' > GrBackendSemaphore< / a > signalSemaphores[])
2017-11-27 15:44:06 +00:00
< / pre >
2018-11-09 21:04:58 +00:00
Issues pending < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > commands to the GPU-backed API and resolves any < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > MSAA.
After issuing all commands, < a href = '#SkSurface_flushAndSignalSemaphores_signalSemaphores' > signalSemaphores< / a > of count < a href = '#SkSurface_flushAndSignalSemaphores_numSemaphores' > numSemaphores< / a > semaphores
2018-01-04 21:11:51 +00:00
are signaled by the GPU.
2017-11-27 15:44:06 +00:00
2018-11-09 21:04:58 +00:00
For each < a href = 'undocumented#GrBackendSemaphore' > GrBackendSemaphore< / a > in < a href = '#SkSurface_flushAndSignalSemaphores_signalSemaphores' > signalSemaphores< / a > :
if < a href = 'undocumented#GrBackendSemaphore' > GrBackendSemaphore< / a > is initialized, the GPU back-end uses the semaphore as is;
2018-05-16 11:07:07 +00:00
otherwise, a new semaphore is created and initializes < a href = 'undocumented#GrBackendSemaphore' > GrBackendSemaphore< / a > .
2017-11-27 15:44:06 +00:00
2018-05-16 11:07:07 +00:00
The caller must delete the semaphores created and returned in < a href = '#SkSurface_flushAndSignalSemaphores_signalSemaphores' > signalSemaphores< / a > .
2018-11-09 21:04:58 +00:00
< a href = 'undocumented#GrBackendSemaphore' > GrBackendSemaphore< / a > can be deleted as soon as this function returns.
2017-11-27 15:44:06 +00:00
2018-10-31 16:14:03 +00:00
If the back-end API is OpenGL only uninitialized < a href = 'undocumented#Backend_Semaphore' > backend semaphores< / a > are supported.
2017-11-27 15:44:06 +00:00
2018-01-04 21:11:51 +00:00
If the back-end API is Vulkan semaphores may be initialized or uninitialized.
2017-11-27 15:44:06 +00:00
If uninitialized, created semaphores are valid only with the VkDevice
with which they were created.
2018-11-09 21:04:58 +00:00
If < a href = 'undocumented#GrSemaphoresSubmitted' > GrSemaphoresSubmitted< / a > ::< a href = '#GrSemaphoresSubmitted_kNo' > kNo< / a > is returned, the GPU back-end did not create or
2018-01-04 21:11:51 +00:00
add any semaphores to signal on the GPU; the caller should not instruct the GPU
2018-01-26 17:56:22 +00:00
to wait on any of the semaphores.
2017-11-27 15:44:06 +00:00
2018-11-09 21:04:58 +00:00
Pending < a href = 'SkSurface_Reference#Surface' > surface< / a > commands are flushed regardless of the return result.
2017-11-27 15:44:06 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkSurface_flushAndSignalSemaphores_numSemaphores' > < code > < strong > numSemaphores< / strong > < / code > < / a > < / td >
2018-11-09 21:04:58 +00:00
< td > < a href = 'undocumented#Size' > size< / a > of < a href = '#SkSurface_flushAndSignalSemaphores_signalSemaphores' > signalSemaphores< / a > array< / td >
2018-05-16 11:07:07 +00:00
< / tr >
< tr > < td > < a name = 'SkSurface_flushAndSignalSemaphores_signalSemaphores' > < code > < strong > signalSemaphores< / strong > < / code > < / a > < / td >
< td > array of semaphore containers< / td >
2017-11-27 15:44:06 +00:00
< / tr >
< / table >
### Return Value
2018-10-31 16:14:03 +00:00
one of: < a href = 'undocumented#GrSemaphoresSubmitted' > GrSemaphoresSubmitted< / a > ::< a href = '#GrSemaphoresSubmitted_kYes' > kYes< / a > , < a href = 'undocumented#GrSemaphoresSubmitted' > GrSemaphoresSubmitted< / a > ::< a href = '#GrSemaphoresSubmitted_kNo' > kNo< / a >
2017-11-27 15:44:06 +00:00
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkSurface_wait' > wait< / a > < a href = 'undocumented#GrBackendSemaphore' > GrBackendSemaphore< / a >
2017-11-27 15:44:06 +00:00
2018-05-16 11:07:07 +00:00
< a name = 'SkSurface_wait' > < / a >
2018-10-16 14:30:28 +00:00
---
2017-11-27 15:44:06 +00:00
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
2018-11-09 21:04:58 +00:00
bool wait(int numSemaphores, const < a href = 'undocumented#GrBackendSemaphore' > GrBackendSemaphore< / a > * waitSemaphores)
2017-11-27 15:44:06 +00:00
< / pre >
2018-01-26 17:56:22 +00:00
Inserts a list of GPU semaphores that the current GPU-backed API must wait on before
2018-11-09 21:04:58 +00:00
executing any more commands on the GPU for this < a href = 'SkSurface_Reference#Surface' > surface< / a > . Skia will take ownership of the
2017-11-27 15:44:06 +00:00
underlying semaphores and delete them once they have been signaled and waited on.
2018-01-26 17:56:22 +00:00
If this call returns false, then the GPU back-end will not wait on any passed in semaphores,
2017-11-27 15:44:06 +00:00
and the client will still own the semaphores.
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkSurface_wait_numSemaphores' > < code > < strong > numSemaphores< / strong > < / code > < / a > < / td >
2018-11-09 21:04:58 +00:00
< td > < a href = 'undocumented#Size' > size< / a > of < a href = '#SkSurface_wait_waitSemaphores' > waitSemaphores< / a > array< / td >
2018-05-16 11:07:07 +00:00
< / tr >
< tr > < td > < a name = 'SkSurface_wait_waitSemaphores' > < code > < strong > waitSemaphores< / strong > < / code > < / a > < / td >
< td > array of semaphore containers< / td >
2017-11-27 15:44:06 +00:00
< / tr >
< / table >
### Return Value
2018-01-04 21:11:51 +00:00
true if GPU is waiting on semaphores
2017-11-27 15:44:06 +00:00
### See Also
2018-05-16 11:07:07 +00:00
< a href = '#SkSurface_flushAndSignalSemaphores' > flushAndSignalSemaphores< / a > < a href = 'undocumented#GrBackendSemaphore' > GrBackendSemaphore< / a >
2017-11-27 15:44:06 +00:00
2018-05-16 11:07:07 +00:00
< a name = 'SkSurface_characterize' > < / a >
2018-10-16 14:30:28 +00:00
---
2017-11-27 15:44:06 +00:00
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
2018-11-29 17:05:25 +00:00
bool < a href = '#SkSurface_characterize' > characterize< / a > (< a href = 'undocumented#SkSurfaceCharacterization' > SkSurfaceCharacterization< / a > * characterization)const
2017-11-27 15:44:06 +00:00
< / pre >
2018-11-09 21:04:58 +00:00
Initializes < a href = 'undocumented#SkSurfaceCharacterization' > SkSurfaceCharacterization< / a > that can be used to perform GPU back-end
2018-02-06 14:41:53 +00:00
processing in a separate thread. Typically this is used to divide drawing
2018-11-09 21:04:58 +00:00
into multiple tiles. < a href = 'undocumented#SkDeferredDisplayListRecorder' > SkDeferredDisplayListRecorder< / a > records the drawing commands
2017-11-27 15:44:06 +00:00
for each tile.
2018-11-09 21:04:58 +00:00
Return true if < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > supports < a href = '#SkSurface_characterize_characterization' > characterization< / a > . < a href = 'undocumented#Raster_Surface' > raster surface< / a > returns false.
2017-11-27 15:44:06 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkSurface_characterize_characterization' > < code > < strong > characterization< / strong > < / code > < / a > < / td >
< td > properties for parallel drawing< / td >
2017-11-27 15:44:06 +00:00
< / tr >
< / table >
### Return Value
true if supported
### Example
2018-05-16 11:07:07 +00:00
< div > < fiddle-embed name = "6de6f3ef699a72ff26da1b26b23a3316" gpu = "true" > < / fiddle-embed > < / div >
2017-11-27 15:44:06 +00:00
### See Also
2018-11-07 19:59:03 +00:00
< a href = '#SkSurface_draw' > draw()< / a > < a href = 'undocumented#SkSurfaceCharacterization' > SkSurfaceCharacterization< / a > < a href = 'undocumented#SkDeferredDisplayList' > SkDeferredDisplayList< / a >
2017-11-27 15:44:06 +00:00
2018-05-16 11:07:07 +00:00
< a name = 'SkSurface_draw_2' > < / a >
2018-01-26 17:56:22 +00:00
2018-10-16 14:30:28 +00:00
---
2018-05-16 11:07:07 +00:00
< pre style = "padding: 1em 1em 1em 1em; width: 62.5em;background-color: #f0f0f0 " >
2018-11-09 21:04:58 +00:00
bool draw(< a href = 'undocumented#SkDeferredDisplayList' > SkDeferredDisplayList< / a > * deferredDisplayList)
2017-11-27 15:44:06 +00:00
< / pre >
2018-10-31 16:14:03 +00:00
Draws deferred display list created using < a href = 'undocumented#SkDeferredDisplayListRecorder' > SkDeferredDisplayListRecorder< / a > .
2018-11-09 21:04:58 +00:00
Has no effect and returns false if < a href = 'undocumented#SkSurfaceCharacterization' > SkSurfaceCharacterization< / a > stored in
< a href = '#SkSurface_draw_2_deferredDisplayList' > deferredDisplayList< / a > is not compatible with < a href = 'SkSurface_Reference#SkSurface' > SkSurface< / a > .
2017-12-11 21:03:17 +00:00
2018-10-31 16:14:03 +00:00
< a href = 'undocumented#Raster_Surface' > raster surface< / a > returns false.
2017-11-27 15:44:06 +00:00
### Parameters
2018-05-16 11:07:07 +00:00
< table > < tr > < td > < a name = 'SkSurface_draw_2_deferredDisplayList' > < code > < strong > deferredDisplayList< / strong > < / code > < / a > < / td >
< td > drawing commands< / td >
2017-11-27 15:44:06 +00:00
< / tr >
< / table >
2017-12-11 21:03:17 +00:00
### Return Value
2018-11-09 21:04:58 +00:00
false if < a href = '#SkSurface_draw_2_deferredDisplayList' > deferredDisplayList< / a > is not compatible
2017-12-11 21:03:17 +00:00
2017-11-27 15:44:06 +00:00
### Example
2018-05-16 11:07:07 +00:00
< div > < fiddle-embed name = "46d9bacf593deaaeabd74ff42f2571a0" gpu = "true" cpu = "true" > < / fiddle-embed > < / div >
2017-11-27 15:44:06 +00:00
### See Also
2018-11-07 19:59:03 +00:00
< a href = '#SkSurface_characterize' > characterize()< / a > < a href = 'undocumented#SkSurfaceCharacterization' > SkSurfaceCharacterization< / a > < a href = 'undocumented#SkDeferredDisplayList' > SkDeferredDisplayList< / a >
2017-11-27 15:44:06 +00:00