1 /* 2 * Copyright 2014 Google Inc. 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7 8 // EXPERIMENTAL EXPERIMENTAL EXPERIMENTAL EXPERIMENTAL 9 // DO NOT USE -- FOR INTERNAL TESTING ONLY 10 11 #ifndef sk_surface_DEFINED 12 #define sk_surface_DEFINED 13 14 #include "include/c/sk_types.h" 15 16 SK_C_PLUS_PLUS_BEGIN_GUARD 17 18 /** 19 Return a new surface, with the memory for the pixels automatically 20 allocated. If the requested surface cannot be created, or the 21 request is not a supported configuration, NULL will be returned. 22 23 @param sk_imageinfo_t* Specify the width, height, color type, and 24 alpha type for the surface. 25 26 @param sk_surfaceprops_t* If not NULL, specify additional non-default 27 properties of the surface. 28 */ 29 SK_API sk_surface_t* sk_surface_new_raster(const sk_imageinfo_t*, const sk_surfaceprops_t*); 30 31 /** 32 Create a new surface which will draw into the specified pixels 33 with the specified rowbytes. If the requested surface cannot be 34 created, or the request is not a supported configuration, NULL 35 will be returned. 36 37 @param sk_imageinfo_t* Specify the width, height, color type, and 38 alpha type for the surface. 39 @param void* pixels Specify the location in memory where the 40 destination pixels are. This memory must 41 outlast this surface. 42 @param size_t rowBytes Specify the difference, in bytes, between 43 each adjacent row. Should be at least 44 (width * sizeof(one pixel)). 45 @param sk_surfaceprops_t* If not NULL, specify additional non-default 46 properties of the surface. 47 */ 48 SK_API sk_surface_t* sk_surface_new_raster_direct(const sk_imageinfo_t*, 49 void* pixels, size_t rowBytes, 50 const sk_surfaceprops_t* props); 51 52 /** 53 Decrement the reference count. If the reference count is 1 before 54 the decrement, then release both the memory holding the 55 sk_surface_t and any pixel memory it may be managing. New 56 sk_surface_t are created with a reference count of 1. 57 */ 58 SK_API void sk_surface_unref(sk_surface_t*); 59 60 /** 61 * Return the canvas associated with this surface. Note: the canvas is owned by the surface, 62 * so the returned object is only valid while the owning surface is valid. 63 */ 64 SK_API sk_canvas_t* sk_surface_get_canvas(sk_surface_t*); 65 66 /** 67 * Call sk_image_unref() when the returned image is no longer used. 68 */ 69 SK_API sk_image_t* sk_surface_new_image_snapshot(sk_surface_t*); 70 71 SK_C_PLUS_PLUS_END_GUARD 72 73 #endif 74