#pragma once
#include <stdbool.h>
#include <stdint.h>
#include "../rute_base.h"
#ifdef __cplusplus
extern "C" {
#endif
#include "brush_ffi.h"
#include "color_ffi.h"
struct RUPenFuncs;
struct RUPen;
typedef struct RUPenFuncs {
void (*destroy)(struct RUBase* self);
void (*swap)(struct RUBase* self_c, struct RUBase* other);
int (*style)(struct RUBase* self_c);
void (*set_style)(struct RUBase* self_c, int arg0);
float (*dash_offset)(struct RUBase* self_c);
void (*set_dash_offset)(struct RUBase* self_c, float doffset);
float (*miter_limit)(struct RUBase* self_c);
void (*set_miter_limit)(struct RUBase* self_c, float limit);
float (*width_f)(struct RUBase* self_c);
void (*set_width_f)(struct RUBase* self_c, float width);
int (*width)(struct RUBase* self_c);
void (*set_width)(struct RUBase* self_c, int width);
struct RUColor (*color)(struct RUBase* self_c);
void (*set_color)(struct RUBase* self_c, struct RUBase* color);
struct RUBrush (*brush)(struct RUBase* self_c);
void (*set_brush)(struct RUBase* self_c, struct RUBase* brush);
bool (*is_solid)(struct RUBase* self_c);
int (*cap_style)(struct RUBase* self_c);
void (*set_cap_style)(struct RUBase* self_c, int pcs);
int (*join_style)(struct RUBase* self_c);
void (*set_join_style)(struct RUBase* self_c, int pcs);
bool (*is_cosmetic)(struct RUBase* self_c);
void (*set_cosmetic)(struct RUBase* self_c, bool cosmetic);
bool (*is_detached)(struct RUBase* self_c);
} RUPenFuncs;
typedef struct RUPenAllFuncs {
struct RUPenFuncs* pen_funcs;
} RUPenAllFuncs;
typedef struct RUPen {
RUBase* qt_data;
RUBase* host_data;
struct RUPenAllFuncs* all_funcs;
} RUPen;
extern RUPenFuncs s_pen_funcs;
extern RUPenAllFuncs s_pen_all_funcs;
#ifdef __cplusplus
}
#endif