diff --git a/src/Components/Editor/Behaviors/SymbolBehaviors.ts b/src/Components/Editor/Behaviors/SymbolBehaviors.ts index 7a2004f..c5544f4 100644 --- a/src/Components/Editor/Behaviors/SymbolBehaviors.ts +++ b/src/Components/Editor/Behaviors/SymbolBehaviors.ts @@ -7,7 +7,7 @@ export function ApplySymbol(containers: Map, container: IContainerModel, symbol: ISymbolModel): IContainerModel { if (symbol.isVertical) { - container.properties.y = TransformY(symbol.offset + (symbol.height / 2), + container.properties.y = TransformY(symbol.offset, symbol.height, symbol.config.PositionReference); container.properties.y = RestoreY(container.properties.y, diff --git a/src/Components/SVG/Elements/DimensionLayer.tsx b/src/Components/SVG/Elements/DimensionLayer.tsx index 7dbe572..f8d3999 100644 --- a/src/Components/SVG/Elements/DimensionLayer.tsx +++ b/src/Components/SVG/Elements/DimensionLayer.tsx @@ -167,11 +167,11 @@ function Dimensions({ containers, symbols, root, scale }: IDimensionLayerProps): for (const symbol of symbols) { if (symbol[1].showDimension) { - startDepthHorizontalSymbols++; - startDepthVerticalSymbols++; if (symbol[1].isVertical) { + startDepthVerticalSymbols++; AddVerticalSymbolDimension(symbol[1], dimensions, scale, startDepthVerticalSymbols); } else { + startDepthHorizontalSymbols++; AddHorizontalSymbolDimension(symbol[1], dimensions, scale, startDepthHorizontalSymbols); } } diff --git a/src/Components/SVG/Elements/Symbol.tsx b/src/Components/SVG/Elements/Symbol.tsx index 043dad9..1103bff 100644 --- a/src/Components/SVG/Elements/Symbol.tsx +++ b/src/Components/SVG/Elements/Symbol.tsx @@ -37,11 +37,11 @@ export function Symbol(props: ISymbolProps): JSX.Element { ); } if (props.model.isVertical) { - x = (-SYMBOL_MARGIN - props.model.height) / props.scale; + x = (-SYMBOL_MARGIN - props.model.width) / props.scale; y = (props.model.offset + props.model.height / 2) - (props.model.height / props.scale / 2); } else { x = (props.model.offset + props.model.width / 2) - (props.model.width / props.scale / 2); - y = (-SYMBOL_MARGIN - props.model.width) / props.scale; + y = (-SYMBOL_MARGIN - props.model.height) / props.scale; } return ( void } +function Restore(offset: number, + isVertical: boolean, + height: number, + width: number, + position: PositionReference | undefined): number { + if (isVertical) { + return RestoreY(offset, height, position); + } else { + return RestoreX(offset, width, position); + } +} +function Transform(offset: number, + isVertical: boolean, + height: number, + width: number, + position: PositionReference | undefined): number { + if (isVertical) { + return TransformY(offset, height, position); + } else { + return TransformX(offset, width, position); + } +} + export function SymbolForm(props: ISymbolFormProps): JSX.Element { return (
@@ -40,10 +63,21 @@ export function SymbolForm(props: ISymbolFormProps): JSX.Element { labelClassName='' inputClassName='' type='number' - value={TransformX(props.symbol.offset, props.symbol.width, props.symbol.config.PositionReference).toString()} - onChange={(value) => { props.onChange('offset', RestoreX(Number(value), props.symbol.width, props.symbol.config.PositionReference)); }} /> + value={Transform(props.symbol.offset, + props.symbol.isVertical, + props.symbol.height, + props.symbol.width, + props.symbol.config.PositionReference).toString()} + onChange={(value) => { + props.onChange('offset', + Restore(Number(value), + props.symbol.isVertical, + props.symbol.height, + props.symbol.width, + props.symbol.config.PositionReference)); + }} />