blob: e569104074f2fd76a762b778abeefe6e10aecc41 [file] [log] [blame]
reede3719892014-12-22 17:46:00 -08001/*
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
Mike Kleinc0bd9f92019-04-23 12:05:21 -050014#include "include/c/sk_types.h"
reede3719892014-12-22 17:46:00 -080015
16SK_C_PLUS_PLUS_BEGIN_GUARD
17
halcanaryc9119062015-09-01 10:45:09 -070018/**
19 Create a new sk_picture_recorder_t. Its resources should be
20 released with a call to sk_picture_recorder_delete().
21*/
Stan Iliev82310312019-06-05 16:55:54 -040022SK_API sk_picture_recorder_t* sk_picture_recorder_new(void);
halcanaryc9119062015-09-01 10:45:09 -070023/**
24 Release the memory and other resources used by this
25 sk_picture_recorder_t.
26*/
Stan Iliev82310312019-06-05 16:55:54 -040027SK_API void sk_picture_recorder_delete(sk_picture_recorder_t*);
reede3719892014-12-22 17:46:00 -080028
halcanaryc9119062015-09-01 10:45:09 -070029/**
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*/
Stan Iliev82310312019-06-05 16:55:54 -040036SK_API sk_canvas_t* sk_picture_recorder_begin_recording(sk_picture_recorder_t*, const sk_rect_t*);
halcanaryc9119062015-09-01 10:45:09 -070037/**
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*/
Stan Iliev82310312019-06-05 16:55:54 -040043SK_API sk_picture_t* sk_picture_recorder_end_recording(sk_picture_recorder_t*);
reede3719892014-12-22 17:46:00 -080044
halcanaryc9119062015-09-01 10:45:09 -070045/**
46 Increment the reference count on the given sk_picture_t. Must be
47 balanced by a call to sk_picture_unref().
48*/
Stan Iliev82310312019-06-05 16:55:54 -040049SK_API void sk_picture_ref(sk_picture_t*);
halcanaryc9119062015-09-01 10:45:09 -070050/**
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*/
Stan Iliev82310312019-06-05 16:55:54 -040056SK_API void sk_picture_unref(sk_picture_t*);
reede3719892014-12-22 17:46:00 -080057
halcanaryc9119062015-09-01 10:45:09 -070058/**
59 Returns a non-zero value unique among all pictures.
60 */
Stan Iliev82310312019-06-05 16:55:54 -040061SK_API uint32_t sk_picture_get_unique_id(sk_picture_t*);
halcanaryc9119062015-09-01 10:45:09 -070062
63/**
64 Return the cull rect specified when this picture was recorded.
65*/
Stan Iliev82310312019-06-05 16:55:54 -040066SK_API sk_rect_t sk_picture_get_bounds(sk_picture_t*);
reede3719892014-12-22 17:46:00 -080067
68SK_C_PLUS_PLUS_END_GUARD
69
70#endif