! Do not modify this file automatically generated by cfwrapper.py using:
! gtk-fortran 4.8.0, GTK 4.18.4, GLib 2.84.1, Fedora 42 x86_64
! This file is part of the gtk-fortran library, distributed under
! GNU General Public License version 3.

module gsk
use, intrinsic :: iso_c_binding
implicit none
interface

!--------------------------------------------------
! /usr/include/gtk-4.0/gsk/gskrenderer.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!GType gsk_renderer_get_type (void) ;
function gsk_renderer_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gsk_renderer_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GskRenderer * gsk_renderer_new_for_surface (GdkSurface *surface);
function gsk_renderer_new_for_surface(surface) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_renderer_new_for_surface
  type(c_ptr), value :: surface
end function

! GDK_AVAILABLE_IN_ALL
!GdkSurface * gsk_renderer_get_surface (GskRenderer *renderer);
function gsk_renderer_get_surface(renderer) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_renderer_get_surface
  type(c_ptr), value :: renderer
end function

! GDK_AVAILABLE_IN_ALL
!gboolean gsk_renderer_realize (GskRenderer *renderer, GdkSurface *surface, GError **error);
function gsk_renderer_realize(renderer, surface, error) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gsk_renderer_realize
  type(c_ptr), value :: renderer
  type(c_ptr), value :: surface
  type(c_ptr), value :: error
end function

! GDK_AVAILABLE_IN_4_14
!gboolean gsk_renderer_realize_for_display (GskRenderer *renderer, GdkDisplay *display, GError **error);
function gsk_renderer_realize_for_display(renderer, display, error) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gsk_renderer_realize_for_display
  type(c_ptr), value :: renderer
  type(c_ptr), value :: display
  type(c_ptr), value :: error
end function

! GDK_AVAILABLE_IN_ALL
!void gsk_renderer_unrealize (GskRenderer *renderer);
subroutine gsk_renderer_unrealize(renderer) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: renderer
end subroutine

! GDK_AVAILABLE_IN_ALL
!gboolean gsk_renderer_is_realized (GskRenderer *renderer);
function gsk_renderer_is_realized(renderer) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gsk_renderer_is_realized
  type(c_ptr), value :: renderer
end function

! GDK_AVAILABLE_IN_ALL
!GdkTexture * gsk_renderer_render_texture (GskRenderer *renderer, GskRenderNode *root, const graphene_rect_t *viewport);
function gsk_renderer_render_texture(renderer, root, viewport) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_renderer_render_texture
  type(c_ptr), value :: renderer
  type(c_ptr), value :: root
  type(c_ptr), value :: viewport
end function

! GDK_AVAILABLE_IN_ALL
!void gsk_renderer_render (GskRenderer *renderer, GskRenderNode *root, const cairo_region_t *region);
subroutine gsk_renderer_render(renderer, root, region) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: renderer
  type(c_ptr), value :: root
  type(c_ptr), value :: region
end subroutine

!--------------------------------------------------
! /usr/include/gtk-4.0/gsk/gsktransform.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!GType gsk_transform_get_type (void) ;
function gsk_transform_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gsk_transform_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GskTransform * gsk_transform_ref (GskTransform *self);
function gsk_transform_ref(self) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_transform_ref
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_ALL
!void gsk_transform_unref (GskTransform *self);
subroutine gsk_transform_unref(self) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: self
end subroutine

! GDK_AVAILABLE_IN_ALL
!void gsk_transform_print (GskTransform *self, GString *string);
subroutine gsk_transform_print(self, string) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: self
  type(c_ptr), value :: string
end subroutine

! GDK_AVAILABLE_IN_ALL
!char * gsk_transform_to_string (GskTransform *self);
function gsk_transform_to_string(self) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_transform_to_string
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_ALL
!gboolean gsk_transform_parse (const char *string, GskTransform **out_transform);
function gsk_transform_parse(string, out_transform) bind(c)
  import :: c_int, c_char, c_ptr
  implicit none
  integer(c_int) :: gsk_transform_parse
  character(kind=c_char), dimension(*) :: string
  type(c_ptr), value :: out_transform
end function

! GDK_AVAILABLE_IN_ALL
!void gsk_transform_to_matrix (GskTransform *self, graphene_matrix_t *out_matrix);
subroutine gsk_transform_to_matrix(self, out_matrix) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: self
  type(c_ptr), value :: out_matrix
end subroutine

! GDK_AVAILABLE_IN_ALL
!void gsk_transform_to_2d (GskTransform *self, float *out_xx, float *out_yx, float *out_xy, float *out_yy, float *out_dx, float *out_dy);
subroutine gsk_transform_to_2d(self, out_xx, out_yx, out_xy, out_yy, out_dx,&
& out_dy) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: self
  type(c_ptr), value :: out_xx
  type(c_ptr), value :: out_yx
  type(c_ptr), value :: out_xy
  type(c_ptr), value :: out_yy
  type(c_ptr), value :: out_dx
  type(c_ptr), value :: out_dy
end subroutine

! GDK_AVAILABLE_IN_4_6
!void gsk_transform_to_2d_components (GskTransform *self, float *out_skew_x, float *out_skew_y, float *out_scale_x, float *out_scale_y, float *out_angle, float *out_dx, float *out_dy);
subroutine gsk_transform_to_2d_components(self, out_skew_x, out_skew_y,&
& out_scale_x, out_scale_y, out_angle, out_dx, out_dy) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: self
  type(c_ptr), value :: out_skew_x
  type(c_ptr), value :: out_skew_y
  type(c_ptr), value :: out_scale_x
  type(c_ptr), value :: out_scale_y
  type(c_ptr), value :: out_angle
  type(c_ptr), value :: out_dx
  type(c_ptr), value :: out_dy
end subroutine

! GDK_AVAILABLE_IN_ALL
!void gsk_transform_to_affine (GskTransform *self, float *out_scale_x, float *out_scale_y, float *out_dx, float *out_dy);
subroutine gsk_transform_to_affine(self, out_scale_x, out_scale_y, out_dx,&
& out_dy) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: self
  type(c_ptr), value :: out_scale_x
  type(c_ptr), value :: out_scale_y
  type(c_ptr), value :: out_dx
  type(c_ptr), value :: out_dy
end subroutine

! GDK_AVAILABLE_IN_ALL
!void gsk_transform_to_translate (GskTransform *self, float *out_dx, float *out_dy);
subroutine gsk_transform_to_translate(self, out_dx, out_dy) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: self
  type(c_ptr), value :: out_dx
  type(c_ptr), value :: out_dy
end subroutine

! GDK_AVAILABLE_IN_ALL
!GskTransformCategory gsk_transform_get_category (GskTransform *self) ;
function gsk_transform_get_category(self) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gsk_transform_get_category
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_ALL
!gboolean gsk_transform_equal (GskTransform *first, GskTransform *second) ;
function gsk_transform_equal(first, second) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gsk_transform_equal
  type(c_ptr), value :: first
  type(c_ptr), value :: second
end function

! GDK_AVAILABLE_IN_ALL
!GskTransform * gsk_transform_new (void);
function gsk_transform_new() bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_transform_new
end function

! GDK_AVAILABLE_IN_ALL
!GskTransform * gsk_transform_transform (GskTransform *next, GskTransform *other) ;
function gsk_transform_transform(next, other) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_transform_transform
  type(c_ptr), value :: next
  type(c_ptr), value :: other
end function

! GDK_AVAILABLE_IN_ALL
!GskTransform * gsk_transform_invert (GskTransform *self) ;
function gsk_transform_invert(self) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_transform_invert
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_ALL
!GskTransform * gsk_transform_matrix (GskTransform *next, const graphene_matrix_t *matrix) ;
function gsk_transform_matrix(next, matrix) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_transform_matrix
  type(c_ptr), value :: next
  type(c_ptr), value :: matrix
end function

! GDK_AVAILABLE_IN_ALL
!GskTransform * gsk_transform_translate (GskTransform *next, const graphene_point_t *point) ;
function gsk_transform_translate(next, point) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_transform_translate
  type(c_ptr), value :: next
  type(c_ptr), value :: point
end function

! GDK_AVAILABLE_IN_ALL
!GskTransform * gsk_transform_translate_3d (GskTransform *next, const graphene_point3d_t *point) ;
function gsk_transform_translate_3d(next, point) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_transform_translate_3d
  type(c_ptr), value :: next
  type(c_ptr), value :: point
end function

! GDK_AVAILABLE_IN_4_6
!GskTransform * gsk_transform_skew (GskTransform *next, float skew_x, float skew_y) ;
function gsk_transform_skew(next, skew_x, skew_y) bind(c)
  import :: c_ptr, c_float
  implicit none
  type(c_ptr) :: gsk_transform_skew
  type(c_ptr), value :: next
  real(c_float), value :: skew_x
  real(c_float), value :: skew_y
end function

! GDK_AVAILABLE_IN_ALL
!GskTransform * gsk_transform_rotate (GskTransform *next, float angle) ;
function gsk_transform_rotate(next, angle) bind(c)
  import :: c_ptr, c_float
  implicit none
  type(c_ptr) :: gsk_transform_rotate
  type(c_ptr), value :: next
  real(c_float), value :: angle
end function

! GDK_AVAILABLE_IN_ALL
!GskTransform * gsk_transform_rotate_3d (GskTransform *next, float angle, const graphene_vec3_t *axis) ;
function gsk_transform_rotate_3d(next, angle, axis) bind(c)
  import :: c_ptr, c_float
  implicit none
  type(c_ptr) :: gsk_transform_rotate_3d
  type(c_ptr), value :: next
  real(c_float), value :: angle
  type(c_ptr), value :: axis
end function

! GDK_AVAILABLE_IN_ALL
!GskTransform * gsk_transform_scale (GskTransform *next, float factor_x, float factor_y) ;
function gsk_transform_scale(next, factor_x, factor_y) bind(c)
  import :: c_ptr, c_float
  implicit none
  type(c_ptr) :: gsk_transform_scale
  type(c_ptr), value :: next
  real(c_float), value :: factor_x
  real(c_float), value :: factor_y
end function

! GDK_AVAILABLE_IN_ALL
!GskTransform * gsk_transform_scale_3d (GskTransform *next, float factor_x, float factor_y, float factor_z) ;
function gsk_transform_scale_3d(next, factor_x, factor_y, factor_z) bind(c)
  import :: c_ptr, c_float
  implicit none
  type(c_ptr) :: gsk_transform_scale_3d
  type(c_ptr), value :: next
  real(c_float), value :: factor_x
  real(c_float), value :: factor_y
  real(c_float), value :: factor_z
end function

! GDK_AVAILABLE_IN_ALL
!GskTransform * gsk_transform_perspective (GskTransform *next, float depth) ;
function gsk_transform_perspective(next, depth) bind(c)
  import :: c_ptr, c_float
  implicit none
  type(c_ptr) :: gsk_transform_perspective
  type(c_ptr), value :: next
  real(c_float), value :: depth
end function

! GDK_AVAILABLE_IN_ALL
!void gsk_transform_transform_bounds (GskTransform *self, const graphene_rect_t *rect, graphene_rect_t *out_rect);
subroutine gsk_transform_transform_bounds(self, rect, out_rect) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: self
  type(c_ptr), value :: rect
  type(c_ptr), value :: out_rect
end subroutine

! GDK_AVAILABLE_IN_ALL
!void gsk_transform_transform_point (GskTransform *self, const graphene_point_t *point, graphene_point_t *out_point);
subroutine gsk_transform_transform_point(self, point, out_point) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: self
  type(c_ptr), value :: point
  type(c_ptr), value :: out_point
end subroutine

!--------------------------------------------------
! /usr/include/gtk-4.0/gsk/gskglshader.h
!--------------------------------------------------
! GDK_DEPRECATED_IN_4_16_FOR(GtkGLArea)
!GskGLShader * gsk_gl_shader_new_from_bytes (GBytes *sourcecode);
function gsk_gl_shader_new_from_bytes(sourcecode) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_gl_shader_new_from_bytes
  type(c_ptr), value :: sourcecode
end function

