row: Move button find iteration into row
This commit is contained in:
		@ -924,7 +924,6 @@ struct _FindKeyByPositionCallbackData {
 | 
			
		||||
    EekPoint origin;
 | 
			
		||||
    gint angle;
 | 
			
		||||
    struct squeek_button *button;
 | 
			
		||||
    EekRenderer *renderer;
 | 
			
		||||
};
 | 
			
		||||
typedef struct _FindKeyByPositionCallbackData FindKeyByPositionCallbackData;
 | 
			
		||||
 | 
			
		||||
@ -936,19 +935,12 @@ sign (EekPoint *p1, EekPoint *p2, EekPoint *p3)
 | 
			
		||||
        (p2->x - p3->x) * (p1->y - p3->y);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
find_button_by_position_key_callback (struct squeek_button *button,
 | 
			
		||||
                                   gpointer user_data)
 | 
			
		||||
uint32_t
 | 
			
		||||
eek_are_bounds_inside (EekBounds bounds, EekPoint point, EekPoint origin, int32_t angle)
 | 
			
		||||
{
 | 
			
		||||
    FindKeyByPositionCallbackData *data = user_data;
 | 
			
		||||
    if (data->button) {
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
    EekPoint points[4];
 | 
			
		||||
    gboolean b1, b2, b3;
 | 
			
		||||
 | 
			
		||||
    EekBounds bounds = squeek_button_get_bounds(button);
 | 
			
		||||
 | 
			
		||||
    points[0].x = bounds.x;
 | 
			
		||||
    points[0].y = bounds.y;
 | 
			
		||||
    points[1].x = points[0].x + bounds.width;
 | 
			
		||||
@ -959,27 +951,27 @@ find_button_by_position_key_callback (struct squeek_button *button,
 | 
			
		||||
    points[3].y = points[2].y;
 | 
			
		||||
 | 
			
		||||
    for (uint i = 0; i < G_N_ELEMENTS(points); i++) {
 | 
			
		||||
        eek_point_rotate (&points[i], data->angle);
 | 
			
		||||
        points[i].x += data->origin.x;
 | 
			
		||||
        points[i].y += data->origin.y;
 | 
			
		||||
        eek_point_rotate (&points[i], angle);
 | 
			
		||||
        points[i].x += origin.x;
 | 
			
		||||
        points[i].y += origin.y;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    b1 = sign (&data->point, &points[0], &points[1]) < 0.0;
 | 
			
		||||
    b2 = sign (&data->point, &points[1], &points[2]) < 0.0;
 | 
			
		||||
    b3 = sign (&data->point, &points[2], &points[0]) < 0.0;
 | 
			
		||||
    b1 = sign (&point, &points[0], &points[1]) < 0.0;
 | 
			
		||||
    b2 = sign (&point, &points[1], &points[2]) < 0.0;
 | 
			
		||||
    b3 = sign (&point, &points[2], &points[0]) < 0.0;
 | 
			
		||||
 | 
			
		||||
    if (b1 == b2 && b2 == b3) {
 | 
			
		||||
        data->button = button;
 | 
			
		||||
        return;
 | 
			
		||||
        return 1;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    b1 = sign (&data->point, &points[2], &points[3]) < 0.0;
 | 
			
		||||
    b2 = sign (&data->point, &points[3], &points[0]) < 0.0;
 | 
			
		||||
    b3 = sign (&data->point, &points[0], &points[2]) < 0.0;
 | 
			
		||||
    b1 = sign (&point, &points[2], &points[3]) < 0.0;
 | 
			
		||||
    b2 = sign (&point, &points[3], &points[0]) < 0.0;
 | 
			
		||||
    b3 = sign (&point, &points[0], &points[2]) < 0.0;
 | 
			
		||||
 | 
			
		||||
    if (b1 == b2 && b2 == b3) {
 | 
			
		||||
        data->button = button;
 | 
			
		||||
        return 1;
 | 
			
		||||
    }
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
@ -991,16 +983,7 @@ find_button_by_position_row_callback (gpointer item,
 | 
			
		||||
    if (data->button) {
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
    EekBounds bounds = squeek_row_get_bounds(row);
 | 
			
		||||
    EekPoint origin;
 | 
			
		||||
 | 
			
		||||
    origin = data->origin;
 | 
			
		||||
    data->origin.x += bounds.x;
 | 
			
		||||
    data->origin.y += bounds.y;
 | 
			
		||||
    data->angle = squeek_row_get_angle(row);
 | 
			
		||||
 | 
			
		||||
    squeek_row_foreach(row, find_button_by_position_key_callback, data);
 | 
			
		||||
    data->origin = origin;
 | 
			
		||||
    data->button = squeek_row_find_button_by_position(row, data->point, data->origin);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
@ -1041,7 +1024,6 @@ eek_renderer_find_button_by_position (EekRenderer *renderer,
 | 
			
		||||
    data.origin.x = 0;
 | 
			
		||||
    data.origin.y = 0;
 | 
			
		||||
    data.button = NULL;
 | 
			
		||||
    data.renderer = renderer;
 | 
			
		||||
 | 
			
		||||
    eek_keyboard_foreach (view, find_button_by_position_row_callback,
 | 
			
		||||
                        &data);
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user