@shopify/react-native-skia
Version:
High-performance React Native Graphics using Skia
43 lines (38 loc) • 1.12 kB
text/typescript
import type { CanvasKit } from "canvaskit-wasm";
import type {
ParagraphBuilderFactory,
SkParagraphStyle,
SkTypefaceFontProvider,
} from "../types";
import { Host } from "./Host";
import { JsiSkParagraphBuilder } from "./JsiSkParagraphBuilder";
import { JsiSkParagraphStyle } from "./JsiSkParagraphStyle";
import { JsiSkTypeface } from "./JsiSkTypeface";
export class JsiSkParagraphBuilderFactory
extends Host
implements ParagraphBuilderFactory
{
constructor(CanvasKit: CanvasKit) {
super(CanvasKit);
}
Make(
paragraphStyle: SkParagraphStyle,
typefaceProvider?: SkTypefaceFontProvider
) {
const style = new this.CanvasKit.ParagraphStyle(
JsiSkParagraphStyle.toParagraphStyle(this.CanvasKit, paragraphStyle ?? {})
);
if (typefaceProvider === undefined) {
throw new Error(
"SkTypefaceFontProvider is required on React Native Web."
);
}
return new JsiSkParagraphBuilder(
this.CanvasKit,
this.CanvasKit.ParagraphBuilder.MakeFromFontProvider(
style,
JsiSkTypeface.fromValue(typefaceProvider)
)
);
}
}