static void _rut_fold_init_type(void) { static rut_graphable_vtable_t graphable_vtable = { NULL, /* child removed */ NULL, /* child added */ NULL /* parent changed */ }; static rut_sizable_vtable_t sizable_vtable = { rut_composite_sizable_set_size, rut_composite_sizable_get_size, rut_composite_sizable_get_preferred_width, rut_composite_sizable_get_preferred_height, rut_composite_sizable_add_preferred_size_callback }; rut_type_t *type = &rut_fold_type; #define TYPE rut_fold_t rut_type_init(type, C_STRINGIFY(TYPE), _rut_fold_free); rut_type_add_trait(type, RUT_TRAIT_ID_GRAPHABLE, offsetof(TYPE, graphable), &graphable_vtable); rut_type_add_trait(type, RUT_TRAIT_ID_SIZABLE, 0, /* no implied properties */ &sizable_vtable); rut_type_add_trait(type, RUT_TRAIT_ID_COMPOSITE_SIZABLE, offsetof(TYPE, vbox), NULL); /* no vtable */ rut_type_add_trait(type, RUT_TRAIT_ID_INTROSPECTABLE, offsetof(TYPE, introspectable), NULL); /* no implied vtable */ #undef TYPE }
static void _rut_rectangle_init_type(void) { static rut_graphable_vtable_t graphable_vtable = { NULL, /* child remove */ NULL, /* child add */ NULL /* parent changed */ }; static rut_paintable_vtable_t paintable_vtable = { _rut_rectangle_paint }; static rut_sizable_vtable_t sizable_vtable = { rut_rectangle_set_size, rut_rectangle_get_size, rut_simple_sizable_get_preferred_width, rut_simple_sizable_get_preferred_height, NULL /* add_preferred_size_callback */ }; rut_type_t *type = &rut_rectangle_type; #define TYPE rut_rectangle_t rut_type_init(type, C_STRINGIFY(TYPE), _rut_rectangle_free); rut_type_add_trait(type, RUT_TRAIT_ID_GRAPHABLE, offsetof(TYPE, graphable), &graphable_vtable); rut_type_add_trait(type, RUT_TRAIT_ID_PAINTABLE, offsetof(TYPE, paintable), &paintable_vtable); rut_type_add_trait(type, RUT_TRAIT_ID_SIZABLE, 0, /* no implied properties */ &sizable_vtable); #undef TYPE }