import { PlaceStyle,EdgeType } from '../../confClass.js' // import { EdgeType } from '../../vo/enums/EdgeType.js' /** * 排版方式,返回排版后的[下右上左]所对应原始边 rt = [,,,] 下0 右1 上2 左3 * 比如 rt[0] = 3 表示现在的下边是原始的左边 * rt[2] = 0 表示现在的上边是原始的下边 * @param placeStyle 放置方式 */ export function getOriginalSides(placeStyle: PlaceStyle): number[] { // let orgSides = [0, 1, 2, 3]; let orgSides = [EdgeType.BOTTOM, EdgeType.RIGHT, EdgeType.TOP, EdgeType.LEFT] switch (placeStyle) { case PlaceStyle.FRONT: // 正面 break case PlaceStyle.FRONT_TURN_RIGHT: // 正面右转 orgSides[EdgeType.BOTTOM] = EdgeType.RIGHT orgSides[EdgeType.RIGHT] = EdgeType.TOP orgSides[EdgeType.TOP] = EdgeType.LEFT orgSides[EdgeType.LEFT] = EdgeType.BOTTOM break case PlaceStyle.FRONT_TURN_BACK: // 正面后转 orgSides[EdgeType.BOTTOM] = EdgeType.TOP orgSides[EdgeType.RIGHT] = EdgeType.LEFT orgSides[EdgeType.TOP] = EdgeType.BOTTOM orgSides[EdgeType.LEFT] = EdgeType.RIGHT break case PlaceStyle.FRONT_TURN_LEFT: // 正面左转 orgSides[EdgeType.BOTTOM] = EdgeType.LEFT orgSides[EdgeType.RIGHT] = EdgeType.BOTTOM orgSides[EdgeType.TOP] = EdgeType.RIGHT orgSides[EdgeType.LEFT] = EdgeType.TOP break case PlaceStyle.BACK: // 反面 orgSides[EdgeType.BOTTOM] = EdgeType.BOTTOM orgSides[EdgeType.RIGHT] = EdgeType.LEFT orgSides[EdgeType.TOP] = EdgeType.TOP orgSides[EdgeType.LEFT] = EdgeType.RIGHT break case PlaceStyle.BACK_TURN_RIGHT: // 反面右转 orgSides[EdgeType.BOTTOM] = EdgeType.LEFT orgSides[EdgeType.RIGHT] = EdgeType.TOP orgSides[EdgeType.TOP] = EdgeType.RIGHT orgSides[EdgeType.LEFT] = EdgeType.BOTTOM break case PlaceStyle.BACK_TURN_BACK: // 反面后转 orgSides[EdgeType.BOTTOM] = EdgeType.TOP orgSides[EdgeType.RIGHT] = EdgeType.RIGHT orgSides[EdgeType.TOP] = EdgeType.BOTTOM orgSides[EdgeType.LEFT] = EdgeType.LEFT break case PlaceStyle.BACK_TURN_LEFT: // 反面左转 orgSides[EdgeType.BOTTOM] = EdgeType.RIGHT orgSides[EdgeType.RIGHT] = EdgeType.BOTTOM orgSides[EdgeType.TOP] = EdgeType.LEFT orgSides[EdgeType.LEFT] = EdgeType.TOP break default: break } return orgSides } /** * 返回原始边[下右上左] 放置后位置 rt = [,,,,] * 例如 rt[0] = 3 表示原始下边,现在放置后的新位置是左边 * rt[2] = 0 表示原始上边,现在放置后的新位置是下边 * @param placeStyle 放置方式 */ export function getPlacedSides(placeStyle: PlaceStyle): number[] { // let orgSides = [0, 1, 2, 3]; let orgSides = [EdgeType.BOTTOM, EdgeType.RIGHT, EdgeType.TOP, EdgeType.LEFT] switch (placeStyle) { case PlaceStyle.FRONT: // 正面 break case PlaceStyle.FRONT_TURN_RIGHT: // 正面右转 orgSides[EdgeType.BOTTOM] = EdgeType.LEFT orgSides[EdgeType.RIGHT] = EdgeType.BOTTOM orgSides[EdgeType.TOP] = EdgeType.RIGHT orgSides[EdgeType.LEFT] = EdgeType.TOP break case PlaceStyle.FRONT_TURN_BACK: // 正面后转 orgSides[EdgeType.BOTTOM] = EdgeType.TOP orgSides[EdgeType.RIGHT] = EdgeType.LEFT orgSides[EdgeType.TOP] = EdgeType.BOTTOM orgSides[EdgeType.LEFT] = EdgeType.RIGHT break case PlaceStyle.FRONT_TURN_LEFT: // 正面左转 orgSides[EdgeType.BOTTOM] = EdgeType.RIGHT orgSides[EdgeType.RIGHT] = EdgeType.TOP orgSides[EdgeType.TOP] = EdgeType.LEFT orgSides[EdgeType.LEFT] = EdgeType.BOTTOM break case PlaceStyle.BACK: // 反面 orgSides[EdgeType.BOTTOM] = EdgeType.BOTTOM orgSides[EdgeType.RIGHT] = EdgeType.LEFT orgSides[EdgeType.TOP] = EdgeType.TOP orgSides[EdgeType.LEFT] = EdgeType.RIGHT break case PlaceStyle.BACK_TURN_RIGHT: // 反面右转 orgSides[EdgeType.BOTTOM] = EdgeType.LEFT orgSides[EdgeType.RIGHT] = EdgeType.TOP orgSides[EdgeType.TOP] = EdgeType.RIGHT orgSides[EdgeType.LEFT] = EdgeType.BOTTOM break case PlaceStyle.BACK_TURN_BACK: // 反面后转 orgSides[EdgeType.BOTTOM] = EdgeType.TOP orgSides[EdgeType.RIGHT] = EdgeType.RIGHT orgSides[EdgeType.TOP] = EdgeType.BOTTOM orgSides[EdgeType.LEFT] = EdgeType.LEFT break case PlaceStyle.BACK_TURN_LEFT: // 反面左转 orgSides[EdgeType.BOTTOM] = EdgeType.RIGHT orgSides[EdgeType.RIGHT] = EdgeType.BOTTOM orgSides[EdgeType.TOP] = EdgeType.LEFT orgSides[EdgeType.LEFT] = EdgeType.TOP break default: break } return orgSides } /** 获取排版位置 */ export function getPlacePosition(x: number, y: number, width: number, length: number, placeStyle: PlaceStyle): any { let posX = x let posY = y switch (placeStyle) { case PlaceStyle.FRONT: // 正面 break case PlaceStyle.FRONT_TURN_RIGHT: // 正面右转 posX = y posY = width - x break case PlaceStyle.FRONT_TURN_BACK: // 正面后转 posX = width - x posY = length - y break case PlaceStyle.FRONT_TURN_LEFT: // 正面左转 posX = length - y posY = x break case PlaceStyle.BACK: // 反面 posX = width - x posY = y break case PlaceStyle.BACK_TURN_RIGHT: // 反面右转 posX = y posY = x break case PlaceStyle.BACK_TURN_BACK: // 反面后转 posX = x posY = length - y break case PlaceStyle.BACK_TURN_LEFT: // 反面左转 posX = length - y posY = width - x break default: break } return { x: posX, y: posY } }