<MACRO>
<NAME>GSK_TYPE_CAIRO_RENDERER</NAME>
#define GSK_TYPE_CAIRO_RENDERER (gsk_cairo_renderer_get_type ())
</MACRO>
<MACRO>
<NAME>GSK_CAIRO_RENDERER</NAME>
#define GSK_CAIRO_RENDERER(obj)                 (G_TYPE_CHECK_INSTANCE_CAST ((obj), GSK_TYPE_CAIRO_RENDERER, GskCairoRenderer))
</MACRO>
<MACRO>
<NAME>GSK_IS_CAIRO_RENDERER</NAME>
#define GSK_IS_CAIRO_RENDERER(obj)              (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GSK_TYPE_CAIRO_RENDERER))
</MACRO>
<MACRO>
<NAME>GSK_CAIRO_RENDERER_CLASS</NAME>
#define GSK_CAIRO_RENDERER_CLASS(klass)         (G_TYPE_CHECK_CLASS_CAST ((klass), GSK_TYPE_CAIRO_RENDERER, GskCairoRendererClass))
</MACRO>
<MACRO>
<NAME>GSK_IS_CAIRO_RENDERER_CLASS</NAME>
#define GSK_IS_CAIRO_RENDERER_CLASS(klass)      (G_TYPE_CHECK_CLASS_TYPE ((klass), GSK_TYPE_CAIRO_RENDERER))
</MACRO>
<MACRO>
<NAME>GSK_CAIRO_RENDERER_GET_CLASS</NAME>
#define GSK_CAIRO_RENDERER_GET_CLASS(obj)       (G_TYPE_INSTANCE_GET_CLASS ((obj), GSK_TYPE_CAIRO_RENDERER, GskCairoRendererClass))
</MACRO>
<FUNCTION>
<NAME>gsk_cairo_renderer_get_type</NAME>
<RETURNS>GType</RETURNS>
void
</FUNCTION>
<FUNCTION>
<NAME>gsk_cairo_renderer_new</NAME>
<RETURNS>GskRenderer *</RETURNS>
void
</FUNCTION>
<STRUCT>
<NAME>GskCairoRenderer</NAME>
</STRUCT>
<STRUCT>
<NAME>GskCairoRendererClass</NAME>
</STRUCT>
<ENUM>
<NAME>GskRenderNodeType</NAME>
typedef enum {
  GSK_NOT_A_RENDER_NODE = 0,
  GSK_CONTAINER_NODE,
  GSK_CAIRO_NODE,
  GSK_COLOR_NODE,
  GSK_LINEAR_GRADIENT_NODE,
  GSK_REPEATING_LINEAR_GRADIENT_NODE,
  GSK_RADIAL_GRADIENT_NODE,
  GSK_REPEATING_RADIAL_GRADIENT_NODE,
  GSK_CONIC_GRADIENT_NODE,
  GSK_BORDER_NODE,
  GSK_TEXTURE_NODE,
  GSK_INSET_SHADOW_NODE,
  GSK_OUTSET_SHADOW_NODE,
  GSK_TRANSFORM_NODE,
  GSK_OPACITY_NODE,
  GSK_COLOR_MATRIX_NODE,
  GSK_REPEAT_NODE,
  GSK_CLIP_NODE,
  GSK_ROUNDED_CLIP_NODE,
  GSK_SHADOW_NODE,
  GSK_BLEND_NODE,
  GSK_CROSS_FADE_NODE,
  GSK_TEXT_NODE,
  GSK_BLUR_NODE,
  GSK_DEBUG_NODE,
  GSK_GL_SHADER_NODE
} GskRenderNodeType;
</ENUM>
<ENUM>
<NAME>GskScalingFilter</NAME>
typedef enum {
  GSK_SCALING_FILTER_LINEAR,
  GSK_SCALING_FILTER_NEAREST,
  GSK_SCALING_FILTER_TRILINEAR
} GskScalingFilter;
</ENUM>
<ENUM>
<NAME>GskBlendMode</NAME>
typedef enum {
  GSK_BLEND_MODE_DEFAULT = 0,

  GSK_BLEND_MODE_MULTIPLY,
  GSK_BLEND_MODE_SCREEN,
  GSK_BLEND_MODE_OVERLAY,
  GSK_BLEND_MODE_DARKEN,
  GSK_BLEND_MODE_LIGHTEN,
  GSK_BLEND_MODE_COLOR_DODGE,
  GSK_BLEND_MODE_COLOR_BURN,
  GSK_BLEND_MODE_HARD_LIGHT,
  GSK_BLEND_MODE_SOFT_LIGHT,
  GSK_BLEND_MODE_DIFFERENCE,
  GSK_BLEND_MODE_EXCLUSION,
  GSK_BLEND_MODE_COLOR,
  GSK_BLEND_MODE_HUE,
  GSK_BLEND_MODE_SATURATION,
  GSK_BLEND_MODE_LUMINOSITY
} GskBlendMode;
</ENUM>
<ENUM>
<NAME>GskCorner</NAME>
typedef enum {
  GSK_CORNER_TOP_LEFT,
  GSK_CORNER_TOP_RIGHT,
  GSK_CORNER_BOTTOM_RIGHT,
  GSK_CORNER_BOTTOM_LEFT
} GskCorner;
</ENUM>
<ENUM>
<NAME>GskSerializationError</NAME>
typedef enum {
  GSK_SERIALIZATION_UNSUPPORTED_FORMAT,
  GSK_SERIALIZATION_UNSUPPORTED_VERSION,
  GSK_SERIALIZATION_INVALID_DATA
} GskSerializationError;
</ENUM>
<ENUM>
<NAME>GskTransformCategory</NAME>
typedef enum
{
  GSK_TRANSFORM_CATEGORY_UNKNOWN,
  GSK_TRANSFORM_CATEGORY_ANY,
  GSK_TRANSFORM_CATEGORY_3D,
  GSK_TRANSFORM_CATEGORY_2D,
  GSK_TRANSFORM_CATEGORY_2D_AFFINE,
  GSK_TRANSFORM_CATEGORY_2D_TRANSLATE,
  GSK_TRANSFORM_CATEGORY_IDENTITY
} GskTransformCategory;
</ENUM>
<ENUM>
<NAME>GskGLUniformType</NAME>
typedef enum
{
  GSK_GL_UNIFORM_TYPE_NONE,
  GSK_GL_UNIFORM_TYPE_FLOAT,
  GSK_GL_UNIFORM_TYPE_INT,
  GSK_GL_UNIFORM_TYPE_UINT,
  GSK_GL_UNIFORM_TYPE_BOOL,
  GSK_GL_UNIFORM_TYPE_VEC2,
  GSK_GL_UNIFORM_TYPE_VEC3,
  GSK_GL_UNIFORM_TYPE_VEC4,
} GskGLUniformType;
</ENUM>
<MACRO>
<NAME>GSK_TYPE_SHADER_ARGS_BUILDER</NAME>
#define GSK_TYPE_SHADER_ARGS_BUILDER    (gsk_shader_args_builder_get_type ())
</MACRO>
<MACRO>
<NAME>GSK_TYPE_GL_SHADER</NAME>
#define GSK_TYPE_GL_SHADER (gsk_gl_shader_get_type ())
</MACRO>
<FUNCTION>
<NAME>gsk_gl_shader_new_from_bytes</NAME>
<RETURNS>GskGLShader *</RETURNS>
GBytes           *sourcecode
</FUNCTION>
<FUNCTION>
<NAME>gsk_gl_shader_new_from_resource</NAME>
<RETURNS>GskGLShader *</RETURNS>
const char       *resource_path
</FUNCTION>
<FUNCTION>
<NAME>gsk_gl_shader_compile</NAME>
<RETURNS>gboolean</RETURNS>
GskGLShader      *shader, GskRenderer      *renderer, GError          **error
</FUNCTION>
<FUNCTION>
<NAME>gsk_gl_shader_get_source</NAME>
<RETURNS>GBytes *</RETURNS>
GskGLShader      *shader
</FUNCTION>
<FUNCTION>
<NAME>gsk_gl_shader_get_resource</NAME>
<RETURNS>const char *</RETURNS>
GskGLShader      *shader
</FUNCTION>
<FUNCTION>
<NAME>gsk_gl_shader_get_n_textures</NAME>
<RETURNS>int</RETURNS>
GskGLShader      *shader
</FUNCTION>
<FUNCTION>
<NAME>gsk_gl_shader_get_n_uniforms</NAME>
<RETURNS>int</RETURNS>
GskGLShader      *shader
</FUNCTION>
<FUNCTION>
<NAME>gsk_gl_shader_get_uniform_name</NAME>
<RETURNS>const char *</RETURNS>
GskGLShader      *shader, int               idx
</FUNCTION>
<FUNCTION>
<NAME>gsk_gl_shader_find_uniform_by_name</NAME>
<RETURNS>int</RETURNS>
GskGLShader      *shader, const char       *name
</FUNCTION>
<FUNCTION>
<NAME>gsk_gl_shader_get_uniform_type</NAME>
<RETURNS>GskGLUniformType</RETURNS>
GskGLShader      *shader, int               idx
</FUNCTION>
<FUNCTION>
<NAME>gsk_gl_shader_get_uniform_offset</NAME>
<RETURNS>int</RETURNS>
GskGLShader      *shader, int               idx
</FUNCTION>
<FUNCTION>
<NAME>gsk_gl_shader_get_args_size</NAME>
<RETURNS>gsize</RETURNS>
GskGLShader      *shader
</FUNCTION>
<FUNCTION>
<NAME>gsk_gl_shader_format_args_va</NAME>
<RETURNS>GBytes *</RETURNS>
GskGLShader     *shader, va_list          uniforms
</FUNCTION>
<FUNCTION>
<NAME>gsk_gl_shader_format_args</NAME>
<RETURNS>GBytes *</RETURNS>
GskGLShader     *shader, ...
</FUNCTION>
<FUNCTION>
<NAME>gsk_gl_shader_get_arg_float</NAME>
<RETURNS>float</RETURNS>
GskGLShader     *shader, GBytes          *args, int              idx
</FUNCTION>
<FUNCTION>
<NAME>gsk_gl_shader_get_arg_int</NAME>
<RETURNS>gint32</RETURNS>
GskGLShader     *shader, GBytes          *args, int              idx
</FUNCTION>
<FUNCTION>
<NAME>gsk_gl_shader_get_arg_uint</NAME>
<RETURNS>guint32</RETURNS>
GskGLShader     *shader, GBytes          *args, int              idx
</FUNCTION>
<FUNCTION>
<NAME>gsk_gl_shader_get_arg_bool</NAME>
<RETURNS>gboolean</RETURNS>
GskGLShader     *shader, GBytes          *args, int              idx
</FUNCTION>
<FUNCTION>
<NAME>gsk_gl_shader_get_arg_vec2</NAME>
<RETURNS>void</RETURNS>
GskGLShader     *shader, GBytes          *args, int              idx, graphene_vec2_t *out_value
</FUNCTION>
<FUNCTION>
<NAME>gsk_gl_shader_get_arg_vec3</NAME>
<RETURNS>void</RETURNS>
GskGLShader     *shader, GBytes          *args, int              idx, graphene_vec3_t *out_value
</FUNCTION>
<FUNCTION>
<NAME>gsk_gl_shader_get_arg_vec4</NAME>
<RETURNS>void</RETURNS>
GskGLShader     *shader, GBytes          *args, int              idx, graphene_vec4_t *out_value
</FUNCTION>
<FUNCTION>
<NAME>gsk_shader_args_builder_get_type</NAME>
<RETURNS>GType</RETURNS>
void
</FUNCTION>
<FUNCTION>
<NAME>gsk_shader_args_builder_new</NAME>
<RETURNS>GskShaderArgsBuilder *</RETURNS>
GskGLShader *shader, GBytes      *initial_values
</FUNCTION>
<FUNCTION>
<NAME>gsk_shader_args_builder_to_args</NAME>
<RETURNS>GBytes *</RETURNS>
GskShaderArgsBuilder *builder
</FUNCTION>
<FUNCTION>
<NAME>gsk_shader_args_builder_free_to_args</NAME>
<RETURNS>GBytes *</RETURNS>
GskShaderArgsBuilder *builder
</FUNCTION>
<FUNCTION>
<NAME>gsk_shader_args_builder_ref</NAME>
<RETURNS>GskShaderArgsBuilder *</RETURNS>
GskShaderArgsBuilder *builder
</FUNCTION>
<FUNCTION>
<NAME>gsk_shader_args_builder_unref</NAME>
<RETURNS>void</RETURNS>
GskShaderArgsBuilder *builder
</FUNCTION>
<FUNCTION>
<NAME>gsk_shader_args_builder_set_float</NAME>
<RETURNS>void</RETURNS>
GskShaderArgsBuilder *builder, int                    idx, float                  value
</FUNCTION>
<FUNCTION>
<NAME>gsk_shader_args_builder_set_int</NAME>
<RETURNS>void</RETURNS>
GskShaderArgsBuilder *builder, int                    idx, gint32                 value
</FUNCTION>
<FUNCTION>
<NAME>gsk_shader_args_builder_set_uint</NAME>
<RETURNS>void</RETURNS>
GskShaderArgsBuilder *builder, int                    idx, guint32                value
</FUNCTION>
<FUNCTION>
<NAME>gsk_shader_args_builder_set_bool</NAME>
<RETURNS>void</RETURNS>
GskShaderArgsBuilder *builder, int                    idx, gboolean               value
</FUNCTION>
<FUNCTION>
<NAME>gsk_shader_args_builder_set_vec2</NAME>
<RETURNS>void</RETURNS>
GskShaderArgsBuilder *builder, int                    idx, const graphene_vec2_t *value
</FUNCTION>
<FUNCTION>
<NAME>gsk_shader_args_builder_set_vec3</NAME>
<RETURNS>void</RETURNS>
GskShaderArgsBuilder *builder, int                    idx, const graphene_vec3_t *value
</FUNCTION>
<FUNCTION>
<NAME>gsk_shader_args_builder_set_vec4</NAME>
<RETURNS>void</RETURNS>
GskShaderArgsBuilder *builder, int                    idx, const graphene_vec4_t *value
</FUNCTION>
<STRUCT>
<NAME>GskGLShader</NAME>
</STRUCT>
<STRUCT>
<NAME>GskShaderArgsBuilder</NAME>
</STRUCT>
<MACRO>
<NAME>GSK_TYPE_RENDERER</NAME>
#define GSK_TYPE_RENDERER (gsk_renderer_get_type ())
</MACRO>
<MACRO>
<NAME>GSK_RENDERER</NAME>
#define GSK_RENDERER(obj)               (G_TYPE_CHECK_INSTANCE_CAST ((obj), GSK_TYPE_RENDERER, GskRenderer))
</MACRO>
<MACRO>
<NAME>GSK_IS_RENDERER</NAME>
#define GSK_IS_RENDERER(obj)            (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GSK_TYPE_RENDERER))
</MACRO>
<FUNCTION>
<NAME>gsk_renderer_get_type</NAME>
<RETURNS>GType</RETURNS>
void
</FUNCTION>
<FUNCTION>
<NAME>gsk_renderer_new_for_surface</NAME>
<RETURNS>GskRenderer *</RETURNS>
GdkSurface               *surface
</FUNCTION>
<FUNCTION>
<NAME>gsk_renderer_get_surface</NAME>
<RETURNS>GdkSurface *</RETURNS>
GskRenderer             *renderer
</FUNCTION>
<FUNCTION>
<NAME>gsk_renderer_realize</NAME>
<RETURNS>gboolean</RETURNS>
GskRenderer             *renderer, GdkSurface              *surface, GError                 **error
</FUNCTION>
<FUNCTION>
<NAME>gsk_renderer_unrealize</NAME>
<RETURNS>void</RETURNS>
GskRenderer             *renderer
</FUNCTION>
<FUNCTION>
<NAME>gsk_renderer_is_realized</NAME>
<RETURNS>gboolean</RETURNS>
GskRenderer             *renderer
</FUNCTION>
<FUNCTION>
<NAME>gsk_renderer_render_texture</NAME>
<RETURNS>GdkTexture *</RETURNS>
GskRenderer             *renderer, GskRenderNode           *root, const graphene_rect_t   *viewport
</FUNCTION>
<FUNCTION>
<NAME>gsk_renderer_render</NAME>
<RETURNS>void</RETURNS>
GskRenderer             *renderer, GskRenderNode           *root, const cairo_region_t    *region
</FUNCTION>
<STRUCT>
<NAME>GskRendererClass</NAME>
</STRUCT>
<MACRO>
<NAME>GSK_TYPE_RENDER_NODE</NAME>
#define GSK_TYPE_RENDER_NODE (gsk_render_node_get_type ())
</MACRO>
<MACRO>
<NAME>GSK_IS_RENDER_NODE</NAME>
#define GSK_IS_RENDER_NODE(obj) ((obj) != NULL)
</MACRO>
<MACRO>
<NAME>GSK_SERIALIZATION_ERROR</NAME>
#define GSK_SERIALIZATION_ERROR       (gsk_serialization_error_quark ())
</MACRO>
<STRUCT>
<NAME>GskColorStop</NAME>
struct _GskColorStop
{
  float offset;
  GdkRGBA color;
};
</STRUCT>
<STRUCT>
<NAME>GskShadow</NAME>
struct _GskShadow
{
  GdkRGBA color;
  float dx;
  float dy;
  float radius;
};
</STRUCT>
<STRUCT>
<NAME>GskParseLocation</NAME>
struct _GskParseLocation
{
  gsize bytes;
  gsize chars;
  gsize lines;
  gsize line_bytes;
  gsize line_chars;
};
</STRUCT>
<USER_FUNCTION>
<NAME>GskParseErrorFunc</NAME>
<RETURNS>void</RETURNS>
const GskParseLocation *start, const GskParseLocation *end, const GError           *error, gpointer                user_data
</USER_FUNCTION>
<FUNCTION>
<NAME>gsk_render_node_get_type</NAME>
<RETURNS>GType</RETURNS>
void
</FUNCTION>
<FUNCTION>
<NAME>gsk_serialization_error_quark</NAME>
<RETURNS>GQuark</RETURNS>
void
</FUNCTION>
<FUNCTION>
<NAME>gsk_render_node_ref</NAME>
<RETURNS>GskRenderNode *</RETURNS>
GskRenderNode *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_render_node_unref</NAME>
<RETURNS>void</RETURNS>
GskRenderNode *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_render_node_get_node_type</NAME>
<RETURNS>GskRenderNodeType</RETURNS>
GskRenderNode *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_render_node_get_bounds</NAME>
<RETURNS>void</RETURNS>
GskRenderNode   *node, graphene_rect_t *bounds
</FUNCTION>
<FUNCTION>
<NAME>gsk_render_node_draw</NAME>
<RETURNS>void</RETURNS>
GskRenderNode *node, cairo_t       *cr
</FUNCTION>
<FUNCTION>
<NAME>gsk_render_node_serialize</NAME>
<RETURNS>GBytes *</RETURNS>
GskRenderNode *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_render_node_write_to_file</NAME>
<RETURNS>gboolean</RETURNS>
GskRenderNode *node, const char    *filename, GError       **error
</FUNCTION>
<FUNCTION>
<NAME>gsk_render_node_deserialize</NAME>
<RETURNS>GskRenderNode *</RETURNS>
GBytes            *bytes, GskParseErrorFunc  error_func, gpointer           user_data
</FUNCTION>
<MACRO>
<NAME>GSK_TYPE_DEBUG_NODE</NAME>
#define GSK_TYPE_DEBUG_NODE                     (gsk_debug_node_get_type())
</MACRO>
<MACRO>
<NAME>GSK_TYPE_COLOR_NODE</NAME>
#define GSK_TYPE_COLOR_NODE                     (gsk_color_node_get_type())
</MACRO>
<MACRO>
<NAME>GSK_TYPE_TEXTURE_NODE</NAME>
#define GSK_TYPE_TEXTURE_NODE                   (gsk_texture_node_get_type())
</MACRO>
<MACRO>
<NAME>GSK_TYPE_LINEAR_GRADIENT_NODE</NAME>
#define GSK_TYPE_LINEAR_GRADIENT_NODE           (gsk_linear_gradient_node_get_type())
</MACRO>
<MACRO>
<NAME>GSK_TYPE_REPEATING_LINEAR_GRADIENT_NODE</NAME>
#define GSK_TYPE_REPEATING_LINEAR_GRADIENT_NODE (gsk_repeating_linear_gradient_node_get_type())
</MACRO>
<MACRO>
<NAME>GSK_TYPE_RADIAL_GRADIENT_NODE</NAME>
#define GSK_TYPE_RADIAL_GRADIENT_NODE           (gsk_radial_gradient_node_get_type())
</MACRO>
<MACRO>
<NAME>GSK_TYPE_REPEATING_RADIAL_GRADIENT_NODE</NAME>
#define GSK_TYPE_REPEATING_RADIAL_GRADIENT_NODE (gsk_repeating_radial_gradient_node_get_type())
</MACRO>
<MACRO>
<NAME>GSK_TYPE_CONIC_GRADIENT_NODE</NAME>
#define GSK_TYPE_CONIC_GRADIENT_NODE            (gsk_conic_gradient_node_get_type())
</MACRO>
<MACRO>
<NAME>GSK_TYPE_BORDER_NODE</NAME>
#define GSK_TYPE_BORDER_NODE                    (gsk_border_node_get_type())
</MACRO>
<MACRO>
<NAME>GSK_TYPE_INSET_SHADOW_NODE</NAME>
#define GSK_TYPE_INSET_SHADOW_NODE              (gsk_inset_shadow_node_get_type())
</MACRO>
<MACRO>
<NAME>GSK_TYPE_OUTSET_SHADOW_NODE</NAME>
#define GSK_TYPE_OUTSET_SHADOW_NODE             (gsk_outset_shadow_node_get_type())
</MACRO>
<MACRO>
<NAME>GSK_TYPE_CAIRO_NODE</NAME>
#define GSK_TYPE_CAIRO_NODE                     (gsk_cairo_node_get_type())
</MACRO>
<MACRO>
<NAME>GSK_TYPE_CONTAINER_NODE</NAME>
#define GSK_TYPE_CONTAINER_NODE                 (gsk_container_node_get_type())
</MACRO>
<MACRO>
<NAME>GSK_TYPE_TRANSFORM_NODE</NAME>
#define GSK_TYPE_TRANSFORM_NODE                 (gsk_transform_node_get_type())
</MACRO>
<MACRO>
<NAME>GSK_TYPE_OPACITY_NODE</NAME>
#define GSK_TYPE_OPACITY_NODE                   (gsk_opacity_node_get_type())
</MACRO>
<MACRO>
<NAME>GSK_TYPE_COLOR_MATRIX_NODE</NAME>
#define GSK_TYPE_COLOR_MATRIX_NODE              (gsk_color_matrix_node_get_type())
</MACRO>
<MACRO>
<NAME>GSK_TYPE_REPEAT_NODE</NAME>
#define GSK_TYPE_REPEAT_NODE                    (gsk_repeat_node_get_type())
</MACRO>
<MACRO>
<NAME>GSK_TYPE_CLIP_NODE</NAME>
#define GSK_TYPE_CLIP_NODE                      (gsk_clip_node_get_type())
</MACRO>
<MACRO>
<NAME>GSK_TYPE_ROUNDED_CLIP_NODE</NAME>
#define GSK_TYPE_ROUNDED_CLIP_NODE              (gsk_rounded_clip_node_get_type())
</MACRO>
<MACRO>
<NAME>GSK_TYPE_SHADOW_NODE</NAME>
#define GSK_TYPE_SHADOW_NODE                    (gsk_shadow_node_get_type())
</MACRO>
<MACRO>
<NAME>GSK_TYPE_BLEND_NODE</NAME>
#define GSK_TYPE_BLEND_NODE                     (gsk_blend_node_get_type())
</MACRO>
<MACRO>
<NAME>GSK_TYPE_CROSS_FADE_NODE</NAME>
#define GSK_TYPE_CROSS_FADE_NODE                (gsk_cross_fade_node_get_type())
</MACRO>
<MACRO>
<NAME>GSK_TYPE_TEXT_NODE</NAME>
#define GSK_TYPE_TEXT_NODE                      (gsk_text_node_get_type())
</MACRO>
<MACRO>
<NAME>GSK_TYPE_BLUR_NODE</NAME>
#define GSK_TYPE_BLUR_NODE                      (gsk_blur_node_get_type())
</MACRO>
<MACRO>
<NAME>GSK_TYPE_GL_SHADER_NODE</NAME>
#define GSK_TYPE_GL_SHADER_NODE                 (gsk_gl_shader_node_get_type())
</MACRO>
<FUNCTION>
<NAME>gsk_debug_node_get_type</NAME>
<RETURNS>GType</RETURNS>
void
</FUNCTION>
<FUNCTION>
<NAME>gsk_debug_node_new</NAME>
<RETURNS>GskRenderNode *</RETURNS>
GskRenderNode            *child, char                     *message
</FUNCTION>
<FUNCTION>
<NAME>gsk_debug_node_get_child</NAME>
<RETURNS>GskRenderNode *</RETURNS>
GskRenderNode            *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_debug_node_get_message</NAME>
<RETURNS>const char *</RETURNS>
GskRenderNode            *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_color_node_get_type</NAME>
<RETURNS>GType</RETURNS>
void
</FUNCTION>
<FUNCTION>
<NAME>gsk_color_node_new</NAME>
<RETURNS>GskRenderNode *</RETURNS>
const GdkRGBA            *rgba, const graphene_rect_t    *bounds
</FUNCTION>
<FUNCTION>
<NAME>gsk_color_node_get_color</NAME>
<RETURNS>const GdkRGBA *</RETURNS>
GskRenderNode            *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_texture_node_get_type</NAME>
<RETURNS>GType</RETURNS>
void
</FUNCTION>
<FUNCTION>
<NAME>gsk_texture_node_new</NAME>
<RETURNS>GskRenderNode *</RETURNS>
GdkTexture               *texture, const graphene_rect_t    *bounds
</FUNCTION>
<FUNCTION>
<NAME>gsk_texture_node_get_texture</NAME>
<RETURNS>GdkTexture *</RETURNS>
GskRenderNode            *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_linear_gradient_node_get_type</NAME>
<RETURNS>GType</RETURNS>
void
</FUNCTION>
<FUNCTION>
<NAME>gsk_linear_gradient_node_new</NAME>
<RETURNS>GskRenderNode *</RETURNS>
const graphene_rect_t    *bounds, const graphene_point_t   *start, const graphene_point_t   *end, const GskColorStop       *color_stops, gsize                     n_color_stops
</FUNCTION>
<FUNCTION>
<NAME>gsk_linear_gradient_node_get_start</NAME>
<RETURNS>const graphene_point_t *</RETURNS>
GskRenderNode            *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_linear_gradient_node_get_end</NAME>
<RETURNS>const graphene_point_t *</RETURNS>
GskRenderNode            *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_linear_gradient_node_get_n_color_stops</NAME>
<RETURNS>gsize</RETURNS>
GskRenderNode            *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_linear_gradient_node_get_color_stops</NAME>
<RETURNS>const GskColorStop *</RETURNS>
GskRenderNode            *node, gsize                    *n_stops
</FUNCTION>
<FUNCTION>
<NAME>gsk_repeating_linear_gradient_node_get_type</NAME>
<RETURNS>GType</RETURNS>
void
</FUNCTION>
<FUNCTION>
<NAME>gsk_repeating_linear_gradient_node_new</NAME>
<RETURNS>GskRenderNode *</RETURNS>
const graphene_rect_t    *bounds, const graphene_point_t   *start, const graphene_point_t   *end, const GskColorStop       *color_stops, gsize                     n_color_stops
</FUNCTION>
<FUNCTION>
<NAME>gsk_conic_gradient_node_get_type</NAME>
<RETURNS>GType</RETURNS>
void
</FUNCTION>
<FUNCTION>
<NAME>gsk_conic_gradient_node_new</NAME>
<RETURNS>GskRenderNode *</RETURNS>
const graphene_rect_t    *bounds, const graphene_point_t   *center, float                     rotation, const GskColorStop       *color_stops, gsize                     n_color_stops
</FUNCTION>
<FUNCTION>
<NAME>gsk_conic_gradient_node_get_center</NAME>
<RETURNS>const graphene_point_t *</RETURNS>
GskRenderNode            *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_conic_gradient_node_get_rotation</NAME>
<RETURNS>float</RETURNS>
GskRenderNode            *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_conic_gradient_node_get_n_color_stops</NAME>
<RETURNS>gsize</RETURNS>
GskRenderNode            *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_conic_gradient_node_get_color_stops</NAME>
<RETURNS>const GskColorStop *</RETURNS>
GskRenderNode            *node, gsize                    *n_stops
</FUNCTION>
<FUNCTION>
<NAME>gsk_radial_gradient_node_get_type</NAME>
<RETURNS>GType</RETURNS>
void
</FUNCTION>
<FUNCTION>
<NAME>gsk_radial_gradient_node_new</NAME>
<RETURNS>GskRenderNode *</RETURNS>
const graphene_rect_t    *bounds, const graphene_point_t   *center, float                     hradius, float                     vradius, float                     start, float                     end, const GskColorStop       *color_stops, gsize                     n_color_stops
</FUNCTION>
<FUNCTION>
<NAME>gsk_radial_gradient_node_get_n_color_stops</NAME>
<RETURNS>gsize</RETURNS>
GskRenderNode *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_radial_gradient_node_get_color_stops</NAME>
<RETURNS>const GskColorStop *</RETURNS>
GskRenderNode *node, gsize         *n_stops
</FUNCTION>
<FUNCTION>
<NAME>gsk_radial_gradient_node_get_center</NAME>
<RETURNS>const graphene_point_t *</RETURNS>
GskRenderNode *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_radial_gradient_node_get_hradius</NAME>
<RETURNS>float</RETURNS>
GskRenderNode *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_radial_gradient_node_get_vradius</NAME>
<RETURNS>float</RETURNS>
GskRenderNode *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_radial_gradient_node_get_start</NAME>
<RETURNS>float</RETURNS>
GskRenderNode *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_radial_gradient_node_get_end</NAME>
<RETURNS>float</RETURNS>
GskRenderNode *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_repeating_radial_gradient_node_get_type</NAME>
<RETURNS>GType</RETURNS>
void
</FUNCTION>
<FUNCTION>
<NAME>gsk_repeating_radial_gradient_node_new</NAME>
<RETURNS>GskRenderNode *</RETURNS>
const graphene_rect_t    *bounds, const graphene_point_t   *center, float                     hradius, float                     vradius, float                     start, float                     end, const GskColorStop       *color_stops, gsize                     n_color_stops
</FUNCTION>
<FUNCTION>
<NAME>gsk_border_node_get_type</NAME>
<RETURNS>GType</RETURNS>
void
</FUNCTION>
<FUNCTION>
<NAME>gsk_border_node_new</NAME>
<RETURNS>GskRenderNode *</RETURNS>
const GskRoundedRect     *outline, const float               border_width[4], const GdkRGBA             border_color[4]
</FUNCTION>
<FUNCTION>
<NAME>gsk_border_node_get_outline</NAME>
<RETURNS>const GskRoundedRect *</RETURNS>
GskRenderNode            *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_border_node_get_widths</NAME>
<RETURNS>const float *</RETURNS>
GskRenderNode            *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_border_node_get_colors</NAME>
<RETURNS>const GdkRGBA *</RETURNS>
GskRenderNode            *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_inset_shadow_node_get_type</NAME>
<RETURNS>GType</RETURNS>
void
</FUNCTION>
<FUNCTION>
<NAME>gsk_inset_shadow_node_new</NAME>
<RETURNS>GskRenderNode *</RETURNS>
const GskRoundedRect     *outline, const GdkRGBA            *color, float                     dx, float                     dy, float                     spread, float                     blur_radius
</FUNCTION>
<FUNCTION>
<NAME>gsk_inset_shadow_node_get_outline</NAME>
<RETURNS>const GskRoundedRect *</RETURNS>
GskRenderNode            *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_inset_shadow_node_get_color</NAME>
<RETURNS>const GdkRGBA *</RETURNS>
GskRenderNode            *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_inset_shadow_node_get_dx</NAME>
<RETURNS>float</RETURNS>
GskRenderNode            *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_inset_shadow_node_get_dy</NAME>
<RETURNS>float</RETURNS>
GskRenderNode            *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_inset_shadow_node_get_spread</NAME>
<RETURNS>float</RETURNS>
GskRenderNode            *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_inset_shadow_node_get_blur_radius</NAME>
<RETURNS>float</RETURNS>
GskRenderNode            *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_outset_shadow_node_get_type</NAME>
<RETURNS>GType</RETURNS>
void
</FUNCTION>
<FUNCTION>
<NAME>gsk_outset_shadow_node_new</NAME>
<RETURNS>GskRenderNode *</RETURNS>
const GskRoundedRect     *outline, const GdkRGBA            *color, float                     dx, float                     dy, float                     spread, float                     blur_radius
</FUNCTION>
<FUNCTION>
<NAME>gsk_outset_shadow_node_get_outline</NAME>
<RETURNS>const GskRoundedRect *</RETURNS>
GskRenderNode            *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_outset_shadow_node_get_color</NAME>
<RETURNS>const GdkRGBA *</RETURNS>
GskRenderNode            *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_outset_shadow_node_get_dx</NAME>
<RETURNS>float</RETURNS>
GskRenderNode            *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_outset_shadow_node_get_dy</NAME>
<RETURNS>float</RETURNS>
GskRenderNode            *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_outset_shadow_node_get_spread</NAME>
<RETURNS>float</RETURNS>
GskRenderNode            *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_outset_shadow_node_get_blur_radius</NAME>
<RETURNS>float</RETURNS>
GskRenderNode            *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_cairo_node_get_type</NAME>
<RETURNS>GType</RETURNS>
void
</FUNCTION>
<FUNCTION>
<NAME>gsk_cairo_node_new</NAME>
<RETURNS>GskRenderNode *</RETURNS>
const graphene_rect_t    *bounds
</FUNCTION>
<FUNCTION>
<NAME>gsk_cairo_node_get_draw_context</NAME>
<RETURNS>cairo_t *</RETURNS>
GskRenderNode            *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_cairo_node_get_surface</NAME>
<RETURNS>cairo_surface_t *</RETURNS>
GskRenderNode            *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_container_node_get_type</NAME>
<RETURNS>GType</RETURNS>
void
</FUNCTION>
<FUNCTION>
<NAME>gsk_container_node_new</NAME>
<RETURNS>GskRenderNode *</RETURNS>
GskRenderNode           **children, guint                     n_children
</FUNCTION>
<FUNCTION>
<NAME>gsk_container_node_get_n_children</NAME>
<RETURNS>guint</RETURNS>
GskRenderNode            *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_container_node_get_child</NAME>
<RETURNS>GskRenderNode *</RETURNS>
GskRenderNode            *node, guint                     idx
</FUNCTION>
<FUNCTION>
<NAME>gsk_transform_node_get_type</NAME>
<RETURNS>GType</RETURNS>
void
</FUNCTION>
<FUNCTION>
<NAME>gsk_transform_node_new</NAME>
<RETURNS>GskRenderNode *</RETURNS>
GskRenderNode            *child, GskTransform             *transform
</FUNCTION>
<FUNCTION>
<NAME>gsk_transform_node_get_child</NAME>
<RETURNS>GskRenderNode *</RETURNS>
GskRenderNode            *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_transform_node_get_transform</NAME>
<RETURNS>GskTransform *</RETURNS>
GskRenderNode            *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_opacity_node_get_type</NAME>
<RETURNS>GType</RETURNS>
void
</FUNCTION>
<FUNCTION>
<NAME>gsk_opacity_node_new</NAME>
<RETURNS>GskRenderNode *</RETURNS>
GskRenderNode            *child, float                     opacity
</FUNCTION>
<FUNCTION>
<NAME>gsk_opacity_node_get_child</NAME>
<RETURNS>GskRenderNode *</RETURNS>
GskRenderNode            *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_opacity_node_get_opacity</NAME>
<RETURNS>float</RETURNS>
GskRenderNode            *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_color_matrix_node_get_type</NAME>
<RETURNS>GType</RETURNS>
void
</FUNCTION>
<FUNCTION>
<NAME>gsk_color_matrix_node_new</NAME>
<RETURNS>GskRenderNode *</RETURNS>
GskRenderNode            *child, const graphene_matrix_t  *color_matrix, const graphene_vec4_t    *color_offset
</FUNCTION>
<FUNCTION>
<NAME>gsk_color_matrix_node_get_child</NAME>
<RETURNS>GskRenderNode *</RETURNS>
GskRenderNode            *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_color_matrix_node_get_color_matrix</NAME>
<RETURNS>const graphene_matrix_t *</RETURNS>
GskRenderNode            *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_color_matrix_node_get_color_offset</NAME>
<RETURNS>const graphene_vec4_t *</RETURNS>
GskRenderNode            *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_repeat_node_get_type</NAME>
<RETURNS>GType</RETURNS>
void
</FUNCTION>
<FUNCTION>
<NAME>gsk_repeat_node_new</NAME>
<RETURNS>GskRenderNode *</RETURNS>
const graphene_rect_t    *bounds, GskRenderNode            *child, const graphene_rect_t    *child_bounds
</FUNCTION>
<FUNCTION>
<NAME>gsk_repeat_node_get_child</NAME>
<RETURNS>GskRenderNode *</RETURNS>
GskRenderNode            *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_repeat_node_get_child_bounds</NAME>
<RETURNS>const graphene_rect_t *</RETURNS>
GskRenderNode            *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_clip_node_get_type</NAME>
<RETURNS>GType</RETURNS>
void
</FUNCTION>
<FUNCTION>
<NAME>gsk_clip_node_new</NAME>
<RETURNS>GskRenderNode *</RETURNS>
GskRenderNode            *child, const graphene_rect_t    *clip
</FUNCTION>
<FUNCTION>
<NAME>gsk_clip_node_get_child</NAME>
<RETURNS>GskRenderNode *</RETURNS>
GskRenderNode            *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_clip_node_get_clip</NAME>
<RETURNS>const graphene_rect_t *</RETURNS>
GskRenderNode            *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_rounded_clip_node_get_type</NAME>
<RETURNS>GType</RETURNS>
void
</FUNCTION>
<FUNCTION>
<NAME>gsk_rounded_clip_node_new</NAME>
<RETURNS>GskRenderNode *</RETURNS>
GskRenderNode            *child, const GskRoundedRect     *clip
</FUNCTION>
<FUNCTION>
<NAME>gsk_rounded_clip_node_get_child</NAME>
<RETURNS>GskRenderNode *</RETURNS>
GskRenderNode            *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_rounded_clip_node_get_clip</NAME>
<RETURNS>const GskRoundedRect *</RETURNS>
GskRenderNode            *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_shadow_node_get_type</NAME>
<RETURNS>GType</RETURNS>
void
</FUNCTION>
<FUNCTION>
<NAME>gsk_shadow_node_new</NAME>
<RETURNS>GskRenderNode *</RETURNS>
GskRenderNode            *child, const GskShadow          *shadows, gsize                     n_shadows
</FUNCTION>
<FUNCTION>
<NAME>gsk_shadow_node_get_child</NAME>
<RETURNS>GskRenderNode *</RETURNS>
GskRenderNode            *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_shadow_node_get_shadow</NAME>
<RETURNS>const GskShadow *</RETURNS>
GskRenderNode            *node, gsize                     i
</FUNCTION>
<FUNCTION>
<NAME>gsk_shadow_node_get_n_shadows</NAME>
<RETURNS>gsize</RETURNS>
GskRenderNode            *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_blend_node_get_type</NAME>
<RETURNS>GType</RETURNS>
void
</FUNCTION>
<FUNCTION>
<NAME>gsk_blend_node_new</NAME>
<RETURNS>GskRenderNode *</RETURNS>
GskRenderNode            *bottom, GskRenderNode            *top, GskBlendMode              blend_mode
</FUNCTION>
<FUNCTION>
<NAME>gsk_blend_node_get_bottom_child</NAME>
<RETURNS>GskRenderNode *</RETURNS>
GskRenderNode            *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_blend_node_get_top_child</NAME>
<RETURNS>GskRenderNode *</RETURNS>
GskRenderNode            *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_blend_node_get_blend_mode</NAME>
<RETURNS>GskBlendMode</RETURNS>
GskRenderNode            *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_cross_fade_node_get_type</NAME>
<RETURNS>GType</RETURNS>
void
</FUNCTION>
<FUNCTION>
<NAME>gsk_cross_fade_node_new</NAME>
<RETURNS>GskRenderNode *</RETURNS>
GskRenderNode            *start, GskRenderNode            *end, float                     progress
</FUNCTION>
<FUNCTION>
<NAME>gsk_cross_fade_node_get_start_child</NAME>
<RETURNS>GskRenderNode *</RETURNS>
GskRenderNode            *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_cross_fade_node_get_end_child</NAME>
<RETURNS>GskRenderNode *</RETURNS>
GskRenderNode            *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_cross_fade_node_get_progress</NAME>
<RETURNS>float</RETURNS>
GskRenderNode            *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_text_node_get_type</NAME>
<RETURNS>GType</RETURNS>
void
</FUNCTION>
<FUNCTION>
<NAME>gsk_text_node_new</NAME>
<RETURNS>GskRenderNode *</RETURNS>
PangoFont                *font, PangoGlyphString         *glyphs, const GdkRGBA            *color, const graphene_point_t   *offset
</FUNCTION>
<FUNCTION>
<NAME>gsk_text_node_get_font</NAME>
<RETURNS>PangoFont *</RETURNS>
GskRenderNode            *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_text_node_has_color_glyphs</NAME>
<RETURNS>gboolean</RETURNS>
GskRenderNode            *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_text_node_get_num_glyphs</NAME>
<RETURNS>guint</RETURNS>
GskRenderNode            *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_text_node_get_glyphs</NAME>
<RETURNS>const PangoGlyphInfo *</RETURNS>
GskRenderNode            *node, guint                    *n_glyphs
</FUNCTION>
<FUNCTION>
<NAME>gsk_text_node_get_color</NAME>
<RETURNS>const GdkRGBA *</RETURNS>
GskRenderNode            *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_text_node_get_offset</NAME>
<RETURNS>const graphene_point_t *</RETURNS>
GskRenderNode            *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_blur_node_get_type</NAME>
<RETURNS>GType</RETURNS>
void
</FUNCTION>
<FUNCTION>
<NAME>gsk_blur_node_new</NAME>
<RETURNS>GskRenderNode *</RETURNS>
GskRenderNode            *child, float                     radius
</FUNCTION>
<FUNCTION>
<NAME>gsk_blur_node_get_child</NAME>
<RETURNS>GskRenderNode *</RETURNS>
GskRenderNode            *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_blur_node_get_radius</NAME>
<RETURNS>float</RETURNS>
GskRenderNode            *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_gl_shader_node_get_type</NAME>
<RETURNS>GType</RETURNS>
void
</FUNCTION>
<FUNCTION>
<NAME>gsk_gl_shader_node_new</NAME>
<RETURNS>GskRenderNode *</RETURNS>
GskGLShader              *shader, const graphene_rect_t    *bounds, GBytes                   *args, GskRenderNode           **children, guint                     n_children
</FUNCTION>
<FUNCTION>
<NAME>gsk_gl_shader_node_get_n_children</NAME>
<RETURNS>guint</RETURNS>
GskRenderNode            *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_gl_shader_node_get_child</NAME>
<RETURNS>GskRenderNode *</RETURNS>
GskRenderNode            *node, guint                     idx
</FUNCTION>
<FUNCTION>
<NAME>gsk_gl_shader_node_get_args</NAME>
<RETURNS>GBytes *</RETURNS>
GskRenderNode            *node
</FUNCTION>
<FUNCTION>
<NAME>gsk_gl_shader_node_get_shader</NAME>
<RETURNS>GskGLShader *</RETURNS>
GskRenderNode            *node
</FUNCTION>
<STRUCT>
<NAME>GskBlendNode</NAME>
</STRUCT>
<STRUCT>
<NAME>GskBlurNode</NAME>
</STRUCT>
<STRUCT>
<NAME>GskBorderNode</NAME>
</STRUCT>
<STRUCT>
<NAME>GskCairoNode</NAME>
</STRUCT>
<STRUCT>
<NAME>GskClipNode</NAME>
</STRUCT>
<STRUCT>
<NAME>GskColorMatrixNode</NAME>
</STRUCT>
<STRUCT>
<NAME>GskColorNode</NAME>
</STRUCT>
<STRUCT>
<NAME>GskConicGradientNode</NAME>
</STRUCT>
<STRUCT>
<NAME>GskContainerNode</NAME>
</STRUCT>
<STRUCT>
<NAME>GskCrossFadeNode</NAME>
</STRUCT>
<STRUCT>
<NAME>GskDebugNode</NAME>
</STRUCT>
<STRUCT>
<NAME>GskGLShaderNode</NAME>
</STRUCT>
<STRUCT>
<NAME>GskInsetShadowNode</NAME>
</STRUCT>
<STRUCT>
<NAME>GskLinearGradientNode</NAME>
</STRUCT>
<STRUCT>
<NAME>GskOpacityNode</NAME>
</STRUCT>
<STRUCT>
<NAME>GskOutsetShadowNode</NAME>
</STRUCT>
<STRUCT>
<NAME>GskRadialGradientNode</NAME>
</STRUCT>
<STRUCT>
<NAME>GskRenderNode</NAME>
</STRUCT>
<STRUCT>
<NAME>GskRepeatNode</NAME>
</STRUCT>
<STRUCT>
<NAME>GskRepeatingLinearGradientNode</NAME>
</STRUCT>
<STRUCT>
<NAME>GskRepeatingRadialGradientNode</NAME>
</STRUCT>
<STRUCT>
<NAME>GskRoundedClipNode</NAME>
</STRUCT>
<STRUCT>
<NAME>GskShadowNode</NAME>
</STRUCT>
<STRUCT>
<NAME>GskTextNode</NAME>
</STRUCT>
<STRUCT>
<NAME>GskTextureNode</NAME>
</STRUCT>
<STRUCT>
<NAME>GskTransformNode</NAME>
</STRUCT>
<MACRO>
<NAME>GSK_ROUNDED_RECT_INIT</NAME>
#define GSK_ROUNDED_RECT_INIT(_x,_y,_w,_h)       (GskRoundedRect) { .bounds = GRAPHENE_RECT_INIT(_x,_y,_w,_h), \
                                                                    .corner = { \
                                                                       GRAPHENE_SIZE_INIT(0, 0),\
                                                                       GRAPHENE_SIZE_INIT(0, 0),\
                                                                       GRAPHENE_SIZE_INIT(0, 0),\
                                                                       GRAPHENE_SIZE_INIT(0, 0),\
                                                                    }}
