cleanup: Remove references to squeek_view

This commit is contained in:
Dorota Czaplejewicz
2019-12-07 15:42:54 +00:00
parent 51a77c41c3
commit 1c4d027af5
5 changed files with 27 additions and 79 deletions

View File

@ -57,8 +57,3 @@ LevelKeyboard *level_keyboard_new(EekboardContextService *manager, struct squeek
keyboard->manager = manager; keyboard->manager = manager;
return keyboard; return keyboard;
} }
struct squeek_view *level_keyboard_current(LevelKeyboard *keyboard)
{
return squeek_layout_get_current_view(keyboard->layout);
}

View File

@ -49,7 +49,6 @@ typedef struct _LevelKeyboard LevelKeyboard;
gchar * eek_keyboard_get_keymap gchar * eek_keyboard_get_keymap
(LevelKeyboard *keyboard); (LevelKeyboard *keyboard);
struct squeek_view *level_keyboard_current(LevelKeyboard *keyboard);
LevelKeyboard *level_keyboard_new(EekboardContextService *manager, struct squeek_layout *layout); LevelKeyboard *level_keyboard_new(EekboardContextService *manager, struct squeek_layout *layout);
void level_keyboard_deinit(LevelKeyboard *self); void level_keyboard_deinit(LevelKeyboard *self);
void level_keyboard_free(LevelKeyboard *self); void level_keyboard_free(LevelKeyboard *self);

View File

@ -42,14 +42,12 @@ typedef struct _EekRendererPrivate
GtkStyleContext *view_context; // owned GtkStyleContext *view_context; // owned
GtkStyleContext *button_context; // TODO: maybe move a copy to each button GtkStyleContext *button_context; // TODO: maybe move a copy to each button
gdouble border_width; gdouble border_width; // FIXME: border of what?
gdouble allocation_width; gdouble allocation_width;
gdouble allocation_height; gdouble allocation_height;
gdouble scale;
gint scale_factor; /* the outputs scale factor */ gint scale_factor; /* the outputs scale factor */
gint origin_x; struct transformation widget_to_layout;
gint origin_y;
PangoFontDescription *font; // owned reference PangoFontDescription *font; // owned reference
@ -65,14 +63,6 @@ void eek_render_button (EekRenderer *self,
cairo_t *cr, const struct squeek_button *button, cairo_t *cr, const struct squeek_button *button,
gboolean pressed, gboolean locked); gboolean pressed, gboolean locked);
struct _CreateKeyboardSurfaceCallbackData {
cairo_t *cr;
EekRenderer *renderer;
struct squeek_view *view;
struct squeek_row *row;
};
typedef struct _CreateKeyboardSurfaceCallbackData CreateKeyboardSurfaceCallbackData;
static void static void
render_outline (cairo_t *cr, render_outline (cairo_t *cr,
GtkStyleContext *ctx, GtkStyleContext *ctx,
@ -271,8 +261,8 @@ eek_renderer_render_keyboard (EekRenderer *self,
priv->allocation_width, priv->allocation_height); priv->allocation_width, priv->allocation_height);
cairo_save(cr); cairo_save(cr);
cairo_translate (cr, priv->origin_x, priv->origin_y); cairo_translate (cr, priv->widget_to_layout.origin_x, priv->widget_to_layout.origin_y);
cairo_scale (cr, priv->scale, priv->scale); cairo_scale (cr, priv->widget_to_layout.scale, priv->widget_to_layout.scale);
squeek_draw_layout_base_view(priv->keyboard->layout, self, cr); squeek_draw_layout_base_view(priv->keyboard->layout, self, cr);
squeek_layout_draw_all_changed(priv->keyboard->layout, self, cr); squeek_layout_draw_all_changed(priv->keyboard->layout, self, cr);
@ -403,7 +393,6 @@ eek_renderer_init (EekRenderer *self)
priv->border_width = 1.0; priv->border_width = 1.0;
priv->allocation_width = 0.0; priv->allocation_width = 0.0;
priv->allocation_height = 0.0; priv->allocation_height = 0.0;
priv->scale = 1.0;
priv->scale_factor = 1; priv->scale_factor = 1;
priv->font = NULL; priv->font = NULL;
@ -461,8 +450,6 @@ eek_renderer_set_allocation_size (EekRenderer *renderer,
gdouble width, gdouble width,
gdouble height) gdouble height)
{ {
gdouble scale;
g_return_if_fail (EEK_IS_RENDERER(renderer)); g_return_if_fail (EEK_IS_RENDERER(renderer));
g_return_if_fail (width > 0.0 && height > 0.0); g_return_if_fail (width > 0.0 && height > 0.0);
@ -471,19 +458,9 @@ eek_renderer_set_allocation_size (EekRenderer *renderer,
priv->allocation_width = width; priv->allocation_width = width;
priv->allocation_height = height; priv->allocation_height = height;
/* Calculate a scale factor to use when rendering the keyboard into the priv->widget_to_layout = squeek_layout_calculate_transformation(
available space. */ priv->keyboard->layout,
EekBounds bounds = squeek_view_get_bounds (level_keyboard_current(priv->keyboard)); priv->allocation_width, priv->allocation_height);
gdouble w = (bounds.x * 2) + bounds.width;
gdouble h = (bounds.y * 2) + bounds.height;
scale = MIN(width / w, height / h);
priv->scale = scale;
/* Set the rendering offset in widget coordinates to center the keyboard */
priv->origin_x = (gint)floor((width - (scale * w)) / 2);
priv->origin_y = (gint)floor((height - (scale * h)) / 2);
// This is where size-dependent surfaces would be released // This is where size-dependent surfaces would be released
} }
@ -574,10 +551,5 @@ eek_renderer_get_transformation (EekRenderer *renderer) {
g_return_val_if_fail (EEK_IS_RENDERER(renderer), failed); g_return_val_if_fail (EEK_IS_RENDERER(renderer), failed);
EekRendererPrivate *priv = eek_renderer_get_instance_private (renderer); EekRendererPrivate *priv = eek_renderer_get_instance_private (renderer);
struct transformation ret = { return priv->widget_to_layout;
.origin_x = priv->origin_x,
.origin_y = priv->origin_y,
.scale = priv->scale,
};
return ret;
} }