! GDK_DEPRECATED_IN_4_16_FOR(GtkGLArea)
!GskGLShader * gsk_gl_shader_new_from_resource (const char *resource_path);
function gsk_gl_shader_new_from_resource(resource_path) bind(c)
  import :: c_ptr, c_char
  implicit none
  type(c_ptr) :: gsk_gl_shader_new_from_resource
  character(kind=c_char), dimension(*) :: resource_path
end function

! GDK_DEPRECATED_IN_4_16_FOR(GtkGLArea)
!gboolean gsk_gl_shader_compile (GskGLShader *shader, GskRenderer *renderer, GError **error);
function gsk_gl_shader_compile(shader, renderer, error) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gsk_gl_shader_compile
  type(c_ptr), value :: shader
  type(c_ptr), value :: renderer
  type(c_ptr), value :: error
end function

! GDK_DEPRECATED_IN_4_16_FOR(GtkGLArea)
!GBytes * gsk_gl_shader_get_source (GskGLShader *shader);
function gsk_gl_shader_get_source(shader) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_gl_shader_get_source
  type(c_ptr), value :: shader
end function

! GDK_DEPRECATED_IN_4_16_FOR(GtkGLArea)
!const char * gsk_gl_shader_get_resource (GskGLShader *shader);
function gsk_gl_shader_get_resource(shader) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_gl_shader_get_resource
  type(c_ptr), value :: shader
end function

! GDK_DEPRECATED_IN_4_16_FOR(GtkGLArea)
!int gsk_gl_shader_get_n_textures (GskGLShader *shader);
function gsk_gl_shader_get_n_textures(shader) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gsk_gl_shader_get_n_textures
  type(c_ptr), value :: shader
end function

! GDK_DEPRECATED_IN_4_16_FOR(GtkGLArea)
!int gsk_gl_shader_get_n_uniforms (GskGLShader *shader);
function gsk_gl_shader_get_n_uniforms(shader) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gsk_gl_shader_get_n_uniforms
  type(c_ptr), value :: shader
end function

! GDK_DEPRECATED_IN_4_16_FOR(GtkGLArea)
!const char * gsk_gl_shader_get_uniform_name (GskGLShader *shader, int idx);
function gsk_gl_shader_get_uniform_name(shader, idx) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: gsk_gl_shader_get_uniform_name
  type(c_ptr), value :: shader
  integer(c_int), value :: idx
end function

! GDK_DEPRECATED_IN_4_16_FOR(GtkGLArea)
!int gsk_gl_shader_find_uniform_by_name (GskGLShader *shader, const char *name);
function gsk_gl_shader_find_uniform_by_name(shader, name) bind(c)
  import :: c_int, c_ptr, c_char
  implicit none
  integer(c_int) :: gsk_gl_shader_find_uniform_by_name
  type(c_ptr), value :: shader
  character(kind=c_char), dimension(*) :: name
end function

! GDK_DEPRECATED_IN_4_16_FOR(GtkGLArea)
!GskGLUniformType gsk_gl_shader_get_uniform_type (GskGLShader *shader, int idx);
function gsk_gl_shader_get_uniform_type(shader, idx) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gsk_gl_shader_get_uniform_type
  type(c_ptr), value :: shader
  integer(c_int), value :: idx
end function

! GDK_DEPRECATED_IN_4_16_FOR(GtkGLArea)
!int gsk_gl_shader_get_uniform_offset (GskGLShader *shader, int idx);
function gsk_gl_shader_get_uniform_offset(shader, idx) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gsk_gl_shader_get_uniform_offset
  type(c_ptr), value :: shader
  integer(c_int), value :: idx
end function

! GDK_DEPRECATED_IN_4_16_FOR(GtkGLArea)
!gsize gsk_gl_shader_get_args_size (GskGLShader *shader);
function gsk_gl_shader_get_args_size(shader) bind(c)
  import :: c_size_t, c_ptr
  implicit none
  integer(c_size_t) :: gsk_gl_shader_get_args_size
  type(c_ptr), value :: shader
end function

! GDK_DEPRECATED_IN_4_16_FOR(GtkGLArea)
!GBytes * gsk_gl_shader_format_args_va (GskGLShader *shader, va_list uniforms);
function gsk_gl_shader_format_args_va(shader, uniforms) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_gl_shader_format_args_va
  type(c_ptr), value :: shader
  type(c_ptr), value :: uniforms
end function

! GDK_DEPRECATED_IN_4_16_FOR(GtkGLArea)
!float gsk_gl_shader_get_arg_float (GskGLShader *shader, GBytes *args, int idx);
function gsk_gl_shader_get_arg_float(shader, args, idx) bind(c)
  import :: c_float, c_ptr, c_int
  implicit none
  real(c_float) :: gsk_gl_shader_get_arg_float
  type(c_ptr), value :: shader
  type(c_ptr), value :: args
  integer(c_int), value :: idx
end function

! GDK_DEPRECATED_IN_4_16_FOR(GtkGLArea)
!gint32 gsk_gl_shader_get_arg_int (GskGLShader *shader, GBytes *args, int idx);
function gsk_gl_shader_get_arg_int(shader, args, idx) bind(c)
  import :: c_int32_t, c_ptr, c_int
  implicit none
  integer(c_int32_t) :: gsk_gl_shader_get_arg_int
  type(c_ptr), value :: shader
  type(c_ptr), value :: args
  integer(c_int), value :: idx
end function

! GDK_DEPRECATED_IN_4_16_FOR(GtkGLArea)
!guint32 gsk_gl_shader_get_arg_uint (GskGLShader *shader, GBytes *args, int idx);
function gsk_gl_shader_get_arg_uint(shader, args, idx) bind(c)
  import :: c_int32_t, c_ptr, c_int
  implicit none
  integer(c_int32_t) :: gsk_gl_shader_get_arg_uint
  type(c_ptr), value :: shader
  type(c_ptr), value :: args
  integer(c_int), value :: idx
end function

! GDK_DEPRECATED_IN_4_16_FOR(GtkGLArea)
!gboolean gsk_gl_shader_get_arg_bool (GskGLShader *shader, GBytes *args, int idx);
function gsk_gl_shader_get_arg_bool(shader, args, idx) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gsk_gl_shader_get_arg_bool
  type(c_ptr), value :: shader
  type(c_ptr), value :: args
  integer(c_int), value :: idx
end function

! GDK_DEPRECATED_IN_4_16_FOR(GtkGLArea)
!void gsk_gl_shader_get_arg_vec2 (GskGLShader *shader, GBytes *args, int idx, graphene_vec2_t *out_value);
subroutine gsk_gl_shader_get_arg_vec2(shader, args, idx, out_value) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: shader
  type(c_ptr), value :: args
  integer(c_int), value :: idx
  type(c_ptr), value :: out_value
end subroutine

! GDK_DEPRECATED_IN_4_16_FOR(GtkGLArea)
!void gsk_gl_shader_get_arg_vec3 (GskGLShader *shader, GBytes *args, int idx, graphene_vec3_t *out_value);
subroutine gsk_gl_shader_get_arg_vec3(shader, args, idx, out_value) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: shader
  type(c_ptr), value :: args
  integer(c_int), value :: idx
  type(c_ptr), value :: out_value
end subroutine

! GDK_DEPRECATED_IN_4_16_FOR(GtkGLArea)
!void gsk_gl_shader_get_arg_vec4 (GskGLShader *shader, GBytes *args, int idx, graphene_vec4_t *out_value);
subroutine gsk_gl_shader_get_arg_vec4(shader, args, idx, out_value) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: shader
  type(c_ptr), value :: args
  integer(c_int), value :: idx
  type(c_ptr), value :: out_value
end subroutine

! GDK_DEPRECATED_IN_4_16_FOR(GtkGLArea)
!GType gsk_shader_args_builder_get_type (void) ;
function gsk_shader_args_builder_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gsk_shader_args_builder_get_type
end function

! GDK_DEPRECATED_IN_4_16_FOR(GtkGLArea)
!GskShaderArgsBuilder *gsk_shader_args_builder_new (GskGLShader *shader, GBytes *initial_values);
function gsk_shader_args_builder_new(shader, initial_values) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_shader_args_builder_new
  type(c_ptr), value :: shader
  type(c_ptr), value :: initial_values
end function

! GDK_DEPRECATED_IN_4_16_FOR(GtkGLArea)
!GBytes * gsk_shader_args_builder_to_args (GskShaderArgsBuilder *builder);
function gsk_shader_args_builder_to_args(builder) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_shader_args_builder_to_args
  type(c_ptr), value :: builder
end function

! GDK_DEPRECATED_IN_4_16_FOR(GtkGLArea)
!GBytes * gsk_shader_args_builder_free_to_args (GskShaderArgsBuilder *builder);
function gsk_shader_args_builder_free_to_args(builder) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_shader_args_builder_free_to_args
  type(c_ptr), value :: builder
end function

! GDK_DEPRECATED_IN_4_16_FOR(GtkGLArea)
!GskShaderArgsBuilder *gsk_shader_args_builder_ref (GskShaderArgsBuilder *builder);
function gsk_shader_args_builder_ref(builder) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_shader_args_builder_ref
  type(c_ptr), value :: builder
end function

! GDK_DEPRECATED_IN_4_16_FOR(GtkGLArea)
!void gsk_shader_args_builder_unref (GskShaderArgsBuilder *builder);
subroutine gsk_shader_args_builder_unref(builder) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: builder
end subroutine

! GDK_DEPRECATED_IN_4_16_FOR(GtkGLArea)
!void gsk_shader_args_builder_set_float (GskShaderArgsBuilder *builder, int idx, float value);
subroutine gsk_shader_args_builder_set_float(builder, idx, value) bind(c)
  import :: c_ptr, c_int, c_float
  implicit none
  type(c_ptr), value :: builder
  integer(c_int), value :: idx
  real(c_float), value :: value
end subroutine

! GDK_DEPRECATED_IN_4_16_FOR(GtkGLArea)
!void gsk_shader_args_builder_set_int (GskShaderArgsBuilder *builder, int idx, gint32 value);
subroutine gsk_shader_args_builder_set_int(builder, idx, value) bind(c)
  import :: c_ptr, c_int, c_int32_t
  implicit none
  type(c_ptr), value :: builder
  integer(c_int), value :: idx
  integer(c_int32_t), value :: value
end subroutine

! GDK_DEPRECATED_IN_4_16_FOR(GtkGLArea)
!void gsk_shader_args_builder_set_uint (GskShaderArgsBuilder *builder, int idx, guint32 value);
subroutine gsk_shader_args_builder_set_uint(builder, idx, value) bind(c)
  import :: c_ptr, c_int, c_int32_t
  implicit none
  type(c_ptr), value :: builder
  integer(c_int), value :: idx
  integer(c_int32_t), value :: value
end subroutine

! GDK_DEPRECATED_IN_4_16_FOR(GtkGLArea)
!void gsk_shader_args_builder_set_bool (GskShaderArgsBuilder *builder, int idx, gboolean value);
subroutine gsk_shader_args_builder_set_bool(builder, idx, value) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: builder
  integer(c_int), value :: idx
  integer(c_int), value :: value
end subroutine

! GDK_DEPRECATED_IN_4_16_FOR(GtkGLArea)
!void gsk_shader_args_builder_set_vec2 (GskShaderArgsBuilder *builder, int idx, const graphene_vec2_t *value);
subroutine gsk_shader_args_builder_set_vec2(builder, idx, value) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: builder
  integer(c_int), value :: idx
  type(c_ptr), value :: value
end subroutine

! GDK_DEPRECATED_IN_4_16_FOR(GtkGLArea)
!void gsk_shader_args_builder_set_vec3 (GskShaderArgsBuilder *builder, int idx, const graphene_vec3_t *value);
subroutine gsk_shader_args_builder_set_vec3(builder, idx, value) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: builder
  integer(c_int), value :: idx
  type(c_ptr), value :: value
end subroutine

! GDK_DEPRECATED_IN_4_16_FOR(GtkGLArea)
!void gsk_shader_args_builder_set_vec4 (GskShaderArgsBuilder *builder, int idx, const graphene_vec4_t *value);
subroutine gsk_shader_args_builder_set_vec4(builder, idx, value) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: builder
  integer(c_int), value :: idx
  type(c_ptr), value :: value
end subroutine

!--------------------------------------------------
! /usr/include/gtk-4.0/gsk/gskstroke.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_4_14
!GType gsk_stroke_get_type (void) ;
function gsk_stroke_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gsk_stroke_get_type
end function

