mirror of
https://github.com/brl/mutter.git
synced 2024-12-27 05:12:15 +00:00
region: Move Region.apply_matrix_transform_expand to Mtk
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3501>
This commit is contained in:
parent
4d53e4d156
commit
39aeb81a8b
@ -435,3 +435,36 @@ mtk_region_crop_and_scale (MtkRegion *region,
|
|||||||
|
|
||||||
return viewport_region;
|
return viewport_region;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MtkRegion *
|
||||||
|
mtk_region_apply_matrix_transform_expand (const MtkRegion *region,
|
||||||
|
graphene_matrix_t *transform)
|
||||||
|
{
|
||||||
|
MtkRegion *transformed_region;
|
||||||
|
MtkRectangle *rects;
|
||||||
|
int n_rects, i;
|
||||||
|
|
||||||
|
if (graphene_matrix_is_identity (transform))
|
||||||
|
return mtk_region_copy (region);
|
||||||
|
|
||||||
|
n_rects = mtk_region_num_rectangles (region);
|
||||||
|
MTK_RECTANGLE_CREATE_ARRAY_SCOPED (n_rects, rects);
|
||||||
|
for (i = 0; i < n_rects; i++)
|
||||||
|
{
|
||||||
|
graphene_rect_t transformed_rect, rect;
|
||||||
|
MtkRectangle int_rect;
|
||||||
|
|
||||||
|
int_rect = mtk_region_get_rectangle (region, i);
|
||||||
|
rect = mtk_rectangle_to_graphene_rect (&int_rect);
|
||||||
|
|
||||||
|
graphene_matrix_transform_bounds (transform, &rect, &transformed_rect);
|
||||||
|
|
||||||
|
mtk_rectangle_from_graphene_rect (&transformed_rect,
|
||||||
|
MTK_ROUNDING_STRATEGY_GROW,
|
||||||
|
&rects[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
transformed_region = mtk_region_create_rectangles (rects, n_rects);
|
||||||
|
|
||||||
|
return transformed_region;
|
||||||
|
}
|
||||||
|
@ -124,4 +124,8 @@ MtkRegion * mtk_region_crop_and_scale (MtkRegion *region,
|
|||||||
int dst_width,
|
int dst_width,
|
||||||
int dst_height);
|
int dst_height);
|
||||||
|
|
||||||
|
MTK_EXPORT
|
||||||
|
MtkRegion * mtk_region_apply_matrix_transform_expand (const MtkRegion *region,
|
||||||
|
graphene_matrix_t *transform);
|
||||||
|
|
||||||
G_DEFINE_AUTOPTR_CLEANUP_FUNC (MtkRegion, mtk_region_unref)
|
G_DEFINE_AUTOPTR_CLEANUP_FUNC (MtkRegion, mtk_region_unref)
|
||||||
|
@ -53,7 +53,7 @@ region_apply_transform_expand_maybe_ref (MtkRegion *region,
|
|||||||
if (mtk_region_is_empty (region))
|
if (mtk_region_is_empty (region))
|
||||||
return mtk_region_ref (region);
|
return mtk_region_ref (region);
|
||||||
|
|
||||||
return meta_region_apply_matrix_transform_expand (region, transform);
|
return mtk_region_apply_matrix_transform_expand (region, transform);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -492,7 +492,7 @@ meta_surface_actor_is_obscured_on_stage_view (MetaSurfaceActor *self,
|
|||||||
stage,
|
stage,
|
||||||
&transform);
|
&transform);
|
||||||
|
|
||||||
intersection_region = meta_region_apply_matrix_transform_expand (unobscured_region, &transform);
|
intersection_region = mtk_region_apply_matrix_transform_expand (unobscured_region, &transform);
|
||||||
|
|
||||||
clutter_stage_view_get_layout (stage_view, &stage_rect);
|
clutter_stage_view_get_layout (stage_view, &stage_rect);
|
||||||
mtk_region_intersect_rectangle (intersection_region,
|
mtk_region_intersect_rectangle (intersection_region,
|
||||||
|
@ -120,8 +120,8 @@ meta_window_group_paint (ClutterActor *actor,
|
|||||||
* multihead setup with mismatched monitor sizes, we could intersect this
|
* multihead setup with mismatched monitor sizes, we could intersect this
|
||||||
* with an accurate union of the monitors to avoid painting shadows that are
|
* with an accurate union of the monitors to avoid painting shadows that are
|
||||||
* visible only in the holes. */
|
* visible only in the holes. */
|
||||||
clip_region = meta_region_apply_matrix_transform_expand (redraw_clip,
|
clip_region = mtk_region_apply_matrix_transform_expand (redraw_clip,
|
||||||
&stage_to_actor);
|
&stage_to_actor);
|
||||||
|
|
||||||
meta_cullable_cull_redraw_clip (META_CULLABLE (window_group), clip_region);
|
meta_cullable_cull_redraw_clip (META_CULLABLE (window_group), clip_region);
|
||||||
|
|
||||||
|
@ -343,36 +343,3 @@ meta_region_transform (const MtkRegion *region,
|
|||||||
|
|
||||||
return transformed_region;
|
return transformed_region;
|
||||||
}
|
}
|
||||||
|
|
||||||
MtkRegion *
|
|
||||||
meta_region_apply_matrix_transform_expand (const MtkRegion *region,
|
|
||||||
graphene_matrix_t *transform)
|
|
||||||
{
|
|
||||||
int n_rects, i;
|
|
||||||
MtkRectangle *rects;
|
|
||||||
MtkRegion *transformed_region;
|
|
||||||
|
|
||||||
if (graphene_matrix_is_identity (transform))
|
|
||||||
return mtk_region_copy (region);
|
|
||||||
|
|
||||||
n_rects = mtk_region_num_rectangles (region);
|
|
||||||
MTK_RECTANGLE_CREATE_ARRAY_SCOPED (n_rects, rects);
|
|
||||||
for (i = 0; i < n_rects; i++)
|
|
||||||
{
|
|
||||||
graphene_rect_t transformed_rect, rect;
|
|
||||||
MtkRectangle int_rect;
|
|
||||||
|
|
||||||
int_rect = mtk_region_get_rectangle (region, i);
|
|
||||||
rect = mtk_rectangle_to_graphene_rect (&int_rect);
|
|
||||||
|
|
||||||
graphene_matrix_transform_bounds (transform, &rect, &transformed_rect);
|
|
||||||
|
|
||||||
mtk_rectangle_from_graphene_rect (&transformed_rect,
|
|
||||||
MTK_ROUNDING_STRATEGY_GROW,
|
|
||||||
&rects[i]);
|
|
||||||
}
|
|
||||||
|
|
||||||
transformed_region = mtk_region_create_rectangles (rects, n_rects);
|
|
||||||
|
|
||||||
return transformed_region;
|
|
||||||
}
|
|
||||||
|
@ -101,7 +101,3 @@ MtkRegion * meta_region_transform (const MtkRegion *region,
|
|||||||
MetaMonitorTransform transform,
|
MetaMonitorTransform transform,
|
||||||
int width,
|
int width,
|
||||||
int height);
|
int height);
|
||||||
|
|
||||||
MtkRegion *
|
|
||||||
meta_region_apply_matrix_transform_expand (const MtkRegion *region,
|
|
||||||
graphene_matrix_t *transform);
|
|
||||||
|
Loading…
Reference in New Issue
Block a user