View File

@ -14,13 +14,8 @@ enum squeek_arrangement_kind {
ARRANGEMENT_KIND_WIDE = 1, ARRANGEMENT_KIND_WIDE = 1,
}; };
struct squeek_view;
struct squeek_layout; struct squeek_layout;
int32_t squeek_row_get_angle(const struct squeek_row*);
EekBounds squeek_row_get_bounds(const struct squeek_row*);
EekBounds squeek_button_get_bounds(const struct squeek_button*); EekBounds squeek_button_get_bounds(const struct squeek_button*);
const char *squeek_button_get_label(const struct squeek_button*); const char *squeek_button_get_label(const struct squeek_button*);
const char *squeek_button_get_icon_name(const struct squeek_button*); const char *squeek_button_get_icon_name(const struct squeek_button*);
@ -29,12 +24,12 @@ const char *squeek_button_get_outline_name(const struct squeek_button*);
void squeek_button_print(const struct squeek_button* button); void squeek_button_print(const struct squeek_button* button);
struct transformation squeek_layout_calculate_transformation(
EekBounds squeek_view_get_bounds(const struct squeek_view*); const struct squeek_layout *layout,
double allocation_width, double allocation_size);
void void
squeek_layout_place_contents(struct squeek_layout*); squeek_layout_place_contents(struct squeek_layout*);
struct squeek_view *squeek_layout_get_current_view(struct squeek_layout*);
struct squeek_layout *squeek_load_layout(const char *name, uint32_t type); struct squeek_layout *squeek_load_layout(const char *name, uint32_t type);
const char *squeek_layout_get_keymap(const struct squeek_layout*); const char *squeek_layout_get_keymap(const struct squeek_layout*);

View File

@ -129,29 +129,6 @@ pub mod c {
// The following defined in Rust. TODO: wrap naked pointers to Rust data inside RefCells to prevent multiple writers // The following defined in Rust. TODO: wrap naked pointers to Rust data inside RefCells to prevent multiple writers
#[no_mangle]
pub extern "C"
fn squeek_view_get_bounds(view: *const ::layout::View) -> Bounds {
unsafe { &*view }.bounds.clone()
}
#[no_mangle]
pub extern "C"
fn squeek_row_get_angle(row: *const ::layout::Row) -> i32 {
let row = unsafe { &*row };
row.angle
}
#[no_mangle]
pub extern "C"
fn squeek_row_get_bounds(row: *const ::layout::Row) -> Bounds {
let row = unsafe { &*row };
match &row.bounds {
Some(bounds) => bounds.clone(),
None => panic!("Row doesn't have any bounds yet"),
}
}
#[no_mangle] #[no_mangle]
pub extern "C" pub extern "C"
fn squeek_button_get_bounds(button: *const ::layout::Button) -> Bounds { fn squeek_button_get_bounds(button: *const ::layout::Button) -> Bounds {
@ -207,16 +184,26 @@ pub mod c {
println!("{:?}", button); println!("{:?}", button);
} }
/// Positions the layout within the available space
#[no_mangle] #[no_mangle]
pub extern "C" pub extern "C"
fn squeek_layout_get_current_view(layout: *const Layout) -> *const View { fn squeek_layout_calculate_transformation(
layout: *const Layout,
allocation_width: f64,
allocation_height: f64,
) -> Transformation {
let layout = unsafe { &*layout }; let layout = unsafe { &*layout };
let view_name = layout.current_view.clone(); let bounds = &layout.get_current_view().bounds;
layout.views.get(&view_name) let h_scale = allocation_width / bounds.width;
.expect("Current view doesn't exist") let v_scale = allocation_height / bounds.height;
.as_ref() as *const View let scale = if h_scale > v_scale { h_scale } else { v_scale };
Transformation {
origin_x: allocation_width - (scale * bounds.width) / 2.0,
origin_y: allocation_height - (scale * bounds.height) / 2.0,
scale: scale,
}
} }
#[no_mangle] #[no_mangle]
pub extern "C" pub extern "C"
fn squeek_layout_get_keymap(layout: *const Layout) -> *const c_char { fn squeek_layout_get_keymap(layout: *const Layout) -> *const c_char {