Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(75)

Side by Side Diff: src/core/SkCanvas.cpp

Issue 197433002: support direct writing to top layer (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 1
2 /* 2 /*
3 * Copyright 2008 The Android Open Source Project 3 * Copyright 2008 The Android Open Source Project
4 * 4 *
5 * Use of this source code is governed by a BSD-style license that can be 5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file. 6 * found in the LICENSE file.
7 */ 7 */
8 8
9 9
10 #include "SkCanvas.h" 10 #include "SkCanvas.h"
(...skipping 1044 matching lines...) Expand 10 before | Expand all | Expand 10 after
1055 1055
1056 const void* SkCanvas::peekPixels(SkImageInfo* info, size_t* rowBytes) { 1056 const void* SkCanvas::peekPixels(SkImageInfo* info, size_t* rowBytes) {
1057 return this->onPeekPixels(info, rowBytes); 1057 return this->onPeekPixels(info, rowBytes);
1058 } 1058 }
1059 1059
1060 const void* SkCanvas::onPeekPixels(SkImageInfo* info, size_t* rowBytes) { 1060 const void* SkCanvas::onPeekPixels(SkImageInfo* info, size_t* rowBytes) {
1061 SkBaseDevice* dev = this->getDevice(); 1061 SkBaseDevice* dev = this->getDevice();
1062 return dev ? dev->peekPixels(info, rowBytes) : NULL; 1062 return dev ? dev->peekPixels(info, rowBytes) : NULL;
1063 } 1063 }
1064 1064
1065 void* SkCanvas::accessTopLayerPixels(SkImageInfo* info, size_t* rowBytes) {
1066 return const_cast<void*>(this->onPeekPixels(info, rowBytes));
bsalomon 2014/03/12 14:43:11 onAccessTopLayerPixels()
reed1 2014/03/12 15:31:59 Done.
1067 }
1068
1069 void* SkCanvas::onAccessTopLayerPixels(SkImageInfo* info, size_t* rowBytes) {
1070 SkBaseDevice* dev = this->getTopDevice();
1071 return dev ? dev->accessPixels(info, rowBytes) : NULL;
1072 }
1073
1065 SkAutoROCanvasPixels::SkAutoROCanvasPixels(SkCanvas* canvas) { 1074 SkAutoROCanvasPixels::SkAutoROCanvasPixels(SkCanvas* canvas) {
1066 fAddr = canvas->peekPixels(&fInfo, &fRowBytes); 1075 fAddr = canvas->peekPixels(&fInfo, &fRowBytes);
1067 if (NULL == fAddr) { 1076 if (NULL == fAddr) {
1068 fInfo = canvas->imageInfo(); 1077 fInfo = canvas->imageInfo();
1069 if (kUnknown_SkColorType == fInfo.colorType() || 1078 if (kUnknown_SkColorType == fInfo.colorType() ||
1070 !fBitmap.allocPixels(fInfo)) 1079 !fBitmap.allocPixels(fInfo))
1071 { 1080 {
1072 return; // failure, fAddr is NULL 1081 return; // failure, fAddr is NULL
1073 } 1082 }
1074 fBitmap.lockPixels(); 1083 fBitmap.lockPixels();
(...skipping 653 matching lines...) Expand 10 before | Expand all | Expand 10 after
1728 void SkCanvas::internal_private_getTotalClipAsPath(SkPath* path) const { 1737 void SkCanvas::internal_private_getTotalClipAsPath(SkPath* path) const {
1729 path->reset(); 1738 path->reset();
1730 1739
1731 const SkRegion& rgn = fMCRec->fRasterClip->forceGetBW(); 1740 const SkRegion& rgn = fMCRec->fRasterClip->forceGetBW();
1732 if (rgn.isEmpty()) { 1741 if (rgn.isEmpty()) {
1733 return; 1742 return;
1734 } 1743 }
1735 (void)rgn.getBoundaryPath(path); 1744 (void)rgn.getBoundaryPath(path);
1736 } 1745 }
1737 1746
1747 GrRenderTarget* SkCanvas::internal_private_accessTopLayerRenderTarget() {
1748 SkBaseDevice* dev = this->getTopDevice();
1749 return dev ? dev->accessRenderTarget() : NULL;
1750 }
1751
1738 SkBaseDevice* SkCanvas::createLayerDevice(const SkImageInfo& info) { 1752 SkBaseDevice* SkCanvas::createLayerDevice(const SkImageInfo& info) {
1739 SkBaseDevice* device = this->getTopDevice(); 1753 SkBaseDevice* device = this->getTopDevice();
1740 return device ? device->createCompatibleDeviceForSaveLayer(info) : NULL; 1754 return device ? device->createCompatibleDeviceForSaveLayer(info) : NULL;
1741 } 1755 }
1742 1756
1743 GrContext* SkCanvas::getGrContext() { 1757 GrContext* SkCanvas::getGrContext() {
1744 #if SK_SUPPORT_GPU 1758 #if SK_SUPPORT_GPU
1745 SkBaseDevice* device = this->getTopDevice(); 1759 SkBaseDevice* device = this->getTopDevice();
1746 if (NULL != device) { 1760 if (NULL != device) {
1747 GrRenderTarget* renderTarget = device->accessRenderTarget(); 1761 GrRenderTarget* renderTarget = device->accessRenderTarget();
(...skipping 737 matching lines...) Expand 10 before | Expand all | Expand 10 after
2485 if (!bitmap.allocPixels(info)) { 2499 if (!bitmap.allocPixels(info)) {
2486 return NULL; 2500 return NULL;
2487 } 2501 }
2488 2502
2489 // should this functionality be moved into allocPixels()? 2503 // should this functionality be moved into allocPixels()?
2490 if (!bitmap.info().isOpaque()) { 2504 if (!bitmap.info().isOpaque()) {
2491 bitmap.eraseColor(0); 2505 bitmap.eraseColor(0);
2492 } 2506 }
2493 return SkNEW_ARGS(SkCanvas, (bitmap)); 2507 return SkNEW_ARGS(SkCanvas, (bitmap));
2494 } 2508 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698