| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2016 Google Inc. | 2 * Copyright 2016 Google Inc. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file | 5 * found in the LICENSE file |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 #include "SkCanvas.h" | 8 #include "SkCanvas.h" |
| 9 #include "SkSpecialImage.h" | 9 #include "SkSpecialImage.h" |
| 10 #include "SkSpecialSurface.h" | 10 #include "SkSpecialSurface.h" |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 47 SkASSERT(fSubset.height() > 0); | 47 SkASSERT(fSubset.height() > 0); |
| 48 } | 48 } |
| 49 | 49 |
| 50 SkCanvas* SkSpecialSurface::getCanvas() { | 50 SkCanvas* SkSpecialSurface::getCanvas() { |
| 51 return as_SB(this)->onGetCanvas(); | 51 return as_SB(this)->onGetCanvas(); |
| 52 } | 52 } |
| 53 | 53 |
| 54 SkSpecialImage* SkSpecialSurface::newImageSnapshot() { | 54 SkSpecialImage* SkSpecialSurface::newImageSnapshot() { |
| 55 SkSpecialImage* image = as_SB(this)->onNewImageSnapshot(); | 55 SkSpecialImage* image = as_SB(this)->onNewImageSnapshot(); |
| 56 as_SB(this)->reset(); | 56 as_SB(this)->reset(); |
| 57 return SkSafeRef(image); // the caller will call unref() to balance this | 57 return image; // the caller gets the creation ref |
| 58 } | 58 } |
| 59 | 59 |
| 60 /////////////////////////////////////////////////////////////////////////////// | 60 /////////////////////////////////////////////////////////////////////////////// |
| 61 #include "SkMallocPixelRef.h" | 61 #include "SkMallocPixelRef.h" |
| 62 | 62 |
| 63 class SkSpecialSurface_Raster : public SkSpecialSurface_Base { | 63 class SkSpecialSurface_Raster : public SkSpecialSurface_Base { |
| 64 public: | 64 public: |
| 65 SkSpecialSurface_Raster(SkPixelRef* pr, const SkIRect& subset, const SkSurfa
ceProps* props) | 65 SkSpecialSurface_Raster(SkPixelRef* pr, const SkIRect& subset, const SkSurfa
ceProps* props) |
| 66 : INHERITED(subset, props) { | 66 : INHERITED(subset, props) { |
| 67 const SkImageInfo& info = pr->info(); | 67 const SkImageInfo& info = pr->info(); |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 103 | 103 |
| 104 #if SK_SUPPORT_GPU | 104 #if SK_SUPPORT_GPU |
| 105 /////////////////////////////////////////////////////////////////////////////// | 105 /////////////////////////////////////////////////////////////////////////////// |
| 106 #include "GrContext.h" | 106 #include "GrContext.h" |
| 107 #include "SkGpuDevice.h" | 107 #include "SkGpuDevice.h" |
| 108 | 108 |
| 109 class SkSpecialSurface_Gpu : public SkSpecialSurface_Base { | 109 class SkSpecialSurface_Gpu : public SkSpecialSurface_Base { |
| 110 public: | 110 public: |
| 111 SkSpecialSurface_Gpu(GrTexture* texture, const SkIRect& subset, const SkSurf
aceProps* props) | 111 SkSpecialSurface_Gpu(GrTexture* texture, const SkIRect& subset, const SkSurf
aceProps* props) |
| 112 : INHERITED(subset, props) | 112 : INHERITED(subset, props) |
| 113 , fTexture(texture) { | 113 , fTexture(SkRef(texture)) { |
| 114 | 114 |
| 115 SkASSERT(fTexture->asRenderTarget()); | 115 SkASSERT(fTexture->asRenderTarget()); |
| 116 | 116 |
| 117 SkAutoTUnref<SkGpuDevice> device(SkGpuDevice::Create(fTexture->asRenderT
arget(), props, | 117 SkAutoTUnref<SkGpuDevice> device(SkGpuDevice::Create(fTexture->asRenderT
arget(), props, |
| 118 SkGpuDevice::kUnini
t_InitContents)); | 118 SkGpuDevice::kUnini
t_InitContents)); |
| 119 if (!device) { | 119 if (!device) { |
| 120 return; | 120 return; |
| 121 } | 121 } |
| 122 | 122 |
| 123 fCanvas.reset(new SkCanvas(device)); | 123 fCanvas.reset(new SkCanvas(device)); |
| (...skipping 20 matching lines...) Expand all Loading... |
| 144 return new SkSpecialSurface_Gpu(texture, subset, props); | 144 return new SkSpecialSurface_Gpu(texture, subset, props); |
| 145 } | 145 } |
| 146 | 146 |
| 147 SkSpecialSurface* SkSpecialSurface::NewRenderTarget(GrContext* context, | 147 SkSpecialSurface* SkSpecialSurface::NewRenderTarget(GrContext* context, |
| 148 const GrSurfaceDesc& desc, | 148 const GrSurfaceDesc& desc, |
| 149 const SkSurfaceProps* props)
{ | 149 const SkSurfaceProps* props)
{ |
| 150 if (!context || !SkToBool(desc.fFlags & kRenderTarget_GrSurfaceFlag)) { | 150 if (!context || !SkToBool(desc.fFlags & kRenderTarget_GrSurfaceFlag)) { |
| 151 return nullptr; | 151 return nullptr; |
| 152 } | 152 } |
| 153 | 153 |
| 154 GrTexture* temp = context->textureProvider()->createApproxTexture(desc); | 154 SkAutoTUnref<GrTexture> temp(context->textureProvider()->createApproxTexture
(desc)); |
| 155 if (!temp) { | 155 if (!temp) { |
| 156 return nullptr; | 156 return nullptr; |
| 157 } | 157 } |
| 158 | 158 |
| 159 const SkIRect subset = SkIRect::MakeWH(desc.fWidth, desc.fHeight); | 159 const SkIRect subset = SkIRect::MakeWH(desc.fWidth, desc.fHeight); |
| 160 | 160 |
| 161 return new SkSpecialSurface_Gpu(temp, subset, props); | 161 return new SkSpecialSurface_Gpu(temp, subset, props); |
| 162 } | 162 } |
| 163 | 163 |
| 164 #else | 164 #else |
| 165 | 165 |
| 166 SkSpecialSurface* SkSpecialSurface::NewFromTexture(const SkIRect& subset, GrText
ure*, | 166 SkSpecialSurface* SkSpecialSurface::NewFromTexture(const SkIRect& subset, GrText
ure*, |
| 167 const SkSurfaceProps*) { | 167 const SkSurfaceProps*) { |
| 168 return nullptr; | 168 return nullptr; |
| 169 } | 169 } |
| 170 | 170 |
| 171 SkSpecialSurface* SkSpecialSurface::NewRenderTarget(GrContext* context, | 171 SkSpecialSurface* SkSpecialSurface::NewRenderTarget(GrContext* context, |
| 172 const GrSurfaceDesc& desc, | 172 const GrSurfaceDesc& desc, |
| 173 const SkSurfaceProps* props)
{ | 173 const SkSurfaceProps* props)
{ |
| 174 return nullptr; | 174 return nullptr; |
| 175 } | 175 } |
| 176 | 176 |
| 177 #endif | 177 #endif |
| OLD | NEW |