ivi-shell: transform refactoring, remove transform part of ivi_layout_surface and...
authorNobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Wed, 15 Jul 2015 05:05:10 +0000 (14:05 +0900)
committerPekka Paalanen <pekka.paalanen@collabora.co.uk>
Thu, 16 Jul 2015 08:58:14 +0000 (11:58 +0300)
To refactor transform of ivi_layout_surface and ivi_layout_surface to be
more readable logical flow.

Remove following parts once,
* definition of weston_transform in ivi_layout_surface
* update_layer_orientation
* update_layer_position
* update_surface_position
* update_surface_orientation
* update_scale

Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
ivi-shell/ivi-layout-private.h
ivi-shell/ivi-layout.c

index cf2db7d56aa7568b07bfe54fe111da644a6e4124..4debfd6059b29ec7e924ba2b2926a941df681289 100644 (file)
@@ -39,11 +39,6 @@ struct ivi_layout_surface {
        struct ivi_layout *layout;
        struct weston_surface *surface;
 
-       struct weston_transform surface_rotation;
-       struct weston_transform layer_rotation;
-       struct weston_transform surface_pos;
-       struct weston_transform layer_pos;
-       struct weston_transform scaling;
 
        struct ivi_layout_surface_properties prop;
        uint32_t event_mask;
index fdba0dded1851b082de85aadf26f352065c9c8a5..8e0a9f1487a1d66d43a08027d41d0ae1b291678f 100644 (file)
@@ -348,12 +348,6 @@ ivi_layout_surface_destroy(struct ivi_layout_surface *ivisurf)
                return;
        }
 
-       wl_list_remove(&ivisurf->surface_rotation.link);
-       wl_list_remove(&ivisurf->layer_rotation.link);
-       wl_list_remove(&ivisurf->surface_pos.link);
-       wl_list_remove(&ivisurf->layer_pos.link);
-       wl_list_remove(&ivisurf->scaling.link);
-
        wl_list_remove(&ivisurf->pending.link);
        wl_list_remove(&ivisurf->order.link);
        wl_list_remove(&ivisurf->link);
@@ -365,8 +359,6 @@ ivi_layout_surface_destroy(struct ivi_layout_surface *ivisurf)
 
        ivi_layout_surface_remove_notification(ivisurf);
 
-       ivisurf->surface = NULL;
-
        free(ivisurf);
 }
 
@@ -493,265 +485,6 @@ update_opacity(struct ivi_layout_layer *ivilayer,
        }
 }
 
