From 5635631c8887db678e6123c191ae68456b60d2a7 Mon Sep 17 00:00:00 2001 From: Cary Clark Date: Thu, 8 Feb 2018 14:45:18 -0500 Subject: working on SkImage docs also fix minor break in SkSurface TBR=caryclark@google.com Docs-Preview: https://skia.org/?cl=105021 Bug: skia: Change-Id: I0cfc01ab5ba4df13a9e84f8dd2904d32e5726a5b Reviewed-on: https://skia-review.googlesource.com/105021 Reviewed-by: Cary Clark Commit-Queue: Cary Clark --- site/user/api/SkImage_Reference.md | 114 +++++++++++++++-------------------- site/user/api/SkPaint_Reference.md | 2 +- site/user/api/SkSurface_Reference.md | 83 +++++++++++++++++++++++-- site/user/api/catalog.htm | 42 +++++++------ 4 files changed, 155 insertions(+), 86 deletions(-) (limited to 'site/user') diff --git a/site/user/api/SkImage_Reference.md b/site/user/api/SkImage_Reference.md index 11298c3950..d37b4fa6e6 100644 --- a/site/user/api/SkImage_Reference.md +++ b/site/user/api/SkImage_Reference.md @@ -480,7 +480,7 @@ created Image, or nullptr ### Example -
A back-end texture has been created and uploaded to the GPU outside of this example.
+
A back-end texture has been created and uploaded to the GPU outside of this example.
### See Also @@ -736,8 +736,8 @@ zero but may differ from plane to plane. Returned Image has +one of: kJPEG SkYUVColorSpace, kRec601 SkYUVColorSpace, +kRec709 SkYUVColorSpace
context GPU Context
yuvColorSpace -one of: kJPEG SkYUVColorSpace, kRec601 SkYUVColorSpace, -kRec709 SkYUVColorSpace
yuvTextureHandles array of YUV textures on GPU
yuvSizes @@ -780,8 +780,8 @@ zero but may differ from plane to plane. Returned Image has +one of: kJPEG SkYUVColorSpace, kRec601 SkYUVColorSpace, +kRec709 SkYUVColorSpace diff --git a/site/user/api/SkSurface_Reference.md b/site/user/api/SkSurface_Reference.md index a3b675e180..3cc14e973d 100644 --- a/site/user/api/SkSurface_Reference.md +++ b/site/user/api/SkSurface_Reference.md @@ -61,6 +61,7 @@ of the requested dimensions are zero, then nullptr will be returned. | readPixels | copies Rect of pixels | | wait | rause commands until signaled | | width | returns pixel column count | +| writePixels | copies Rect of pixels | ## Constructor @@ -1396,6 +1397,9 @@ are not captured. Image allocation is acco | | readPixels(const SkPixmap& dst, int srcX, int srcY) | | | readPixels(const SkImageInfo& dstInfo, void* dstPixels, size t dstRowBytes, int srcX, int srcY) | | | readPixels(const SkBitmap& dst, int srcX, int srcY) | +| writePixels | copies Rect of pixels | +| | writePixels(const SkPixmap& src, int dstX, int dstY) | +| | writePixels(const SkBitmap& src, int dstX, int dstY) | ## draw @@ -1463,7 +1467,7 @@ true if Surface has direct access to pixels ### See Also -readPixels[2][3] +readPixels[2][3]writePixels[2] --- @@ -1520,7 +1524,7 @@ true if pixels were copied ### See Also -peekPixels +peekPixelswritePixels[2] --- @@ -1582,7 +1586,7 @@ The copied quarter ovals overdraw the original oval. ### See Also -peekPixels +peekPixelswritePixels[2] --- @@ -1639,7 +1643,78 @@ true if pixels were copied ### See Also -peekPixels +peekPixelswritePixels[2] + +--- + + +## writePixels + +
+void writePixels(const SkPixmap& src, int dstX, int dstY)
+
+ +Copies Rect of pixels from the srcPixmap to the Surface. + +Source Rect corners are (0, 0) and (src.width, src.height). +Destination Rect corners are (dstX, dstY) and(dstX + Surfacewidth, dstY + Surfaceheight). + +Copies each readable pixel intersecting both rectangles, without scaling, +converting to Surface colorType() and Surface alphaType() if required. + +### Parameters + +
context GPU Context
yuvColorSpace -one of: kJPEG SkYUVColorSpace, kRec601 SkYUVColorSpace, -kRec709 SkYUVColorSpace
yuvTextureHandles array of YUV textures on GPU
yuvSizes @@ -827,8 +827,8 @@ zero but may differ from plane to plane. Returned Image has +one of: kJPEG SkYUVColorSpace, kRec601 SkYUVColorSpace, +kRec709 SkYUVColorSpace +to be deprecated
context GPU Context
yuvColorSpace -one of: kJPEG SkYUVColorSpace, kRec601 SkYUVColorSpace, -kRec709 SkYUVColorSpace
nv12TextureHandles array of YUV textures on GPU
nv12Sizes @@ -873,8 +873,8 @@ zero but may differ from plane to plane. Returned Image has +one of: kJPEG SkYUVColorSpace, kRec601 SkYUVColorSpace, +kRec709 SkYUVColorSpace
context GPU Context
yuvColorSpace -one of: kJPEG SkYUVColorSpace, kRec601 SkYUVColorSpace, -kRec709 SkYUVColorSpace
nv12TextureHandles array of YUV textures on GPU
nv12Sizes @@ -900,18 +900,18 @@ created Image, or nullptr
 enum class BitDepth {
-kU8,
-kF16,
+kU8,
+kF16,
 };
