1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
// Take a look at the license at the top of the repository in the LICENSE file.
use crate::DrawContext;
use glib::translate::*;
use glib::IsA;
pub trait DrawContextExtManual: 'static {
/// Retrieves the region that is currently being repainted.
///
/// After a call to [``DrawContextExt::begin_frame()``][crate::prelude::`DrawContextExt::begin_frame()`] this function will
/// return a union of the region passed to that function and the area of the
/// surface that the `self` determined needs to be repainted.
///
/// If `self` is not in between calls to [``DrawContextExt::begin_frame()``][crate::prelude::`DrawContextExt::begin_frame()`]
/// and [``DrawContextExt::end_frame()``][crate::prelude::`DrawContextExt::end_frame()`], [`None`] will be returned.
///
/// # Returns
///
/// a Cairo region
#[doc(alias = "gdk_draw_context_get_frame_region")]
#[doc(alias = "get_frame_region")]
fn frame_region(&self) -> Option<cairo::Region>;
}
impl<O: IsA<DrawContext>> DrawContextExtManual for O {
fn frame_region(&self) -> Option<cairo::Region> {
unsafe {
from_glib_none(
ffi::gdk_draw_context_get_frame_region(self.as_ref().to_glib_none().0)
as *mut cairo::ffi::cairo_region_t,
)
}
}
}