-static void
-update_surface_orientation(struct ivi_layout_layer *ivilayer,
-                          struct ivi_layout_surface *ivisurf)
-{
-       struct weston_view *view;
-       struct weston_matrix  *matrix = &ivisurf->surface_rotation.matrix;
-       float width  = 0.0f;
-       float height = 0.0f;
-       float v_sin  = 0.0f;
-       float v_cos  = 0.0f;
-       float cx = 0.0f;
-       float cy = 0.0f;
-       float sx = 1.0f;
-       float sy = 1.0f;
-
-       wl_list_for_each(view, &ivisurf->surface->views, surface_link) {
-               if (view != NULL) {
-                       break;
-               }
-       }
-
-       if (view == NULL) {
-               return;
-       }
-
-       if ((ivilayer->prop.dest_width == 0) ||
-           (ivilayer->prop.dest_height == 0)) {
-               return;
-       }
-       width  = (float)ivilayer->prop.dest_width;
-       height = (float)ivilayer->prop.dest_height;
-
-       switch (ivisurf->prop.orientation) {
-       case WL_OUTPUT_TRANSFORM_NORMAL:
-               v_sin = 0.0f;
-               v_cos = 1.0f;
-               break;
-       case WL_OUTPUT_TRANSFORM_90:
-               v_sin = 1.0f;
-               v_cos = 0.0f;
-               sx = width / height;
-               sy = height / width;
-               break;
-       case WL_OUTPUT_TRANSFORM_180:
-               v_sin = 0.0f;
-               v_cos = -1.0f;
-               break;
-       case WL_OUTPUT_TRANSFORM_270:
-       default:
-               v_sin = -1.0f;
-               v_cos = 0.0f;
-               sx = width / height;
-               sy = height / width;
-               break;
-       }
-       wl_list_remove(&ivisurf->surface_rotation.link);
-       weston_view_geometry_dirty(view);
-
-       weston_matrix_init(matrix);
-       cx = 0.5f * width;
-       cy = 0.5f * height;
-       weston_matrix_translate(matrix, -cx, -cy, 0.0f);
-       weston_matrix_rotate_xy(matrix, v_cos, v_sin);
-       weston_matrix_scale(matrix, sx, sy, 1.0);
-       weston_matrix_translate(matrix, cx, cy, 0.0f);
-       wl_list_insert(&view->geometry.transformation_list,
-                      &ivisurf->surface_rotation.link);
-
-       weston_view_set_transform_parent(view, NULL);
-       weston_view_update_transform(view);
-}
-
-static void
-update_layer_orientation(struct ivi_layout_layer *ivilayer,
-                        struct ivi_layout_surface *ivisurf)
-{
-       struct weston_surface *es = ivisurf->surface;
-       struct weston_view    *view;
-       struct weston_matrix  *matrix = &ivisurf->layer_rotation.matrix;
-       struct weston_output  *output = NULL;
-       float width  = 0.0f;
-       float height = 0.0f;
-       float v_sin  = 0.0f;
-       float v_cos  = 0.0f;
-       float cx = 0.0f;
-       float cy = 0.0f;
-       float sx = 1.0f;
-       float sy = 1.0f;
-
-       wl_list_for_each(view, &ivisurf->surface->views, surface_link) {
-               if (view != NULL) {
-                       break;
-               }
-       }
-
-       if (es == NULL || view == NULL) {
-               return;
-       }
-
-       output = es->output;
-       if (output == NULL) {
-               return;
-       }
-       if ((output->width == 0) || (output->height == 0)) {
-               return;
-       }
-       width = (float)output->width;
-       height = (float)output->height;
-
-       switch (ivilayer->prop.orientation) {
-       case WL_OUTPUT_TRANSFORM_NORMAL:
-               v_sin = 0.0f;
-               v_cos = 1.0f;
-               break;
-       case WL_OUTPUT_TRANSFORM_90:
-               v_sin = 1.0f;
-               v_cos = 0.0f;
-               sx = width / height;
-               sy = height / width;
-               break;
-       case WL_OUTPUT_TRANSFORM_180:
-               v_sin = 0.0f;
-               v_cos = -1.0f;
-               break;
-       case WL_OUTPUT_TRANSFORM_270:
-       default:
-               v_sin = -1.0f;
-               v_cos = 0.0f;
-               sx = width / height;
-               sy = height / width;
-               break;
-       }
-       wl_list_remove(&ivisurf->layer_rotation.link);
-       weston_view_geometry_dirty(view);
-
-       weston_matrix_init(matrix);
-       cx = 0.5f * width;
-       cy = 0.5f * height;
-       weston_matrix_translate(matrix, -cx, -cy, 0.0f);
-       weston_matrix_rotate_xy(matrix, v_cos, v_sin);
-       weston_matrix_scale(matrix, sx, sy, 1.0);
-       weston_matrix_translate(matrix, cx, cy, 0.0f);
-       wl_list_insert(&view->geometry.transformation_list,
-                      &ivisurf->layer_rotation.link);
-
-       weston_view_set_transform_parent(view, NULL);
-       weston_view_update_transform(view);
-}
-
-static void
-update_surface_position(struct ivi_layout_surface *ivisurf)
-{
-       struct weston_view *view;
-       float tx  = (float)ivisurf->prop.dest_x;
-       float ty  = (float)ivisurf->prop.dest_y;
-       struct weston_matrix *matrix = &ivisurf->surface_pos.matrix;
-
-       wl_list_for_each(view, &ivisurf->surface->views, surface_link) {
-               if (view != NULL) {
-                       break;
-               }
-       }
-
-       if (view == NULL) {
-               return;
-       }
-
-       wl_list_remove(&ivisurf->surface_pos.link);
-
-       weston_matrix_init(matrix);
-       weston_matrix_translate(matrix, tx, ty, 0.0f);
-       wl_list_insert(&view->geometry.transformation_list,
-                      &ivisurf->surface_pos.link);
-
-       weston_view_set_transform_parent(view, NULL);
-       weston_view_update_transform(view);
-}
-
-static void
-update_layer_position(struct ivi_layout_layer *ivilayer,
-                     struct ivi_layout_surface *ivisurf)
-{
-       struct weston_view *view;
-       struct weston_matrix *matrix = &ivisurf->layer_pos.matrix;
-       float tx  = (float)ivilayer->prop.dest_x;
-       float ty  = (float)ivilayer->prop.dest_y;
-
-       wl_list_for_each(view, &ivisurf->surface->views, surface_link) {
-               if (view != NULL) {
-                       break;
-               }
-       }
-
-       if (view == NULL) {
-               return;
-       }
-
-       wl_list_remove(&ivisurf->layer_pos.link);
-
-       weston_matrix_init(matrix);
-       weston_matrix_translate(matrix, tx, ty, 0.0f);
-       wl_list_insert(&view->geometry.transformation_list,
-                      &ivisurf->layer_pos.link);
-
-       weston_view_set_transform_parent(view, NULL);
-       weston_view_update_transform(view);
-}
-
-static void
-update_scale(struct ivi_layout_layer *ivilayer,
-            struct ivi_layout_surface *ivisurf)
-{
-       struct weston_view *view;
-       struct weston_matrix *matrix = &ivisurf->scaling.matrix;
-       float sx = 0.0f;
-       float sy = 0.0f;
-       float lw = 0.0f;
-       float sw = 0.0f;
-       float lh = 0.0f;
-       float sh = 0.0f;
-
-       wl_list_for_each(view, &ivisurf->surface->views, surface_link) {
-               if (view != NULL) {
-                       break;
-               }
-       }
-
-       if (view == NULL) {
-               return;
-       }
-
-       if (ivisurf->prop.source_width == 0 || ivisurf->prop.source_height == 0) {
-               weston_log("ivi-shell: source rectangle is not yet set by ivi_layout_surface_set_source_rectangle\n");
-               return;
-       }
-
-       if (ivisurf->prop.dest_width == 0 || ivisurf->prop.dest_height == 0) {
-               weston_log("ivi-shell: destination rectangle is not yet set by ivi_layout_surface_set_destination_rectangle\n");
-               return;
-       }
-
-       lw = ((float)ivilayer->prop.dest_width  / (float)ivilayer->prop.source_width );
-       sw = ((float)ivisurf->prop.dest_width   / (float)ivisurf->prop.source_width  );
-       lh = ((float)ivilayer->prop.dest_height / (float)ivilayer->prop.source_height);
-       sh = ((float)ivisurf->prop.dest_height  / (float)ivisurf->prop.source_height );
-       sx = sw * lw;
-       sy = sh * lh;
-
-       wl_list_remove(&ivisurf->scaling.link);
-       weston_matrix_init(matrix);
-       weston_matrix_scale(matrix, sx, sy, 1.0f);
-
-       wl_list_insert(&view->geometry.transformation_list,
-                      &ivisurf->scaling.link);
-
-       weston_view_set_transform_parent(view, NULL);
-       weston_view_update_transform(view);
-}
-
 static void
 update_prop(struct ivi_layout_layer *ivilayer,
            struct ivi_layout_surface *ivisurf)
