#pragma once
#include <stdbool.h>
#include <stdint.h>
#include "../rute_base.h"
#ifdef __cplusplus
extern "C" {
#endif
#include "point_f_ffi.h"
#include "rect_f_ffi.h"
#include "rect_ffi.h"
#include "size_f_ffi.h"
struct RURectFFuncs;
struct RURectF;
typedef struct RURectFFuncs {
void (*destroy)(struct RUBase* self);
bool (*is_null)(struct RUBase* self_c);
bool (*is_empty)(struct RUBase* self_c);
bool (*is_valid)(struct RUBase* self_c);
struct RURectF (*normalized)(struct RUBase* self_c);
float (*left)(struct RUBase* self_c);
float (*top)(struct RUBase* self_c);
float (*right)(struct RUBase* self_c);
float (*bottom)(struct RUBase* self_c);
float (*x)(struct RUBase* self_c);
float (*y)(struct RUBase* self_c);
void (*set_left)(struct RUBase* self_c, float pos);
void (*set_top)(struct RUBase* self_c, float pos);
void (*set_right)(struct RUBase* self_c, float pos);
void (*set_bottom)(struct RUBase* self_c, float pos);
void (*set_x)(struct RUBase* self_c, float pos);
void (*set_y)(struct RUBase* self_c, float pos);
struct RUPointF (*top_left)(struct RUBase* self_c);
struct RUPointF (*bottom_right)(struct RUBase* self_c);
struct RUPointF (*top_right)(struct RUBase* self_c);
struct RUPointF (*bottom_left)(struct RUBase* self_c);
struct RUPointF (*center)(struct RUBase* self_c);
void (*set_top_left)(struct RUBase* self_c, struct RUBase* p);
void (*set_bottom_right)(struct RUBase* self_c, struct RUBase* p);
void (*set_top_right)(struct RUBase* self_c, struct RUBase* p);
void (*set_bottom_left)(struct RUBase* self_c, struct RUBase* p);
void (*move_left)(struct RUBase* self_c, float pos);
void (*move_top)(struct RUBase* self_c, float pos);
void (*move_right)(struct RUBase* self_c, float pos);
void (*move_bottom)(struct RUBase* self_c, float pos);
void (*move_top_left)(struct RUBase* self_c, struct RUBase* p);
void (*move_bottom_right)(struct RUBase* self_c, struct RUBase* p);
void (*move_top_right)(struct RUBase* self_c, struct RUBase* p);
void (*move_bottom_left)(struct RUBase* self_c, struct RUBase* p);
void (*move_center)(struct RUBase* self_c, struct RUBase* p);
void (*move_to)(struct RUBase* self_c, float x, float y);
void (*move_to_2)(struct RUBase* self_c, struct RUBase* p);
void (*set_rect)(struct RUBase* self_c, float x, float y, float w, float h);
void (*set_coords)(struct RUBase* self_c, float x1, float y1, float x2,
float y2);
void (*adjust)(struct RUBase* self_c, float x1, float y1, float x2,
float y2);
struct RURectF (*adjusted)(struct RUBase* self_c, float x1, float y1,
float x2, float y2);
struct RUSizeF (*size)(struct RUBase* self_c);
float (*width)(struct RUBase* self_c);
float (*height)(struct RUBase* self_c);
void (*set_width)(struct RUBase* self_c, float w);
void (*set_height)(struct RUBase* self_c, float h);
void (*set_size)(struct RUBase* self_c, struct RUBase* s);
bool (*contains)(struct RUBase* self_c, struct RUBase* r);
bool (*contains_2)(struct RUBase* self_c, struct RUBase* p);
bool (*contains_3)(struct RUBase* self_c, float x, float y);
struct RURectF (*united)(struct RUBase* self_c, struct RUBase* other);
struct RURectF (*intersected)(struct RUBase* self_c, struct RUBase* other);
bool (*intersects)(struct RUBase* self_c, struct RUBase* r);
struct RURect (*to_rect)(struct RUBase* self_c);
struct RURect (*to_aligned_rect)(struct RUBase* self_c);
} RURectFFuncs;
typedef struct RURectFAllFuncs {
struct RURectFFuncs* rect_f_funcs;
} RURectFAllFuncs;
typedef struct RURectF {
RUBase* qt_data;
RUBase* host_data;
struct RURectFAllFuncs* all_funcs;
} RURectF;
extern RURectFFuncs s_rect_f_funcs;
extern RURectFAllFuncs s_rect_f_all_funcs;
#ifdef __cplusplus
}
#endif