! GDK_AVAILABLE_IN_4_14
!GskStroke * gsk_stroke_new (float line_width);
function gsk_stroke_new(line_width) bind(c)
  import :: c_ptr, c_float
  implicit none
  type(c_ptr) :: gsk_stroke_new
  real(c_float), value :: line_width
end function

! GDK_AVAILABLE_IN_4_14
!GskStroke * gsk_stroke_copy (const GskStroke *other);
function gsk_stroke_copy(other) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_stroke_copy
  type(c_ptr), value :: other
end function

! GDK_AVAILABLE_IN_4_14
!void gsk_stroke_free (GskStroke *self);
subroutine gsk_stroke_free(self) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: self
end subroutine

! GDK_AVAILABLE_IN_4_14
!gboolean gsk_stroke_equal (gconstpointer stroke1, gconstpointer stroke2);
function gsk_stroke_equal(stroke1, stroke2) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gsk_stroke_equal
  type(c_ptr), value :: stroke1
  type(c_ptr), value :: stroke2
end function

! GDK_AVAILABLE_IN_4_14
!void gsk_stroke_set_line_width (GskStroke *self, float line_width);
subroutine gsk_stroke_set_line_width(self, line_width) bind(c)
  import :: c_ptr, c_float
  implicit none
  type(c_ptr), value :: self
  real(c_float), value :: line_width
end subroutine

! GDK_AVAILABLE_IN_4_14
!float gsk_stroke_get_line_width (const GskStroke *self);
function gsk_stroke_get_line_width(self) bind(c)
  import :: c_float, c_ptr
  implicit none
  real(c_float) :: gsk_stroke_get_line_width
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_4_14
!void gsk_stroke_set_line_cap (GskStroke *self, GskLineCap line_cap);
subroutine gsk_stroke_set_line_cap(self, line_cap) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: self
  integer(c_int), value :: line_cap
end subroutine

! GDK_AVAILABLE_IN_4_14
!GskLineCap gsk_stroke_get_line_cap (const GskStroke *self);
function gsk_stroke_get_line_cap(self) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gsk_stroke_get_line_cap
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_4_14
!void gsk_stroke_set_line_join (GskStroke *self, GskLineJoin line_join);
subroutine gsk_stroke_set_line_join(self, line_join) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: self
  integer(c_int), value :: line_join
end subroutine

! GDK_AVAILABLE_IN_4_14
!GskLineJoin gsk_stroke_get_line_join (const GskStroke *self);
function gsk_stroke_get_line_join(self) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gsk_stroke_get_line_join
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_4_14
!void gsk_stroke_set_miter_limit (GskStroke *self, float limit);
subroutine gsk_stroke_set_miter_limit(self, limit) bind(c)
  import :: c_ptr, c_float
  implicit none
  type(c_ptr), value :: self
  real(c_float), value :: limit
end subroutine

! GDK_AVAILABLE_IN_4_14
!float gsk_stroke_get_miter_limit (const GskStroke *self);
function gsk_stroke_get_miter_limit(self) bind(c)
  import :: c_float, c_ptr
  implicit none
  real(c_float) :: gsk_stroke_get_miter_limit
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_4_14
!void gsk_stroke_set_dash (GskStroke *self, const float *dash, gsize n_dash);
subroutine gsk_stroke_set_dash(self, dash, n_dash) bind(c)
  import :: c_ptr, c_size_t
  implicit none
  type(c_ptr), value :: self
  type(c_ptr), value :: dash
  integer(c_size_t), value :: n_dash
end subroutine

! GDK_AVAILABLE_IN_4_14
!const float * gsk_stroke_get_dash (const GskStroke *self, gsize *n_dash);
function gsk_stroke_get_dash(self, n_dash) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_stroke_get_dash
  type(c_ptr), value :: self
  type(c_ptr), value :: n_dash
end function

! GDK_AVAILABLE_IN_4_14
!void gsk_stroke_set_dash_offset (GskStroke *self, float offset);
subroutine gsk_stroke_set_dash_offset(self, offset) bind(c)
  import :: c_ptr, c_float
  implicit none
  type(c_ptr), value :: self
  real(c_float), value :: offset
end subroutine

! GDK_AVAILABLE_IN_4_14
!float gsk_stroke_get_dash_offset (const GskStroke *self);
function gsk_stroke_get_dash_offset(self) bind(c)
  import :: c_float, c_ptr
  implicit none
  real(c_float) :: gsk_stroke_get_dash_offset
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_4_14
!void gsk_stroke_to_cairo (const GskStroke *self, cairo_t *cr);
subroutine gsk_stroke_to_cairo(self, cr) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: self
  type(c_ptr), value :: cr
end subroutine

!--------------------------------------------------
! /usr/include/gtk-4.0/gsk/gskpathbuilder.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_4_14
!GType gsk_path_builder_get_type (void) ;
function gsk_path_builder_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gsk_path_builder_get_type
end function

! GDK_AVAILABLE_IN_4_14
!GskPathBuilder * gsk_path_builder_new (void);
function gsk_path_builder_new() bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_path_builder_new
end function

! GDK_AVAILABLE_IN_4_14
!GskPathBuilder * gsk_path_builder_ref (GskPathBuilder *self);
function gsk_path_builder_ref(self) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_path_builder_ref
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_4_14
!void gsk_path_builder_unref (GskPathBuilder *self);
subroutine gsk_path_builder_unref(self) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: self
end subroutine

! GDK_AVAILABLE_IN_4_14
!GskPath * gsk_path_builder_free_to_path (GskPathBuilder *self) ;
function gsk_path_builder_free_to_path(self) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_path_builder_free_to_path
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_4_14
!GskPath * gsk_path_builder_to_path (GskPathBuilder *self) ;
function gsk_path_builder_to_path(self) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_path_builder_to_path
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_4_14
!const graphene_point_t *gsk_path_builder_get_current_point (GskPathBuilder *self);
function gsk_path_builder_get_current_point(self) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_path_builder_get_current_point
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_4_14
!void gsk_path_builder_add_path (GskPathBuilder *self, GskPath *path);
subroutine gsk_path_builder_add_path(self, path) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: self
  type(c_ptr), value :: path
end subroutine

! GDK_AVAILABLE_IN_4_14
!void gsk_path_builder_add_reverse_path (GskPathBuilder *self, GskPath *path);
subroutine gsk_path_builder_add_reverse_path(self, path) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: self
  type(c_ptr), value :: path
end subroutine

! GDK_AVAILABLE_IN_4_14
!void gsk_path_builder_add_cairo_path (GskPathBuilder *self, const cairo_path_t *path);
subroutine gsk_path_builder_add_cairo_path(self, path) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: self
  type(c_ptr), value :: path
end subroutine

! GDK_AVAILABLE_IN_4_14
!void gsk_path_builder_add_layout (GskPathBuilder *self, PangoLayout *layout);
subroutine gsk_path_builder_add_layout(self, layout) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: self
  type(c_ptr), value :: layout
end subroutine

! GDK_AVAILABLE_IN_4_14
!void gsk_path_builder_add_rect (GskPathBuilder *self, const graphene_rect_t *rect);
subroutine gsk_path_builder_add_rect(self, rect) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: self
  type(c_ptr), value :: rect
end subroutine

! GDK_AVAILABLE_IN_4_14
!void gsk_path_builder_add_rounded_rect (GskPathBuilder *self, const GskRoundedRect *rect);
subroutine gsk_path_builder_add_rounded_rect(self, rect) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: self
  type(c_ptr), value :: rect
end subroutine

! GDK_AVAILABLE_IN_4_14
!void gsk_path_builder_add_circle (GskPathBuilder *self, const graphene_point_t *center, float radius);
subroutine gsk_path_builder_add_circle(self, center, radius) bind(c)
  import :: c_ptr, c_float
  implicit none
  type(c_ptr), value :: self
  type(c_ptr), value :: center
  real(c_float), value :: radius
end subroutine

! GDK_AVAILABLE_IN_4_14
!void gsk_path_builder_add_segment (GskPathBuilder *self, GskPath *path, const GskPathPoint *start, const GskPathPoint *end);
subroutine gsk_path_builder_add_segment(self, path, start, end) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: self
  type(c_ptr), value :: path
  type(c_ptr), value :: start
  type(c_ptr), value :: end
end subroutine

! GDK_AVAILABLE_IN_4_14
!void gsk_path_builder_move_to (GskPathBuilder *self, float x, float y);
subroutine gsk_path_builder_move_to(self, x, y) bind(c)
  import :: c_ptr, c_float
  implicit none
  type(c_ptr), value :: self
  real(c_float), value :: x
  real(c_float), value :: y
end subroutine

! GDK_AVAILABLE_IN_4_14
!void gsk_path_builder_rel_move_to (GskPathBuilder *self, float x, float y);
subroutine gsk_path_builder_rel_move_to(self, x, y) bind(c)
  import :: c_ptr, c_float
  implicit none
  type(c_ptr), value :: self
  real(c_float), value :: x
  real(c_float), value :: y
end subroutine

! GDK_AVAILABLE_IN_4_14
!void gsk_path_builder_line_to (GskPathBuilder *self, float x, float y);
subroutine gsk_path_builder_line_to(self, x, y) bind(c)
  import :: c_ptr, c_float
  implicit none
  type(c_ptr), value :: self
  real(c_float), value :: x
  real(c_float), value :: y
end subroutine

! GDK_AVAILABLE_IN_4_14
!void gsk_path_builder_rel_line_to (GskPathBuilder *self, float x, float y);
subroutine gsk_path_builder_rel_line_to(self, x, y) bind(c)
  import :: c_ptr, c_float
  implicit none
  type(c_ptr), value :: self
  real(c_float), value :: x
  real(c_float), value :: y
end subroutine

! GDK_AVAILABLE_IN_4_14
!void gsk_path_builder_quad_to (GskPathBuilder *self, float x1, float y1, float x2, float y2);
subroutine gsk_path_builder_quad_to(self, x1, y1, x2, y2) bind(c)
  import :: c_ptr, c_float
  implicit none
  type(c_ptr), value :: self
  real(c_float), value :: x1
  real(c_float), value :: y1
  real(c_float), value :: x2
  real(c_float), value :: y2
end subroutine

! GDK_AVAILABLE_IN_4_14
!void gsk_path_builder_rel_quad_to (GskPathBuilder *self, float x1, float y1, float x2, float y2);
subroutine gsk_path_builder_rel_quad_to(self, x1, y1, x2, y2) bind(c)
  import :: c_ptr, c_float
  implicit none
  type(c_ptr), value :: self
  real(c_float), value :: x1
  real(c_float), value :: y1
  real(c_float), value :: x2
  real(c_float), value :: y2
end subroutine

! GDK_AVAILABLE_IN_4_14
!void gsk_path_builder_cubic_to (GskPathBuilder *self, float x1, float y1, float x2, float y2, float x3, float y3);
subroutine gsk_path_builder_cubic_to(self, x1, y1, x2, y2, x3, y3) bind(c)
  import :: c_ptr, c_float
  implicit none
  type(c_ptr), value :: self
  real(c_float), value :: x1
  real(c_float), value :: y1
  real(c_float), value :: x2
  real(c_float), value :: y2
  real(c_float), value :: x3
  real(c_float), value :: y3
end subroutine

! GDK_AVAILABLE_IN_4_14
!void gsk_path_builder_rel_cubic_to (GskPathBuilder *self, float x1, float y1, float x2, float y2, float x3, float y3);
subroutine gsk_path_builder_rel_cubic_to(self, x1, y1, x2, y2, x3, y3) bind(c)
  import :: c_ptr, c_float
  implicit none
  type(c_ptr), value :: self
  real(c_float), value :: x1
  real(c_float), value :: y1
  real(c_float), value :: x2
  real(c_float), value :: y2
  real(c_float), value :: x3
  real(c_float), value :: y3
end subroutine

! GDK_AVAILABLE_IN_4_14
!void gsk_path_builder_conic_to (GskPathBuilder *self, float x1, float y1, float x2, float y2, float weight);
subroutine gsk_path_builder_conic_to(self, x1, y1, x2, y2, weight) bind(c)
  import :: c_ptr, c_float
  implicit none
  type(c_ptr), value :: self
  real(c_float), value :: x1
  real(c_float), value :: y1
  real(c_float), value :: x2
  real(c_float), value :: y2
  real(c_float), value :: weight