</MACRO>
<STRUCT>
<NAME>GskRoundedRect</NAME>
struct _GskRoundedRect
{
  graphene_rect_t bounds;

  graphene_size_t corner[4];
};
</STRUCT>
<FUNCTION>
<NAME>gsk_rounded_rect_init</NAME>
<RETURNS>GskRoundedRect *</RETURNS>
GskRoundedRect           *self, const graphene_rect_t    *bounds, const graphene_size_t    *top_left, const graphene_size_t    *top_right, const graphene_size_t    *bottom_right, const graphene_size_t    *bottom_left
</FUNCTION>
<FUNCTION>
<NAME>gsk_rounded_rect_init_copy</NAME>
<RETURNS>GskRoundedRect *</RETURNS>
GskRoundedRect           *self, const GskRoundedRect     *src
</FUNCTION>
<FUNCTION>
<NAME>gsk_rounded_rect_init_from_rect</NAME>
<RETURNS>GskRoundedRect *</RETURNS>
GskRoundedRect           *self, const graphene_rect_t    *bounds, float                     radius
</FUNCTION>
<FUNCTION>
<NAME>gsk_rounded_rect_normalize</NAME>
<RETURNS>GskRoundedRect *</RETURNS>
GskRoundedRect           *self
</FUNCTION>
<FUNCTION>
<NAME>gsk_rounded_rect_offset</NAME>
<RETURNS>GskRoundedRect *</RETURNS>
GskRoundedRect           *self, float                     dx, float                     dy
</FUNCTION>
<FUNCTION>
<NAME>gsk_rounded_rect_shrink</NAME>
<RETURNS>GskRoundedRect *</RETURNS>
GskRoundedRect           *self, float                     top, float                     right, float                     bottom, float                     left
</FUNCTION>
<FUNCTION>
<NAME>gsk_rounded_rect_is_rectilinear</NAME>
<RETURNS>gboolean</RETURNS>
const GskRoundedRect     *self
</FUNCTION>
<FUNCTION>
<NAME>gsk_rounded_rect_contains_point</NAME>
<RETURNS>gboolean</RETURNS>
const GskRoundedRect     *self, const graphene_point_t   *point
</FUNCTION>
<FUNCTION>
<NAME>gsk_rounded_rect_contains_rect</NAME>
<RETURNS>gboolean</RETURNS>
const GskRoundedRect     *self, const graphene_rect_t    *rect
</FUNCTION>
<FUNCTION>
<NAME>gsk_rounded_rect_intersects_rect</NAME>
<RETURNS>gboolean</RETURNS>
const GskRoundedRect     *self, const graphene_rect_t    *rect
</FUNCTION>
<MACRO>
<NAME>GSK_TYPE_TRANSFORM</NAME>
#define GSK_TYPE_TRANSFORM (gsk_transform_get_type ())
</MACRO>
<FUNCTION>
<NAME>gsk_transform_get_type</NAME>
<RETURNS>GType</RETURNS>
void
</FUNCTION>
<FUNCTION>
<NAME>gsk_transform_ref</NAME>
<RETURNS>GskTransform *</RETURNS>
GskTransform                   *self
</FUNCTION>
<FUNCTION>
<NAME>gsk_transform_unref</NAME>
<RETURNS>void</RETURNS>
GskTransform                   *self
</FUNCTION>
<FUNCTION>
<NAME>gsk_transform_print</NAME>
<RETURNS>void</RETURNS>
GskTransform                   *self, GString                        *string
</FUNCTION>
<FUNCTION>
<NAME>gsk_transform_to_string</NAME>
<RETURNS>char *</RETURNS>
GskTransform                   *self
</FUNCTION>
<FUNCTION>
<NAME>gsk_transform_parse</NAME>
<RETURNS>gboolean</RETURNS>
const char                     *string, GskTransform                  **out_transform
</FUNCTION>
<FUNCTION>
<NAME>gsk_transform_to_matrix</NAME>
<RETURNS>void</RETURNS>
GskTransform                   *self, graphene_matrix_t              *out_matrix
</FUNCTION>
<FUNCTION>
<NAME>gsk_transform_to_2d</NAME>
<RETURNS>void</RETURNS>
GskTransform                   *self, float                          *out_xx, float                          *out_yx, float                          *out_xy, float                          *out_yy, float                          *out_dx, float                          *out_dy
</FUNCTION>
<FUNCTION>
<NAME>gsk_transform_to_affine</NAME>
<RETURNS>void</RETURNS>
GskTransform                   *self, float                          *out_scale_x, float                          *out_scale_y, float                          *out_dx, float                          *out_dy
</FUNCTION>
<FUNCTION>
<NAME>gsk_transform_to_translate</NAME>
<RETURNS>void</RETURNS>
GskTransform                   *self, float                          *out_dx, float                          *out_dy
</FUNCTION>
<FUNCTION>
<NAME>gsk_transform_get_category</NAME>
<RETURNS>GskTransformCategory</RETURNS>
GskTransform                   *self
</FUNCTION>
<FUNCTION>
<NAME>gsk_transform_equal</NAME>
<RETURNS>gboolean</RETURNS>
GskTransform                   *first, GskTransform                   *second
</FUNCTION>
<FUNCTION>
<NAME>gsk_transform_new</NAME>
<RETURNS>GskTransform *</RETURNS>
void
</FUNCTION>
<FUNCTION>
<NAME>gsk_transform_transform</NAME>
<RETURNS>GskTransform *</RETURNS>
GskTransform                   *next, GskTransform                   *other
</FUNCTION>
<FUNCTION>
<NAME>gsk_transform_invert</NAME>
<RETURNS>GskTransform *</RETURNS>
GskTransform                   *self
</FUNCTION>
<FUNCTION>
<NAME>gsk_transform_matrix</NAME>
<RETURNS>GskTransform *</RETURNS>
GskTransform                   *next, const graphene_matrix_t        *matrix
</FUNCTION>
<FUNCTION>
<NAME>gsk_transform_translate</NAME>
<RETURNS>GskTransform *</RETURNS>
GskTransform                   *next, const graphene_point_t         *point
</FUNCTION>
<FUNCTION>
<NAME>gsk_transform_translate_3d</NAME>
<RETURNS>GskTransform *</RETURNS>
GskTransform                   *next, const graphene_point3d_t       *point
</FUNCTION>
<FUNCTION>
<NAME>gsk_transform_rotate</NAME>
<RETURNS>GskTransform *</RETURNS>
GskTransform                   *next, float                           angle
</FUNCTION>
<FUNCTION>
<NAME>gsk_transform_rotate_3d</NAME>
<RETURNS>GskTransform *</RETURNS>
GskTransform                   *next, float                           angle, const graphene_vec3_t          *axis
</FUNCTION>
<FUNCTION>
<NAME>gsk_transform_scale</NAME>
<RETURNS>GskTransform *</RETURNS>
GskTransform                   *next, float                           factor_x, float                           factor_y
</FUNCTION>
<FUNCTION>
<NAME>gsk_transform_scale_3d</NAME>
<RETURNS>GskTransform *</RETURNS>
GskTransform                   *next, float                           factor_x, float                           factor_y, float                           factor_z
</FUNCTION>
<FUNCTION>
<NAME>gsk_transform_perspective</NAME>
<RETURNS>GskTransform *</RETURNS>
GskTransform                   *next, float                           depth
</FUNCTION>
<FUNCTION>
<NAME>gsk_transform_transform_bounds</NAME>
<RETURNS>void</RETURNS>
GskTransform                   *self, const graphene_rect_t          *rect, graphene_rect_t                *out_rect
</FUNCTION>
<FUNCTION>
<NAME>gsk_transform_transform_point</NAME>
<RETURNS>void</RETURNS>
GskTransform                   *self, const graphene_point_t          *point, graphene_point_t                *out_point
</FUNCTION>
<STRUCT>
<NAME>GskRenderer</NAME>
</STRUCT>
<STRUCT>
<NAME>GskTransform</NAME>
</STRUCT>
<MACRO>
<NAME>GSK_TYPE_BROADWAY_RENDERER</NAME>
#define GSK_TYPE_BROADWAY_RENDERER (gsk_broadway_renderer_get_type ())
</MACRO>
<MACRO>
<NAME>GSK_BROADWAY_RENDERER</NAME>
#define GSK_BROADWAY_RENDERER(obj)                 (G_TYPE_CHECK_INSTANCE_CAST ((obj), GSK_TYPE_BROADWAY_RENDERER, GskBroadwayRenderer))
</MACRO>
<MACRO>
<NAME>GSK_IS_BROADWAY_RENDERER</NAME>
#define GSK_IS_BROADWAY_RENDERER(obj)              (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GSK_TYPE_BROADWAY_RENDERER))
</MACRO>
<MACRO>
<NAME>GSK_BROADWAY_RENDERER_CLASS</NAME>
#define GSK_BROADWAY_RENDERER_CLASS(klass)         (G_TYPE_CHECK_CLASS_CAST ((klass), GSK_TYPE_BROADWAY_RENDERER, GskBroadwayRendererClass))
</MACRO>
<MACRO>
<NAME>GSK_IS_BROADWAY_RENDERER_CLASS</NAME>
#define GSK_IS_BROADWAY_RENDERER_CLASS(klass)      (G_TYPE_CHECK_CLASS_TYPE ((klass), GSK_TYPE_BROADWAY_RENDERER))
</MACRO>
<MACRO>
<NAME>GSK_BROADWAY_RENDERER_GET_CLASS</NAME>
#define GSK_BROADWAY_RENDERER_GET_CLASS(obj)       (G_TYPE_INSTANCE_GET_CLASS ((obj), GSK_TYPE_BROADWAY_RENDERER, GskBroadwayRendererClass))
</MACRO>
<FUNCTION>
<NAME>gsk_broadway_renderer_get_type</NAME>
<RETURNS>GType</RETURNS>
void
</FUNCTION>
<FUNCTION>
<NAME>gsk_broadway_renderer_new</NAME>
<RETURNS>GskRenderer *</RETURNS>
void
</FUNCTION>
<STRUCT>
<NAME>GskBroadwayRenderer</NAME>
</STRUCT>
<STRUCT>
<NAME>GskBroadwayRendererClass</NAME>
</STRUCT>
<MACRO>
<NAME>GSK_TYPE_GL_RENDERER</NAME>
#define GSK_TYPE_GL_RENDERER (gsk_gl_renderer_get_type ())
</MACRO>
<MACRO>
<NAME>GSK_GL_RENDERER</NAME>
#define GSK_GL_RENDERER(obj)                    (G_TYPE_CHECK_INSTANCE_CAST ((obj), GSK_TYPE_GL_RENDERER, GskGLRenderer))
</MACRO>
<MACRO>
<NAME>GSK_IS_GL_RENDERER</NAME>
#define GSK_IS_GL_RENDERER(obj)                 (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GSK_TYPE_GL_RENDERER))
</MACRO>
<MACRO>
<NAME>GSK_GL_RENDERER_CLASS</NAME>
#define GSK_GL_RENDERER_CLASS(klass)            (G_TYPE_CHECK_CLASS_CAST ((klass), GSK_TYPE_GL_RENDERER, GskGLRendererClass))
</MACRO>
<MACRO>
<NAME>GSK_IS_GL_RENDERER_CLASS</NAME>
#define GSK_IS_GL_RENDERER_CLASS(klass)         (G_TYPE_CHECK_CLASS_TYPE ((klass), GSK_TYPE_GL_RENDERER))
</MACRO>
<MACRO>
<NAME>GSK_GL_RENDERER_GET_CLASS</NAME>
#define GSK_GL_RENDERER_GET_CLASS(obj)          (G_TYPE_INSTANCE_GET_CLASS ((obj), GSK_TYPE_GL_RENDERER, GskGLRendererClass))
</MACRO>
<FUNCTION>
<NAME>gsk_gl_renderer_get_type</NAME>
<RETURNS>GType</RETURNS>
void
</FUNCTION>
<FUNCTION>
<NAME>gsk_gl_renderer_new</NAME>
<RETURNS>GskRenderer *</RETURNS>
void
</FUNCTION>
<STRUCT>
<NAME>GskGLRenderer</NAME>
</STRUCT>
<STRUCT>
<NAME>GskGLRendererClass</NAME>
</STRUCT>
<MACRO>
<NAME>GSK_TYPE_VULKAN_RENDERER</NAME>
#define GSK_TYPE_VULKAN_RENDERER (gsk_vulkan_renderer_get_type ())
</MACRO>
<MACRO>
<NAME>GSK_VULKAN_RENDERER</NAME>
#define GSK_VULKAN_RENDERER(obj)                 (G_TYPE_CHECK_INSTANCE_CAST ((obj), GSK_TYPE_VULKAN_RENDERER, GskVulkanRenderer))
</MACRO>
<MACRO>
<NAME>GSK_IS_VULKAN_RENDERER</NAME>
#define GSK_IS_VULKAN_RENDERER(obj)              (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GSK_TYPE_VULKAN_RENDERER))
</MACRO>
<MACRO>
<NAME>GSK_VULKAN_RENDERER_CLASS</NAME>
#define GSK_VULKAN_RENDERER_CLASS(klass)         (G_TYPE_CHECK_CLASS_CAST ((klass), GSK_TYPE_VULKAN_RENDERER, GskVulkanRendererClass))
</MACRO>
<MACRO>
<NAME>GSK_IS_VULKAN_RENDERER_CLASS</NAME>
#define GSK_IS_VULKAN_RENDERER_CLASS(klass)      (G_TYPE_CHECK_CLASS_TYPE ((klass), GSK_TYPE_VULKAN_RENDERER))
</MACRO>
<MACRO>
<NAME>GSK_VULKAN_RENDERER_GET_CLASS</NAME>
#define GSK_VULKAN_RENDERER_GET_CLASS(obj)       (G_TYPE_INSTANCE_GET_CLASS ((obj), GSK_TYPE_VULKAN_RENDERER, GskVulkanRendererClass))
</MACRO>
<FUNCTION>
<NAME>gsk_vulkan_renderer_get_type</NAME>
<RETURNS>GType</RETURNS>
void
</FUNCTION>
<FUNCTION>
<NAME>gsk_vulkan_renderer_new</NAME>
<RETURNS>GskRenderer *</RETURNS>
void
</FUNCTION>
<STRUCT>
<NAME>GskVulkanRenderer</NAME>
</STRUCT>
<STRUCT>
<NAME>GskVulkanRendererClass</NAME>
</STRUCT>
<MACRO>
<NAME>GSK_TYPE_RENDER_NODE_TYPE</NAME>
#define GSK_TYPE_RENDER_NODE_TYPE (gsk_render_node_type_get_type ())
</MACRO>
<MACRO>
<NAME>GSK_TYPE_SCALING_FILTER</NAME>
#define GSK_TYPE_SCALING_FILTER (gsk_scaling_filter_get_type ())
</MACRO>
<MACRO>
<NAME>GSK_TYPE_BLEND_MODE</NAME>
#define GSK_TYPE_BLEND_MODE (gsk_blend_mode_get_type ())
</MACRO>
<MACRO>
<NAME>GSK_TYPE_CORNER</NAME>
#define GSK_TYPE_CORNER (gsk_corner_get_type ())
</MACRO>
<MACRO>
<NAME>GSK_TYPE_SERIALIZATION_ERROR</NAME>
#define GSK_TYPE_SERIALIZATION_ERROR (gsk_serialization_error_get_type ())
</MACRO>
<MACRO>
<NAME>GSK_TYPE_TRANSFORM_CATEGORY</NAME>
#define GSK_TYPE_TRANSFORM_CATEGORY (gsk_transform_category_get_type ())
</MACRO>
<MACRO>
<NAME>GSK_TYPE_GL_UNIFORM_TYPE</NAME>
#define GSK_TYPE_GL_UNIFORM_TYPE (gsk_gl_uniform_type_get_type ())
</MACRO>
