diff --git a/include/wlr/render/interface.h b/include/wlr/render/interface.h index 85a98202..709ae481 100644 --- a/include/wlr/render/interface.h +++ b/include/wlr/render/interface.h @@ -79,4 +79,10 @@ struct wlr_render_pass_impl { const struct wlr_render_rect_options *options); }; +void wlr_render_texture_options_get_src_box(const struct wlr_render_texture_options *options, + struct wlr_fbox *box); +void wlr_render_texture_options_get_dst_box(const struct wlr_render_texture_options *options, + struct wlr_box *box); +float wlr_render_texture_options_get_alpha(const struct wlr_render_texture_options *options); + #endif diff --git a/render/pass.c b/render/pass.c index c1b88b8d..f3309668 100644 --- a/render/pass.c +++ b/render/pass.c @@ -23,3 +23,30 @@ void wlr_render_pass_add_rect(struct wlr_render_pass *render_pass, const struct wlr_render_rect_options *options) { render_pass->impl->add_rect(render_pass, options); } + +void wlr_render_texture_options_get_src_box(const struct wlr_render_texture_options *options, + struct wlr_fbox *box) { + *box = options->src_box; + if (wlr_fbox_empty(box)) { + *box = (struct wlr_fbox){ + .width = options->texture->width, + .height = options->texture->height, + }; + } +} + +void wlr_render_texture_options_get_dst_box(const struct wlr_render_texture_options *options, + struct wlr_box *box) { + *box = options->dst_box; + if (wlr_box_empty(box)) { + box->width = options->texture->width; + box->height = options->texture->height; + } +} + +float wlr_render_texture_options_get_alpha(const struct wlr_render_texture_options *options) { + if (options->alpha == NULL) { + return 1; + } + return *options->alpha; +}