From 6254bcd033d330268077ec5683c5bee4f29a720f Mon Sep 17 00:00:00 2001
From: "Devin J. Pohly" <djpohly@gmail.com>
Date: Thu, 23 Apr 2020 23:52:27 -0500
Subject: factor out scalebox()

May switch to the version from sway if that seems like a good idea at
some point.
---
 dwl.c | 19 +++++++++++++++----
 1 file changed, 15 insertions(+), 4 deletions(-)

diff --git a/dwl.c b/dwl.c
index 12058c9..80a3d49 100644
--- a/dwl.c
+++ b/dwl.c
@@ -157,6 +157,7 @@ static void rendermon(struct wl_listener *listener, void *data);
 static void resize(Client *c, int x, int y, int w, int h);
 static void resizemouse(const Arg *arg);
 static void run(char *startup_cmd);
+static void scalebox(struct wlr_box *box, float scale);
 static Client *selclient(void);
 static void sendmon(Client *c, Monitor *m);
 static void setcursor(struct wl_listener *listener, void *data);
@@ -800,11 +801,12 @@ render(struct wlr_surface *surface, int sx, int sy, void *data)
 	/* We also have to apply the scale factor for HiDPI outputs. This is only
 	 * part of the puzzle, dwl does not fully support HiDPI. */
 	struct wlr_box obox = {
-		.x = ox * output->scale,
-		.y = oy * output->scale,
-		.width = surface->current.width * output->scale,
-		.height = surface->current.height * output->scale,
+		.x = ox,
+		.y = oy,
+		.width = surface->current.width,
+		.height = surface->current.height,
 	};
+	scalebox(&obox, output->scale);
 
 	/*
 	 * Those familiar with OpenGL are also familiar with the role of matrices
@@ -993,6 +995,15 @@ run(char *startup_cmd)
 	}
 }
 
+void
+scalebox(struct wlr_box *box, float scale)
+{
+	box->x *= scale;
+	box->y *= scale;
+	box->width *= scale;
+	box->height *= scale;
+}
+
 Client *
 selclient(void)
 {
-- 
cgit v1.2.3