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_picture_DEFINED 12 #define sk_picture_DEFINED 13 14 #include "include/c/sk_types.h" 15 16 SK_C_PLUS_PLUS_BEGIN_GUARD 17 18 /** 19 Create a new sk_picture_recorder_t. Its resources should be 20 released with a call to sk_picture_recorder_delete(). 21 */ 22 SK_API sk_picture_recorder_t* sk_picture_recorder_new(void); 23 /** 24 Release the memory and other resources used by this 25 sk_picture_recorder_t. 26 */ 27 SK_API void sk_picture_recorder_delete(sk_picture_recorder_t*); 28 29 /** 30 Returns the canvas that records the drawing commands 31 32 @param sk_rect_t* the cull rect used when recording this 33 picture. Any drawing the falls outside of this 34 rect is undefined, and may be drawn or it may not. 35 */ 36 SK_API sk_canvas_t* sk_picture_recorder_begin_recording(sk_picture_recorder_t*, const sk_rect_t*); 37 /** 38 Signal that the caller is done recording. This invalidates the 39 canvas returned by begin_recording. Ownership of the sk_picture_t 40 is passed to the caller, who must call sk_picture_unref() when 41 they are done using it. The returned picture is immutable. 42 */ 43 SK_API sk_picture_t* sk_picture_recorder_end_recording(sk_picture_recorder_t*); 44 45 /** 46 Increment the reference count on the given sk_picture_t. Must be 47 balanced by a call to sk_picture_unref(). 48 */ 49 SK_API void sk_picture_ref(sk_picture_t*); 50 /** 51 Decrement the reference count. If the reference count is 1 before 52 the decrement, then release both the memory holding the 53 sk_picture_t and any resouces it may be managing. New 54 sk_picture_t are created with a reference count of 1. 55 */ 56 SK_API void sk_picture_unref(sk_picture_t*); 57 58 /** 59 Returns a non-zero value unique among all pictures. 60 */ 61 SK_API uint32_t sk_picture_get_unique_id(sk_picture_t*); 62 63 /** 64 Return the cull rect specified when this picture was recorded. 65 */ 66 SK_API sk_rect_t sk_picture_get_bounds(sk_picture_t*); 67 68 SK_C_PLUS_PLUS_END_GUARD 69 70 #endif 71