cleanup: Remove unused single frame draw
This commit is contained in:
@ -4,11 +4,9 @@ use cairo;
|
||||
use std::cell::RefCell;
|
||||
|
||||
use ::keyboard;
|
||||
use ::layout;
|
||||
use ::layout::{ Button, Layout };
|
||||
use ::layout::c::{ EekGtkKeyboard, Point };
|
||||
|
||||
use gdk::{ WindowExt, DrawingContextExt };
|
||||
use glib::translate::FromGlibPtrNone;
|
||||
use gtk::WidgetExt;
|
||||
|
||||
@ -37,14 +35,6 @@ mod c {
|
||||
pressed: 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]
|
||||
@ -134,46 +124,3 @@ pub fn queue_redraw(keyboard: EekGtkKeyboard) {
|
||||
let widget = unsafe { gtk::Widget::from_glib_none(keyboard.0) };
|
||||
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