refactor: move rendering primitives into model
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
parent
ab982b888e
commit
02d957582b
|
|
@ -1,7 +1,7 @@
|
|||
import type { Effect } from "@/model/decorations/effect";
|
||||
import type { Mask } from "@/model/decorations/mask";
|
||||
import type { ParamValues } from "@/model/decorations/param-values";
|
||||
import type { BlendMode, Transform } from "@/rendering";
|
||||
import type { BlendMode, Transform } from "@/model/rendering";
|
||||
import type { BaseTimelineElement } from "./base";
|
||||
|
||||
export interface GraphicElement extends BaseTimelineElement {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import type { Effect } from "@/model/decorations/effect";
|
||||
import type { Mask } from "@/model/decorations/mask";
|
||||
import type { BlendMode, Transform } from "@/rendering";
|
||||
import type { BlendMode, Transform } from "@/model/rendering";
|
||||
import type { BaseTimelineElement } from "./base";
|
||||
|
||||
export interface ImageElement extends BaseTimelineElement {
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import type { ImageElement } from "./image";
|
|||
import type { StickerElement } from "./sticker";
|
||||
import type { TextElement } from "./text";
|
||||
import type { VideoElement } from "./video";
|
||||
import type { Transform } from "@/rendering";
|
||||
import type { Transform } from "@/model/rendering";
|
||||
|
||||
export * from "./audio";
|
||||
export * from "./base";
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import type { Effect } from "@/model/decorations/effect";
|
||||
import type { BlendMode, Transform } from "@/rendering";
|
||||
import type { BlendMode, Transform } from "@/model/rendering";
|
||||
import type { BaseTimelineElement } from "./base";
|
||||
|
||||
export interface StickerElement extends BaseTimelineElement {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import type { Effect } from "@/model/decorations/effect";
|
||||
import type { BlendMode, Transform } from "@/rendering";
|
||||
import type { BlendMode, Transform } from "@/model/rendering";
|
||||
import type { BaseTimelineElement } from "./base";
|
||||
|
||||
export interface TextBackground {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import type { Effect } from "@/model/decorations/effect";
|
||||
import type { Mask } from "@/model/decorations/mask";
|
||||
import type { BlendMode, Transform } from "@/rendering";
|
||||
import type { BlendMode, Transform } from "@/model/rendering";
|
||||
import type { BaseTimelineElement, RetimeConfig } from "./base";
|
||||
|
||||
export interface VideoElement extends BaseTimelineElement {
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ export * from "./decorations";
|
|||
export * from "./element-ref";
|
||||
export * from "./elements";
|
||||
export * from "./ids";
|
||||
export * from "./rendering";
|
||||
export * from "./scene";
|
||||
export * from "./time";
|
||||
export * from "./track";
|
||||
|
|
|
|||
|
|
@ -1,28 +1,28 @@
|
|||
export interface Transform {
|
||||
scaleX: number;
|
||||
scaleY: number;
|
||||
position: {
|
||||
x: number;
|
||||
y: number;
|
||||
};
|
||||
rotate: number;
|
||||
}
|
||||
|
||||
export type BlendMode =
|
||||
| "normal"
|
||||
| "darken"
|
||||
| "multiply"
|
||||
| "color-burn"
|
||||
| "lighten"
|
||||
| "screen"
|
||||
| "plus-lighter"
|
||||
| "color-dodge"
|
||||
| "overlay"
|
||||
| "soft-light"
|
||||
| "hard-light"
|
||||
| "difference"
|
||||
| "exclusion"
|
||||
| "hue"
|
||||
| "saturation"
|
||||
| "color"
|
||||
| "luminosity";
|
||||
export interface Transform {
|
||||
scaleX: number;
|
||||
scaleY: number;
|
||||
position: {
|
||||
x: number;
|
||||
y: number;
|
||||
};
|
||||
rotate: number;
|
||||
}
|
||||
|
||||
export type BlendMode =
|
||||
| "normal"
|
||||
| "darken"
|
||||
| "multiply"
|
||||
| "color-burn"
|
||||
| "lighten"
|
||||
| "screen"
|
||||
| "plus-lighter"
|
||||
| "color-dodge"
|
||||
| "overlay"
|
||||
| "soft-light"
|
||||
| "hard-light"
|
||||
| "difference"
|
||||
| "exclusion"
|
||||
| "hue"
|
||||
| "saturation"
|
||||
| "color"
|
||||
| "luminosity";
|
||||
|
|
@ -18,7 +18,7 @@ import {
|
|||
type PreviewSnapLine,
|
||||
} from "@/preview/preview-snap";
|
||||
import type { TCanvasSize } from "@/project/types";
|
||||
import type { Transform } from "@/rendering";
|
||||
import type { Transform } from "@/model/rendering";
|
||||
import { isVisualElement } from "@/timeline/element-utils";
|
||||
import type { ElementRef, SceneTracks, TextElement, TimelineElement, TimelineTrack, VisualElement } from "@/model";
|
||||
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ import {
|
|||
setChannel,
|
||||
} from "@/animation";
|
||||
import type { ElementAnimations } from "@/model/decorations/animations";
|
||||
import type { Transform } from "@/rendering";
|
||||
import type { Transform } from "@/model/rendering";
|
||||
import { resolveTransformAtTime } from "@/rendering/animation-values";
|
||||
import type { ElementRef, SceneTracks, TimelineElement, VisualElement } from "@/model";
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import type { ElementAnimations } from "@/model/decorations/animations";
|
||||
import { resolveAnimationPathValueAtTime } from "@/animation";
|
||||
import type { Transform } from "./index";
|
||||
import type { Transform } from "@/model/rendering";
|
||||
|
||||
export function resolveTransformAtTime({
|
||||
baseTransform,
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ import {
|
|||
SelectTrigger,
|
||||
SelectValue,
|
||||
} from "@/components/ui/select";
|
||||
import type { BlendMode } from "@/rendering";
|
||||
import type { BlendMode } from "@/model/rendering";
|
||||
import type { ElementType } from "@/model";
|
||||
import type { ElementAnimations } from "@/model/decorations/animations";
|
||||
import { HugeiconsIcon } from "@hugeicons/react";
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import type { BlendMode } from "@/rendering";
|
||||
import type { BlendMode } from "@/model/rendering";
|
||||
import type { EffectPass } from "@/model/decorations/effect";
|
||||
|
||||
export type FrameDescriptor = {
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import { BaseNode } from "./base-node";
|
||||
import type { TextElement } from "@/model";
|
||||
import type { EffectPass } from "@/model/decorations/effect";
|
||||
import type { Transform } from "@/rendering";
|
||||
import type { Transform } from "@/model/rendering";
|
||||
import { drawMeasuredTextLayout } from "@/text/primitives";
|
||||
import type { MeasuredTextElement } from "@/text/measure-element";
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import { BaseNode } from "./base-node";
|
||||
import type { Effect, EffectPass } from "@/model/decorations/effect";
|
||||
import type { Mask } from "@/model/decorations/mask";
|
||||
import type { BlendMode, Transform } from "@/rendering";
|
||||
import type { BlendMode, Transform } from "@/model/rendering";
|
||||
import type { RetimeConfig, VisualElement } from "@/model";
|
||||
|
||||
export interface VisualNodeParams {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import { DEFAULT_NEW_ELEMENT_DURATION } from "@/timeline/creation";
|
||||
import type { TTimelineViewState } from "@/project/types";
|
||||
import type { BlendMode, Transform } from "@/rendering";
|
||||
import type { BlendMode, Transform } from "@/model/rendering";
|
||||
import type { TextElement } from "@/model";
|
||||
|
||||
const defaultTransform: Transform = {
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ import {
|
|||
type VideoElement,
|
||||
type VideoTrack,
|
||||
} from "@/model";
|
||||
import type { Transform } from "@/rendering";
|
||||
import type { Transform } from "@/model/rendering";
|
||||
import { resolveTrackPlacement } from "@/timeline/placement";
|
||||
|
||||
function buildTransform(): Transform {
|
||||
|
|
|
|||
Loading…
Reference in New Issue