end subroutine

! GDK_AVAILABLE_IN_4_14
!void gsk_path_builder_rel_conic_to (GskPathBuilder *self, float x1, float y1, float x2, float y2, float weight);
subroutine gsk_path_builder_rel_conic_to(self, x1, y1, x2, y2, weight) bind(c)
  import :: c_ptr, c_float
  implicit none
  type(c_ptr), value :: self
  real(c_float), value :: x1
  real(c_float), value :: y1
  real(c_float), value :: x2
  real(c_float), value :: y2
  real(c_float), value :: weight
end subroutine

! GDK_AVAILABLE_IN_4_14
!void gsk_path_builder_arc_to (GskPathBuilder *self, float x1, float y1, float x2, float y2);
subroutine gsk_path_builder_arc_to(self, x1, y1, x2, y2) bind(c)
  import :: c_ptr, c_float
  implicit none
  type(c_ptr), value :: self
  real(c_float), value :: x1
  real(c_float), value :: y1
  real(c_float), value :: x2
  real(c_float), value :: y2
end subroutine

! GDK_AVAILABLE_IN_4_14
!void gsk_path_builder_rel_arc_to (GskPathBuilder *self, float x1, float y1, float x2, float y2);
subroutine gsk_path_builder_rel_arc_to(self, x1, y1, x2, y2) bind(c)
  import :: c_ptr, c_float
  implicit none
  type(c_ptr), value :: self
  real(c_float), value :: x1
  real(c_float), value :: y1
  real(c_float), value :: x2
  real(c_float), value :: y2
end subroutine

! GDK_AVAILABLE_IN_4_14
!void gsk_path_builder_svg_arc_to (GskPathBuilder *self, float rx, float ry, float x_axis_rotation, gboolean large_arc, gboolean positive_sweep, float x, float y);
subroutine gsk_path_builder_svg_arc_to(self, rx, ry, x_axis_rotation,&
& large_arc, positive_sweep, x, y) bind(c)
  import :: c_ptr, c_float, c_int
  implicit none
  type(c_ptr), value :: self
  real(c_float), value :: rx
  real(c_float), value :: ry
  real(c_float), value :: x_axis_rotation
  integer(c_int), value :: large_arc
  integer(c_int), value :: positive_sweep
  real(c_float), value :: x
  real(c_float), value :: y
end subroutine

! GDK_AVAILABLE_IN_4_14
!void gsk_path_builder_rel_svg_arc_to (GskPathBuilder *self, float rx, float ry, float x_axis_rotation, gboolean large_arc, gboolean positive_sweep, float x, float y);
subroutine gsk_path_builder_rel_svg_arc_to(self, rx, ry, x_axis_rotation,&
& large_arc, positive_sweep, x, y) bind(c)
  import :: c_ptr, c_float, c_int
  implicit none
  type(c_ptr), value :: self
  real(c_float), value :: rx
  real(c_float), value :: ry
  real(c_float), value :: x_axis_rotation
  integer(c_int), value :: large_arc
  integer(c_int), value :: positive_sweep
  real(c_float), value :: x
  real(c_float), value :: y
end subroutine

! GDK_AVAILABLE_IN_4_14
!void gsk_path_builder_html_arc_to (GskPathBuilder *self, float x1, float y1, float x2, float y2, float radius);
subroutine gsk_path_builder_html_arc_to(self, x1, y1, x2, y2, radius) bind(c)
  import :: c_ptr, c_float
  implicit none
  type(c_ptr), value :: self
  real(c_float), value :: x1
  real(c_float), value :: y1
  real(c_float), value :: x2
  real(c_float), value :: y2
  real(c_float), value :: radius
end subroutine

! GDK_AVAILABLE_IN_4_14
!void gsk_path_builder_rel_html_arc_to (GskPathBuilder *self, float x1, float y1, float x2, float y2, float radius);
subroutine gsk_path_builder_rel_html_arc_to(self, x1, y1, x2, y2, radius)&
& bind(c)
  import :: c_ptr, c_float
  implicit none
  type(c_ptr), value :: self
  real(c_float), value :: x1
  real(c_float), value :: y1
  real(c_float), value :: x2
  real(c_float), value :: y2
  real(c_float), value :: radius
end subroutine

! GDK_AVAILABLE_IN_4_14
!void gsk_path_builder_close (GskPathBuilder *self);
subroutine gsk_path_builder_close(self) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: self
end subroutine

