#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(dir)) != 0; } static int markDirectionOccupied(int usedFlags, int dir) { return usedFlags | 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; } } };