40 lines
940 B
TypeScript
40 lines
940 B
TypeScript
import type { DrawTextOption } from './base'
|
|
|
|
// const canvas = new OffscreenCanvas(0, 0);
|
|
const canvas = document.createElement('canvas')
|
|
const canvasCtx = canvas.getContext('2d')
|
|
|
|
export function blobToDataURL(data: Blob): Promise<string>
|
|
{
|
|
return new Promise((resolve) =>
|
|
{
|
|
let reader = new FileReader()
|
|
reader.onload = (response) =>
|
|
{
|
|
resolve(response.target.result as string)
|
|
}
|
|
reader.readAsDataURL(data)
|
|
})
|
|
}
|
|
|
|
export function getStringWidth(
|
|
text: string,
|
|
width: number,
|
|
height: number,
|
|
option: DrawTextOption,
|
|
): number
|
|
{
|
|
canvasCtx.clearRect(
|
|
0,
|
|
0,
|
|
width,
|
|
height,
|
|
)
|
|
canvasCtx.textAlign = option.textAlign as CanvasTextAlign
|
|
canvasCtx.textBaseline = option.textBaseline as CanvasTextBaseline
|
|
canvasCtx.fillStyle = option.fillStyle
|
|
canvasCtx.font
|
|
= `${option.fontWeight} ${option.fontSize}px ${option.fontFamily}`
|
|
return canvasCtx.measureText(text).width
|
|
}
|