aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/ld-lua.c15
-rw-r--r--src/ld-symbol.h12
-rw-r--r--src/ld-window-main.c4
3 files changed, 19 insertions, 12 deletions
diff --git a/src/ld-lua.c b/src/ld-lua.c
index 54ba0c4..4ed68eb 100644
--- a/src/ld-lua.c
+++ b/src/ld-lua.c
@@ -501,28 +501,35 @@ get_translation (lua_State *L, int index)
static gboolean
read_symbol_area (lua_State *L, int index, LdSymbolArea *area)
{
+ lua_Number x1, x2, y1, y2;
+
if (lua_objlen (L, index) != 4)
return FALSE;
lua_rawgeti (L, index, 1);
if (!lua_isnumber (L, -1))
return FALSE;
- area->x1 = lua_tonumber (L, -1);
+ x1 = lua_tonumber (L, -1);
lua_rawgeti (L, index, 2);
if (!lua_isnumber (L, -1))
return FALSE;
- area->y1 = lua_tonumber (L, -1);
+ y1 = lua_tonumber (L, -1);
lua_rawgeti (L, index, 3);
if (!lua_isnumber (L, -1))
return FALSE;
- area->x2 = lua_tonumber (L, -1);
+ x2 = lua_tonumber (L, -1);
lua_rawgeti (L, index, 4);
if (!lua_isnumber (L, -1))
return FALSE;
- area->y2 = lua_tonumber (L, -1);
+ y2 = lua_tonumber (L, -1);
+
+ area->x = MIN (x1, x2);
+ area->y = MIN (y1, y2);
+ area->width = ABS (x2 - x1);
+ area->height = ABS (y2 - y1);
return TRUE;
}
diff --git a/src/ld-symbol.h b/src/ld-symbol.h
index 9eff89b..0290720 100644
--- a/src/ld-symbol.h
+++ b/src/ld-symbol.h
@@ -20,18 +20,18 @@ typedef struct _LdSymbolArea LdSymbolArea;
/**
* LdSymbolArea:
- * @x1: Left-top X coordinate.
- * @y1: Left-top Y coordinate.
- * @x2: Right-bottom X coordinate.
- * @y2: Right-bottom Y coordinate.
+ * @x: Left-top X coordinate.
+ * @y: Left-top Y coordinate.
+ * @width: Width of the area, must be positive.
+ * @height: Height of the area, must be positive.
*
* Defines the area of the symbol relative to the center of the symbol,
* which is at the (0, 0) coordinates.
*/
struct _LdSymbolArea
{
- gdouble x1, y1;
- gdouble x2, y2;
+ gdouble x, y;
+ gdouble width, height;
};
diff --git a/src/ld-window-main.c b/src/ld-window-main.c
index 0597d33..bcacf3f 100644
--- a/src/ld-window-main.c
+++ b/src/ld-window-main.c
@@ -509,9 +509,9 @@ on_category_toggle (GtkToggleButton *toggle_button, gpointer user_data)
* in the center of it's symbol menu item.
*/
item->scale = data->menu_height * 0.5
- / MAX (ABS (area.y1), ABS (area.y2)) / 2;
+ / MAX (ABS (area.y), ABS (area.y + area.height)) / 2;
/* FIXME: The width is probably wrong (related to the center). */
- item->width = item->scale * ABS (area.x2 - area.x1)
+ item->width = item->scale * area.width
+ data->menu_height * 0.5;
menu_width += item++->width;