### Constants - + - +
SkImage::kU8 0Use 8 bits per Color ARGB component using unsigned integer format. SkImage::BitDepth::kU8 0Use 8 bits per Color ARGB component using unsigned integer format.
SkImage::kF16 1Use 16 bits per Color ARGB component using half-precision floating point format. SkImage::BitDepth::kF16 1Use 16 bits per Color ARGB component using half-precision floating point format.
@@ -1984,7 +1984,7 @@ Returns nullptr if backed by GPU Texture ### See Also -incomplete +makeTextureImage makeRasterImage MakeBackendTextureFromSkImage --- @@ -2032,26 +2032,24 @@ required storage for translation of returned Image. Returns nullptr if Image could not be created. If nullptr is returned, outSubset and offset are undefined. -makeWithFilter is optimized to support Image backed by GPU Texture drawn in an -animation with SkImageFilter that vary in size from one frame to the next. The -created Image is drawn at an increased size so that GPU Texture can be reused -with different sized effects. outSubset describes the valid bounds of GPU Texture -returned. The returned Image may be much larger than required for the filter. -offset translates the returned Image to keep subsequent animation frames -aligned with respect to each other. +Useful for animation of SkImageFilter that varies size from frame to frame. +Returned Image is created larger than required by filter so that GPU Texture +can be reused with different sized effects. outSubset describes the valid bounds +of GPU Texture returned. offset translates the returned Image to keep subsequent +animation frames aligned with respect to each other. ### Parameters +bounds of Image processed by filter +expected bounds of filtered Image +storage for returned Image bounds +storage for returned Image translation
filter how Image is sampled when transformed
subset -incomplete
clipBounds -incomplete
outSubset -incomplete
offset -incomplete
@@ -2066,7 +2064,7 @@ By translating canvas by returned offse ### See Also -SkPaint::setImageFilter +makeShader[2] SkPaint::setImageFilter --- @@ -2110,83 +2108,71 @@ static bool MakeBackendTextureFromSkImage(GrContext* context, sk_sp<SkImage&g BackendTextureReleaseProc* backendTextureReleaseProc) -Creates a GrBackendTexture from the provided SkImage. Returns true on success. The -GrBackendTexture and BackendTextureReleaseProc are populated on success. It is the callers -responsibility to call the BackendTextureReleaseProc once they have deleted the texture. -Note that the BackendTextureReleaseProc allows Skia to clean up auxiliary data related -to the GrBackendTexture, and is not a substitute for the client deleting the GrBackendTexture -themselves. +Creates a GrBackendTexture from the provided SkImage. Returns true and +stores result in backendTexture and backendTextureReleaseProc if +texture is created; otherwise, returns false and leaves +backendTexture and backendTextureReleaseProc unmodified. -If image is both texture backed and singly referenced; that is, its only -reference was transferred using std::move(): image is returned in backendTexture -without conversion or making a copy. +Call backendTextureReleaseProc after deleting backendTexture. +backendTextureReleaseProc cleans up auxiliary data related to returned +backendTexture. The caller must delete returned backendTexture after use. -If Image is not texture backed, this function returns texture with Image -contents. +If Image is both texture backed and singly referenced, image is returned in +backendTexture without conversion or making a copy. Image is singly referenced +if its was transferred solely using std::move(). + +If Image is not texture backed, returns texture with Image contents. ### Parameters +Image used for texture +storage for backend texture +storage for clean up function
context GPU Context
image -incomplete
backendTexture -incomplete
backendTextureReleaseProc -incomplete
### Return Value -incomplete +true if backend texture was created ### Example -
+
### See Also -incomplete +MakeFromTexture[2][3][4] makeTextureImage --- ## Enum SkImage::LegacyBitmapMode +soon +
 enum LegacyBitmapMode {
 kRO LegacyBitmapMode,
-kRW LegacyBitmapMode,
 };
