2024-08-21 07:38:44 +03:00
|
|
|
// SPDX-License-Identifier: GPL-2.0-only
|
2025-07-28 01:02:01 -04:00
|
|
|
#include "common/direction.h"
|
2024-08-21 07:38:44 +03:00
|
|
|
#include <assert.h>
|
|
|
|
|
#include <wlr/types/wlr_output_layout.h>
|
|
|
|
|
#include "view.h"
|
|
|
|
|
|
2025-08-02 21:35:51 +09:00
|
|
|
bool
|
|
|
|
|
direction_from_view_edge(enum view_edge edge, enum wlr_direction *direction)
|
2024-08-21 07:38:44 +03:00
|
|
|
{
|
|
|
|
|
switch (edge) {
|
|
|
|
|
case VIEW_EDGE_LEFT:
|
2025-08-02 21:35:51 +09:00
|
|
|
*direction = WLR_DIRECTION_LEFT;
|
|
|
|
|
return true;
|
2024-08-21 07:38:44 +03:00
|
|
|
case VIEW_EDGE_RIGHT:
|
2025-08-02 21:35:51 +09:00
|
|
|
*direction = WLR_DIRECTION_RIGHT;
|
|
|
|
|
return true;
|
2024-08-21 07:38:44 +03:00
|
|
|
case VIEW_EDGE_UP:
|
2025-08-02 21:35:51 +09:00
|
|
|
*direction = WLR_DIRECTION_UP;
|
|
|
|
|
return true;
|
2024-08-21 07:38:44 +03:00
|
|
|
case VIEW_EDGE_DOWN:
|
2025-08-02 21:35:51 +09:00
|
|
|
*direction = WLR_DIRECTION_DOWN;
|
|
|
|
|
return true;
|
2024-08-21 07:38:44 +03:00
|
|
|
default:
|
2025-08-02 21:35:51 +09:00
|
|
|
return false;
|
2024-08-21 07:38:44 +03:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
enum wlr_direction
|
|
|
|
|
direction_get_opposite(enum wlr_direction direction)
|
|
|
|
|
{
|
|
|
|
|
switch (direction) {
|
|
|
|
|
case WLR_DIRECTION_RIGHT:
|
|
|
|
|
return WLR_DIRECTION_LEFT;
|
|
|
|
|
case WLR_DIRECTION_LEFT:
|
|
|
|
|
return WLR_DIRECTION_RIGHT;
|
|
|
|
|
case WLR_DIRECTION_DOWN:
|
|
|
|
|
return WLR_DIRECTION_UP;
|
|
|
|
|
case WLR_DIRECTION_UP:
|
|
|
|
|
return WLR_DIRECTION_DOWN;
|
|
|
|
|
default:
|
|
|
|
|
assert(0); /* Unreachable */
|
|
|
|
|
return WLR_DIRECTION_UP;
|
|
|
|
|
}
|
|
|
|
|
}
|