| 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 |