-Helper functions to convert to SkBitmap - ### Constants - + - - - -
SkImage::kRO_LegacyBitmapMode 0 SkImage::kRO_LegacyBitmapMode 0Returned bitmap is read-only and immutable.
SkImage::kRW_LegacyBitmapMode 1
- -### Example - -
- -### See Also - -incomplete - +
## asLegacyBitmap
-bool asLegacyBitmap(SkBitmap* bitmap, LegacyBitmapMode legacyBitmapMode) const
+bool asLegacyBitmap(SkBitmap* bitmap, LegacyBitmapMode legacyBitmapMode = kRO_LegacyBitmapMode) const
 
Creates raster Bitmap with same pixels as Image. If legacyBitmapMode is @@ -2199,7 +2185,7 @@ Returns true if Bitmap is stored in
bitmap storage for legacy Bitmap
legacyBitmapMode -one of: kRO LegacyBitmapMode, kRW LegacyBitmapMode
@@ -2209,11 +2195,11 @@ true if Bitmap was created ### Example -
+
### See Also -incomplete +MakeRasterData makeRasterImage makeNonTextureImage --- diff --git a/site/user/api/SkPaint_Reference.md b/site/user/api/SkPaint_Reference.md index b9df684bef..0e6828a823 100644 --- a/site/user/api/SkPaint_Reference.md +++ b/site/user/api/SkPaint_Reference.md @@ -2134,7 +2134,7 @@ and to create an unfilled hole inside the shape.
SkPaint::kStroke_Style 1Set to stroke geometry. Applies to Rect, Region, Round Rect, Arcs, Circles, Ovals, Path, and Text. -Arcs, Lines, and Points, are always drawn as if kStroke Style is set, +Arcs, Lines, and points, are always drawn as if kStroke Style is set, and ignore the set Style. The stroke construction is unaffected by the Path Fill Type.
+ + + +
src +storage for pixels to copy to Surface
dstX +x position relative to Surface to begin copy; may be negative
dstY +x position relative to Surface to begin copy; may be negative
+ +### Example + +
+ +### See Also + +readPixels[2][3] peekPixels + +--- + + + +
+void writePixels(const SkBitmap& src, int dstX, int dstY)
+
+ +Copies Rect of pixels from the src Bitmap to the Surface. + +Source Rect corners are (0, 0) and (src.width, src.height). +Destination Rect corners are (dstX, dstY) and(dstX + Surface width, dstY + Surface height). + +Copies each readable pixel intersecting both rectangles, without scaling, +converting to Surface colorType() and Surface alphaType() if required. + +### Parameters + + + + + +
src +storage for pixels to copy to Surface
dstX +x position relative to Surface to begin copy; may be negative
dstY +x position relative to Surface to begin copy; may be negative
+ +### Example + +
+ +### See Also + +readPixels[2][3] peekPixels --- diff --git a/site/user/api/catalog.htm b/site/user/api/catalog.htm index 3e434fc919..296b53ba35 100644 --- a/site/user/api/catalog.htm +++ b/site/user/api/catalog.htm @@ -373,7 +373,7 @@ }, "SkCanvas_SaveLayerRec_SaveLayerRec": { "code": "void draw(SkCanvas* canvas) {\n SkCanvas::SaveLayerRec rec1;\n rec1.fSaveLayerFlags = SkCanvas::kPreserveLCDText_SaveLayerFlag;\n SkCanvas::SaveLayerRec rec2(nullptr, nullptr, SkCanvas::kPreserveLCDText_SaveLayerFlag);\n SkDebugf(\"rec1 %c= rec2\\n\", rec1.fBounds == rec2.fBounds\n && rec1.fPaint == rec2.fPaint\n && rec1.fBackdrop == rec2.fBackdrop\n && rec1.fSaveLayerFlags == rec2.fSaveLayerFlags ? '=' : '!');\n}", - "hash": "ac7c834dce2eac6ef49c15e820e94003", + "hash": "b5cea1eed80a0eb04ddbab3f36dff73f", "file": "SkCanvas_Reference", "name": "SkCanvas::SaveLayerRec::SaveLayerRec", "stdout": "rec1 == rec2\\n" @@ -4949,20 +4949,12 @@ "hash": "882e8e0103048009a25cfc20400492f7", "file": "SkImageInfo_Reference", "name": "SkImageInfo::width()" -}, - "SkImage_LegacyBitmapMode": { - "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", - "width": 256, - "height": 256, - "hash": "882e8e0103048009a25cfc20400492f7", - "file": "SkImage_Reference", - "name": "SkImage::LegacyBitmapMode" }, "SkImage_MakeBackendTextureFromSkImage": { - "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "code": "static sk_sp create_gpu_image(GrContext* grContext) {\n const SkImageInfo info = SkImageInfo::MakeN32(20, 20, kOpaque_SkAlphaType);\n auto surface(SkSurface::MakeRenderTarget(grContext, SkBudgeted::kNo, info));\n SkCanvas* canvas = surface->getCanvas();\n canvas->clear(SK_ColorWHITE);\n SkPaint paint;\n paint.setColor(SK_ColorBLACK);\n canvas->drawRect(SkRect::MakeXYWH(5, 5, 10, 10), paint);\n return surface->makeImageSnapshot();\n}\n\nvoid draw(SkCanvas* canvas) { \n GrContext* grContext = canvas->getGrContext();\n if (!grContext) {\n return;\n }\n sk_sp backEndImage = create_gpu_image(grContext);\n canvas->drawImage(backEndImage, 0, 0);\n GrBackendTexture texture;\n SkImage::BackendTextureReleaseProc proc;\n if (!SkImage::MakeBackendTextureFromSkImage(grContext, std::move(backEndImage),\n &texture, &proc)) {\n return;\n }\n sk_sp i2 = SkImage::MakeFromTexture(grContext, texture, kTopLeft_GrSurfaceOrigin,\n kN32_SkColorType, kOpaque_SkAlphaType, nullptr);\n canvas->drawImage(i2, 30, 30);\n}\n", "width": 256, - "height": 256, - "hash": "882e8e0103048009a25cfc20400492f7", + "height": 64, + "hash": "98e70337c2964abd2624239d28bbecd7", "file": "SkImage_Reference", "name": "SkImage::MakeBackendTextureFromSkImage" }, @@ -5023,10 +5015,10 @@ "name": "SkImage::MakeFromPicture" }, "SkImage_MakeFromTexture_3": { - "code": "void draw(SkCanvas* canvas) {\n GrContext* context = canvas->getGrContext();\n if (!context) {\n return;\n }\n canvas->scale(.25f, .25f);\n int x = 0;\n for (auto origin : { kBottomLeft_GrSurfaceOrigin, kTopLeft_GrSurfaceOrigin } ) {\n sk_sp image = SkImage::MakeFromTexture(context, backEndTexture,\n origin, kOpaque_SkAlphaType, nullptr);\n canvas->drawImage(image, x, 0);\n x += 512;\n }\n}", + "code": "void draw(SkCanvas* canvas) {\n GrContext* context = canvas->getGrContext();\n if (!context) {\n return;\n }\n canvas->scale(.25f, .25f);\n int x = 0;\n for (auto origin : { kBottomLeft_GrSurfaceOrigin, kTopLeft_GrSurfaceOrigin } ) {\n sk_sp image = SkImage::MakeFromTexture(context, backEndTexture,\n origin, kN32_SkColorType, kOpaque_SkAlphaType, nullptr);\n canvas->drawImage(image, x, 0);\n x += 512;\n }\n}", "width": 256, "height": 128, - "hash": "d5e43961a54548f445eece91d517381c", + "hash": "fdc498de45b53569743ec13012bf476c", "file": "SkImage_Reference", "name": "SkImage::MakeFromTexture_3" }, @@ -5063,10 +5055,10 @@ "name": "SkImage::alphaType" }, "SkImage_asLegacyBitmap": { - "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "code": "void draw(SkCanvas* canvas) {\n SkBitmap bitImage;\n if (image->asLegacyBitmap(&bitImage, SkImage::kRO_LegacyBitmapMode)) {\n canvas->drawBitmap(bitImage, 0, 0);\n }\n GrContext* grContext = canvas->getGrContext();\n if (!grContext) {\n return;\n }\n sk_sp textureImage(SkImage::MakeFromTexture(grContext, backEndTexture,\n kTopLeft_GrSurfaceOrigin, kOpaque_SkAlphaType, nullptr));\n canvas->drawImage(textureImage, 45, 45);\n if (textureImage->asLegacyBitmap(&bitImage, SkImage::kRO_LegacyBitmapMode)) {\n canvas->drawBitmap(bitImage, 90, 90);\n }\n}", "width": 256, "height": 256, - "hash": "882e8e0103048009a25cfc20400492f7", + "hash": "eddfe9735342052ce2f8869ee5eb737a", "file": "SkImage_Reference", "name": "SkImage::asLegacyBitmap" }, @@ -7005,6 +6997,22 @@ "hash": "c9033080af68efc0f270d748f1c0e011", "file": "SkSurface_Reference", "name": "SkSurface::wait()" +}, + "SkSurface_writePixels": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkSurface_Reference", + "name": "SkSurface::writePixels" +}, + "SkSurface_writePixels_2": { + "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", + "width": 256, + "height": 256, + "hash": "882e8e0103048009a25cfc20400492f7", + "file": "SkSurface_Reference", + "name": "SkSurface::writePixels_2" }, "SkYUVColorSpace": { "code": "void draw(SkCanvas* canvas) {\n // incomplete\n}", @@ -7231,4 +7239,4 @@ onclick="handleMouseClick()" > - + \ No newline at end of file -- cgit v1.2.3