UNPKG

7.16 kBSource Map (JSON)View Raw
1{"version":3,"file":"direction.js","sourceRoot":"","sources":["../../src/util/direction.ts"],"names":[],"mappings":"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","sourcesContent":["import { DIRECTION } from '../constant';\nimport { Coordinate } from '../dependents';\nimport { Position } from '../interface';\nimport { BBox } from './bbox';\n\n/**\n * @ignore\n * 方位常量转实际的 bbox 位置大小\n * @param parentBBox\n * @param bbox\n * @param direction\n */\nexport function directionToPosition(parentBBox: BBox, bbox: BBox, direction: DIRECTION): Position {\n if (direction === DIRECTION.TOP) {\n return [parentBBox.minX + parentBBox.width / 2 - bbox.width / 2, parentBBox.minY];\n }\n if (direction === DIRECTION.BOTTOM) {\n return [parentBBox.minX + parentBBox.width / 2 - bbox.width / 2, parentBBox.maxY - bbox.height];\n }\n if (direction === DIRECTION.LEFT) {\n return [parentBBox.minX, parentBBox.minY + parentBBox.height / 2 - bbox.height / 2];\n }\n if (direction === DIRECTION.RIGHT) {\n return [parentBBox.maxX - bbox.width, parentBBox.minY + parentBBox.height / 2 - bbox.height / 2];\n }\n\n if (direction === DIRECTION.TOP_LEFT || direction === DIRECTION.LEFT_TOP) {\n return [parentBBox.tl.x, parentBBox.tl.y];\n }\n if (direction === DIRECTION.TOP_RIGHT || direction === DIRECTION.RIGHT_TOP) {\n return [parentBBox.tr.x - bbox.width, parentBBox.tr.y];\n }\n if (direction === DIRECTION.BOTTOM_LEFT || direction === DIRECTION.LEFT_BOTTOM) {\n return [parentBBox.bl.x, parentBBox.bl.y - bbox.height];\n }\n if (direction === DIRECTION.BOTTOM_RIGHT || direction === DIRECTION.RIGHT_BOTTOM) {\n return [parentBBox.br.x - bbox.width, parentBBox.br.y - bbox.height];\n }\n\n return [0, 0];\n}\n\n/**\n * get direction after coordinate transpose\n * @param direction\n * @param coordinate\n * @returns direction after transpose or not\n */\nfunction getTransposedDirection(direction: DIRECTION, coordinate: Coordinate): DIRECTION {\n if (coordinate.isTransposed) {\n switch (direction) {\n case DIRECTION.BOTTOM:\n return DIRECTION.LEFT;\n case DIRECTION.LEFT:\n return DIRECTION.BOTTOM;\n case DIRECTION.RIGHT:\n return DIRECTION.TOP;\n case DIRECTION.TOP:\n return DIRECTION.RIGHT;\n }\n }\n return direction;\n}\n\nfunction reflectX(direct: DIRECTION): DIRECTION {\n if (direct === DIRECTION.LEFT) {\n return DIRECTION.RIGHT;\n }\n\n if (direct === DIRECTION.RIGHT) {\n return DIRECTION.LEFT;\n }\n\n return direct;\n}\n\nfunction reflectY(direct: DIRECTION): DIRECTION {\n if (direct === DIRECTION.TOP) {\n return DIRECTION.BOTTOM;\n }\n if (direct === DIRECTION.BOTTOM) {\n return DIRECTION.TOP;\n }\n\n return direct;\n}\n\n/**\n * get direction after coordinate.scale\n * @param direction\n * @param coordinate\n */\nfunction getScaleDirection(direction: DIRECTION, coordinate: Coordinate): DIRECTION {\n const x = coordinate.matrix[0];\n const y = coordinate.matrix[4];\n\n let d = direction;\n if (x < 0) {\n d = reflectX(d);\n }\n if (y < 0) {\n d = reflectY(d);\n }\n return d;\n}\n\n/**\n *\n * @param direction\n * @param coordinate\n */\nfunction getReflectDirection(direction: DIRECTION, coordinate: Coordinate): DIRECTION {\n let d = direction;\n\n if (coordinate.isReflect('x')) {\n d = reflectX(d);\n }\n if (coordinate.isReflect('y')) {\n d = reflectY(d);\n }\n\n return d;\n}\n\n/**\n * @ignore\n * get direction after coordinate translate\n * @param direction\n * @param coordinate\n */\nexport function getTranslateDirection(direction: DIRECTION, coordinate: Coordinate): DIRECTION {\n let d = direction;\n d = getTransposedDirection(d, coordinate);\n d = getScaleDirection(d, coordinate);\n d = getReflectDirection(d, coordinate);\n\n return d;\n}\n"]}
\No newline at end of file