UNPKG

@polygonjs/polygonjs

Version:

node-based WebGL 3D engine https://polygonjs.com

46 lines (42 loc) 1.57 kB
import {BevelParams, createGeometriesFromTypeMesh} from './TextMesh'; import {getShapes, TextShapesParams} from './TextShapes'; import {createGeometriesFromTypeFlat} from './TextFlat'; import {createGeometriesFromTypeStroke} from './TextStroke'; import {shapesFromFont} from './TextShapesFromFont'; import {TypeAssert} from '../../../engine/poly/Assert'; import {createGeometriesFromTypeLine} from './TextLine'; import {TextType} from './TextType'; import {BufferGeometry} from 'three'; import {Font} from '../../loader/font/Font'; interface TextBuildGeometriesParams extends BevelParams, TextShapesParams { textType: TextType; font: Font; extrude: number; curveSegments: number; strokeWidth: number; } export async function textBuildGeometries( params: TextBuildGeometriesParams ): Promise<Array<BufferGeometry | undefined> | undefined> { const {textType} = params; // if (line.trim().length == 0) { // // currently not creating a geometry if the line is empty // // but we should create something that tells us to offset the next geometry // return; // } const shapes = getShapes(params); switch (textType) { case TextType.MESH: return createGeometriesFromTypeMesh({...params, shapes}); case TextType.FLAT: return createGeometriesFromTypeFlat({shapes}); case TextType.LINE: return createGeometriesFromTypeLine({shapes: shapesFromFont(shapes)}); case TextType.STROKE: return await createGeometriesFromTypeStroke({ shapes: shapesFromFont(shapes), strokeWidth: params.strokeWidth, }); } TypeAssert.unreachable(textType); }