/* * Copyright 2014 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ // EXPERIMENTAL EXPERIMENTAL EXPERIMENTAL EXPERIMENTAL // DO NOT USE -- FOR INTERNAL TESTING ONLY #ifndef sk_surface_DEFINED #define sk_surface_DEFINED #include "sk_types.h" SK_C_PLUS_PLUS_BEGIN_GUARD /** Return a new surface, with the memory for the pixels automatically allocated. If the requested surface cannot be created, or the request is not a supported configuration, NULL will be returned. @param sk_imageinfo_t* Specify the width, height, color type, and alpha type for the surface. @param sk_surfaceprops_t* If not NULL, specify additional non-default properties of the surface. */ SK_API sk_surface_t* sk_surface_new_raster(const sk_imageinfo_t*, const sk_surfaceprops_t*); /** Create a new surface which will draw into the specified pixels with the specified rowbytes. If the requested surface cannot be created, or the request is not a supported configuration, NULL will be returned. @param sk_imageinfo_t* Specify the width, height, color type, and alpha type for the surface. @param void* pixels Specify the location in memory where the destination pixels are. This memory must outlast this surface. @param size_t rowBytes Specify the difference, in bytes, between each adjacent row. Should be at least (width * sizeof(one pixel)). @param sk_surfaceprops_t* If not NULL, specify additional non-default properties of the surface. */ SK_API sk_surface_t* sk_surface_new_raster_direct(const sk_imageinfo_t*, void* pixels, size_t rowBytes, const sk_surfaceprops_t* props); /** Decrement the reference count. If the reference count is 1 before the decrement, then release both the memory holding the sk_surface_t and any pixel memory it may be managing. New sk_surface_t are created with a reference count of 1. */ SK_API void sk_surface_unref(sk_surface_t*); /** * Return the canvas associated with this surface. Note: the canvas is owned by the surface, * so the returned object is only valid while the owning surface is valid. */ SK_API sk_canvas_t* sk_surface_get_canvas(sk_surface_t*); /** * Call sk_image_unref() when the returned image is no longer used. */ SK_API sk_image_t* sk_surface_new_image_snapshot(sk_surface_t*); SK_C_PLUS_PLUS_END_GUARD #endif