cleanup: Remove unused single frame draw
This commit is contained in:
@ -4,11 +4,9 @@ use cairo;
|
|||||||
use std::cell::RefCell;
|
use std::cell::RefCell;
|
||||||
|
|
||||||
use ::keyboard;
|
use ::keyboard;
|
||||||
use ::layout;
|
|
||||||
use ::layout::{ Button, Layout };
|
use ::layout::{ Button, Layout };
|
||||||
use ::layout::c::{ EekGtkKeyboard, Point };
|
use ::layout::c::{ EekGtkKeyboard, Point };
|
||||||
|
|
||||||
use gdk::{ WindowExt, DrawingContextExt };
|
|
||||||
use glib::translate::FromGlibPtrNone;
|
use glib::translate::FromGlibPtrNone;
|
||||||
use gtk::WidgetExt;
|
use gtk::WidgetExt;
|
||||||
|
|
||||||
@ -37,14 +35,6 @@ mod c {
|
|||||||
pressed: u64,
|
pressed: u64,
|
||||||
locked: u64,
|
locked: u64,
|
||||||
);
|
);
|
||||||
|
|
||||||
pub fn eek_gtk_keyboard_get_renderer(
|
|
||||||
keyboard: EekGtkKeyboard,
|
|
||||||
) -> EekRenderer;
|
|
||||||
|
|
||||||
pub fn eek_renderer_get_transformation(
|
|
||||||
renderer: EekRenderer,
|
|
||||||
) -> layout::c::Transformation;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
@ -134,46 +124,3 @@ pub fn queue_redraw(keyboard: EekGtkKeyboard) {
|
|||||||
let widget = unsafe { gtk::Widget::from_glib_none(keyboard.0) };
|
let widget = unsafe { gtk::Widget::from_glib_none(keyboard.0) };
|
||||||
widget.queue_draw();
|
widget.queue_draw();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Renders a single frame
|
|
||||||
/// Opens a frame on `keyboard`'s `GdkWindow`, attempt to get a drawing context,
|
|
||||||
/// calls `f`, closes the frame.
|
|
||||||
/// If the drawing context was successfully retrieved, returns `f` call result.
|
|
||||||
pub fn render_as_frame<F, T>(keyboard: EekGtkKeyboard, mut f: F) -> Option<T>
|
|
||||||
where F: FnMut(c::EekRenderer, &cairo::Context) -> T
|
|
||||||
{
|
|
||||||
let renderer = unsafe { c::eek_gtk_keyboard_get_renderer(keyboard) };
|
|
||||||
|
|
||||||
let widget = unsafe { gtk::Widget::from_glib_none(keyboard.0) };
|
|
||||||
widget.get_window()
|
|
||||||
.and_then(|window| {
|
|
||||||
// Need to split the `.and_then` chain here
|
|
||||||
// because `window` needs to be in scope
|
|
||||||
// for the references deeper inside.
|
|
||||||
window.get_clip_region()
|
|
||||||
// contrary to the docs, `Region` gets destroyed automatically
|
|
||||||
.and_then(|region| window.begin_draw_frame(®ion))
|
|
||||||
.and_then(|drawctx| {
|
|
||||||
let ret: Option<T> = drawctx.get_cairo_context()
|
|
||||||
.map(|cr| {
|
|
||||||
let transformation = unsafe {
|
|
||||||
c::eek_renderer_get_transformation(renderer)
|
|
||||||
};
|
|
||||||
cr.translate(
|
|
||||||
transformation.origin_x,
|
|
||||||
transformation.origin_y,
|
|
||||||
);
|
|
||||||
cr.scale(
|
|
||||||
transformation.scale,
|
|
||||||
transformation.scale,
|
|
||||||
);
|
|
||||||
queue_redraw(keyboard);
|
|
||||||
f(renderer, &cr) // finally!
|
|
||||||
});
|
|
||||||
// This must always happen after `begin_draw_frame`,
|
|
||||||
// enven if `get_cairo_context` fails.
|
|
||||||
window.end_draw_frame(&drawctx);
|
|
||||||
ret
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|||||||
Reference in New Issue
Block a user