compositor: gather buffer_transform and _scale into a struct

Gather the variables affecting the coordinate transformations between
buffer and local coordinates into a new struct weston_buffer_viewport.

This will be more useful later, when the crop & scale extension is
implemented.
diff --git a/src/compositor.c b/src/compositor.c
index 4668c2a..59b4a53 100644
--- a/src/compositor.c
+++ b/src/compositor.c
@@ -399,10 +399,9 @@
 	surface->compositor = compositor;
 	surface->ref_count = 1;
 
-	surface->buffer_transform = WL_OUTPUT_TRANSFORM_NORMAL;
-	surface->buffer_scale = 1;
-	surface->pending.buffer_transform = surface->buffer_transform;
-	surface->pending.buffer_scale = surface->buffer_scale;
+	surface->buffer_viewport.transform = WL_OUTPUT_TRANSFORM_NORMAL;
+	surface->buffer_viewport.scale = 1;
+	surface->pending.buffer_viewport = surface->buffer_viewport;
 	surface->output = NULL;
 	surface->pending.newly_attached = 0;
 
@@ -638,8 +637,8 @@
 {
 	weston_transformed_coord(surface->width,
 				 surface->height,
-				 surface->buffer_transform,
-				 surface->buffer_scale,
+				 surface->buffer_viewport.transform,
+				 surface->buffer_viewport.scale,
 				 sx, sy, bx, by);
 }
 
@@ -651,8 +650,8 @@
 
 	weston_transformed_coord(surface->width,
 				 surface->height,
-				 surface->buffer_transform,
-				 surface->buffer_scale,
+				 surface->buffer_viewport.transform,
+				 surface->buffer_viewport.scale,
 				 sx, sy, &bxf, &byf);
 	*bx = floorf(bxf);
 	*by = floorf(byf);
@@ -664,8 +663,8 @@
 {
 	return weston_transformed_rect(surface->width,
 				       surface->height,
-				       surface->buffer_transform,
-				       surface->buffer_scale,
+				       surface->buffer_viewport.transform,
+				       surface->buffer_viewport.scale,
 				       rect);
 }
 
@@ -1145,7 +1144,7 @@
 weston_surface_buffer_width(struct weston_surface *surface)
 {
 	int32_t width;
-	switch (surface->buffer_transform) {
+	switch (surface->buffer_viewport.transform) {
 	case WL_OUTPUT_TRANSFORM_90:
 	case WL_OUTPUT_TRANSFORM_270:
 	case WL_OUTPUT_TRANSFORM_FLIPPED_90:
@@ -1156,14 +1155,14 @@
 		width = surface->buffer_ref.buffer->width;
                 break;
 	}
-	return width / surface->buffer_scale;
+	return width / surface->buffer_viewport.scale;
 }
 
 WL_EXPORT int32_t
 weston_surface_buffer_height(struct weston_surface *surface)
 {
 	int32_t height;
-	switch (surface->buffer_transform) {
+	switch (surface->buffer_viewport.transform) {
 	case WL_OUTPUT_TRANSFORM_90:
 	case WL_OUTPUT_TRANSFORM_270:
 	case WL_OUTPUT_TRANSFORM_FLIPPED_90:
@@ -1174,7 +1173,7 @@
 		height = surface->buffer_ref.buffer->height;
                 break;
 	}
-	return height / surface->buffer_scale;
+	return height / surface->buffer_viewport.scale;
 }
 
 WL_EXPORT uint32_t
@@ -1963,10 +1962,8 @@
 	pixman_region32_t opaque;
 
 	/* wl_surface.set_buffer_transform */
-	surface->buffer_transform = surface->pending.buffer_transform;
-
 	/* wl_surface.set_buffer_scale */
-	surface->buffer_scale = surface->pending.buffer_scale;
+	surface->buffer_viewport = surface->pending.buffer_viewport;
 
 	/* wl_surface.attach */
 	if (surface->pending.buffer || surface->pending.newly_attached)
@@ -2066,7 +2063,7 @@
 {
 	struct weston_surface *surface = wl_resource_get_user_data(resource);
 
-	surface->pending.buffer_transform = transform;
+	surface->pending.buffer_viewport.transform = transform;
 }
 
 static void
@@ -2076,7 +2073,7 @@
 {
 	struct weston_surface *surface = wl_resource_get_user_data(resource);
 
-	surface->pending.buffer_scale = scale;
+	surface->pending.buffer_viewport.scale = scale;
 }
 
 static const struct wl_surface_interface surface_interface = {
@@ -2197,10 +2194,8 @@
 	pixman_region32_t opaque;
 
 	/* wl_surface.set_buffer_transform */
-	surface->buffer_transform = sub->cached.buffer_transform;
-
 	/* wl_surface.set_buffer_scale */
-	surface->buffer_scale = sub->cached.buffer_scale;
+	surface->buffer_viewport = sub->cached.buffer_viewport;
 
 	/* wl_surface.attach */
 	if (sub->cached.buffer_ref.buffer || sub->cached.newly_attached)
@@ -2293,8 +2288,7 @@
 	surface->pending.sy = 0;
 	surface->pending.newly_attached = 0;
 
-	sub->cached.buffer_transform = surface->pending.buffer_transform;
-	sub->cached.buffer_scale = surface->pending.buffer_scale;
+	sub->cached.buffer_viewport = surface->pending.buffer_viewport;
 
 	pixman_region32_copy(&sub->cached.opaque, &surface->pending.opaque);