[PATCH weston 3/4] zoom: Convert wl_fixed_t directly into floats, to avoid truncation.
Kristian Høgsberg
hoegsberg at gmail.com
Thu Jun 7 14:15:52 PDT 2012
On Thu, Jun 07, 2012 at 09:12:31AM -0600, Scott Moreau wrote:
> This fixes center point inaccuracy for rotated surfaces. Thanks to
> Pekka Paalanen for spotting it.
Nice, applied.
Kristian
> ---
> src/compositor.c | 14 +++++++-------
> 1 files changed, 7 insertions(+), 7 deletions(-)
>
> diff --git a/src/compositor.c b/src/compositor.c
> index 7f51424..7cd1927 100644
> --- a/src/compositor.c
> +++ b/src/compositor.c
> @@ -2771,24 +2771,24 @@ weston_text_cursor_position_notify(struct weston_surface *surface,
>
> WL_EXPORT void
> weston_output_update_zoom(struct weston_output *output,
> - wl_fixed_t fx,
> - wl_fixed_t fy,
> + wl_fixed_t x,
> + wl_fixed_t y,
> uint32_t type)
> {
> - int32_t x, y;
> + float global_x, global_y;
> float trans_min, trans_max;
>
> if (output->zoom.level >= 1.0)
> return;
>
> - x = wl_fixed_to_int(fx);
> - y = wl_fixed_to_int(fy);
> + global_x = wl_fixed_to_double(x);
> + global_y = wl_fixed_to_double(y);
>
> output->zoom.trans_x =
> - (((float)(x - output->x) / output->current->width) *
> + (((global_x - output->x) / output->current->width) *
> (output->zoom.level * 2)) - output->zoom.level;
> output->zoom.trans_y =
> - (((float)(y - output->y) / output->current->height) *
> + (((global_y - output->y) / output->current->height) *
> (output->zoom.level * 2)) - output->zoom.level;
>
> if (type == ZOOM_TEXT_CURSOR) {
> --
> 1.7.7.6
>
> _______________________________________________
> wayland-devel mailing list
> wayland-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/wayland-devel
More information about the wayland-devel
mailing list