GridFrame/diagramCavas/include/diagramEditor/editorDirectionManager.h

51 lines
1.6 KiB
C++

#include "common/core_model/diagram.h"
// direction_manager.h
/**********editor方向管理***********/
class DirectionManager {
public:
static bool isHorizontal(Direction dir) {
return dir == Direction::Right || dir == Direction::Left;
}
static bool isVertical(Direction dir) {
return dir == Direction::Down || dir == Direction::Up;
}
static Direction getOpposite(Direction dir) {
switch (dir) {
case Direction::Right: return Direction::Left;
case Direction::Left: return Direction::Right;
case Direction::Down: return Direction::Up;
case Direction::Up: return Direction::Down;
default: return dir;
}
}
static bool isDirectionOccupied(int usedFlags, Direction dir) {
return (usedFlags & static_cast<int>(dir)) != 0;
}
static int markDirectionOccupied(int usedFlags, Direction dir) {
return usedFlags | static_cast<int>(dir);
}
static QPoint getIncrement(Direction dir, int hSpacing, int vSpacing) {
if (dir == Direction::Right) return QPoint(hSpacing, 0);
if (dir == Direction::Left) return QPoint(-hSpacing, 0);
if (dir == Direction::Down) return QPoint(0, vSpacing);
if (dir == Direction::Up) return QPoint(0, -vSpacing);
return QPoint(0, 0);
}
static int getRotationAngle(Direction dir) {
switch (dir) {
case Direction::Right: return -90;
case Direction::Left: return 90;
case Direction::Down: return 0;
case Direction::Up: return 180;
default: return 0;
}
}
};