diff --git a/lib/src/interfaces/fill.ts b/lib/src/interfaces/fill.ts index f9a1d52..4f73868 100644 --- a/lib/src/interfaces/fill.ts +++ b/lib/src/interfaces/fill.ts @@ -37,3 +37,5 @@ export interface IRadialGradient { export interface IConicGradient { type: "conic"; } + +export type Fill = ISolidFill | ITextureFill | ILinerGradient | IRadialGradient | IConicGradient; diff --git a/lib/src/interfaces/objects.ts b/lib/src/interfaces/objects.ts index 93a3dcc..fe96f53 100644 --- a/lib/src/interfaces/objects.ts +++ b/lib/src/interfaces/objects.ts @@ -1,6 +1,6 @@ import { IPoint } from "@gxc-solutions/math"; import { IRgbColor } from "./color"; -import { IBaseFill } from "./fill"; +import { Fill } from "./fill"; export interface IRectangle { x: number; @@ -34,7 +34,7 @@ export interface IStroke { dash: number[]; } -export type DrawObjectType = "rectangle" | "ellipse" | "image" | "text" | "path" | "line" | "group"; +export type DrawObjectType = "rectangle" | "ellipse" | "image" | "text" | "path" | "line" | "node"; export interface IBaseDrawObject { readonly id: string; @@ -44,7 +44,7 @@ export interface IBaseDrawObject { export interface IRectangleDrawObject extends IBaseDrawObject { readonly type: "rectangle"; - fill: IBaseFill; + fill: Fill; stroke: IStroke; blendMode: string; opacity: number; @@ -52,9 +52,9 @@ export interface IRectangleDrawObject extends IBaseDrawObject { transform: ITransform; } -export interface IEllipseDrawObject { +export interface IEllipseDrawObject extends IBaseDrawObject { readonly type: "ellipse"; - fill: IBaseFill; + fill: Fill; stroke: IStroke; ellipse: IEllipse; blendMode: string; @@ -62,11 +62,11 @@ export interface IEllipseDrawObject { transform: ITransform; } -export interface IImageDrawObject { +export interface IImageDrawObject extends IBaseDrawObject { readonly type: "image"; source: HTMLImageElement; stroke: IStroke; - fill: IBaseFill; + fill: Fill; blendMode: string; opacity: number; transform: ITransform; @@ -78,10 +78,10 @@ export interface IFont { color: IRgbColor; } -export interface ITextDrawObject { +export interface ITextDrawObject extends IBaseDrawObject { readonly type: "text"; stroke: IStroke; - fill: IBaseFill; + fill: Fill; blendMode: string; rectangle?: IRectangle; text: string; @@ -94,7 +94,7 @@ export interface ITextDrawObject { export type DrawLeafs = IRectangleDrawObject | IEllipseDrawObject | IImageDrawObject | ITextDrawObject; export interface IDrawNode extends IBaseDrawObject { - readonly type: "group"; + readonly type: "node"; children: Array; transform: ITransform; } diff --git a/lib/src/package.json b/lib/src/package.json index 6fbea6a..e8b562e 100644 --- a/lib/src/package.json +++ b/lib/src/package.json @@ -1,6 +1,6 @@ { "name": "@gxc-solutions/renderer-base", - "version": "0.0.5", + "version": "0.0.6", "main": "index.js", "author": "GXC Solutions", "publishConfig": { diff --git a/lib/src/utils/draw-object.ts b/lib/src/utils/draw-object.ts new file mode 100644 index 0000000..ad11b04 --- /dev/null +++ b/lib/src/utils/draw-object.ts @@ -0,0 +1,14 @@ +import { + IRectangleDrawObject, + IEllipseDrawObject, + IImageDrawObject, + ITextDrawObject, + IDrawNode, + IBaseDrawObject, +} from "../interfaces/objects"; + +export const isEllipseDrawObject = (drawObject: IBaseDrawObject): drawObject is IEllipseDrawObject => drawObject?.type === "ellipse"; +export const isRectangleDrawObject = (drawObject: IBaseDrawObject): drawObject is IRectangleDrawObject => drawObject?.type === "rectangle"; +export const isImageDrawObject = (drawObject: IBaseDrawObject): drawObject is IImageDrawObject => drawObject?.type === "image"; +export const isTextDrawObject = (drawObject: IBaseDrawObject): drawObject is ITextDrawObject => drawObject?.type === "text"; +export const isDrawNode = (drawObject: IBaseDrawObject): drawObject is IDrawNode => drawObject?.type === "node"; diff --git a/lib/src/utils/index.ts b/lib/src/utils/index.ts index 7d586c6..93fdf03 100644 --- a/lib/src/utils/index.ts +++ b/lib/src/utils/index.ts @@ -1 +1,2 @@ export * from "./fill"; +export * from "./draw-object";