1
mirror of https://github.com/Shiewk/Widgets.git synced 2026-04-28 11:34:17 +02:00
Files
Widgets/src/main/java/de/shiewk/widgets/Anchor.java
T
Shiewk df5b83a3f7 Add helpful context menus (right click) to the position editing screen
- Right click on widget: Opening widget settings, setting anchor or deactivating the widget
- Right click on empty space: Enabling widgets
2025-11-24 11:41:08 +01:00

62 lines
2.1 KiB
Java

package de.shiewk.widgets;
import org.joml.Vector2i;
public enum Anchor {
TOP_LEFT,
TOP_CENTER,
TOP_RIGHT,
CENTER_LEFT,
CENTER,
CENTER_RIGHT,
BOTTOM_LEFT,
BOTTOM_CENTER,
BOTTOM_RIGHT;
public int getAlignStartPosX(int scaledScreenWidth){
return switch (this){
case TOP_LEFT, CENTER_LEFT, BOTTOM_LEFT -> 0;
case TOP_CENTER, CENTER, BOTTOM_CENTER -> scaledScreenWidth / 2;
case TOP_RIGHT, CENTER_RIGHT, BOTTOM_RIGHT -> scaledScreenWidth;
};
}
public int getAlignStartPosY(int scaledScreenHeight){
return switch (this){
case TOP_LEFT, TOP_CENTER, TOP_RIGHT -> 0;
case CENTER_LEFT, CENTER, CENTER_RIGHT -> scaledScreenHeight / 2;
case BOTTOM_LEFT, BOTTOM_CENTER, BOTTOM_RIGHT -> scaledScreenHeight;
};
}
public Vector2i getTopLeft(int scaledScreenWidth, int scaledScreenHeight){
return new Vector2i(
// X component
switch (this){
case TOP_LEFT, CENTER_LEFT, BOTTOM_LEFT -> 0;
case TOP_CENTER, CENTER, BOTTOM_CENTER -> scaledScreenWidth / 3;
case TOP_RIGHT, CENTER_RIGHT, BOTTOM_RIGHT -> (int) (scaledScreenWidth / 3d * 2d);
},
// Y component
switch (this){
case TOP_LEFT, TOP_CENTER, TOP_RIGHT -> 0;
case CENTER_LEFT, CENTER, CENTER_RIGHT -> scaledScreenHeight / 3;
case BOTTOM_LEFT, BOTTOM_CENTER, BOTTOM_RIGHT -> (int) (scaledScreenHeight / 3d * 2d);
}
);
}
public static Anchor getAnchor(int scaledScreenWidth, int scaledScreenHeight, int posX, int posY){
for (Anchor anchor : values()) {
Vector2i topLeft = anchor.getTopLeft(scaledScreenWidth, scaledScreenHeight);
if (
topLeft.x <= posX && topLeft.x + scaledScreenWidth / 3 >= posX &&
topLeft.y <= posY && topLeft.y + scaledScreenHeight / 3 >= posY
){
return anchor;
}
}
return null;
}
}