import { Color } from '@galacean/effects-math/es/core/color'; import { Vector2 } from '@galacean/effects-math/es/core/vector2'; import * as spec from '@galacean/effects-specification'; import type { Engine } from '../engine'; import type { Maskable } from '../material'; import type { BoundingBoxTriangle, HitTestTriangleParams } from '../plugins'; import type { Renderer } from '../render'; import type { GradientValue } from '../math'; import { RendererComponent } from './renderer-component'; import type { Texture } from '../texture/texture'; export interface SolidPaint { type: spec.FillType.Solid; color: Color; } export interface GradientPaint { type: spec.FillType.GradientLinear | spec.FillType.GradientAngular | spec.FillType.GradientRadial; gradientStops: GradientValue; startPoint: Vector2; endPoint: Vector2; } export interface TextureTransform { offset: Vector2; rotation: number; scale: Vector2; } export interface TexturePaint { type: spec.FillType.Texture; texture: Texture; scaleMode: TexturePaintScaleMode; scalingFactor: number; opacity: number; textureTransform: TextureTransform; } export declare enum TexturePaintScaleMode { Fill = 0, Fit = 1, Crop = 2, Tile = 3 } interface ShapeAttributes { /** * 矢量图形类型 */ type: spec.ShapePrimitiveType; } /** * 椭圆组件参数 */ export interface EllipseAttribute extends ShapeAttributes { type: spec.ShapePrimitiveType.Ellipse; /** * x 轴半径 * -- TODO 后续完善类型 * -- TODO 可以看一下用xRadius/yRadius 还是 width/height */ xRadius: number; /** * y 轴半径 */ yRadius: number; } /** * 矩形参数 */ export interface RectangleAttribute extends ShapeAttributes { /** * 宽度 */ width: number; /** * 高度 */ height: number; /** * 角点元素 */ roundness: number; } /** * 星形参数 */ export interface StarAttribute extends ShapeAttributes { /** * 顶点数 - 内外顶点同数 */ pointCount: number; /** * 内径 */ innerRadius: number; /** * 外径 */ outerRadius: number; /** * 内径点圆度 */ innerRoundness: number; /** * 外径点圆度 */ outerRoundness: number; } /** * 多边形参数 */ export interface PolygonAttribute extends ShapeAttributes { /** * 顶点数 */ pointCount: number; /** * 外切圆半径 */ radius: number; /** * 角点圆度 */ roundness: number; } /** * 图形组件 * @since 2.1.0 */ export declare class ShapeComponent extends RendererComponent implements Maskable { private shapeDirty; private materialDirty; private graphicsPath; private fills; private strokeAttributes; private strokeWidth; private strokeCap; private strokeJoin; private strokes; private shapeAttributes; /** * 用于点击测试的碰撞器 */ private meshCollider; private rendererOptions; private geometry; private fillMaterials; private strokeMaterials; private readonly maskManager; get shape(): ShapeAttributes; /** * * @param engine */ constructor(engine: Engine); onStart(): void; onUpdate(dt: number): void; render(renderer: Renderer): void; private draw; getHitTestParams: (force?: boolean) => HitTestTriangleParams | undefined; getBoundingBox(): BoundingBoxTriangle; private buildGeometryFromPath; private buildPath; private updateMaterials; private updatePaintMaterial; private updateGradientMaterial; private createMaterialFromRendererOptions; fromData(data: spec.ShapeComponentData): void; private createPaint; onApplyAnimationProperties(): void; } export {};