monitor-transform: Add meta_monitor_transform_transform() helper

Intended to replace various manual monitor transform enum math here and
there. Tests added as well, to test some hand picked transforms.

https://gitlab.gnome.org/GNOME/mutter/merge_requests/1064
This commit is contained in:
Jonas Ådahl
2020-02-18 11:29:24 +01:00
parent d495dc6c63
commit e6913d1471
6 changed files with 147 additions and 1 deletions

View File

@ -39,3 +39,17 @@ meta_monitor_transform_invert (MetaMonitorTransform transform)
g_assert_not_reached ();
return 0;
}
MetaMonitorTransform
meta_monitor_transform_transform (MetaMonitorTransform transform,
MetaMonitorTransform other)
{
MetaMonitorTransform new_transform;
new_transform = (transform + other) % META_MONITOR_TRANSFORM_FLIPPED;
if (meta_monitor_transform_is_flipped (transform) !=
meta_monitor_transform_is_flipped (other))
new_transform += META_MONITOR_TRANSFORM_FLIPPED;
return new_transform;
}

View File

@ -22,6 +22,7 @@
#include <glib-object.h>
#include "backends/meta-backend-types.h"
#include "core/util-private.h"
enum _MetaMonitorTransform
{
@ -48,9 +49,13 @@ meta_monitor_transform_is_rotated (MetaMonitorTransform transform)
static inline gboolean
meta_monitor_transform_is_flipped (MetaMonitorTransform transform)
{
return (transform >= META_MONITOR_TRANSFORM_FLIPPED);
return (abs(transform) >= META_MONITOR_TRANSFORM_FLIPPED);
}
MetaMonitorTransform meta_monitor_transform_invert (MetaMonitorTransform transform);
META_EXPORT_TEST
MetaMonitorTransform meta_monitor_transform_transform (MetaMonitorTransform transform,
MetaMonitorTransform other);
#endif /* META_MONITOR_TRANSFORM_H */