#pragma once
#include <stdbool.h>
#include <stdint.h>
#include "../rute_base.h"
#ifdef __cplusplus
extern "C" {
#endif
#include "surface_format_ffi.h"
struct RUSurfaceFormatFuncs;
struct RUSurfaceFormat;
typedef struct RUSurfaceFormatFuncs {
void (*destroy)(struct RUBase* self);
void (*set_depth_buffer_size)(struct RUBase* self_c, int size);
int (*depth_buffer_size)(struct RUBase* self_c);
void (*set_stencil_buffer_size)(struct RUBase* self_c, int size);
int (*stencil_buffer_size)(struct RUBase* self_c);
void (*set_red_buffer_size)(struct RUBase* self_c, int size);
int (*red_buffer_size)(struct RUBase* self_c);
void (*set_green_buffer_size)(struct RUBase* self_c, int size);
int (*green_buffer_size)(struct RUBase* self_c);
void (*set_blue_buffer_size)(struct RUBase* self_c, int size);
int (*blue_buffer_size)(struct RUBase* self_c);
void (*set_alpha_buffer_size)(struct RUBase* self_c, int size);
int (*alpha_buffer_size)(struct RUBase* self_c);
void (*set_samples)(struct RUBase* self_c, int num_samples);
int (*samples)(struct RUBase* self_c);
void (*set_swap_behavior)(struct RUBase* self_c, int behavior);
int (*swap_behavior)(struct RUBase* self_c);
bool (*has_alpha)(struct RUBase* self_c);
void (*set_profile)(struct RUBase* self_c, int profile);
int (*profile)(struct RUBase* self_c);
void (*set_renderable_type)(struct RUBase* self_c, int stype);
int (*renderable_type)(struct RUBase* self_c);
void (*set_major_version)(struct RUBase* self_c, int major_version);
int (*major_version)(struct RUBase* self_c);
void (*set_minor_version)(struct RUBase* self_c, int minor_version);
int (*minor_version)(struct RUBase* self_c);
void (*set_version)(struct RUBase* self_c, int major, int minor);
bool (*stereo)(struct RUBase* self_c);
void (*set_stereo)(struct RUBase* self_c, bool enable);
void (*set_option)(struct RUBase* self_c, int opt);
bool (*test_option)(struct RUBase* self_c, int opt);
void (*set_options)(struct RUBase* self_c, int options);
void (*set_option_2)(struct RUBase* self_c, int option, bool on);
bool (*test_option_2)(struct RUBase* self_c, int option);
int (*options)(struct RUBase* self_c);
int (*swap_interval)(struct RUBase* self_c);
void (*set_swap_interval)(struct RUBase* self_c, int interval);
int (*color_space)(struct RUBase* self_c);
void (*set_color_space)(struct RUBase* self_c, int color_space);
void (*set_default_format)(struct RUBase* self_c, struct RUBase* format);
struct RUSurfaceFormat (*default_format)(struct RUBase* self_c);
} RUSurfaceFormatFuncs;
typedef struct RUSurfaceFormatAllFuncs {
struct RUSurfaceFormatFuncs* surface_format_funcs;
} RUSurfaceFormatAllFuncs;
typedef struct RUSurfaceFormat {
RUBase* qt_data;
RUBase* host_data;
struct RUSurfaceFormatAllFuncs* all_funcs;
} RUSurfaceFormat;
extern RUSurfaceFormatFuncs s_surface_format_funcs;
extern RUSurfaceFormatAllFuncs s_surface_format_all_funcs;
#ifdef __cplusplus
}
#endif