Introduce output zoom.

Ideally, we would want to use <modifier>+Scroll binding but that will have
to wait for axis events. For now we just use keybindings. Zoom in/out with
Super+Up/Down.
diff --git a/src/compositor.h b/src/compositor.h
index ac87f89..1888ea6 100644
--- a/src/compositor.h
+++ b/src/compositor.h
@@ -54,6 +54,14 @@
 	int32_t left, right, top, bottom;
 };
 
+struct weston_output_zoom {
+	int active;
+	float increment;
+	float level;
+	float magnification;
+	float trans_x, trans_y;
+};
+
 struct weston_output {
 	struct wl_list link;
 	struct weston_compositor *compositor;
@@ -66,6 +74,8 @@
 	uint32_t flags;
 	int repaint_needed;
 	int repaint_scheduled;
+	struct weston_output_zoom zoom;
+	int dirty;
 
 	char *make, *model;
 	uint32_t subpixel;
@@ -420,6 +430,10 @@
 void
 weston_compositor_shutdown(struct weston_compositor *ec);
 void
+weston_output_update_zoom(struct weston_output *output, int x, int y);
+void
+weston_output_update_matrix(struct weston_output *output);
+void
 weston_output_move(struct weston_output *output, int x, int y);
 void
 weston_output_init(struct weston_output *output, struct weston_compositor *c,