From 3668cc12da649345be66e0a7381f9fab1678b7ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mi=C8=9Bca=20Dumitru?= Date: Tue, 22 Aug 2023 22:07:26 +0300 Subject: [PATCH] gdk: Seal GdkCairoContextExt and move method impls within trait definition --- gdk4/src/cairo_interaction.rs | 52 ++++++++++++++++------------------- 1 file changed, 23 insertions(+), 29 deletions(-) diff --git a/gdk4/src/cairo_interaction.rs b/gdk4/src/cairo_interaction.rs index fc949ccd0011..5cb386012720 100644 --- a/gdk4/src/cairo_interaction.rs +++ b/gdk4/src/cairo_interaction.rs @@ -24,7 +24,7 @@ impl GdkCairoSurfaceExt for cairo::Surface { // rustdoc-stripper-ignore-next /// Trait containing integration methods with [`cairo::Context`]. -pub trait GdkCairoContextExt { +pub trait GdkCairoContextExt: sealed::Sealed { // rustdoc-stripper-ignore-next /// # Safety /// @@ -32,33 +32,6 @@ pub trait GdkCairoContextExt { /// is a valid GL resource. #[doc(alias = "gdk_cairo_draw_from_gl")] #[allow(clippy::too_many_arguments)] - unsafe fn draw_from_gl( - &self, - surface: &Surface, - source: i32, - source_type: i32, - buffer_scale: i32, - x: i32, - y: i32, - width: i32, - height: i32, - ); - - #[doc(alias = "gdk_cairo_set_source_rgba")] - #[doc(alias = "set_source_rgba")] - fn set_source_color(&self, rgba: &RGBA); - - #[doc(alias = "gdk_cairo_set_source_pixbuf")] - fn set_source_pixbuf(&self, pixbuf: &Pixbuf, x: f64, y: f64); - - #[doc(alias = "gdk_cairo_rectangle")] - fn add_rectangle(&self, rectangle: &Rectangle); - - #[doc(alias = "gdk_cairo_region")] - fn add_region(&self, region: &Region); -} - -impl GdkCairoContextExt for Context { unsafe fn draw_from_gl( &self, surface: &Surface, @@ -72,7 +45,7 @@ impl GdkCairoContextExt for Context { ) { skip_assert_initialized!(); ffi::gdk_cairo_draw_from_gl( - mut_override(self.to_glib_none().0), + mut_override(self.into_glib()), surface.to_glib_none().0, source, source_type, @@ -84,27 +57,48 @@ impl GdkCairoContextExt for Context { ); } + #[doc(alias = "gdk_cairo_set_source_rgba")] + #[doc(alias = "set_source_rgba")] fn set_source_color(&self, rgba: &RGBA) { unsafe { ffi::gdk_cairo_set_source_rgba(self.to_glib_none().0, rgba.to_glib_none().0); } } + #[doc(alias = "gdk_cairo_set_source_pixbuf")] fn set_source_pixbuf(&self, pixbuf: &Pixbuf, x: f64, y: f64) { unsafe { ffi::gdk_cairo_set_source_pixbuf(self.to_glib_none().0, pixbuf.to_glib_none().0, x, y); } } + #[doc(alias = "gdk_cairo_rectangle")] fn add_rectangle(&self, rectangle: &Rectangle) { unsafe { ffi::gdk_cairo_rectangle(self.to_glib_none().0, rectangle.to_glib_none().0); } } + #[doc(alias = "gdk_cairo_region")] fn add_region(&self, region: &Region) { unsafe { ffi::gdk_cairo_region(self.to_glib_none().0, region.to_glib_none().0); } } } + +impl GdkCairoContextExt for Context {} + +mod sealed { + use cairo::{ffi::cairo_t, Context}; + + pub trait Sealed { + fn into_glib(&self) -> *mut cairo_t; + } + + impl Sealed for Context { + fn into_glib(&self) -> *mut cairo_t { + self.into_glib_none().0 + } + } +}