diff options
author | Cary Clark <caryclark@skia.org> | 2017-12-01 11:49:58 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-12-01 17:13:39 +0000 |
commit | 3cd22cc543ba410f8b46b8b0ca22fb8580040472 (patch) | |
tree | cf5a4d8a4d024492c8f23203c6ec042f856a324c /docs/SkSurface_Reference.bmh | |
parent | 8ceee43de49b314fff58852c2d89ed3885ae71ee (diff) |
working on skimage
working on skimage
Docs-Preview: https://skia.org/?cl=76562
Bug: skia:
Change-Id: I288d2a9bbbdf01bff9efd5f0a9d308d3c76391a4
Reviewed-on: https://skia-review.googlesource.com/76562
Reviewed-by: Cary Clark <caryclark@skia.org>
Commit-Queue: Cary Clark <caryclark@skia.org>
Diffstat (limited to 'docs/SkSurface_Reference.bmh')
-rw-r--r-- | docs/SkSurface_Reference.bmh | 266 |
1 files changed, 131 insertions, 135 deletions
diff --git a/docs/SkSurface_Reference.bmh b/docs/SkSurface_Reference.bmh index c6cbbbb7aa..f13134fa46 100644 --- a/docs/SkSurface_Reference.bmh +++ b/docs/SkSurface_Reference.bmh @@ -625,6 +625,7 @@ Surface bottom-left corner is pinned to the origin. #Return Surface if all parameters are valid; otherwise, nullptr ## #Example +#Platform cpu gpu #Description LCD text takes advantage of raster striping to improve resolution. Only one of the four combinations is correct, depending on whether the monitor's LCD is @@ -644,23 +645,18 @@ void draw(SkCanvas* canvas) { }; GrContext* context = canvas->getGrContext(); SkImageInfo info = SkImageInfo::MakeN32(128, 64, kOpaque_SkAlphaType); - SkAutoTMalloc<SkPMColor> storage(info.computeMinByteSize()); - SkBitmap bitmap; - bitmap.installPixels(info, storage.get(), info.minRowBytes()); int y = 0; for (auto geometry : { kRGB_H_SkPixelGeometry, kBGR_H_SkPixelGeometry, kRGB_V_SkPixelGeometry, kBGR_V_SkPixelGeometry } ) { SkSurfaceProps props(0, geometry); - std::unique_ptr<SkCanvas> offscreen = SkCanvas::MakeRasterDirect(info, storage.get(), - info.minRowBytes(), &props); sk_sp<SkSurface> surface = context ? SkSurface::MakeRenderTarget( context, SkBudgeted::kNo, info, 0, &props) : SkSurface::MakeRaster(info, &props); test_draw(surface->getCanvas()); surface->draw(canvas, 0, y, nullptr); - surface->draw(offscreen.get(), 0, 0, nullptr); + sk_sp<SkImage> image(surface->makeImageSnapshot()); SkAutoCanvasRestore acr(canvas, true); canvas->scale(8, 8); - canvas->drawBitmap(bitmap, 12, y / 8); + canvas->drawImage(image, 12, y / 8); y += 64; } } @@ -893,43 +889,43 @@ CAN WE DEPRECATE THIS? }; ## -#Const kFlushRead_BackendHandleAccess +#Const kFlushRead_BackendHandleAccess 0 Caller may read from the back-end object. ## -#Const kFlushWrite_BackendHandleAccess +#Const kFlushWrite_BackendHandleAccess 1 Caller may write to the back-end object. ## -#Const kDiscardWrite_BackendHandleAccess +#Const kDiscardWrite_BackendHandleAccess 2 Caller must overwrite the entire back-end object. ## #Example #Platform gpu - SkPaint paint;
- paint.setTextSize(32);
- GrContext* context = canvas->getGrContext();
- if (!context) {
- canvas->drawString("GPU only!", 20, 40, paint);
- return;
- }
- sk_sp<SkSurface> gpuSurface = SkSurface::MakeRenderTarget(
- context, SkBudgeted::kYes, SkImageInfo::MakeN32Premul(10, 10));
- int y = 20;
- SkString str;
- paint.setTextSize(16);
- for (auto access : { SkSurface::kFlushRead_BackendHandleAccess,
- SkSurface::kFlushWrite_BackendHandleAccess,
- SkSurface::kDiscardWrite_BackendHandleAccess } ) {
- sk_sp<SkImage> image(gpuSurface->makeImageSnapshot());
- str.printf("uniqueID=%d", image->uniqueID());
- canvas->drawString(str, 20, y += 20, paint);
- GrBackendObject backendObject = gpuSurface->getTextureHandle(access);
- str.printf("backendObject %c= 0", backendObject != 0 ? '!' : '=');
- canvas->drawString(str, 20, y += 20, paint);
- }
- sk_sp<SkImage> image(gpuSurface->makeImageSnapshot());
- str.printf("final image uniqueID=%d", image->uniqueID());
- canvas->drawString(str, 20, y += 20, paint);
+ SkPaint paint; + paint.setTextSize(32); + GrContext* context = canvas->getGrContext(); + if (!context) { + canvas->drawString("GPU only!", 20, 40, paint); + return; + } + sk_sp<SkSurface> gpuSurface = SkSurface::MakeRenderTarget( + context, SkBudgeted::kYes, SkImageInfo::MakeN32Premul(10, 10)); + int y = 20; + SkString str; + paint.setTextSize(16); + for (auto access : { SkSurface::kFlushRead_BackendHandleAccess, + SkSurface::kFlushWrite_BackendHandleAccess, + SkSurface::kDiscardWrite_BackendHandleAccess } ) { + sk_sp<SkImage> image(gpuSurface->makeImageSnapshot()); + str.printf("uniqueID=%d", image->uniqueID()); + canvas->drawString(str, 20, y += 20, paint); + GrBackendObject backendObject = gpuSurface->getTextureHandle(access); + str.printf("backendObject %c= 0", backendObject != 0 ? '!' : '='); + canvas->drawString(str, 20, y += 20, paint); + } + sk_sp<SkImage> image(gpuSurface->makeImageSnapshot()); + str.printf("final image uniqueID=%d", image->uniqueID()); + canvas->drawString(str, 20, y += 20, paint); ## #SeeAlso getTextureHandle getRenderTargetHandle @@ -955,23 +951,23 @@ or when Surface is deleted. #Example #Platform gpu #Height 64 - SkPaint paint;
- paint.setTextSize(32);
- GrContext* context = canvas->getGrContext();
- if (!context) {
- canvas->drawString("GPU only!", 20, 40, paint);
- return;
- }
- sk_sp<SkSurface> gpuSurface = SkSurface::MakeRenderTarget(
- context, SkBudgeted::kYes, SkImageInfo::MakeN32Premul(10, 10));
- GrBackendObject backendObject = gpuSurface->getTextureHandle(
- SkSurface::kFlushRead_BackendHandleAccess);
- if (backendObject) {
- SkString str;
- str.printf("backendObject=%08x", backendObject);
- paint.setTextSize(16);
- canvas->drawString(str, 20, 40, paint);
- }
+ SkPaint paint; + paint.setTextSize(32); + GrContext* context = canvas->getGrContext(); + if (!context) { + canvas->drawString("GPU only!", 20, 40, paint); + return; + } + sk_sp<SkSurface> gpuSurface = SkSurface::MakeRenderTarget( + context, SkBudgeted::kYes, SkImageInfo::MakeN32Premul(10, 10)); + GrBackendObject backendObject = gpuSurface->getTextureHandle( + SkSurface::kFlushRead_BackendHandleAccess); + if (backendObject) { + SkString str; + str.printf("backendObject=%08x", backendObject); + paint.setTextSize(16); + canvas->drawString(str, 20, 40, paint); + } ## #SeeAlso getRenderTargetHandle GrBackendObject BackendHandleAccess @@ -1004,23 +1000,23 @@ In OpenGL this returns the frame buffer object ID. #Example #Platform gpu #Height 64 - SkPaint paint;
- paint.setTextSize(32);
- GrContext* context = canvas->getGrContext();
- if (!context) {
- canvas->drawString("GPU only!", 20, 40, paint);
- return;
- }
- sk_sp<SkSurface> gpuSurface = SkSurface::MakeRenderTarget(
- context, SkBudgeted::kYes, SkImageInfo::MakeN32Premul(10, 10));
- GrBackendObject backendObject;
- if (gpuSurface->getRenderTargetHandle(&backendObject,
- SkSurface::kFlushRead_BackendHandleAccess)) {
- SkString str;
- str.printf("backendObject=%d", backendObject);
- paint.setTextSize(16);
- canvas->drawString(str, 20, 40, paint);
- }
+ SkPaint paint; + paint.setTextSize(32); + GrContext* context = canvas->getGrContext(); + if (!context) { + canvas->drawString("GPU only!", 20, 40, paint); + return; + } + sk_sp<SkSurface> gpuSurface = SkSurface::MakeRenderTarget( + context, SkBudgeted::kYes, SkImageInfo::MakeN32Premul(10, 10)); + GrBackendObject backendObject; + if (gpuSurface->getRenderTargetHandle(&backendObject, + SkSurface::kFlushRead_BackendHandleAccess)) { + SkString str; + str.printf("backendObject=%d", backendObject); + paint.setTextSize(16); + canvas->drawString(str, 20, 40, paint); + } ## #SeeAlso getTextureHandle GrBackendObject BackendHandleAccess @@ -1349,21 +1345,21 @@ Does not copy, and returns false if: #Return true if pixels were copied ## #Example - sk_sp<SkSurface> surf(SkSurface::MakeRasterN32Premul(64, 64));
- auto surfCanvas = surf->getCanvas();
- surfCanvas->clear(SK_ColorGREEN);
- SkPaint paint;
- surfCanvas->drawOval({2, 10, 58, 54}, paint);
- SkImageInfo info = SkImageInfo::Make(64, 64, kBGRA_8888_SkColorType, kPremul_SkAlphaType);
- SkBitmap bitmap;
- bitmap.setInfo(info);
- bitmap.allocPixels();
- for (int x : { 32, -32 } ) {
- for (int y : { 32, -32 } ) {
- surf->readPixels(bitmap, x, y);
- }
- }
- canvas->drawBitmap(bitmap, 0, 0);
+ sk_sp<SkSurface> surf(SkSurface::MakeRasterN32Premul(64, 64)); + auto surfCanvas = surf->getCanvas(); + surfCanvas->clear(SK_ColorGREEN); + SkPaint paint; + surfCanvas->drawOval({2, 10, 58, 54}, paint); + SkImageInfo info = SkImageInfo::Make(64, 64, kBGRA_8888_SkColorType, kPremul_SkAlphaType); + SkBitmap bitmap; + bitmap.setInfo(info); + bitmap.allocPixels(); + for (int x : { 32, -32 } ) { + for (int y : { 32, -32 } ) { + surf->readPixels(bitmap, x, y); + } + } + canvas->drawBitmap(bitmap, 0, 0); ## #SeeAlso peekPixels @@ -1380,7 +1376,7 @@ Returns Surface_Properties for surface. #Example const char* names[] = { "Unknown", "RGB_H", "BGR_H", "RGB_V", "BGR_V" }; - sk_sp<SkSurface> surf(SkSurface::MakeRasterN32Premul(64, 64));
+ sk_sp<SkSurface> surf(SkSurface::MakeRasterN32Premul(64, 64)); SkDebugf("surf.props(): k%s_SkPixelGeometry\n", names[surf->props().pixelGeometry()]); #StdOut surf.props(): kRGB_H_SkPixelGeometry @@ -1480,16 +1476,16 @@ and the client will still own the semaphores. ## #Platform !fiddle gpu #Height 64 - SkPaint paint;
- paint.setTextSize(32);
- GrContext* context = canvas->getGrContext();
- if (!context) {
- canvas->drawString("GPU only!", 20, 40, paint);
- return;
- }
+ SkPaint paint; + paint.setTextSize(32); + GrContext* context = canvas->getGrContext(); + if (!context) { + canvas->drawString("GPU only!", 20, 40, paint); + return; + } GrBackendSemaphore semaphore; - sk_sp<SkSurface> surface = SkSurface::MakeRenderTarget(
- context, SkBudgeted::kYes, SkImageInfo::MakeN32Premul(64, 64));
+ sk_sp<SkSurface> surface = SkSurface::MakeRenderTarget( + context, SkBudgeted::kYes, SkImageInfo::MakeN32Premul(64, 64)); surface->flushAndSignalSemaphores(1, &semaphore); sk_sp<SkImage> image = surface->makeImageSnapshot(); GrBackendObject backendImage = image->getTextureHandle(false); // unused @@ -1506,7 +1502,7 @@ and the client will still own the semaphores. childCanvas->clear(SK_ColorRED); childSurface->wait(1, &semaphore); childCanvas->drawImage(childImage, 32, 0); - childSurface->draw(canvas, 0, 0, nullptr);
+ childSurface->draw(canvas, 0, 0, nullptr); ## #SeeAlso flushAndSignalSemaphores GrBackendSemaphore @@ -1531,29 +1527,29 @@ Return true if Surface supports characterization. Raster_Surface returns false. #Example #Platform gpu #Height 64 - SkPaint paint;
- paint.setTextSize(32);
- GrContext* context = canvas->getGrContext();
- if (!context) {
- canvas->drawString("GPU only!", 20, 40, paint);
- return;
- }
- sk_sp<SkSurface> gpuSurface = SkSurface::MakeRenderTarget(
- context, SkBudgeted::kYes, SkImageInfo::MakeN32Premul(64, 64));
- SkSurfaceCharacterization characterization;
- if (!gpuSurface->characterize(&characterization)) {
- canvas->drawString("characterization unsupported", 20, 40, paint);
- return;
- }
- // start of threadable work
- SkDeferredDisplayListRecorder recorder(characterization);
- SkCanvas* subCanvas = recorder.getCanvas();
- subCanvas->clear(SK_ColorGREEN);
- std::unique_ptr<SkDeferredDisplayList> displayList = recorder.detach();
- // end of threadable work
- gpuSurface->draw(displayList.get());
- sk_sp<SkImage> img = gpuSurface->makeImageSnapshot();
- canvas->drawImage(std::move(img), 0, 0);
+ SkPaint paint; + paint.setTextSize(32); + GrContext* context = canvas->getGrContext(); + if (!context) { + canvas->drawString("GPU only!", 20, 40, paint); + return; + } + sk_sp<SkSurface> gpuSurface = SkSurface::MakeRenderTarget( + context, SkBudgeted::kYes, SkImageInfo::MakeN32Premul(64, 64)); + SkSurfaceCharacterization characterization; + if (!gpuSurface->characterize(&characterization)) { + canvas->drawString("characterization unsupported", 20, 40, paint); + return; + } + // start of threadable work + SkDeferredDisplayListRecorder recorder(characterization); + SkCanvas* subCanvas = recorder.getCanvas(); + subCanvas->clear(SK_ColorGREEN); + std::unique_ptr<SkDeferredDisplayList> displayList = recorder.detach(); + // end of threadable work + gpuSurface->draw(displayList.get()); + sk_sp<SkImage> img = gpuSurface->makeImageSnapshot(); + canvas->drawImage(std::move(img), 0, 0); ## #SeeAlso draw() SkSurfaceCharacterization SkDeferredDisplayList @@ -1573,23 +1569,23 @@ is not compatible with Surface. #Example #Height 64 #Platform gpu cpu - SkPaint paint;
- paint.setTextSize(16);
- sk_sp<SkSurface> gpuSurface = SkSurface::MakeRasterN32Premul(64, 64);
- SkSurfaceCharacterization characterization;
- if (!gpuSurface->characterize(&characterization)) {
- canvas->drawString("characterization unsupported", 20, 40, paint);
- return;
- }
- // start of threadable work
- SkDeferredDisplayListRecorder recorder(characterization);
- SkCanvas* subCanvas = recorder.getCanvas();
- subCanvas->clear(SK_ColorGREEN);
- std::unique_ptr<SkDeferredDisplayList> displayList = recorder.detach();
- // end of threadable work
- gpuSurface->draw(displayList.get());
- sk_sp<SkImage> img = gpuSurface->makeImageSnapshot();
- canvas->drawImage(std::move(img), 0, 0);
+ SkPaint paint; + paint.setTextSize(16); + sk_sp<SkSurface> gpuSurface = SkSurface::MakeRasterN32Premul(64, 64); + SkSurfaceCharacterization characterization; + if (!gpuSurface->characterize(&characterization)) { + canvas->drawString("characterization unsupported", 20, 40, paint); + return; + } + // start of threadable work + SkDeferredDisplayListRecorder recorder(characterization); + SkCanvas* subCanvas = recorder.getCanvas(); + subCanvas->clear(SK_ColorGREEN); + std::unique_ptr<SkDeferredDisplayList> displayList = recorder.detach(); + // end of threadable work + gpuSurface->draw(displayList.get()); + sk_sp<SkImage> img = gpuSurface->makeImageSnapshot(); + canvas->drawImage(std::move(img), 0, 0); ## #SeeAlso characterize() SkSurfaceCharacterization SkDeferredDisplayList |