rute 0.0.4

UI library implemented on top of Qt
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// This file is auto-generated by rute_gen. DO NOT EDIT
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#include "../rute_base.h"
#include "../rute_manual.h"
#include <QPainter>
#include "painter_ffi.h"

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static struct RUPaintDevice painter_device(struct RUBase* self_c) {
    WRPainter* qt_value = (WRPainter*)self_c;
    auto ret_value = qt_value->device();
    struct RUPaintDevice ctl;
    ctl.qt_data = (struct RUBase*)ret_value;
    ctl.host_data = (struct RUBase*)s_host_data_lookup[(void*)ret_value];
    ctl.all_funcs = &s_paint_device_all_funcs;
    return ctl;
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static bool painter_begin(struct RUBase* self_c, struct RUBase* arg0) {
    WRPainter* qt_value = (WRPainter*)self_c;
    auto ret_value = qt_value->begin((QPaintDevice*)arg0);
    return ret_value;
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static bool painter_end(struct RUBase* self_c) {
    WRPainter* qt_value = (WRPainter*)self_c;
    auto ret_value = qt_value->end();
    return ret_value;
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static bool painter_is_active(struct RUBase* self_c) {
    WRPainter* qt_value = (WRPainter*)self_c;
    auto ret_value = qt_value->isActive();
    return ret_value;
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_init_from(struct RUBase* self_c, struct RUBase* device) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->initFrom((QPaintDevice*)device);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_set_composition_mode(struct RUBase* self_c, int mode) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->setCompositionMode((QPainter::CompositionMode)s_composition_mode_lookup[mode]);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static int painter_composition_mode(struct RUBase* self_c) {
    WRPainter* qt_value = (WRPainter*)self_c;
    auto ret_value = qt_value->compositionMode();
    return s_composition_mode_lookup[(int)ret_value];
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static struct RUFont painter_font(struct RUBase* self_c) {
    WRPainter* qt_value = (WRPainter*)self_c;
    auto ret_value = qt_value->font();
    WRFont* new_val = new WRFont();
    *new_val = ret_value;
    struct RUFont ctl;
    ctl.qt_data = (struct RUBase*)new_val;
    ctl.host_data = (struct RUBase*)s_host_data_lookup[(void*)new_val];
    ctl.all_funcs = &s_font_all_funcs;
    return ctl;
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_set_font(struct RUBase* self_c, struct RUBase* f) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->setFont(*((QFont*)f));
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_set_pen(struct RUBase* self_c, struct RUBase* color) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->setPen(*((QColor*)color));
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_set_pen_2(struct RUBase* self_c, struct RUBase* pen) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->setPen(*((QPen*)pen));
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_set_pen_3(struct RUBase* self_c, int style) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->setPen((Qt::PenStyle)s_pen_style_lookup[style]);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static struct RUPen painter_pen(struct RUBase* self_c) {
    WRPainter* qt_value = (WRPainter*)self_c;
    auto ret_value = qt_value->pen();
    WRPen* new_val = new WRPen();
    *new_val = ret_value;
    struct RUPen ctl;
    ctl.qt_data = (struct RUBase*)new_val;
    ctl.host_data = (struct RUBase*)s_host_data_lookup[(void*)new_val];
    ctl.all_funcs = &s_pen_all_funcs;
    return ctl;
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_set_brush(struct RUBase* self_c, struct RUBase* brush) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->setBrush(*((QBrush*)brush));
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_set_brush_2(struct RUBase* self_c, int style) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->setBrush((Qt::BrushStyle)s_brush_style_lookup[style]);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static struct RUBrush painter_brush(struct RUBase* self_c) {
    WRPainter* qt_value = (WRPainter*)self_c;
    auto ret_value = qt_value->brush();
    WRBrush* new_val = new WRBrush();
    *new_val = ret_value;
    struct RUBrush ctl;
    ctl.qt_data = (struct RUBase*)new_val;
    ctl.host_data = (struct RUBase*)s_host_data_lookup[(void*)new_val];
    ctl.all_funcs = &s_brush_all_funcs;
    return ctl;
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_set_background_mode(struct RUBase* self_c, int mode) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->setBackgroundMode((Qt::BGMode)s_bg_mode_lookup[mode]);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static int painter_background_mode(struct RUBase* self_c) {
    WRPainter* qt_value = (WRPainter*)self_c;
    auto ret_value = qt_value->backgroundMode();
    return s_bg_mode_lookup[(int)ret_value];
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static struct RUPoint painter_brush_origin(struct RUBase* self_c) {
    WRPainter* qt_value = (WRPainter*)self_c;
    auto ret_value = qt_value->brushOrigin();
    WRPoint* new_val = new WRPoint();
    *new_val = ret_value;
    struct RUPoint ctl;
    ctl.qt_data = (struct RUBase*)new_val;
    ctl.host_data = (struct RUBase*)s_host_data_lookup[(void*)new_val];
    ctl.all_funcs = &s_point_all_funcs;
    return ctl;
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_set_brush_origin(struct RUBase* self_c, int x, int y) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->setBrushOrigin(x, y);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_set_brush_origin_2(struct RUBase* self_c, struct RUBase* arg0) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->setBrushOrigin(*((QPoint*)arg0));
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_set_brush_origin_3(struct RUBase* self_c, struct RUBase* arg0) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->setBrushOrigin(*((QPointF*)arg0));
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_set_background(struct RUBase* self_c, struct RUBase* bg) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->setBackground(*((QBrush*)bg));
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static struct RUBrush painter_background(struct RUBase* self_c) {
    WRPainter* qt_value = (WRPainter*)self_c;
    auto ret_value = qt_value->background();
    WRBrush* new_val = new WRBrush();
    *new_val = ret_value;
    struct RUBrush ctl;
    ctl.qt_data = (struct RUBase*)new_val;
    ctl.host_data = (struct RUBase*)s_host_data_lookup[(void*)new_val];
    ctl.all_funcs = &s_brush_all_funcs;
    return ctl;
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static float painter_opacity(struct RUBase* self_c) {
    WRPainter* qt_value = (WRPainter*)self_c;
    auto ret_value = qt_value->opacity();
    return ret_value;
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_set_opacity(struct RUBase* self_c, float opacity) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->setOpacity(opacity);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static struct RURegion painter_clip_region(struct RUBase* self_c) {
    WRPainter* qt_value = (WRPainter*)self_c;
    auto ret_value = qt_value->clipRegion();
    WRRegion* new_val = new WRRegion();
    *new_val = ret_value;
    struct RURegion ctl;
    ctl.qt_data = (struct RUBase*)new_val;
    ctl.host_data = (struct RUBase*)s_host_data_lookup[(void*)new_val];
    ctl.all_funcs = &s_region_all_funcs;
    return ctl;
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_set_clip_rect(struct RUBase* self_c, struct RUBase* arg0, int op) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->setClipRect(*((QRectF*)arg0), (Qt::ClipOperation)s_clip_operation_lookup[op]);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_set_clip_rect_2(struct RUBase* self_c, struct RUBase* arg0, int op) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->setClipRect(*((QRect*)arg0), (Qt::ClipOperation)s_clip_operation_lookup[op]);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_set_clip_rect_3(struct RUBase* self_c, int x, int y, int w, int h, int op) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->setClipRect(x, y, w, h, (Qt::ClipOperation)s_clip_operation_lookup[op]);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_set_clip_region(struct RUBase* self_c, struct RUBase* arg0, int op) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->setClipRegion(*((QRegion*)arg0), (Qt::ClipOperation)s_clip_operation_lookup[op]);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_set_clipping(struct RUBase* self_c, bool enable) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->setClipping(enable);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static bool painter_has_clipping(struct RUBase* self_c) {
    WRPainter* qt_value = (WRPainter*)self_c;
    auto ret_value = qt_value->hasClipping();
    return ret_value;
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static struct RURectF painter_clip_bounding_rect(struct RUBase* self_c) {
    WRPainter* qt_value = (WRPainter*)self_c;
    auto ret_value = qt_value->clipBoundingRect();
    WRRectF* new_val = new WRRectF();
    *new_val = ret_value;
    struct RURectF ctl;
    ctl.qt_data = (struct RUBase*)new_val;
    ctl.host_data = (struct RUBase*)s_host_data_lookup[(void*)new_val];
    ctl.all_funcs = &s_rect_f_all_funcs;
    return ctl;
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_save(struct RUBase* self_c) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->save();
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_restore(struct RUBase* self_c) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->restore();
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_set_transform(struct RUBase* self_c, struct RUBase* transform, bool combine) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->setTransform(*((QTransform*)transform), combine);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static struct RUTransform painter_device_transform(struct RUBase* self_c) {
    WRPainter* qt_value = (WRPainter*)self_c;
    auto ret_value = qt_value->deviceTransform();
    WRTransform* new_val = new WRTransform();
    *new_val = ret_value;
    struct RUTransform ctl;
    ctl.qt_data = (struct RUBase*)new_val;
    ctl.host_data = (struct RUBase*)s_host_data_lookup[(void*)new_val];
    ctl.all_funcs = &s_transform_all_funcs;
    return ctl;
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_reset_transform(struct RUBase* self_c) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->resetTransform();
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_set_world_transform(struct RUBase* self_c, struct RUBase* matrix, bool combine) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->setWorldTransform(*((QTransform*)matrix), combine);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static struct RUTransform painter_world_transform(struct RUBase* self_c) {
    WRPainter* qt_value = (WRPainter*)self_c;
    auto ret_value = qt_value->worldTransform();
    WRTransform* new_val = new WRTransform();
    *new_val = ret_value;
    struct RUTransform ctl;
    ctl.qt_data = (struct RUBase*)new_val;
    ctl.host_data = (struct RUBase*)s_host_data_lookup[(void*)new_val];
    ctl.all_funcs = &s_transform_all_funcs;
    return ctl;
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static struct RUTransform painter_combined_transform(struct RUBase* self_c) {
    WRPainter* qt_value = (WRPainter*)self_c;
    auto ret_value = qt_value->combinedTransform();
    WRTransform* new_val = new WRTransform();
    *new_val = ret_value;
    struct RUTransform ctl;
    ctl.qt_data = (struct RUBase*)new_val;
    ctl.host_data = (struct RUBase*)s_host_data_lookup[(void*)new_val];
    ctl.all_funcs = &s_transform_all_funcs;
    return ctl;
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_scale(struct RUBase* self_c, float sx, float sy) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->scale(sx, sy);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_shear(struct RUBase* self_c, float sh, float sv) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->shear(sh, sv);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_rotate(struct RUBase* self_c, float a) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->rotate(a);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static struct RURect painter_window(struct RUBase* self_c) {
    WRPainter* qt_value = (WRPainter*)self_c;
    auto ret_value = qt_value->window();
    WRRect* new_val = new WRRect();
    *new_val = ret_value;
    struct RURect ctl;
    ctl.qt_data = (struct RUBase*)new_val;
    ctl.host_data = (struct RUBase*)s_host_data_lookup[(void*)new_val];
    ctl.all_funcs = &s_rect_all_funcs;
    return ctl;
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_set_window(struct RUBase* self_c, struct RUBase* window) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->setWindow(*((QRect*)window));
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_set_window_2(struct RUBase* self_c, int x, int y, int w, int h) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->setWindow(x, y, w, h);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static struct RURect painter_viewport(struct RUBase* self_c) {
    WRPainter* qt_value = (WRPainter*)self_c;
    auto ret_value = qt_value->viewport();
    WRRect* new_val = new WRRect();
    *new_val = ret_value;
    struct RURect ctl;
    ctl.qt_data = (struct RUBase*)new_val;
    ctl.host_data = (struct RUBase*)s_host_data_lookup[(void*)new_val];
    ctl.all_funcs = &s_rect_all_funcs;
    return ctl;
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_set_viewport(struct RUBase* self_c, struct RUBase* viewport) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->setViewport(*((QRect*)viewport));
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_set_viewport_2(struct RUBase* self_c, int x, int y, int w, int h) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->setViewport(x, y, w, h);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_set_view_transform_enabled(struct RUBase* self_c, bool enable) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->setViewTransformEnabled(enable);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static bool painter_view_transform_enabled(struct RUBase* self_c) {
    WRPainter* qt_value = (WRPainter*)self_c;
    auto ret_value = qt_value->viewTransformEnabled();
    return ret_value;
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_point(struct RUBase* self_c, struct RUBase* pt) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawPoint(*((QPointF*)pt));
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_point_2(struct RUBase* self_c, struct RUBase* p) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawPoint(*((QPoint*)p));
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_point_3(struct RUBase* self_c, int x, int y) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawPoint(x, y);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_points(struct RUBase* self_c, struct RUBase* points, int point_count) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawPoints((QPointF*)points, point_count);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_points_2(struct RUBase* self_c, struct RUBase* points) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawPoints(*((QPolygonF*)points));
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_points_3(struct RUBase* self_c, struct RUBase* points, int point_count) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawPoints((QPoint*)points, point_count);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_points_4(struct RUBase* self_c, struct RUBase* points) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawPoints(*((QPolygon*)points));
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_line(struct RUBase* self_c, struct RUBase* line) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawLine(*((QLineF*)line));
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_line_2(struct RUBase* self_c, struct RUBase* line) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawLine(*((QLine*)line));
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_line_3(struct RUBase* self_c, int x1, int y1, int x2, int y2) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawLine(x1, y1, x2, y2);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_line_4(struct RUBase* self_c, struct RUBase* p1, struct RUBase* p2) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawLine(*((QPoint*)p1), *((QPoint*)p2));
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_line_5(struct RUBase* self_c, struct RUBase* p1, struct RUBase* p2) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawLine(*((QPointF*)p1), *((QPointF*)p2));
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_lines(struct RUBase* self_c, struct RUBase* lines, int line_count) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawLines((QLineF*)lines, line_count);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_lines_3(struct RUBase* self_c, struct RUBase* point_pairs, int line_count) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawLines((QPointF*)point_pairs, line_count);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_lines_7(struct RUBase* self_c, struct RUBase* point_pairs, int line_count) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawLines((QPoint*)point_pairs, line_count);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_rect(struct RUBase* self_c, struct RUBase* rect) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawRect(*((QRectF*)rect));
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_rect_2(struct RUBase* self_c, int x1, int y1, int w, int h) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawRect(x1, y1, w, h);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_rect_3(struct RUBase* self_c, struct RUBase* rect) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawRect(*((QRect*)rect));
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_rects(struct RUBase* self_c, struct RUBase* rects, int rect_count) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawRects((QRectF*)rects, rect_count);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_rects_3(struct RUBase* self_c, struct RUBase* rects, int rect_count) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawRects((QRect*)rects, rect_count);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_ellipse(struct RUBase* self_c, struct RUBase* r) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawEllipse(*((QRectF*)r));
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_ellipse_2(struct RUBase* self_c, struct RUBase* r) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawEllipse(*((QRect*)r));
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_ellipse_3(struct RUBase* self_c, int x, int y, int w, int h) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawEllipse(x, y, w, h);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_ellipse_4(struct RUBase* self_c, struct RUBase* center, float rx, float ry) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawEllipse(*((QPointF*)center), rx, ry);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_ellipse_5(struct RUBase* self_c, struct RUBase* center, int rx, int ry) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawEllipse(*((QPoint*)center), rx, ry);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_polyline(struct RUBase* self_c, struct RUBase* points, int point_count) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawPolyline((QPointF*)points, point_count);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_polyline_2(struct RUBase* self_c, struct RUBase* polyline) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawPolyline(*((QPolygonF*)polyline));
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_polyline_3(struct RUBase* self_c, struct RUBase* points, int point_count) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawPolyline((QPoint*)points, point_count);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_polyline_4(struct RUBase* self_c, struct RUBase* polygon) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawPolyline(*((QPolygon*)polygon));
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_polygon(struct RUBase* self_c, struct RUBase* points, int point_count, int fill_rule) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawPolygon((QPointF*)points, point_count, (Qt::FillRule)s_fill_rule_lookup[fill_rule]);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_polygon_2(struct RUBase* self_c, struct RUBase* polygon, int fill_rule) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawPolygon(*((QPolygonF*)polygon), (Qt::FillRule)s_fill_rule_lookup[fill_rule]);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_polygon_3(struct RUBase* self_c, struct RUBase* points, int point_count, int fill_rule) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawPolygon((QPoint*)points, point_count, (Qt::FillRule)s_fill_rule_lookup[fill_rule]);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_polygon_4(struct RUBase* self_c, struct RUBase* polygon, int fill_rule) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawPolygon(*((QPolygon*)polygon), (Qt::FillRule)s_fill_rule_lookup[fill_rule]);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_convex_polygon(struct RUBase* self_c, struct RUBase* points, int point_count) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawConvexPolygon((QPointF*)points, point_count);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_convex_polygon_2(struct RUBase* self_c, struct RUBase* polygon) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawConvexPolygon(*((QPolygonF*)polygon));
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_convex_polygon_3(struct RUBase* self_c, struct RUBase* points, int point_count) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawConvexPolygon((QPoint*)points, point_count);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_convex_polygon_4(struct RUBase* self_c, struct RUBase* polygon) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawConvexPolygon(*((QPolygon*)polygon));
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_arc(struct RUBase* self_c, struct RUBase* rect, int a, int alen) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawArc(*((QRectF*)rect), a, alen);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_arc_2(struct RUBase* self_c, struct RUBase* arg0, int a, int alen) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawArc(*((QRect*)arg0), a, alen);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_arc_3(struct RUBase* self_c, int x, int y, int w, int h, int a, int alen) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawArc(x, y, w, h, a, alen);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_pie(struct RUBase* self_c, struct RUBase* rect, int a, int alen) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawPie(*((QRectF*)rect), a, alen);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_pie_2(struct RUBase* self_c, int x, int y, int w, int h, int a, int alen) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawPie(x, y, w, h, a, alen);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_pie_3(struct RUBase* self_c, struct RUBase* arg0, int a, int alen) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawPie(*((QRect*)arg0), a, alen);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_chord(struct RUBase* self_c, struct RUBase* rect, int a, int alen) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawChord(*((QRectF*)rect), a, alen);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_chord_2(struct RUBase* self_c, int x, int y, int w, int h, int a, int alen) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawChord(x, y, w, h, a, alen);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_chord_3(struct RUBase* self_c, struct RUBase* arg0, int a, int alen) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawChord(*((QRect*)arg0), a, alen);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_rounded_rect(struct RUBase* self_c, struct RUBase* rect, float x_radius, float y_radius, int mode) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawRoundedRect(*((QRectF*)rect), x_radius, y_radius, (Qt::SizeMode)s_size_mode_lookup[mode]);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_rounded_rect_2(struct RUBase* self_c, int x, int y, int w, int h, float x_radius, float y_radius, int mode) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawRoundedRect(x, y, w, h, x_radius, y_radius, (Qt::SizeMode)s_size_mode_lookup[mode]);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_rounded_rect_3(struct RUBase* self_c, struct RUBase* rect, float x_radius, float y_radius, int mode) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawRoundedRect(*((QRect*)rect), x_radius, y_radius, (Qt::SizeMode)s_size_mode_lookup[mode]);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_round_rect(struct RUBase* self_c, struct RUBase* r, int xround, int yround) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawRoundRect(*((QRectF*)r), xround, yround);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_round_rect_2(struct RUBase* self_c, int x, int y, int w, int h, int arg0, int arg1) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawRoundRect(x, y, w, h, arg0, arg1);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_round_rect_3(struct RUBase* self_c, struct RUBase* r, int xround, int yround) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawRoundRect(*((QRect*)r), xround, yround);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_tiled_pixmap(struct RUBase* self_c, struct RUBase* rect, struct RUBase* pm, struct RUBase* offset) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawTiledPixmap(*((QRectF*)rect), *((QPixmap*)pm), *((QPointF*)offset));
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_tiled_pixmap_2(struct RUBase* self_c, int x, int y, int w, int h, struct RUBase* arg0, int sx, int sy) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawTiledPixmap(x, y, w, h, *((QPixmap*)arg0), sx, sy);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_tiled_pixmap_3(struct RUBase* self_c, struct RUBase* arg0, struct RUBase* arg1, struct RUBase* arg2) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawTiledPixmap(*((QRect*)arg0), *((QPixmap*)arg1), *((QPoint*)arg2));
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_pixmap(struct RUBase* self_c, struct RUBase* target_rect, struct RUBase* pixmap, struct RUBase* source_rect) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawPixmap(*((QRectF*)target_rect), *((QPixmap*)pixmap), *((QRectF*)source_rect));
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_pixmap_2(struct RUBase* self_c, struct RUBase* target_rect, struct RUBase* pixmap, struct RUBase* source_rect) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawPixmap(*((QRect*)target_rect), *((QPixmap*)pixmap), *((QRect*)source_rect));
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_pixmap_3(struct RUBase* self_c, int x, int y, int w, int h, struct RUBase* pm, int sx, int sy, int sw, int sh) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawPixmap(x, y, w, h, *((QPixmap*)pm), sx, sy, sw, sh);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_pixmap_4(struct RUBase* self_c, int x, int y, struct RUBase* pm, int sx, int sy, int sw, int sh) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawPixmap(x, y, *((QPixmap*)pm), sx, sy, sw, sh);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_pixmap_5(struct RUBase* self_c, struct RUBase* p, struct RUBase* pm, struct RUBase* sr) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawPixmap(*((QPointF*)p), *((QPixmap*)pm), *((QRectF*)sr));
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_pixmap_6(struct RUBase* self_c, struct RUBase* p, struct RUBase* pm, struct RUBase* sr) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawPixmap(*((QPoint*)p), *((QPixmap*)pm), *((QRect*)sr));
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_pixmap_7(struct RUBase* self_c, struct RUBase* p, struct RUBase* pm) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawPixmap(*((QPointF*)p), *((QPixmap*)pm));
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_pixmap_8(struct RUBase* self_c, struct RUBase* p, struct RUBase* pm) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawPixmap(*((QPoint*)p), *((QPixmap*)pm));
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_pixmap_9(struct RUBase* self_c, int x, int y, struct RUBase* pm) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawPixmap(x, y, *((QPixmap*)pm));
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_pixmap_10(struct RUBase* self_c, struct RUBase* r, struct RUBase* pm) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawPixmap(*((QRect*)r), *((QPixmap*)pm));
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_pixmap_11(struct RUBase* self_c, int x, int y, int w, int h, struct RUBase* pm) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawPixmap(x, y, w, h, *((QPixmap*)pm));
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_image(struct RUBase* self_c, struct RUBase* target_rect, struct RUBase* image, struct RUBase* source_rect, int flags) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawImage(*((QRectF*)target_rect), *((QImage*)image), *((QRectF*)source_rect), (Qt::ImageConversionFlags)s_image_conversion_flags_lookup[flags]);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_image_2(struct RUBase* self_c, struct RUBase* target_rect, struct RUBase* image, struct RUBase* source_rect, int flags) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawImage(*((QRect*)target_rect), *((QImage*)image), *((QRect*)source_rect), (Qt::ImageConversionFlags)s_image_conversion_flags_lookup[flags]);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_image_3(struct RUBase* self_c, struct RUBase* p, struct RUBase* image, struct RUBase* sr, int flags) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawImage(*((QPointF*)p), *((QImage*)image), *((QRectF*)sr), (Qt::ImageConversionFlags)s_image_conversion_flags_lookup[flags]);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_image_4(struct RUBase* self_c, struct RUBase* p, struct RUBase* image, struct RUBase* sr, int flags) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawImage(*((QPoint*)p), *((QImage*)image), *((QRect*)sr), (Qt::ImageConversionFlags)s_image_conversion_flags_lookup[flags]);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_image_5(struct RUBase* self_c, struct RUBase* r, struct RUBase* image) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawImage(*((QRectF*)r), *((QImage*)image));
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_image_6(struct RUBase* self_c, struct RUBase* r, struct RUBase* image) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawImage(*((QRect*)r), *((QImage*)image));
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_image_7(struct RUBase* self_c, struct RUBase* p, struct RUBase* image) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawImage(*((QPointF*)p), *((QImage*)image));
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_image_8(struct RUBase* self_c, struct RUBase* p, struct RUBase* image) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawImage(*((QPoint*)p), *((QImage*)image));
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_image_9(struct RUBase* self_c, int x, int y, struct RUBase* image, int sx, int sy, int sw, int sh, int flags) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawImage(x, y, *((QImage*)image), sx, sy, sw, sh, (Qt::ImageConversionFlags)s_image_conversion_flags_lookup[flags]);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_set_layout_direction(struct RUBase* self_c, int direction) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->setLayoutDirection((Qt::LayoutDirection)s_layout_direction_lookup[direction]);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static int painter_layout_direction(struct RUBase* self_c) {
    WRPainter* qt_value = (WRPainter*)self_c;
    auto ret_value = qt_value->layoutDirection();
    return s_layout_direction_lookup[(int)ret_value];
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_text(struct RUBase* self_c, struct RUBase* p, const char* s) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawText(*((QPointF*)p), QString::fromUtf8(s));
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_text_2(struct RUBase* self_c, struct RUBase* p, const char* s) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawText(*((QPoint*)p), QString::fromUtf8(s));
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_text_3(struct RUBase* self_c, int x, int y, const char* s) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawText(x, y, QString::fromUtf8(s));
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_text_4(struct RUBase* self_c, struct RUBase* p, const char* str, int tf, int justification_padding) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawText(*((QPointF*)p), QString::fromUtf8(str), tf, justification_padding);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_text_5(struct RUBase* self_c, struct RUBase* r, int flags, const char* text, struct RUBase* br) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawText(*((QRectF*)r), flags, QString::fromUtf8(text), (QRectF*)br);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_text_6(struct RUBase* self_c, struct RUBase* r, int flags, const char* text, struct RUBase* br) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawText(*((QRect*)r), flags, QString::fromUtf8(text), (QRect*)br);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_draw_text_7(struct RUBase* self_c, int x, int y, int w, int h, int flags, const char* text, struct RUBase* br) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->drawText(x, y, w, h, flags, QString::fromUtf8(text), (QRect*)br);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static struct RURectF painter_bounding_rect(struct RUBase* self_c, struct RUBase* rect, int flags, const char* text) {
    WRPainter* qt_value = (WRPainter*)self_c;
    auto ret_value = qt_value->boundingRect(*((QRectF*)rect), flags, QString::fromUtf8(text));
    WRRectF* new_val = new WRRectF();
    *new_val = ret_value;
    struct RURectF ctl;
    ctl.qt_data = (struct RUBase*)new_val;
    ctl.host_data = (struct RUBase*)s_host_data_lookup[(void*)new_val];
    ctl.all_funcs = &s_rect_f_all_funcs;
    return ctl;
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static struct RURect painter_bounding_rect_2(struct RUBase* self_c, struct RUBase* rect, int flags, const char* text) {
    WRPainter* qt_value = (WRPainter*)self_c;
    auto ret_value = qt_value->boundingRect(*((QRect*)rect), flags, QString::fromUtf8(text));
    WRRect* new_val = new WRRect();
    *new_val = ret_value;
    struct RURect ctl;
    ctl.qt_data = (struct RUBase*)new_val;
    ctl.host_data = (struct RUBase*)s_host_data_lookup[(void*)new_val];
    ctl.all_funcs = &s_rect_all_funcs;
    return ctl;
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static struct RURect painter_bounding_rect_3(struct RUBase* self_c, int x, int y, int w, int h, int flags, const char* text) {
    WRPainter* qt_value = (WRPainter*)self_c;
    auto ret_value = qt_value->boundingRect(x, y, w, h, flags, QString::fromUtf8(text));
    WRRect* new_val = new WRRect();
    *new_val = ret_value;
    struct RURect ctl;
    ctl.qt_data = (struct RUBase*)new_val;
    ctl.host_data = (struct RUBase*)s_host_data_lookup[(void*)new_val];
    ctl.all_funcs = &s_rect_all_funcs;
    return ctl;
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_fill_rect(struct RUBase* self_c, struct RUBase* arg0, struct RUBase* arg1) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->fillRect(*((QRectF*)arg0), *((QBrush*)arg1));
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_fill_rect_2(struct RUBase* self_c, int x, int y, int w, int h, struct RUBase* arg0) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->fillRect(x, y, w, h, *((QBrush*)arg0));
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_fill_rect_3(struct RUBase* self_c, struct RUBase* arg0, struct RUBase* arg1) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->fillRect(*((QRect*)arg0), *((QBrush*)arg1));
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_fill_rect_4(struct RUBase* self_c, struct RUBase* arg0, struct RUBase* color) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->fillRect(*((QRectF*)arg0), *((QColor*)color));
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_fill_rect_5(struct RUBase* self_c, int x, int y, int w, int h, struct RUBase* color) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->fillRect(x, y, w, h, *((QColor*)color));
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_fill_rect_6(struct RUBase* self_c, struct RUBase* arg0, struct RUBase* color) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->fillRect(*((QRect*)arg0), *((QColor*)color));
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_fill_rect_7(struct RUBase* self_c, int x, int y, int w, int h, int c) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->fillRect(x, y, w, h, (Qt::GlobalColor)s_global_color_lookup[c]);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_fill_rect_8(struct RUBase* self_c, struct RUBase* r, int c) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->fillRect(*((QRect*)r), (Qt::GlobalColor)s_global_color_lookup[c]);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_fill_rect_9(struct RUBase* self_c, struct RUBase* r, int c) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->fillRect(*((QRectF*)r), (Qt::GlobalColor)s_global_color_lookup[c]);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_fill_rect_10(struct RUBase* self_c, int x, int y, int w, int h, int style) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->fillRect(x, y, w, h, (Qt::BrushStyle)s_brush_style_lookup[style]);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_fill_rect_11(struct RUBase* self_c, struct RUBase* r, int style) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->fillRect(*((QRect*)r), (Qt::BrushStyle)s_brush_style_lookup[style]);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_fill_rect_12(struct RUBase* self_c, struct RUBase* r, int style) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->fillRect(*((QRectF*)r), (Qt::BrushStyle)s_brush_style_lookup[style]);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_erase_rect(struct RUBase* self_c, struct RUBase* arg0) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->eraseRect(*((QRectF*)arg0));
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_erase_rect_2(struct RUBase* self_c, int x, int y, int w, int h) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->eraseRect(x, y, w, h);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_erase_rect_3(struct RUBase* self_c, struct RUBase* arg0) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->eraseRect(*((QRect*)arg0));
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_set_render_hint(struct RUBase* self_c, int hint, bool on) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->setRenderHint((QPainter::RenderHint)s_render_hint_lookup[hint], on);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_set_render_hints(struct RUBase* self_c, int hints, bool on) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->setRenderHints((QPainter::RenderHints)s_render_hints_lookup[hints], on);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static int painter_render_hints(struct RUBase* self_c) {
    WRPainter* qt_value = (WRPainter*)self_c;
    auto ret_value = qt_value->renderHints();
    return s_render_hints_lookup[(int)ret_value];
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static bool painter_test_render_hint(struct RUBase* self_c, int hint) {
    WRPainter* qt_value = (WRPainter*)self_c;
    auto ret_value = qt_value->testRenderHint((QPainter::RenderHint)s_render_hint_lookup[hint]);
    return ret_value;
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static struct RUPaintEngine painter_paint_engine(struct RUBase* self_c) {
    WRPainter* qt_value = (WRPainter*)self_c;
    auto ret_value = qt_value->paintEngine();
    struct RUPaintEngine ctl;
    ctl.qt_data = (struct RUBase*)ret_value;
    ctl.host_data = (struct RUBase*)s_host_data_lookup[(void*)ret_value];
    ctl.all_funcs = &s_paint_engine_all_funcs;
    return ctl;
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_set_redirected(struct RUBase* self_c, struct RUBase* device, struct RUBase* replacement, struct RUBase* offset) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->setRedirected((QPaintDevice*)device, (QPaintDevice*)replacement, *((QPoint*)offset));
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static struct RUPaintDevice painter_redirected(struct RUBase* self_c, struct RUBase* device, struct RUBase* offset) {
    WRPainter* qt_value = (WRPainter*)self_c;
    auto ret_value = qt_value->redirected((QPaintDevice*)device, (QPoint*)offset);
    struct RUPaintDevice ctl;
    ctl.qt_data = (struct RUBase*)ret_value;
    ctl.host_data = (struct RUBase*)s_host_data_lookup[(void*)ret_value];
    ctl.all_funcs = &s_paint_device_all_funcs;
    return ctl;
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_restore_redirected(struct RUBase* self_c, struct RUBase* device) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->restoreRedirected((QPaintDevice*)device);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_begin_native_painting(struct RUBase* self_c) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->beginNativePainting();
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void painter_end_native_painting(struct RUBase* self_c) {
    WRPainter* qt_value = (WRPainter*)self_c;
    qt_value->endNativePainting();
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static struct RUPainter create_painter(
    struct RUBase* priv_data,
    RUDeleteCallback delete_callback,
    void* private_user_data)
{
    auto ctl = generic_create_func_with_delete<struct RUPainter, WRPainter>(priv_data, delete_callback, private_user_data);
    ctl.all_funcs = &s_painter_all_funcs;
    return ctl;
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static void destroy_painter(struct RUBase* priv_data) {
    destroy_generic<WRPainter>(priv_data);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

static struct RUPainter get_painter(struct RUBase* priv_data) {
    (void)priv_data;
    RUPainter ctl;
    ctl.qt_data = nullptr;
    ctl.host_data = nullptr;
    ctl.all_funcs = &s_painter_all_funcs;
    return ctl;
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

struct RUPainterFuncs s_painter_funcs = {
    destroy_painter,
    painter_device,
    painter_begin,
    painter_end,
    painter_is_active,
    painter_init_from,
    painter_set_composition_mode,
    painter_composition_mode,
    painter_font,
    painter_set_font,
    painter_set_pen,
    painter_set_pen_2,
    painter_set_pen_3,
    painter_pen,
    painter_set_brush,
    painter_set_brush_2,
    painter_brush,
    painter_set_background_mode,
    painter_background_mode,
    painter_brush_origin,
    painter_set_brush_origin,
    painter_set_brush_origin_2,
    painter_set_brush_origin_3,
    painter_set_background,
    painter_background,
    painter_opacity,
    painter_set_opacity,
    painter_clip_region,
    painter_set_clip_rect,
    painter_set_clip_rect_2,
    painter_set_clip_rect_3,
    painter_set_clip_region,
    painter_set_clipping,
    painter_has_clipping,
    painter_clip_bounding_rect,
    painter_save,
    painter_restore,
    painter_set_transform,
    painter_device_transform,
    painter_reset_transform,
    painter_set_world_transform,
    painter_world_transform,
    painter_combined_transform,
    painter_scale,
    painter_shear,
    painter_rotate,
    painter_window,
    painter_set_window,
    painter_set_window_2,
    painter_viewport,
    painter_set_viewport,
    painter_set_viewport_2,
    painter_set_view_transform_enabled,
    painter_view_transform_enabled,
    painter_draw_point,
    painter_draw_point_2,
    painter_draw_point_3,
    painter_draw_points,
    painter_draw_points_2,
    painter_draw_points_3,
    painter_draw_points_4,
    painter_draw_line,
    painter_draw_line_2,
    painter_draw_line_3,
    painter_draw_line_4,
    painter_draw_line_5,
    painter_draw_lines,
    painter_draw_lines_3,
    painter_draw_lines_7,
    painter_draw_rect,
    painter_draw_rect_2,
    painter_draw_rect_3,
    painter_draw_rects,
    painter_draw_rects_3,
    painter_draw_ellipse,
    painter_draw_ellipse_2,
    painter_draw_ellipse_3,
    painter_draw_ellipse_4,
    painter_draw_ellipse_5,
    painter_draw_polyline,
    painter_draw_polyline_2,
    painter_draw_polyline_3,
    painter_draw_polyline_4,
    painter_draw_polygon,
    painter_draw_polygon_2,
    painter_draw_polygon_3,
    painter_draw_polygon_4,
    painter_draw_convex_polygon,
    painter_draw_convex_polygon_2,
    painter_draw_convex_polygon_3,
    painter_draw_convex_polygon_4,
    painter_draw_arc,
    painter_draw_arc_2,
    painter_draw_arc_3,
    painter_draw_pie,
    painter_draw_pie_2,
    painter_draw_pie_3,
    painter_draw_chord,
    painter_draw_chord_2,
    painter_draw_chord_3,
    painter_draw_rounded_rect,
    painter_draw_rounded_rect_2,
    painter_draw_rounded_rect_3,
    painter_draw_round_rect,
    painter_draw_round_rect_2,
    painter_draw_round_rect_3,
    painter_draw_tiled_pixmap,
    painter_draw_tiled_pixmap_2,
    painter_draw_tiled_pixmap_3,
    painter_draw_pixmap,
    painter_draw_pixmap_2,
    painter_draw_pixmap_3,
    painter_draw_pixmap_4,
    painter_draw_pixmap_5,
    painter_draw_pixmap_6,
    painter_draw_pixmap_7,
    painter_draw_pixmap_8,
    painter_draw_pixmap_9,
    painter_draw_pixmap_10,
    painter_draw_pixmap_11,
    painter_draw_image,
    painter_draw_image_2,
    painter_draw_image_3,
    painter_draw_image_4,
    painter_draw_image_5,
    painter_draw_image_6,
    painter_draw_image_7,
    painter_draw_image_8,
    painter_draw_image_9,
    painter_set_layout_direction,
    painter_layout_direction,
    painter_draw_text,
    painter_draw_text_2,
    painter_draw_text_3,
    painter_draw_text_4,
    painter_draw_text_5,
    painter_draw_text_6,
    painter_draw_text_7,
    painter_bounding_rect,
    painter_bounding_rect_2,
    painter_bounding_rect_3,
    painter_fill_rect,
    painter_fill_rect_2,
    painter_fill_rect_3,
    painter_fill_rect_4,
    painter_fill_rect_5,
    painter_fill_rect_6,
    painter_fill_rect_7,
    painter_fill_rect_8,
    painter_fill_rect_9,
    painter_fill_rect_10,
    painter_fill_rect_11,
    painter_fill_rect_12,
    painter_erase_rect,
    painter_erase_rect_2,
    painter_erase_rect_3,
    painter_set_render_hint,
    painter_set_render_hints,
    painter_render_hints,
    painter_test_render_hint,
    painter_paint_engine,
    painter_set_redirected,
    painter_redirected,
    painter_restore_redirected,
    painter_begin_native_painting,
    painter_end_native_painting,
};

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

struct RUPainterAllFuncs s_painter_all_funcs = {
    &s_painter_funcs,
};