add staggered text

rename box to rect
refactor rust
This commit is contained in:
2023-05-23 10:27:45 +02:00
parent 7576850ae0
commit 8523e44029
32 changed files with 4344 additions and 2203 deletions

View File

@@ -2,7 +2,7 @@ import { z } from "zod";
import { Vec2 } from "./Values";
import { Paint, TextPaint } from "./Paint";
const EntityTypeOptions = ["Text", "Ellipse", "Box"] as const;
const EntityTypeOptions = ["Text", "Ellipse", "Rect", "StaggeredText"] as const;
export const EntityType = z.enum(EntityTypeOptions);
@@ -10,11 +10,29 @@ export const GeometryEntity = z.object({
paint: Paint,
});
export const BoxEntity = GeometryEntity.extend({
type: z.literal(EntityType.Enum.Box),
export const Transform = z.object({
skew: Vec2,
rotate: Vec2,
translate: Vec2,
scale: Vec2,
});
export const StaggeredText = z.object({
letter: z.object({
position: Vec2,
transform: Transform,
paint: TextPaint,
}),
text: z.string(),
type: z.literal(EntityType.Enum.StaggeredText),
});
export const RectEntity = GeometryEntity.extend({
type: z.literal(EntityType.Enum.Rect),
size: Vec2,
position: Vec2,
origin: Vec2,
transform: z.nullable(Transform),
});
export const EllipseEntity = GeometryEntity.extend({
@@ -22,6 +40,7 @@ export const EllipseEntity = GeometryEntity.extend({
radius: Vec2,
position: Vec2,
origin: Vec2,
transform: z.nullable(Transform),
});
export const TextEntity = z.object({
@@ -29,10 +48,11 @@ export const TextEntity = z.object({
paint: TextPaint,
origin: Vec2,
text: z.string(),
transform: z.nullable(Transform),
});
export const Entity = z.discriminatedUnion("type", [
BoxEntity,
RectEntity,
EllipseEntity,
TextEntity,
]);