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