@@ -763,11 +496,6 @@ update_prop(struct ivi_layout_layer *ivilayer,
        }
 
        update_opacity(ivilayer, ivisurf);
-       update_layer_orientation(ivilayer, ivisurf);
-       update_layer_position(ivilayer, ivisurf);
-       update_surface_position(ivisurf);
-       update_surface_orientation(ivilayer, ivisurf);
-       update_scale(ivilayer, ivisurf);
 
        ivisurf->update_count++;
 
@@ -2898,17 +2626,6 @@ ivi_layout_surface_create(struct weston_surface *wl_surface,
        ivisurf->surface->width_from_buffer  = 0;
        ivisurf->surface->height_from_buffer = 0;
 
-       weston_matrix_init(&ivisurf->surface_rotation.matrix);
-       weston_matrix_init(&ivisurf->layer_rotation.matrix);
-       weston_matrix_init(&ivisurf->surface_pos.matrix);
-       weston_matrix_init(&ivisurf->layer_pos.matrix);
-       weston_matrix_init(&ivisurf->scaling.matrix);
-
-       wl_list_init(&ivisurf->surface_rotation.link);
-       wl_list_init(&ivisurf->layer_rotation.link);
-       wl_list_init(&ivisurf->surface_pos.link);
-       wl_list_init(&ivisurf->layer_pos.link);
-       wl_list_init(&ivisurf->scaling.link);
 
        init_surface_properties(&ivisurf->prop);
        ivisurf->event_mask = 0;