#pragma once
#include <stdbool.h>
#include <stdint.h>
#include "../rute_base.h"
#ifdef __cplusplus
extern "C" {
#endif
#include "line_f_ffi.h"
#include "line_ffi.h"
#include "point_f_ffi.h"
struct RULineFFuncs;
struct RULineF;
typedef struct RULineFFuncs {
void (*destroy)(struct RUBase* self);
struct RULineF (*from_polar)(struct RUBase* self_c, float length,
float angle);
bool (*is_null)(struct RUBase* self_c);
struct RUPointF (*p1)(struct RUBase* self_c);
struct RUPointF (*p2)(struct RUBase* self_c);
float (*x1)(struct RUBase* self_c);
float (*y1)(struct RUBase* self_c);
float (*x2)(struct RUBase* self_c);
float (*y2)(struct RUBase* self_c);
float (*dx)(struct RUBase* self_c);
float (*dy)(struct RUBase* self_c);
float (*length)(struct RUBase* self_c);
void (*set_length)(struct RUBase* self_c, float len);
float (*angle)(struct RUBase* self_c);
void (*set_angle)(struct RUBase* self_c, float angle);
float (*angle_to)(struct RUBase* self_c, struct RUBase* l);
struct RULineF (*unit_vector)(struct RUBase* self_c);
struct RULineF (*normal_vector)(struct RUBase* self_c);
uint32_t (*intersect)(struct RUBase* self_c, struct RUBase* l,
struct RUBase* intersection_point);
float (*angle_2)(struct RUBase* self_c, struct RUBase* l);
struct RUPointF (*point_at)(struct RUBase* self_c, float t);
struct RUPointF (*center)(struct RUBase* self_c);
void (*set_p1)(struct RUBase* self_c, struct RUBase* p1);
void (*set_p2)(struct RUBase* self_c, struct RUBase* p2);
void (*set_points)(struct RUBase* self_c, struct RUBase* p1,
struct RUBase* p2);
void (*set_line)(struct RUBase* self_c, float x1, float y1, float x2,
float y2);
struct RULine (*to_line)(struct RUBase* self_c);
} RULineFFuncs;
typedef struct RULineFAllFuncs {
struct RULineFFuncs* line_f_funcs;
} RULineFAllFuncs;
typedef struct RULineF {
RUBase* qt_data;
RUBase* host_data;
struct RULineFAllFuncs* all_funcs;
} RULineF;
extern RULineFFuncs s_line_f_funcs;
extern RULineFAllFuncs s_line_f_all_funcs;
#ifdef __cplusplus
}
#endif