All files / app/codeCharta/services/3DExports/3DPreview/MeshModels/FrontMeshModels frontLogo.ts

100% Statements 16/16
100% Branches 8/8
100% Functions 2/2
100% Lines 16/16

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29  9x 9x   9x     18x   18x       6x 6x 6x 6x     6x 6x 6x 6x 6x 6x 6x      
import { GeometryOptions } from "../../preview3DPrintMesh"
import { GeneralMesh } from "../generalMesh"
import { FrontPrintColorChangeStrategy } from "../../ColorChangeStrategies/frontPrintColorChangeStrategy"
 
export abstract class FrontLogo extends GeneralMesh {
    constructor(
        name: string,
        private alignment: "right" | "left"
    ) {
        super(name, new FrontPrintColorChangeStrategy())
    }
 
    changeRelativeSize(geometryOptions: GeometryOptions) {
        const oldWidth = this.getWidth()
        this.boundingBoxCalculated = false
        const secondRowMeshVisible = geometryOptions.secondRowVisible
        const scale = secondRowMeshVisible
            ? (geometryOptions.frontTextSize + geometryOptions.secondRowTextSize) / geometryOptions.frontTextSize
            : 1
        this.scale.x = scale
        this.scale.y = scale
        const secondRowVisibleFactor = secondRowMeshVisible ? -1 : 1
        const alignmentFactor = this.alignment === "left" ? -1 : 1
        this.translateY(secondRowVisibleFactor * geometryOptions.secondRowTextSize)
        const translateXFactor = secondRowMeshVisible ? oldWidth / this.getWidth() : this.getWidth() / oldWidth
        this.translateX(2 * translateXFactor * alignmentFactor * secondRowVisibleFactor)
    }
}