Release package version 0.0.5
All checks were successful
Checks / build (push) Successful in 21s

Update object interfaces
This commit is contained in:
Andrey Kernichniy 2026-03-07 19:14:10 +07:00
parent 546efcd2d0
commit 4965f1715a
2 changed files with 74 additions and 7 deletions

View file

@ -1,3 +1,4 @@
import { IPoint } from "@gxc-solutions/math";
import { IRgbColor } from "./color"; import { IRgbColor } from "./color";
import { IBaseFill } from "./fill"; import { IBaseFill } from "./fill";
@ -6,7 +7,25 @@ export interface IRectangle {
y: number; y: number;
width: number; width: number;
height: 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 { export interface IStroke {
@ -15,7 +34,7 @@ export interface IStroke {
dash: number[]; 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 { export interface IBaseDrawObject {
readonly id: string; readonly id: string;
@ -23,11 +42,59 @@ export interface IBaseDrawObject {
name: string; name: string;
} }
export interface IDrawObject extends IBaseDrawObject { export interface IRectangleDrawObject extends IBaseDrawObject {
stroke: IStroke; readonly type: "rectangle";
fill: IBaseFill; fill: IBaseFill;
stroke: IStroke;
blendMode: string;
opacity: number;
rectangle: IRectangle;
transform: ITransform;
} }
export interface IDrawNode extends IBaseDrawObject { export interface IEllipseDrawObject {
children: IDrawObject[]; 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<IDrawNode | DrawLeafs>;
transform: ITransform;
} }

View file

@ -1,6 +1,6 @@
{ {
"name": "@gxc-solutions/renderer-base", "name": "@gxc-solutions/renderer-base",
"version": "0.0.4", "version": "0.0.5",
"main": "index.js", "main": "index.js",
"author": "GXC Solutions", "author": "GXC Solutions",
"publishConfig": { "publishConfig": {