| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2013 Google Inc. | 2 * Copyright 2013 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 "SkData.h" | 9 #include "SkData.h" |
| 10 #include "SkImageEncoder.h" | 10 #include "SkImageEncoder.h" |
| 11 #include "SkRRect.h" | 11 #include "SkRRect.h" |
| 12 #include "SkSurface.h" | 12 #include "SkSurface.h" |
| 13 #include "SkUtils.h" | 13 #include "SkUtils.h" |
| 14 #include "Test.h" | 14 #include "Test.h" |
| 15 | 15 |
| 16 #if SK_SUPPORT_GPU | 16 #if SK_SUPPORT_GPU |
| 17 #include "GrContextFactory.h" | 17 #include "GrContextFactory.h" |
| 18 #else | 18 #else |
| 19 class GrContextFactory; | 19 class GrContextFactory; |
| 20 class GrContext; | 20 class GrContext; |
| 21 #endif | 21 #endif |
| 22 | 22 |
| 23 enum SurfaceType { | 23 enum SurfaceType { |
| 24 kRaster_SurfaceType, | 24 kRaster_SurfaceType, |
| 25 kRasterDirect_SurfaceType, | 25 kRasterDirect_SurfaceType, |
| 26 kGpu_SurfaceType, | 26 kGpu_SurfaceType, |
| 27 kGpuScratch_SurfaceType, | 27 kGpuScratch_SurfaceType, |
| 28 }; | 28 }; |
| 29 | 29 |
| 30 static const int gSurfaceSize = 10; | 30 static void release_storage(void* pixels, void* context) { |
| 31 static SkPMColor gSurfaceStorage[gSurfaceSize * gSurfaceSize]; | 31 SkASSERT(pixels == context); |
| 32 sk_free(pixels); |
| 33 } |
| 32 | 34 |
| 33 static SkSurface* createSurface(SurfaceType surfaceType, GrContext* context, | 35 static SkSurface* createSurface(SurfaceType surfaceType, GrContext* context, |
| 34 SkImageInfo* requestedInfo = NULL) { | 36 SkImageInfo* requestedInfo = NULL) { |
| 35 static const SkImageInfo info = SkImageInfo::MakeN32Premul(gSurfaceSize, | 37 static const SkImageInfo info = SkImageInfo::MakeN32Premul(10, 10); |
| 36 gSurfaceSize); | |
| 37 | 38 |
| 38 if (requestedInfo) { | 39 if (requestedInfo) { |
| 39 *requestedInfo = info; | 40 *requestedInfo = info; |
| 40 } | 41 } |
| 41 | 42 |
| 42 switch (surfaceType) { | 43 switch (surfaceType) { |
| 43 case kRaster_SurfaceType: | 44 case kRaster_SurfaceType: |
| 44 return SkSurface::NewRaster(info); | 45 return SkSurface::NewRaster(info); |
| 45 case kRasterDirect_SurfaceType: | 46 case kRasterDirect_SurfaceType: { |
| 46 return SkSurface::NewRasterDirect(info, gSurfaceStorage, | 47 const size_t rowBytes = info.minRowBytes(); |
| 47 info.minRowBytes()); | 48 void* storage = sk_malloc_throw(info.getSafeSize(rowBytes)); |
| 49 return SkSurface::NewRasterDirectReleaseProc(info, storage, rowBytes
, |
| 50 release_storage, storag
e); |
| 51 } |
| 48 case kGpu_SurfaceType: | 52 case kGpu_SurfaceType: |
| 49 #if SK_SUPPORT_GPU | 53 #if SK_SUPPORT_GPU |
| 50 return context ? SkSurface::NewRenderTarget(context, info) : NULL; | 54 return context ? SkSurface::NewRenderTarget(context, info) : NULL; |
| 51 #endif | 55 #endif |
| 52 break; | 56 break; |
| 53 case kGpuScratch_SurfaceType: | 57 case kGpuScratch_SurfaceType: |
| 54 #if SK_SUPPORT_GPU | 58 #if SK_SUPPORT_GPU |
| 55 return context ? SkSurface::NewScratchRenderTarget(context, info) :
NULL; | 59 return context ? SkSurface::NewScratchRenderTarget(context, info) :
NULL; |
| 56 #endif | 60 #endif |
| 57 break; | 61 break; |
| (...skipping 380 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 438 TestSurfaceNoCanvas(reporter, kGpu_SurfaceType, context, SkSurface::
kDiscard_ContentChangeMode); | 442 TestSurfaceNoCanvas(reporter, kGpu_SurfaceType, context, SkSurface::
kDiscard_ContentChangeMode); |
| 439 TestSurfaceNoCanvas(reporter, kGpuScratch_SurfaceType, context, SkSu
rface::kDiscard_ContentChangeMode); | 443 TestSurfaceNoCanvas(reporter, kGpuScratch_SurfaceType, context, SkSu
rface::kDiscard_ContentChangeMode); |
| 440 TestSurfaceNoCanvas(reporter, kGpu_SurfaceType, context, SkSurface::
kRetain_ContentChangeMode); | 444 TestSurfaceNoCanvas(reporter, kGpu_SurfaceType, context, SkSurface::
kRetain_ContentChangeMode); |
| 441 TestSurfaceNoCanvas(reporter, kGpuScratch_SurfaceType, context, SkSu
rface::kRetain_ContentChangeMode); | 445 TestSurfaceNoCanvas(reporter, kGpuScratch_SurfaceType, context, SkSu
rface::kRetain_ContentChangeMode); |
| 442 TestGetTexture(reporter, kGpu_SurfaceType, context); | 446 TestGetTexture(reporter, kGpu_SurfaceType, context); |
| 443 TestGetTexture(reporter, kGpuScratch_SurfaceType, context); | 447 TestGetTexture(reporter, kGpuScratch_SurfaceType, context); |
| 444 } | 448 } |
| 445 } | 449 } |
| 446 #endif | 450 #endif |
| 447 } | 451 } |
| OLD | NEW |