!--------------------------------------------------
! /usr/include/gtk-4.0/gsk/gskroundedrect.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!GskRoundedRect * gsk_rounded_rect_init (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 gsk_rounded_rect_init(self, bounds, top_left, top_right, bottom_right,&
& bottom_left) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_rounded_rect_init
  type(c_ptr), value :: self
  type(c_ptr), value :: bounds
  type(c_ptr), value :: top_left
  type(c_ptr), value :: top_right
  type(c_ptr), value :: bottom_right
  type(c_ptr), value :: bottom_left
end function

! GDK_AVAILABLE_IN_ALL
!GskRoundedRect * gsk_rounded_rect_init_copy (GskRoundedRect *self, const GskRoundedRect *src);
function gsk_rounded_rect_init_copy(self, src) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_rounded_rect_init_copy
  type(c_ptr), value :: self
  type(c_ptr), value :: src
end function

! GDK_AVAILABLE_IN_ALL
!GskRoundedRect * gsk_rounded_rect_init_from_rect (GskRoundedRect *self, const graphene_rect_t *bounds, float radius);
function gsk_rounded_rect_init_from_rect(self, bounds, radius) bind(c)
  import :: c_ptr, c_float
  implicit none
  type(c_ptr) :: gsk_rounded_rect_init_from_rect
  type(c_ptr), value :: self
  type(c_ptr), value :: bounds
  real(c_float), value :: radius
end function

! GDK_AVAILABLE_IN_ALL
!GskRoundedRect * gsk_rounded_rect_normalize (GskRoundedRect *self);
function gsk_rounded_rect_normalize(self) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_rounded_rect_normalize
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_ALL
!GskRoundedRect * gsk_rounded_rect_offset (GskRoundedRect *self, float dx, float dy);
function gsk_rounded_rect_offset(self, dx, dy) bind(c)
  import :: c_ptr, c_float
  implicit none
  type(c_ptr) :: gsk_rounded_rect_offset
  type(c_ptr), value :: self
  real(c_float), value :: dx
  real(c_float), value :: dy
end function

! GDK_AVAILABLE_IN_ALL
!GskRoundedRect * gsk_rounded_rect_shrink (GskRoundedRect *self, float top, float right, float bottom, float left);
function gsk_rounded_rect_shrink(self, top, right, bottom, left) bind(c)
  import :: c_ptr, c_float
  implicit none
  type(c_ptr) :: gsk_rounded_rect_shrink
  type(c_ptr), value :: self
  real(c_float), value :: top
  real(c_float), value :: right
  real(c_float), value :: bottom
  real(c_float), value :: left
end function

! GDK_AVAILABLE_IN_ALL
!gboolean gsk_rounded_rect_is_rectilinear (const GskRoundedRect *self) ;
function gsk_rounded_rect_is_rectilinear(self) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gsk_rounded_rect_is_rectilinear
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_ALL
!gboolean gsk_rounded_rect_contains_point (const GskRoundedRect *self, const graphene_point_t *point) ;
function gsk_rounded_rect_contains_point(self, point) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gsk_rounded_rect_contains_point
  type(c_ptr), value :: self
  type(c_ptr), value :: point
end function

! GDK_AVAILABLE_IN_ALL
!gboolean gsk_rounded_rect_contains_rect (const GskRoundedRect *self, const graphene_rect_t *rect) ;
function gsk_rounded_rect_contains_rect(self, rect) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gsk_rounded_rect_contains_rect
  type(c_ptr), value :: self
  type(c_ptr), value :: rect
end function

! GDK_AVAILABLE_IN_ALL
!gboolean gsk_rounded_rect_intersects_rect (const GskRoundedRect *self, const graphene_rect_t *rect) ;
function gsk_rounded_rect_intersects_rect(self, rect) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gsk_rounded_rect_intersects_rect
  type(c_ptr), value :: self
  type(c_ptr), value :: rect
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gsk/gskcairorenderer.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!GType gsk_cairo_renderer_get_type (void) ;
function gsk_cairo_renderer_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gsk_cairo_renderer_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GskRenderer * gsk_cairo_renderer_new (void);
function gsk_cairo_renderer_new() bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_cairo_renderer_new
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gsk/gsk.h
!--------------------------------------------------
!--------------------------------------------------
! /usr/include/gtk-4.0/gsk/gskpath.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_4_14
!GType gsk_path_get_type (void) ;
function gsk_path_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gsk_path_get_type
end function

! GDK_AVAILABLE_IN_4_14
!GskPath * gsk_path_ref (GskPath *self);
function gsk_path_ref(self) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_path_ref
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_4_14
!void gsk_path_unref (GskPath *self);
subroutine gsk_path_unref(self) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: self
end subroutine

! GDK_AVAILABLE_IN_4_14
!void gsk_path_print (GskPath *self, GString *string);
subroutine gsk_path_print(self, string) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: self
  type(c_ptr), value :: string
end subroutine

! GDK_AVAILABLE_IN_4_14
!char * gsk_path_to_string (GskPath *self);
function gsk_path_to_string(self) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_path_to_string
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_4_14
!GskPath * gsk_path_parse (const char *string);
function gsk_path_parse(string) bind(c)
  import :: c_ptr, c_char
  implicit none
  type(c_ptr) :: gsk_path_parse
  character(kind=c_char), dimension(*) :: string
end function

! GDK_AVAILABLE_IN_4_14
!void gsk_path_to_cairo (GskPath *self, cairo_t *cr);
subroutine gsk_path_to_cairo(self, cr) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: self
  type(c_ptr), value :: cr
end subroutine

! GDK_AVAILABLE_IN_4_14
!gboolean gsk_path_is_empty (GskPath *self);
function gsk_path_is_empty(self) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gsk_path_is_empty
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_4_14
!gboolean gsk_path_is_closed (GskPath *self);
function gsk_path_is_closed(self) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gsk_path_is_closed
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_4_14
!gboolean gsk_path_get_bounds (GskPath *self, graphene_rect_t *bounds);
function gsk_path_get_bounds(self, bounds) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gsk_path_get_bounds
  type(c_ptr), value :: self
  type(c_ptr), value :: bounds
end function

! GDK_AVAILABLE_IN_4_14
!gboolean gsk_path_get_stroke_bounds (GskPath *self, const GskStroke *stroke, graphene_rect_t *bounds);
function gsk_path_get_stroke_bounds(self, stroke, bounds) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gsk_path_get_stroke_bounds
  type(c_ptr), value :: self
  type(c_ptr), value :: stroke
  type(c_ptr), value :: bounds
end function

! GDK_AVAILABLE_IN_4_14
!gboolean gsk_path_in_fill (GskPath *self, const graphene_point_t *point, GskFillRule fill_rule);
function gsk_path_in_fill(self, point, fill_rule) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gsk_path_in_fill
  type(c_ptr), value :: self
  type(c_ptr), value :: point
  integer(c_int), value :: fill_rule
end function

! GDK_AVAILABLE_IN_4_14
!gboolean gsk_path_get_start_point (GskPath *self, GskPathPoint *result);
function gsk_path_get_start_point(self, result) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gsk_path_get_start_point
  type(c_ptr), value :: self
  type(c_ptr), value :: result
end function

! GDK_AVAILABLE_IN_4_14
!gboolean gsk_path_get_end_point (GskPath *self, GskPathPoint *result);
function gsk_path_get_end_point(self, result) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gsk_path_get_end_point
  type(c_ptr), value :: self
  type(c_ptr), value :: result
end function

! GDK_AVAILABLE_IN_4_14
!gboolean gsk_path_get_closest_point (GskPath *self, const graphene_point_t *point, float threshold, GskPathPoint *result, float *distance);
function gsk_path_get_closest_point(self, point, threshold, result, distance)&
& bind(c)
  import :: c_int, c_ptr, c_float
  implicit none
  integer(c_int) :: gsk_path_get_closest_point
  type(c_ptr), value :: self
  type(c_ptr), value :: point
  real(c_float), value :: threshold
  type(c_ptr), value :: result
  type(c_ptr), value :: distance
end function

! GDK_AVAILABLE_IN_4_14
!gboolean gsk_path_foreach (GskPath *self, GskPathForeachFlags flags, GskPathForeachFunc func, gpointer user_data);
function gsk_path_foreach(self, flags, func, user_data) bind(c)
  import :: c_int, c_ptr, c_funptr
  implicit none
  integer(c_int) :: gsk_path_foreach
  type(c_ptr), value :: self
  integer(c_int), value :: flags
  type(c_funptr), value :: func
  type(c_ptr), value :: user_data
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gsk/gskenumtypes.h
!--------------------------------------------------
!--------------------------------------------------
! /usr/include/gtk-4.0/gsk/gskpathpoint.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_4_14
!GType gsk_path_point_get_type (void) ;
function gsk_path_point_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gsk_path_point_get_type
end function

! GDK_AVAILABLE_IN_4_14
!GskPathPoint * gsk_path_point_copy (GskPathPoint *point);
function gsk_path_point_copy(point) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_path_point_copy
  type(c_ptr), value :: point
end function

! GDK_AVAILABLE_IN_4_14
!void gsk_path_point_free (GskPathPoint *point);
subroutine gsk_path_point_free(point) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: point
end subroutine

! GDK_AVAILABLE_IN_4_14
!gboolean gsk_path_point_equal (const GskPathPoint *point1, const GskPathPoint *point2) ;
function gsk_path_point_equal(point1, point2) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gsk_path_point_equal
  type(c_ptr), value :: point1
  type(c_ptr), value :: point2
end function

! GDK_AVAILABLE_IN_4_14
!int gsk_path_point_compare (const GskPathPoint *point1, const GskPathPoint *point2) ;
function gsk_path_point_compare(point1, point2) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gsk_path_point_compare
  type(c_ptr), value :: point1
  type(c_ptr), value :: point2
end function

! GDK_AVAILABLE_IN_4_14
!void gsk_path_point_get_position (const GskPathPoint *point, GskPath *path, graphene_point_t *position);
subroutine gsk_path_point_get_position(point, path, position) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: point
  type(c_ptr), value :: path
  type(c_ptr), value :: position
end subroutine

! GDK_AVAILABLE_IN_4_14
!void gsk_path_point_get_tangent (const GskPathPoint *point, GskPath *path, GskPathDirection direction, graphene_vec2_t *tangent);
subroutine gsk_path_point_get_tangent(point, path, direction, tangent) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: point
  type(c_ptr), value :: path
  integer(c_int), value :: direction
  type(c_ptr), value :: tangent
end subroutine

! GDK_AVAILABLE_IN_4_14
!float gsk_path_point_get_rotation (const GskPathPoint *point, GskPath *path, GskPathDirection direction);
function gsk_path_point_get_rotation(point, path, direction) bind(c)
  import :: c_float, c_ptr, c_int
  implicit none
  real(c_float) :: gsk_path_point_get_rotation
  type(c_ptr), value :: point
  type(c_ptr), value :: path
  integer(c_int), value :: direction
end function

! GDK_AVAILABLE_IN_4_14
!float gsk_path_point_get_curvature (const GskPathPoint *point, GskPath *path, GskPathDirection direction, graphene_point_t *center);
function gsk_path_point_get_curvature(point, path, direction, center) bind(c)
  import :: c_float, c_ptr, c_int
  implicit none
  real(c_float) :: gsk_path_point_get_curvature
  type(c_ptr), value :: point
  type(c_ptr), value :: path
  integer(c_int), value :: direction
  type(c_ptr), value :: center
end function

! GDK_AVAILABLE_IN_4_14
!float gsk_path_point_get_distance (const GskPathPoint *point, GskPathMeasure *measure);
function gsk_path_point_get_distance(point, measure) bind(c)
  import :: c_float, c_ptr
  implicit none
  real(c_float) :: gsk_path_point_get_distance
  type(c_ptr), value :: point
  type(c_ptr), value :: measure
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gsk/gsktypes.h
!--------------------------------------------------
!--------------------------------------------------
! /usr/include/gtk-4.0/gsk/gskenums.h
!--------------------------------------------------
!--------------------------------------------------
! /usr/include/gtk-4.0/gsk/gskrendernode.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!GType gsk_render_node_get_type (void) ;
function gsk_render_node_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gsk_render_node_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GQuark gsk_serialization_error_quark (void);
function gsk_serialization_error_quark() bind(c)
  import :: c_int32_t
  implicit none
  integer(c_int32_t) :: gsk_serialization_error_quark
end function

! GDK_AVAILABLE_IN_ALL
!GskRenderNode * gsk_render_node_ref (GskRenderNode *node);
function gsk_render_node_ref(node) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_render_node_ref
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_ALL
!void gsk_render_node_unref (GskRenderNode *node);
subroutine gsk_render_node_unref(node) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: node
end subroutine

! GDK_AVAILABLE_IN_ALL
!GskRenderNodeType gsk_render_node_get_node_type (const GskRenderNode *node);
function gsk_render_node_get_node_type(node) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gsk_render_node_get_node_type
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_ALL
!void gsk_render_node_get_bounds (GskRenderNode *node, graphene_rect_t *bounds);
subroutine gsk_render_node_get_bounds(node, bounds) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: node
  type(c_ptr), value :: bounds
end subroutine

! GDK_AVAILABLE_IN_4_16
!gboolean gsk_render_node_get_opaque_rect (GskRenderNode *self, graphene_rect_t *out_opaque) ;
function gsk_render_node_get_opaque_rect(self, out_opaque) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gsk_render_node_get_opaque_rect
  type(c_ptr), value :: self
  type(c_ptr), value :: out_opaque
end function

! GDK_AVAILABLE_IN_ALL
!void gsk_render_node_draw (GskRenderNode *node, cairo_t *cr);
subroutine gsk_render_node_draw(node, cr) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: node
  type(c_ptr), value :: cr
end subroutine

! GDK_AVAILABLE_IN_ALL
!GBytes * gsk_render_node_serialize (GskRenderNode *node);
function gsk_render_node_serialize(node) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_render_node_serialize
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_ALL
!gboolean gsk_render_node_write_to_file (GskRenderNode *node, const char *filename, GError **error);
function gsk_render_node_write_to_file(node, filename, error) bind(c)
  import :: c_int, c_ptr, c_char
  implicit none
  integer(c_int) :: gsk_render_node_write_to_file
  type(c_ptr), value :: node
  character(kind=c_char), dimension(*) :: filename
  type(c_ptr), value :: error
end function

! GDK_AVAILABLE_IN_ALL
!GskRenderNode * gsk_render_node_deserialize (GBytes *bytes, GskParseErrorFunc error_func, gpointer user_data);
function gsk_render_node_deserialize(bytes, error_func, user_data) bind(c)
  import :: c_ptr, c_funptr
  implicit none
  type(c_ptr) :: gsk_render_node_deserialize
  type(c_ptr), value :: bytes
  type(c_funptr), value :: error_func
  type(c_ptr), value :: user_data
end function

! GDK_AVAILABLE_IN_ALL
!GType gsk_debug_node_get_type (void) ;
function gsk_debug_node_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gsk_debug_node_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GskRenderNode * gsk_debug_node_new (GskRenderNode *child, char *message);
function gsk_debug_node_new(child, message) bind(c)
  import :: c_ptr, c_char
  implicit none
  type(c_ptr) :: gsk_debug_node_new
  type(c_ptr), value :: child
  character(kind=c_char), dimension(*) :: message
end function

! GDK_AVAILABLE_IN_ALL
!GskRenderNode * gsk_debug_node_get_child (const GskRenderNode *node) ;
function gsk_debug_node_get_child(node) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_debug_node_get_child
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_ALL
!const char * gsk_debug_node_get_message (const GskRenderNode *node) ;
function gsk_debug_node_get_message(node) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_debug_node_get_message
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_ALL
!GType gsk_color_node_get_type (void) ;
function gsk_color_node_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gsk_color_node_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GskRenderNode * gsk_color_node_new (const GdkRGBA *rgba, const graphene_rect_t *bounds);
function gsk_color_node_new(rgba, bounds) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_color_node_new
  type(c_ptr), value :: rgba
  type(c_ptr), value :: bounds
end function

! GDK_AVAILABLE_IN_ALL
!const GdkRGBA * gsk_color_node_get_color (const GskRenderNode *node) ;
function gsk_color_node_get_color(node) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_color_node_get_color
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_ALL
!GType gsk_texture_node_get_type (void) ;
function gsk_texture_node_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gsk_texture_node_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GskRenderNode * gsk_texture_node_new (GdkTexture *texture, const graphene_rect_t *bounds);
function gsk_texture_node_new(texture, bounds) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_texture_node_new
  type(c_ptr), value :: texture
  type(c_ptr), value :: bounds
end function

! GDK_AVAILABLE_IN_ALL
!GdkTexture * gsk_texture_node_get_texture (const GskRenderNode *node) ;
function gsk_texture_node_get_texture(node) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_texture_node_get_texture
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_4_10
!GType gsk_texture_scale_node_get_type (void) ;
function gsk_texture_scale_node_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gsk_texture_scale_node_get_type
end function

! GDK_AVAILABLE_IN_4_10
!GskRenderNode * gsk_texture_scale_node_new (GdkTexture *texture, const graphene_rect_t *bounds, GskScalingFilter filter);
function gsk_texture_scale_node_new(texture, bounds, filter) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: gsk_texture_scale_node_new
  type(c_ptr), value :: texture
  type(c_ptr), value :: bounds
  integer(c_int), value :: filter
end function

! GDK_AVAILABLE_IN_4_10
!GdkTexture * gsk_texture_scale_node_get_texture (const GskRenderNode *node) ;
function gsk_texture_scale_node_get_texture(node) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_texture_scale_node_get_texture
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_4_10
!GskScalingFilter gsk_texture_scale_node_get_filter (const GskRenderNode *node) ;
function gsk_texture_scale_node_get_filter(node) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gsk_texture_scale_node_get_filter
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_ALL
!GType gsk_linear_gradient_node_get_type (void) ;
function gsk_linear_gradient_node_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gsk_linear_gradient_node_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GskRenderNode * gsk_linear_gradient_node_new (const graphene_rect_t *bounds, const graphene_point_t *start, const graphene_point_t *end, const GskColorStop *color_stops, gsize n_color_stops);
function gsk_linear_gradient_node_new(bounds, start, end, color_stops,&
& n_color_stops) bind(c)
  import :: c_ptr, c_size_t
  implicit none
  type(c_ptr) :: gsk_linear_gradient_node_new
  type(c_ptr), value :: bounds
  type(c_ptr), value :: start
  type(c_ptr), value :: end
  type(c_ptr), value :: color_stops
  integer(c_size_t), value :: n_color_stops
end function

! GDK_AVAILABLE_IN_ALL
!const graphene_point_t * gsk_linear_gradient_node_get_start (const GskRenderNode *node) ;
function gsk_linear_gradient_node_get_start(node) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_linear_gradient_node_get_start
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_ALL
!const graphene_point_t * gsk_linear_gradient_node_get_end (const GskRenderNode *node) ;
function gsk_linear_gradient_node_get_end(node) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_linear_gradient_node_get_end
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_ALL
!gsize gsk_linear_gradient_node_get_n_color_stops (const GskRenderNode *node) ;
function gsk_linear_gradient_node_get_n_color_stops(node) bind(c)
  import :: c_size_t, c_ptr
  implicit none
  integer(c_size_t) :: gsk_linear_gradient_node_get_n_color_stops
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_ALL
!const GskColorStop * gsk_linear_gradient_node_get_color_stops (const GskRenderNode *node, gsize *n_stops);
function gsk_linear_gradient_node_get_color_stops(node, n_stops) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_linear_gradient_node_get_color_stops
  type(c_ptr), value :: node
  type(c_ptr), value :: n_stops
end function

! GDK_AVAILABLE_IN_ALL
!GType gsk_repeating_linear_gradient_node_get_type (void) ;
function gsk_repeating_linear_gradient_node_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gsk_repeating_linear_gradient_node_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GskRenderNode * gsk_repeating_linear_gradient_node_new (const graphene_rect_t *bounds, const graphene_point_t *start, const graphene_point_t *end, const GskColorStop *color_stops, gsize n_color_stops);
function gsk_repeating_linear_gradient_node_new(bounds, start, end,&
& color_stops, n_color_stops) bind(c)
  import :: c_ptr, c_size_t
  implicit none
  type(c_ptr) :: gsk_repeating_linear_gradient_node_new
  type(c_ptr), value :: bounds
  type(c_ptr), value :: start
  type(c_ptr), value :: end
  type(c_ptr), value :: color_stops
  integer(c_size_t), value :: n_color_stops
end function

! GDK_AVAILABLE_IN_ALL
!GType gsk_conic_gradient_node_get_type (void) ;
function gsk_conic_gradient_node_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gsk_conic_gradient_node_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GskRenderNode * gsk_conic_gradient_node_new (const graphene_rect_t *bounds, const graphene_point_t *center, float rotation, const GskColorStop *color_stops, gsize n_color_stops);
function gsk_conic_gradient_node_new(bounds, center, rotation, color_stops,&
& n_color_stops) bind(c)
  import :: c_ptr, c_float, c_size_t
  implicit none
  type(c_ptr) :: gsk_conic_gradient_node_new
  type(c_ptr), value :: bounds
  type(c_ptr), value :: center
  real(c_float), value :: rotation
  type(c_ptr), value :: color_stops
  integer(c_size_t), value :: n_color_stops
end function

! GDK_AVAILABLE_IN_ALL
!const graphene_point_t * gsk_conic_gradient_node_get_center (const GskRenderNode *node) ;
function gsk_conic_gradient_node_get_center(node) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_conic_gradient_node_get_center
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_ALL
!float gsk_conic_gradient_node_get_rotation (const GskRenderNode *node) ;
function gsk_conic_gradient_node_get_rotation(node) bind(c)
  import :: c_float, c_ptr
  implicit none
  real(c_float) :: gsk_conic_gradient_node_get_rotation
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_4_2
!float gsk_conic_gradient_node_get_angle (const GskRenderNode *node) ;
function gsk_conic_gradient_node_get_angle(node) bind(c)
  import :: c_float, c_ptr
  implicit none
  real(c_float) :: gsk_conic_gradient_node_get_angle
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_ALL
!gsize gsk_conic_gradient_node_get_n_color_stops (const GskRenderNode *node) ;
function gsk_conic_gradient_node_get_n_color_stops(node) bind(c)
  import :: c_size_t, c_ptr
  implicit none
  integer(c_size_t) :: gsk_conic_gradient_node_get_n_color_stops
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_ALL
!const GskColorStop * gsk_conic_gradient_node_get_color_stops (const GskRenderNode *node, gsize *n_stops);
function gsk_conic_gradient_node_get_color_stops(node, n_stops) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_conic_gradient_node_get_color_stops
  type(c_ptr), value :: node
  type(c_ptr), value :: n_stops
end function

! GDK_AVAILABLE_IN_ALL
!GType gsk_radial_gradient_node_get_type (void) ;
function gsk_radial_gradient_node_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gsk_radial_gradient_node_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GskRenderNode * gsk_radial_gradient_node_new (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 gsk_radial_gradient_node_new(bounds, center, hradius, vradius, start,&
& end, color_stops, n_color_stops) bind(c)
  import :: c_ptr, c_float, c_size_t
  implicit none
  type(c_ptr) :: gsk_radial_gradient_node_new
  type(c_ptr), value :: bounds
  type(c_ptr), value :: center
  real(c_float), value :: hradius
  real(c_float), value :: vradius
  real(c_float), value :: start
  real(c_float), value :: end
  type(c_ptr), value :: color_stops
  integer(c_size_t), value :: n_color_stops
end function

! GDK_AVAILABLE_IN_ALL
!gsize gsk_radial_gradient_node_get_n_color_stops (const GskRenderNode *node) ;
function gsk_radial_gradient_node_get_n_color_stops(node) bind(c)
  import :: c_size_t, c_ptr
  implicit none
  integer(c_size_t) :: gsk_radial_gradient_node_get_n_color_stops
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_ALL
!const GskColorStop * gsk_radial_gradient_node_get_color_stops (const GskRenderNode *node, gsize *n_stops);
function gsk_radial_gradient_node_get_color_stops(node, n_stops) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_radial_gradient_node_get_color_stops
  type(c_ptr), value :: node
  type(c_ptr), value :: n_stops
end function

! GDK_AVAILABLE_IN_ALL
!const graphene_point_t *gsk_radial_gradient_node_get_center (const GskRenderNode *node) ;
function gsk_radial_gradient_node_get_center(node) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_radial_gradient_node_get_center
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_ALL
!float gsk_radial_gradient_node_get_hradius (const GskRenderNode *node) ;
function gsk_radial_gradient_node_get_hradius(node) bind(c)
  import :: c_float, c_ptr
  implicit none
  real(c_float) :: gsk_radial_gradient_node_get_hradius
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_ALL
!float gsk_radial_gradient_node_get_vradius (const GskRenderNode *node) ;
function gsk_radial_gradient_node_get_vradius(node) bind(c)
  import :: c_float, c_ptr
  implicit none
  real(c_float) :: gsk_radial_gradient_node_get_vradius
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_ALL
!float gsk_radial_gradient_node_get_start (const GskRenderNode *node) ;
function gsk_radial_gradient_node_get_start(node) bind(c)
  import :: c_float, c_ptr
  implicit none
  real(c_float) :: gsk_radial_gradient_node_get_start
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_ALL
!float gsk_radial_gradient_node_get_end (const GskRenderNode *node) ;
function gsk_radial_gradient_node_get_end(node) bind(c)
  import :: c_float, c_ptr
  implicit none
  real(c_float) :: gsk_radial_gradient_node_get_end
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_ALL
!GType gsk_repeating_radial_gradient_node_get_type (void) ;
function gsk_repeating_radial_gradient_node_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gsk_repeating_radial_gradient_node_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GskRenderNode * gsk_repeating_radial_gradient_node_new (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 gsk_repeating_radial_gradient_node_new(bounds, center, hradius,&
& vradius, start, end, color_stops, n_color_stops) bind(c)
  import :: c_ptr, c_float, c_size_t
  implicit none
  type(c_ptr) :: gsk_repeating_radial_gradient_node_new
  type(c_ptr), value :: bounds
  type(c_ptr), value :: center
  real(c_float), value :: hradius
  real(c_float), value :: vradius
  real(c_float), value :: start
  real(c_float), value :: end
  type(c_ptr), value :: color_stops
  integer(c_size_t), value :: n_color_stops
end function

! GDK_AVAILABLE_IN_ALL
!GType gsk_border_node_get_type (void) ;
function gsk_border_node_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gsk_border_node_get_type
end function

! GDK_AVAILABLE_IN_ALL
!const GskRoundedRect * gsk_border_node_get_outline (const GskRenderNode *node) ;
function gsk_border_node_get_outline(node) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_border_node_get_outline
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_ALL
!const float * gsk_border_node_get_widths (const GskRenderNode *node) ;
function gsk_border_node_get_widths(node) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_border_node_get_widths
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_ALL
!const GdkRGBA * gsk_border_node_get_colors (const GskRenderNode *node) ;
function gsk_border_node_get_colors(node) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_border_node_get_colors
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_ALL
!GType gsk_inset_shadow_node_get_type (void) ;
function gsk_inset_shadow_node_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gsk_inset_shadow_node_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GskRenderNode * gsk_inset_shadow_node_new (const GskRoundedRect *outline, const GdkRGBA *color, float dx, float dy, float spread, float blur_radius);
function gsk_inset_shadow_node_new(outline, color, dx, dy, spread, blur_radius)&
& bind(c)
  import :: c_ptr, c_float
  implicit none
  type(c_ptr) :: gsk_inset_shadow_node_new
  type(c_ptr), value :: outline
  type(c_ptr), value :: color
  real(c_float), value :: dx
  real(c_float), value :: dy
  real(c_float), value :: spread
  real(c_float), value :: blur_radius
end function

! GDK_AVAILABLE_IN_ALL
!const GskRoundedRect * gsk_inset_shadow_node_get_outline (const GskRenderNode *node) ;
function gsk_inset_shadow_node_get_outline(node) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_inset_shadow_node_get_outline
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_ALL
!const GdkRGBA * gsk_inset_shadow_node_get_color (const GskRenderNode *node) ;
function gsk_inset_shadow_node_get_color(node) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_inset_shadow_node_get_color
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_ALL
!float gsk_inset_shadow_node_get_dx (const GskRenderNode *node) ;
function gsk_inset_shadow_node_get_dx(node) bind(c)
  import :: c_float, c_ptr
  implicit none
  real(c_float) :: gsk_inset_shadow_node_get_dx
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_ALL
!float gsk_inset_shadow_node_get_dy (const GskRenderNode *node) ;
function gsk_inset_shadow_node_get_dy(node) bind(c)
  import :: c_float, c_ptr
  implicit none
  real(c_float) :: gsk_inset_shadow_node_get_dy
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_ALL
!float gsk_inset_shadow_node_get_spread (const GskRenderNode *node) ;
function gsk_inset_shadow_node_get_spread(node) bind(c)
  import :: c_float, c_ptr
  implicit none
  real(c_float) :: gsk_inset_shadow_node_get_spread
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_ALL
!float gsk_inset_shadow_node_get_blur_radius (const GskRenderNode *node) ;
function gsk_inset_shadow_node_get_blur_radius(node) bind(c)
  import :: c_float, c_ptr
  implicit none
  real(c_float) :: gsk_inset_shadow_node_get_blur_radius
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_ALL
!GType gsk_outset_shadow_node_get_type (void) ;
function gsk_outset_shadow_node_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gsk_outset_shadow_node_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GskRenderNode * gsk_outset_shadow_node_new (const GskRoundedRect *outline, const GdkRGBA *color, float dx, float dy, float spread, float blur_radius);
function gsk_outset_shadow_node_new(outline, color, dx, dy, spread,&
& blur_radius) bind(c)
  import :: c_ptr, c_float
  implicit none
  type(c_ptr) :: gsk_outset_shadow_node_new
  type(c_ptr), value :: outline
  type(c_ptr), value :: color
  real(c_float), value :: dx
  real(c_float), value :: dy
  real(c_float), value :: spread
  real(c_float), value :: blur_radius
end function

! GDK_AVAILABLE_IN_ALL
!const GskRoundedRect * gsk_outset_shadow_node_get_outline (const GskRenderNode *node) ;
function gsk_outset_shadow_node_get_outline(node) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_outset_shadow_node_get_outline
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_ALL
!const GdkRGBA * gsk_outset_shadow_node_get_color (const GskRenderNode *node) ;
function gsk_outset_shadow_node_get_color(node) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_outset_shadow_node_get_color
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_ALL
!float gsk_outset_shadow_node_get_dx (const GskRenderNode *node) ;
function gsk_outset_shadow_node_get_dx(node) bind(c)
  import :: c_float, c_ptr
  implicit none
  real(c_float) :: gsk_outset_shadow_node_get_dx
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_ALL
!float gsk_outset_shadow_node_get_dy (const GskRenderNode *node) ;
function gsk_outset_shadow_node_get_dy(node) bind(c)
  import :: c_float, c_ptr
  implicit none
  real(c_float) :: gsk_outset_shadow_node_get_dy
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_ALL
!float gsk_outset_shadow_node_get_spread (const GskRenderNode *node) ;
function gsk_outset_shadow_node_get_spread(node) bind(c)
  import :: c_float, c_ptr
  implicit none
  real(c_float) :: gsk_outset_shadow_node_get_spread
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_ALL
!float gsk_outset_shadow_node_get_blur_radius (const GskRenderNode *node) ;
function gsk_outset_shadow_node_get_blur_radius(node) bind(c)
  import :: c_float, c_ptr
  implicit none
  real(c_float) :: gsk_outset_shadow_node_get_blur_radius
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_ALL
!GType gsk_cairo_node_get_type (void) ;
function gsk_cairo_node_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gsk_cairo_node_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GskRenderNode * gsk_cairo_node_new (const graphene_rect_t *bounds);
function gsk_cairo_node_new(bounds) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_cairo_node_new
  type(c_ptr), value :: bounds
end function

! GDK_AVAILABLE_IN_ALL
!cairo_t * gsk_cairo_node_get_draw_context (GskRenderNode *node);
function gsk_cairo_node_get_draw_context(node) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_cairo_node_get_draw_context
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_ALL
!cairo_surface_t * gsk_cairo_node_get_surface (GskRenderNode *node);
function gsk_cairo_node_get_surface(node) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_cairo_node_get_surface
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_ALL
!GType gsk_container_node_get_type (void) ;
function gsk_container_node_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gsk_container_node_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GskRenderNode * gsk_container_node_new (GskRenderNode **children, guint n_children);
function gsk_container_node_new(children, n_children) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: gsk_container_node_new
  type(c_ptr), value :: children
  integer(c_int), value :: n_children
end function

! GDK_AVAILABLE_IN_ALL
!guint gsk_container_node_get_n_children (const GskRenderNode *node) ;
function gsk_container_node_get_n_children(node) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gsk_container_node_get_n_children
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_ALL
!GskRenderNode * gsk_container_node_get_child (const GskRenderNode *node, guint idx) ;
function gsk_container_node_get_child(node, idx) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: gsk_container_node_get_child
  type(c_ptr), value :: node
  integer(c_int), value :: idx
end function

! GDK_AVAILABLE_IN_ALL
!GType gsk_transform_node_get_type (void) ;
function gsk_transform_node_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gsk_transform_node_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GskRenderNode * gsk_transform_node_new (GskRenderNode *child, GskTransform *transform);
function gsk_transform_node_new(child, transform) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_transform_node_new
  type(c_ptr), value :: child
  type(c_ptr), value :: transform
end function

! GDK_AVAILABLE_IN_ALL
!GskRenderNode * gsk_transform_node_get_child (const GskRenderNode *node) ;
function gsk_transform_node_get_child(node) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_transform_node_get_child
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_ALL
!GskTransform * gsk_transform_node_get_transform (const GskRenderNode *node) ;
function gsk_transform_node_get_transform(node) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_transform_node_get_transform
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_ALL
!GType gsk_opacity_node_get_type (void) ;
function gsk_opacity_node_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gsk_opacity_node_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GskRenderNode * gsk_opacity_node_new (GskRenderNode *child, float opacity);
function gsk_opacity_node_new(child, opacity) bind(c)
  import :: c_ptr, c_float
  implicit none
  type(c_ptr) :: gsk_opacity_node_new
  type(c_ptr), value :: child
  real(c_float), value :: opacity
end function

! GDK_AVAILABLE_IN_ALL
!GskRenderNode * gsk_opacity_node_get_child (const GskRenderNode *node) ;
function gsk_opacity_node_get_child(node) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_opacity_node_get_child
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_ALL
!float gsk_opacity_node_get_opacity (const GskRenderNode *node) ;
function gsk_opacity_node_get_opacity(node) bind(c)
  import :: c_float, c_ptr
  implicit none
  real(c_float) :: gsk_opacity_node_get_opacity
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_ALL
!GType gsk_color_matrix_node_get_type (void) ;
function gsk_color_matrix_node_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gsk_color_matrix_node_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GskRenderNode * gsk_color_matrix_node_new (GskRenderNode *child, const graphene_matrix_t *color_matrix, const graphene_vec4_t *color_offset);
function gsk_color_matrix_node_new(child, color_matrix, color_offset) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_color_matrix_node_new
  type(c_ptr), value :: child
  type(c_ptr), value :: color_matrix
  type(c_ptr), value :: color_offset
end function

! GDK_AVAILABLE_IN_ALL
!GskRenderNode * gsk_color_matrix_node_get_child (const GskRenderNode *node) ;
function gsk_color_matrix_node_get_child(node) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_color_matrix_node_get_child
  type(c_ptr), value :: node
end function

! 
!const graphene_matrix_t * gsk_color_matrix_node_get_color_matrix (const GskRenderNode *node) ;
function gsk_color_matrix_node_get_color_matrix(node) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_color_matrix_node_get_color_matrix
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_ALL
!const graphene_vec4_t * gsk_color_matrix_node_get_color_offset (const GskRenderNode *node) ;
function gsk_color_matrix_node_get_color_offset(node) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_color_matrix_node_get_color_offset
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_ALL
!GType gsk_repeat_node_get_type (void) ;
function gsk_repeat_node_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gsk_repeat_node_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GskRenderNode * gsk_repeat_node_new (const graphene_rect_t *bounds, GskRenderNode *child, const graphene_rect_t *child_bounds);
function gsk_repeat_node_new(bounds, child, child_bounds) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_repeat_node_new
  type(c_ptr), value :: bounds
  type(c_ptr), value :: child
  type(c_ptr), value :: child_bounds
end function

! GDK_AVAILABLE_IN_ALL
!GskRenderNode * gsk_repeat_node_get_child (const GskRenderNode *node) ;
function gsk_repeat_node_get_child(node) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_repeat_node_get_child
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_ALL
!const graphene_rect_t * gsk_repeat_node_get_child_bounds (const GskRenderNode *node) ;
function gsk_repeat_node_get_child_bounds(node) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_repeat_node_get_child_bounds
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_ALL
!GType gsk_clip_node_get_type (void) ;
function gsk_clip_node_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gsk_clip_node_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GskRenderNode * gsk_clip_node_new (GskRenderNode *child, const graphene_rect_t *clip);
function gsk_clip_node_new(child, clip) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_clip_node_new
  type(c_ptr), value :: child
  type(c_ptr), value :: clip
end function

! GDK_AVAILABLE_IN_ALL
!GskRenderNode * gsk_clip_node_get_child (const GskRenderNode *node) ;
function gsk_clip_node_get_child(node) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_clip_node_get_child
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_ALL
!const graphene_rect_t * gsk_clip_node_get_clip (const GskRenderNode *node) ;
function gsk_clip_node_get_clip(node) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_clip_node_get_clip
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_ALL
!GType gsk_rounded_clip_node_get_type (void) ;
function gsk_rounded_clip_node_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gsk_rounded_clip_node_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GskRenderNode * gsk_rounded_clip_node_new (GskRenderNode *child, const GskRoundedRect *clip);
function gsk_rounded_clip_node_new(child, clip) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_rounded_clip_node_new
  type(c_ptr), value :: child
  type(c_ptr), value :: clip
end function

! GDK_AVAILABLE_IN_ALL
!GskRenderNode * gsk_rounded_clip_node_get_child (const GskRenderNode *node) ;
function gsk_rounded_clip_node_get_child(node) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_rounded_clip_node_get_child
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_ALL
!const GskRoundedRect * gsk_rounded_clip_node_get_clip (const GskRenderNode *node) ;
function gsk_rounded_clip_node_get_clip(node) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_rounded_clip_node_get_clip
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_4_14
!GType gsk_fill_node_get_type (void) ;
function gsk_fill_node_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gsk_fill_node_get_type
end function

! GDK_AVAILABLE_IN_4_14
!GskRenderNode * gsk_fill_node_new (GskRenderNode *child, GskPath *path, GskFillRule fill_rule);
function gsk_fill_node_new(child, path, fill_rule) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: gsk_fill_node_new
  type(c_ptr), value :: child
  type(c_ptr), value :: path
  integer(c_int), value :: fill_rule
end function

! GDK_AVAILABLE_IN_4_14
!GskRenderNode * gsk_fill_node_get_child (const GskRenderNode *node);
function gsk_fill_node_get_child(node) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_fill_node_get_child
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_4_14
!GskPath * gsk_fill_node_get_path (const GskRenderNode *node);
function gsk_fill_node_get_path(node) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_fill_node_get_path
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_4_14
!GskFillRule gsk_fill_node_get_fill_rule (const GskRenderNode *node);
function gsk_fill_node_get_fill_rule(node) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gsk_fill_node_get_fill_rule
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_4_14
!GType gsk_stroke_node_get_type (void) ;
function gsk_stroke_node_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gsk_stroke_node_get_type
end function

! GDK_AVAILABLE_IN_4_14
!GskRenderNode * gsk_stroke_node_new (GskRenderNode *child, GskPath *path, const GskStroke *stroke);
function gsk_stroke_node_new(child, path, stroke) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_stroke_node_new
  type(c_ptr), value :: child
  type(c_ptr), value :: path
  type(c_ptr), value :: stroke
end function

! GDK_AVAILABLE_IN_4_14
!GskRenderNode * gsk_stroke_node_get_child (const GskRenderNode *node);
function gsk_stroke_node_get_child(node) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_stroke_node_get_child
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_4_14
!GskPath * gsk_stroke_node_get_path (const GskRenderNode *node);
function gsk_stroke_node_get_path(node) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_stroke_node_get_path
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_4_14
!const GskStroke * gsk_stroke_node_get_stroke (const GskRenderNode *node);
function gsk_stroke_node_get_stroke(node) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_stroke_node_get_stroke
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_ALL
!GType gsk_shadow_node_get_type (void) ;
function gsk_shadow_node_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gsk_shadow_node_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GskRenderNode * gsk_shadow_node_new (GskRenderNode *child, const GskShadow *shadows, gsize n_shadows);
function gsk_shadow_node_new(child, shadows, n_shadows) bind(c)
  import :: c_ptr, c_size_t
  implicit none
  type(c_ptr) :: gsk_shadow_node_new
  type(c_ptr), value :: child
  type(c_ptr), value :: shadows
  integer(c_size_t), value :: n_shadows
end function

! GDK_AVAILABLE_IN_ALL
!GskRenderNode * gsk_shadow_node_get_child (const GskRenderNode *node) ;
function gsk_shadow_node_get_child(node) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_shadow_node_get_child
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_ALL
!const GskShadow * gsk_shadow_node_get_shadow (const GskRenderNode *node, gsize i) ;
function gsk_shadow_node_get_shadow(node, i) bind(c)
  import :: c_ptr, c_size_t
  implicit none
  type(c_ptr) :: gsk_shadow_node_get_shadow
  type(c_ptr), value :: node
  integer(c_size_t), value :: i
end function

! GDK_AVAILABLE_IN_ALL
!gsize gsk_shadow_node_get_n_shadows (const GskRenderNode *node) ;
function gsk_shadow_node_get_n_shadows(node) bind(c)
  import :: c_size_t, c_ptr
  implicit none
  integer(c_size_t) :: gsk_shadow_node_get_n_shadows
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_ALL
!GType gsk_blend_node_get_type (void) ;
function gsk_blend_node_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gsk_blend_node_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GskRenderNode * gsk_blend_node_new (GskRenderNode *bottom, GskRenderNode *top, GskBlendMode blend_mode);
function gsk_blend_node_new(bottom, top, blend_mode) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: gsk_blend_node_new
  type(c_ptr), value :: bottom
  type(c_ptr), value :: top
  integer(c_int), value :: blend_mode
end function

! GDK_AVAILABLE_IN_ALL
!GskRenderNode * gsk_blend_node_get_bottom_child (const GskRenderNode *node) ;
function gsk_blend_node_get_bottom_child(node) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_blend_node_get_bottom_child
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_ALL
!GskRenderNode * gsk_blend_node_get_top_child (const GskRenderNode *node) ;
function gsk_blend_node_get_top_child(node) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_blend_node_get_top_child
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_ALL
!GskBlendMode gsk_blend_node_get_blend_mode (const GskRenderNode *node) ;
function gsk_blend_node_get_blend_mode(node) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gsk_blend_node_get_blend_mode
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_ALL
!GType gsk_cross_fade_node_get_type (void) ;
function gsk_cross_fade_node_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gsk_cross_fade_node_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GskRenderNode * gsk_cross_fade_node_new (GskRenderNode *start, GskRenderNode *end, float progress);
function gsk_cross_fade_node_new(start, end, progress) bind(c)
  import :: c_ptr, c_float
  implicit none
  type(c_ptr) :: gsk_cross_fade_node_new
  type(c_ptr), value :: start
  type(c_ptr), value :: end
  real(c_float), value :: progress
end function

! GDK_AVAILABLE_IN_ALL
!GskRenderNode * gsk_cross_fade_node_get_start_child (const GskRenderNode *node) ;
function gsk_cross_fade_node_get_start_child(node) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_cross_fade_node_get_start_child
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_ALL
!GskRenderNode * gsk_cross_fade_node_get_end_child (const GskRenderNode *node) ;
function gsk_cross_fade_node_get_end_child(node) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_cross_fade_node_get_end_child
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_ALL
!float gsk_cross_fade_node_get_progress (const GskRenderNode *node) ;
function gsk_cross_fade_node_get_progress(node) bind(c)
  import :: c_float, c_ptr
  implicit none
  real(c_float) :: gsk_cross_fade_node_get_progress
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_ALL
!GType gsk_text_node_get_type (void) ;
function gsk_text_node_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gsk_text_node_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GskRenderNode * gsk_text_node_new (PangoFont *font, PangoGlyphString *glyphs, const GdkRGBA *color, const graphene_point_t *offset);
function gsk_text_node_new(font, glyphs, color, offset) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_text_node_new
  type(c_ptr), value :: font
  type(c_ptr), value :: glyphs
  type(c_ptr), value :: color
  type(c_ptr), value :: offset
end function

! GDK_AVAILABLE_IN_ALL
!PangoFont * gsk_text_node_get_font (const GskRenderNode *node) ;
function gsk_text_node_get_font(node) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_text_node_get_font
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_4_2
!gboolean gsk_text_node_has_color_glyphs (const GskRenderNode *node) ;
function gsk_text_node_has_color_glyphs(node) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gsk_text_node_has_color_glyphs
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_ALL
!guint gsk_text_node_get_num_glyphs (const GskRenderNode *node) ;
function gsk_text_node_get_num_glyphs(node) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gsk_text_node_get_num_glyphs
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_ALL
!const PangoGlyphInfo *gsk_text_node_get_glyphs (const GskRenderNode *node, guint *n_glyphs);
function gsk_text_node_get_glyphs(node, n_glyphs) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_text_node_get_glyphs
  type(c_ptr), value :: node
  type(c_ptr), value :: n_glyphs
end function

! GDK_AVAILABLE_IN_ALL
!const GdkRGBA * gsk_text_node_get_color (const GskRenderNode *node) ;
function gsk_text_node_get_color(node) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_text_node_get_color
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_ALL
!const graphene_point_t *gsk_text_node_get_offset (const GskRenderNode *node) ;
function gsk_text_node_get_offset(node) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_text_node_get_offset
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_ALL
!GType gsk_blur_node_get_type (void) ;
function gsk_blur_node_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gsk_blur_node_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GskRenderNode * gsk_blur_node_new (GskRenderNode *child, float radius);
function gsk_blur_node_new(child, radius) bind(c)
  import :: c_ptr, c_float
  implicit none
  type(c_ptr) :: gsk_blur_node_new
  type(c_ptr), value :: child
  real(c_float), value :: radius
end function

! GDK_AVAILABLE_IN_ALL
!GskRenderNode * gsk_blur_node_get_child (const GskRenderNode *node) ;
function gsk_blur_node_get_child(node) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_blur_node_get_child
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_ALL
!float gsk_blur_node_get_radius (const GskRenderNode *node) ;
function gsk_blur_node_get_radius(node) bind(c)
  import :: c_float, c_ptr
  implicit none
  real(c_float) :: gsk_blur_node_get_radius
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_4_10
!GType gsk_mask_node_get_type (void) ;
function gsk_mask_node_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gsk_mask_node_get_type
end function

! GDK_AVAILABLE_IN_4_10
!GskRenderNode * gsk_mask_node_new (GskRenderNode *source, GskRenderNode *mask, GskMaskMode mask_mode);
function gsk_mask_node_new(source, mask, mask_mode) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: gsk_mask_node_new
  type(c_ptr), value :: source
  type(c_ptr), value :: mask
  integer(c_int), value :: mask_mode
end function

! GDK_AVAILABLE_IN_4_10
!GskRenderNode * gsk_mask_node_get_source (const GskRenderNode *node);
function gsk_mask_node_get_source(node) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_mask_node_get_source
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_4_10
!GskRenderNode * gsk_mask_node_get_mask (const GskRenderNode *node);
function gsk_mask_node_get_mask(node) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_mask_node_get_mask
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_4_10
!GskMaskMode gsk_mask_node_get_mask_mode (const GskRenderNode *node);
function gsk_mask_node_get_mask_mode(node) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gsk_mask_node_get_mask_mode
  type(c_ptr), value :: node
end function

! GDK_DEPRECATED_IN_4_16_FOR(GtkGLArea)
!GType gsk_gl_shader_node_get_type (void) ;
function gsk_gl_shader_node_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gsk_gl_shader_node_get_type
end function

! GDK_DEPRECATED_IN_4_16_FOR(GtkGLArea)
!GskRenderNode * gsk_gl_shader_node_new (GskGLShader *shader, const graphene_rect_t *bounds, GBytes *args, GskRenderNode **children, guint n_children);
function gsk_gl_shader_node_new(shader, bounds, args, children, n_children)&
& bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: gsk_gl_shader_node_new
  type(c_ptr), value :: shader
  type(c_ptr), value :: bounds
  type(c_ptr), value :: args
  type(c_ptr), value :: children
  integer(c_int), value :: n_children
end function

! GDK_DEPRECATED_IN_4_16_FOR(GtkGLArea)
!guint gsk_gl_shader_node_get_n_children (const GskRenderNode *node) ;
function gsk_gl_shader_node_get_n_children(node) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gsk_gl_shader_node_get_n_children
  type(c_ptr), value :: node
end function

! GDK_DEPRECATED_IN_4_16_FOR(GtkGLArea)
!GskRenderNode * gsk_gl_shader_node_get_child (const GskRenderNode *node, guint idx) ;
function gsk_gl_shader_node_get_child(node, idx) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: gsk_gl_shader_node_get_child
  type(c_ptr), value :: node
  integer(c_int), value :: idx
end function

! GDK_DEPRECATED_IN_4_16_FOR(GtkGLArea)
!GBytes * gsk_gl_shader_node_get_args (const GskRenderNode *node) ;
function gsk_gl_shader_node_get_args(node) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_gl_shader_node_get_args
  type(c_ptr), value :: node
end function

! GDK_DEPRECATED_IN_4_16_FOR(GtkGLArea)
!GskGLShader * gsk_gl_shader_node_get_shader (const GskRenderNode *node) ;
function gsk_gl_shader_node_get_shader(node) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_gl_shader_node_get_shader
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_4_14
!GType gsk_subsurface_node_get_type (void) ;
function gsk_subsurface_node_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gsk_subsurface_node_get_type
end function

! GDK_AVAILABLE_IN_4_14
!GskRenderNode * gsk_subsurface_node_new (GskRenderNode *child, gpointer subsurface);
function gsk_subsurface_node_new(child, subsurface) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_subsurface_node_new
  type(c_ptr), value :: child
  type(c_ptr), value :: subsurface
end function

! GDK_AVAILABLE_IN_4_14
!GskRenderNode * gsk_subsurface_node_get_child (const GskRenderNode *node) ;
function gsk_subsurface_node_get_child(node) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_subsurface_node_get_child
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_4_14
!gpointer gsk_subsurface_node_get_subsurface (const GskRenderNode *node);
function gsk_subsurface_node_get_subsurface(node) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_subsurface_node_get_subsurface
  type(c_ptr), value :: node
end function

! GDK_AVAILABLE_IN_4_4
!void gsk_value_set_render_node (GValue *value, GskRenderNode *node);
subroutine gsk_value_set_render_node(value, node) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: value
  type(c_ptr), value :: node
end subroutine

! GDK_AVAILABLE_IN_4_4
!void gsk_value_take_render_node (GValue *value, GskRenderNode *node);
subroutine gsk_value_take_render_node(value, node) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: value
  type(c_ptr), value :: node
end subroutine

! GDK_AVAILABLE_IN_4_4
!GskRenderNode * gsk_value_get_render_node (const GValue *value);
function gsk_value_get_render_node(value) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_value_get_render_node
  type(c_ptr), value :: value
end function

! GDK_AVAILABLE_IN_4_4
!GskRenderNode * gsk_value_dup_render_node (const GValue *value);
function gsk_value_dup_render_node(value) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_value_dup_render_node
  type(c_ptr), value :: value
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gsk/gskpathmeasure.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_4_14
!GType gsk_path_measure_get_type (void) ;
function gsk_path_measure_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gsk_path_measure_get_type
end function

! GDK_AVAILABLE_IN_4_14
!GskPathMeasure * gsk_path_measure_new (GskPath *path);
function gsk_path_measure_new(path) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_path_measure_new
  type(c_ptr), value :: path
end function

! GDK_AVAILABLE_IN_4_14
!GskPathMeasure * gsk_path_measure_new_with_tolerance (GskPath *path, float tolerance);
function gsk_path_measure_new_with_tolerance(path, tolerance) bind(c)
  import :: c_ptr, c_float
  implicit none
  type(c_ptr) :: gsk_path_measure_new_with_tolerance
  type(c_ptr), value :: path
  real(c_float), value :: tolerance
end function

! GDK_AVAILABLE_IN_4_14
!GskPathMeasure * gsk_path_measure_ref (GskPathMeasure *self);
function gsk_path_measure_ref(self) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_path_measure_ref
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_4_14
!void gsk_path_measure_unref (GskPathMeasure *self);
subroutine gsk_path_measure_unref(self) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: self
end subroutine

! GDK_AVAILABLE_IN_4_14
!GskPath * gsk_path_measure_get_path (GskPathMeasure *self) ;
function gsk_path_measure_get_path(self) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_path_measure_get_path
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_4_14
!float gsk_path_measure_get_tolerance (GskPathMeasure *self) ;
function gsk_path_measure_get_tolerance(self) bind(c)
  import :: c_float, c_ptr
  implicit none
  real(c_float) :: gsk_path_measure_get_tolerance
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_4_14
!float gsk_path_measure_get_length (GskPathMeasure *self);
function gsk_path_measure_get_length(self) bind(c)
  import :: c_float, c_ptr
  implicit none
  real(c_float) :: gsk_path_measure_get_length
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_4_14
!gboolean gsk_path_measure_get_point (GskPathMeasure *self, float distance, GskPathPoint *result);
function gsk_path_measure_get_point(self, distance, result) bind(c)
  import :: c_int, c_ptr, c_float
  implicit none
  integer(c_int) :: gsk_path_measure_get_point
  type(c_ptr), value :: self
  real(c_float), value :: distance
  type(c_ptr), value :: result
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gsk/gl/gskglrenderer.h
!--------------------------------------------------
!--------------------------------------------------
! /usr/include/gtk-4.0/gsk/broadway/gskbroadwayrenderer.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!GType gsk_broadway_renderer_get_type (void) ;
function gsk_broadway_renderer_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gsk_broadway_renderer_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GskRenderer * gsk_broadway_renderer_new (void);
function gsk_broadway_renderer_new() bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_broadway_renderer_new
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gsk/gpu/gskvulkanrenderer.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!GType gsk_vulkan_renderer_get_type (void) ;
function gsk_vulkan_renderer_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gsk_vulkan_renderer_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GskRenderer * gsk_vulkan_renderer_new (void);
function gsk_vulkan_renderer_new() bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_vulkan_renderer_new
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gsk/gpu/gskglrenderer.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!GskRenderer *gsk_gl_renderer_new (void);
function gsk_gl_renderer_new() bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_gl_renderer_new
end function

! GDK_AVAILABLE_IN_ALL
!GType gsk_gl_renderer_get_type (void) ;
function gsk_gl_renderer_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gsk_gl_renderer_get_type
end function

! GDK_DEPRECATED_IN_4_18_FOR (gsk_gl_renderer_get_type)
!GType gsk_ngl_renderer_get_type (void) ;
function gsk_ngl_renderer_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gsk_ngl_renderer_get_type
end function

! GDK_DEPRECATED_IN_4_18_FOR (gsk_gl_renderer_new)
!GskRenderer *gsk_ngl_renderer_new (void);
function gsk_ngl_renderer_new() bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gsk_ngl_renderer_new
end function

end interface
end module gsk
