cage/util.c
Moon Sungjoon c6da94708a
Fix build error with 0.15.0 wlroots
- wlr_subsurface.parent_link is now wlr_subsurface.current.link.
  wlr_surface.subsurfaces_{above,below} is moved to wlr_surface_state.
  Reference: https://github.com/swaywm/wlroots/pull/3169

- Unnecessary to include "wlr_box.h"
  Reference: https://github.com/swaywm/wlroots/pull/3011
2021-10-31 05:19:00 +09:00

34 lines
944 B
C

/*
* Cage: A Wayland kiosk.
*
* Copyright (C) 2019 The Sway authors
*
* See the LICENSE file accompanying this file.
*/
#include "util.h"
int
scale_length(int length, int offset, float scale)
{
/**
* One does not simply multiply the width by the scale. We allow fractional
* scaling, which means the resulting scaled width might be a decimal.
* So we round it.
*
* But even this can produce undesirable results depending on the X or Y
* offset of the box. For example, with a scale of 1.5, a box with
* width=1 should not scale to 2px if its X coordinate is 1, because the
* X coordinate would have scaled to 2px.
*/
return round((offset + length) * scale) - round(offset * scale);
}
void
scale_box(struct wlr_box *box, float scale)
{
box->width = scale_length(box->width, box->x, scale);
box->height = scale_length(box->height, box->y, scale);
box->x = round(box->x * scale);
box->y = round(box->y * scale);
}