diff --git a/lib/src/interfaces/objects.ts b/lib/src/interfaces/objects.ts index e038cd0..93a3dcc 100644 --- a/lib/src/interfaces/objects.ts +++ b/lib/src/interfaces/objects.ts @@ -1,3 +1,4 @@ +import { IPoint } from "@gxc-solutions/math"; import { IRgbColor } from "./color"; import { IBaseFill } from "./fill"; @@ -6,7 +7,25 @@ export interface IRectangle { y: number; width: number; height: number; - angle: number; +} + +export interface IEllipse { + center: IPoint; + radiusX: number; + radiusY: number; +} + +export interface ITransform { + scaleX: number; + scaleY: number; + + translateY: number; + translateX: number; + + skewY: number; + skewX: number; + + rotate: number; } export interface IStroke { @@ -15,7 +34,7 @@ export interface IStroke { dash: number[]; } -export type DrawObjectType = "rectangle-object" | "image-object" | "ellipse-object" | "text-object"; +export type DrawObjectType = "rectangle" | "ellipse" | "image" | "text" | "path" | "line" | "group"; export interface IBaseDrawObject { readonly id: string; @@ -23,11 +42,59 @@ export interface IBaseDrawObject { name: string; } -export interface IDrawObject extends IBaseDrawObject { - stroke: IStroke; +export interface IRectangleDrawObject extends IBaseDrawObject { + readonly type: "rectangle"; fill: IBaseFill; + stroke: IStroke; + blendMode: string; + opacity: number; + rectangle: IRectangle; + transform: ITransform; } -export interface IDrawNode extends IBaseDrawObject { - children: IDrawObject[]; +export interface IEllipseDrawObject { + readonly type: "ellipse"; + fill: IBaseFill; + stroke: IStroke; + ellipse: IEllipse; + blendMode: string; + opacity: number; + transform: ITransform; +} + +export interface IImageDrawObject { + readonly type: "image"; + source: HTMLImageElement; + stroke: IStroke; + fill: IBaseFill; + blendMode: string; + opacity: number; + transform: ITransform; +} + +export interface IFont { + font: string; + size: number; + color: IRgbColor; +} + +export interface ITextDrawObject { + readonly type: "text"; + stroke: IStroke; + fill: IBaseFill; + blendMode: string; + rectangle?: IRectangle; + text: string; + font: IFont; + textStroke: IStroke; + opacity: number; + transform: ITransform; +} + +export type DrawLeafs = IRectangleDrawObject | IEllipseDrawObject | IImageDrawObject | ITextDrawObject; + +export interface IDrawNode extends IBaseDrawObject { + readonly type: "group"; + children: Array; + transform: ITransform; } diff --git a/lib/src/package.json b/lib/src/package.json index 52a30d1..6fbea6a 100644 --- a/lib/src/package.json +++ b/lib/src/package.json @@ -1,6 +1,6 @@ { "name": "@gxc-solutions/renderer-base", - "version": "0.0.4", + "version": "0.0.5", "main": "index.js", "author": "GXC Solutions", "publishConfig": {