archgine 1.0.36 → 1.0.39

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/lib/applications/app-cvs.d.ts +16 -0
  2. package/lib/applications/app-offscreen.d.ts +27 -8
  3. package/lib/applications/application.d.ts +27 -10
  4. package/lib/controls/interactive-controls.d.ts +2 -2
  5. package/lib/controls/orbit-controller.d.ts +4 -3
  6. package/lib/controls/orbit-controls.d.ts +8 -8
  7. package/lib/core/camera2.d.ts +4 -16
  8. package/lib/core/monitor.d.ts +13 -13
  9. package/lib/core/object2.d.ts +5 -5
  10. package/lib/core/ope-view.d.ts +24 -0
  11. package/lib/core/view.d.ts +16 -9
  12. package/lib/environment.worker.js +4 -2
  13. package/lib/extras/adapter.d.ts +62 -0
  14. package/lib/extras/chef.d.ts +3 -9
  15. package/lib/extras/interfaces.d.ts +2 -0
  16. package/lib/extras/svg-app.d.ts +2 -17
  17. package/lib/extras/svg-chef.d.ts +4 -5
  18. package/lib/geometries/circle-geo2.d.ts +14 -0
  19. package/lib/geometries/geo2.d.ts +22 -8
  20. package/lib/geometries/polygon-geo2.d.ts +5 -0
  21. package/lib/geometries/polyline-geo2.d.ts +21 -0
  22. package/lib/helpers/axes-helper.d.ts +2 -3
  23. package/lib/helpers/axes-helper2.d.ts +19 -0
  24. package/lib/helpers/canvas-helper.d.ts +5 -5
  25. package/lib/helpers/geo-helper.d.ts +12 -0
  26. package/lib/helpers/mat-helper.d.ts +10 -0
  27. package/lib/helpers/merge-helper.d.ts +7 -0
  28. package/lib/index.d.ts +3 -1
  29. package/lib/index.mjs +7861 -6764
  30. package/lib/index.umd.js +31 -30
  31. package/lib/interfaces.d.ts +64 -120
  32. package/lib/materials/mat2.d.ts +2 -1
  33. package/lib/materials/text-mat2.d.ts +53 -0
  34. package/lib/math/box2.d.ts +1 -0
  35. package/lib/objects/shape2.d.ts +20 -7
  36. package/lib/renderer.worker.js +14066 -0
  37. package/lib/renderers/binding-states.d.ts +4 -4
  38. package/lib/renderers/buffer-renderer.d.ts +9 -3
  39. package/lib/renderers/cvs-renderer.d.ts +4 -2
  40. package/lib/renderers/render-lists.d.ts +4 -6
  41. package/lib/renderers/render-target.d.ts +2 -2
  42. package/lib/renderers/renderer.d.ts +1 -1
  43. package/lib/renders/render-target.d.ts +2 -2
  44. package/lib/scenes/loading-scene.d.ts +4 -5
  45. package/lib/{extras → scenes}/main-scene.d.ts +3 -3
  46. package/lib/scenes/scene.d.ts +0 -1
  47. package/lib/scenes/svg-scene.d.ts +3 -4
  48. package/lib/shapes2/arrow.d.ts +6 -0
  49. package/lib/shapes2/axes.d.ts +35 -0
  50. package/lib/shapes2/circle.d.ts +10 -0
  51. package/lib/shapes2/polygon.d.ts +9 -0
  52. package/lib/shapes2/text.d.ts +21 -0
  53. package/lib/textures/texture.d.ts +2 -2
  54. package/lib/utils/svg.d.ts +14 -0
  55. package/lib/workers/renderer.worker.d.ts +1 -0
  56. package/package.json +1 -1
  57. package/lib/geometries/path2.d.ts +0 -20
@@ -1,4 +1,4 @@
1
- import { ICamera2, ILight, IObject2, IPath2, IRenderer2Config, IShape, ITexture } from '../interfaces';
1
+ import { ICamera2, ILight, IObject2, IPath2Command, IRenderer2Config, IShape2, ITexture } from '../interfaces';
2
2
  import { Path } from '../geometries/path';
3
3
  export interface IBindingState {
4
4
  id: number;
@@ -11,7 +11,7 @@ export interface IBindingState {
11
11
  mtlVersion?: number;
12
12
  version: number;
13
13
  cachedTexture?: ITexture;
14
- pat?: IPath2;
14
+ renderCommands?: IPath2Command[];
15
15
  }
16
16
  export interface IRenderState {
17
17
  light?: ILight;
@@ -27,10 +27,10 @@ export declare class BindingStates {
27
27
  constructor(config: IRenderer2Config);
28
28
  destroy(): void;
29
29
  reset(): void;
30
- setup(obj: IShape, currentRenderState?: IRenderState, camera?: ICamera2): IBindingState;
30
+ setup(obj: IShape2, currentRenderState?: IRenderState, camera?: ICamera2): IBindingState;
31
31
  getBindingState(obj: IObject2): IBindingState;
32
32
  clearBindingState(): void;
33
- needsUpdate(obj: IShape): boolean;
33
+ needsUpdate(obj: IShape2): boolean;
34
34
  saveCache(obj: IShape2): void;
35
35
  updateModelViewMatrix(obj: IObject2, camera?: ICamera2): void;
36
36
  }
@@ -1,4 +1,4 @@
1
- import { IContext2D, IObject2, IPath2, IShape2 } from '../interfaces';
1
+ import { IContext2D, IObject2, IShape2, IText2 } from '../interfaces';
2
2
  import { BindingStates } from './binding-states';
3
3
  export default class BufferRenderer {
4
4
  ctx: IContext2D;
@@ -10,8 +10,14 @@ export default class BufferRenderer {
10
10
  destroy(): void;
11
11
  beforeRender(obj: IObject2): void;
12
12
  render(obj: IShape2): void;
13
+ renderFill(obj: IShape2): void;
14
+ renderStroke(obj: IShape2): void;
15
+ renderText(obj: IText2): void;
13
16
  afterRender(): void;
14
- renderWireFrame(shape: IShape2): void;
15
- renderStroke(path?: IPath2, color?: string, lineWidth?: number, lineDash?: [number, number]): void;
17
+ renderWireFrame(obj: IShape2): void;
16
18
  renderSelected(shape: IShape2): void;
19
+ renderMergedBefore(): void;
20
+ renderMergedGeo(obj: IShape2): void;
21
+ renderMergedMat(obj: IShape2): void;
22
+ renderMergedAfter(): void;
17
23
  }
@@ -3,11 +3,12 @@ import { RenderState, RenderStates } from './render-states';
3
3
  import { default as BufferRenderer } from './buffer-renderer';
4
4
  import { BindingStates } from './binding-states';
5
5
  import { Renderer } from './renderer';
6
- import { IRenderItem, RenderList, RenderLists } from '../renders/render-lists';
6
+ import { RenderList, RenderLists } from './render-lists';
7
7
  import { IQueue } from '../core/queue';
8
8
  export declare class CvsRenderer<Config extends IRenderer2Config> extends Renderer<Config> implements IRenderer2 {
9
9
  readonly name: string;
10
10
  id: string;
11
+ mergeRendering: boolean;
11
12
  renderer: BufferRenderer;
12
13
  bindingStates: BindingStates;
13
14
  renderStates: RenderStates;
@@ -22,8 +23,9 @@ export declare class CvsRenderer<Config extends IRenderer2Config> extends Render
22
23
  destroy(): void;
23
24
  render(scene: IObject2, camera?: ICamera2): void;
24
25
  projectObject(obj: IObject2, camera?: ICamera2 | undefined, groupOrder?: number): void;
26
+ renderMerged(currentRenderList: RenderList, camera?: ICamera2): void;
25
27
  renderScene(currentRenderList: RenderList, scene: IObject2, camera?: ICamera2): void;
26
- renderObjects(queue: IQueue<IRenderItem>, scene: IObject2, camera?: ICamera2): void;
28
+ renderObjects(queue: IQueue<IObject2>, scene: IObject2, camera?: ICamera2): void;
27
29
  renderObject(obj: IObject2, scene: IObject2, camera?: ICamera2): void;
28
30
  renderBufferDirect(obj: IObject2, scene: IObject2, camera?: ICamera2): void;
29
31
  renderTexture(texture: ITexture): void;
@@ -9,17 +9,15 @@ export interface IRenderItem {
9
9
  group: Group2<IGroup2Config> | undefined;
10
10
  }
11
11
  export declare class RenderList {
12
- renderItems: IRenderItem[];
13
- renderItemsIndex: number;
14
12
  queue: IQueue;
13
+ mergedQueue: Record<string, IQueue>;
15
14
  constructor();
16
15
  destroy(): void;
17
16
  clear(): void;
18
- getNextRenderItem(object: IObject2, groupOrder: number, group?: Group2<IGroup2Config>): IRenderItem;
19
- push(object: IObject2, groupOrder: number, group?: Group2<IGroup2Config>): this;
20
- unshift(object: IObject2, groupOrder: number, group: Group2<IGroup2Config>): void;
17
+ push(object: IObject2, groupOrder: number): this;
18
+ unshift(object: IObject2): void;
21
19
  sort(fn?: (a: any, b: any) => number): this;
22
- finish(): this;
20
+ mergeQueue(): this;
23
21
  }
24
22
  export declare class RenderLists {
25
23
  lists: WeakMap<IObject2, RenderList[]>;
@@ -1,4 +1,4 @@
1
- import { IContext2D, IRenderer2Config, IRenderTarget, ITexture } from '../interfaces';
1
+ import { ICanvas, IContext2D, IRenderer2Config, IRenderTarget, ITexture } from '../interfaces';
2
2
  import { default as EventDispatcher } from '../core/event-dispatcher';
3
3
  export interface IRenderTargetConfig extends IRenderer2Config {
4
4
  width: number;
@@ -15,7 +15,7 @@ export declare class RenderTarget<Config extends IRenderTargetConfig> extends Ev
15
15
  height: number;
16
16
  dpr: number | undefined;
17
17
  texture: ITexture;
18
- cvs: OffscreenCanvas | HTMLCanvasElement;
18
+ cvs: ICanvas;
19
19
  ctx: IContext2D;
20
20
  constructor(config?: Config);
21
21
  destroy(): void;
@@ -7,9 +7,9 @@ export declare abstract class Renderer<Config extends IRenderer2Config> {
7
7
  cvs: ICanvas | undefined;
8
8
  ctx: IContext2D | undefined;
9
9
  _currentRenderTarget: IRenderTarget | undefined;
10
+ _isContextLost: boolean;
10
11
  private readonly contextLostHandler;
11
12
  private readonly contextRestoreHandler;
12
- _isContextLost: boolean;
13
13
  protected constructor(config?: Config);
14
14
  destroy(): void;
15
15
  init(): void;
@@ -1,4 +1,4 @@
1
- import { IContext2D, IRenderer2Config, IRenderTarget, ITexture } from '../interfaces';
1
+ import { ICanvas, IContext2D, IRenderer2Config, IRenderTarget, ITexture } from '../interfaces';
2
2
  import { default as EventDispatcher } from '../core/event-dispatcher';
3
3
  export interface IRenderTargetConfig extends IRenderer2Config {
4
4
  width: number;
@@ -15,7 +15,7 @@ export declare class RenderTarget<Config extends IRenderTargetConfig> extends Ev
15
15
  height: number;
16
16
  dpr: number | undefined;
17
17
  texture: ITexture;
18
- cvs: OffscreenCanvas | HTMLCanvasElement;
18
+ cvs: ICanvas;
19
19
  ctx: IContext2D;
20
20
  constructor(config?: Config);
21
21
  destroy(): void;
@@ -1,8 +1,8 @@
1
- import { IShapeConfig } from '../objects/shape';
2
1
  import { DynamicScene } from './dynamic-scene';
3
- import { Circle, ICircleConfig } from '../shapes/circle';
4
- import { Text, ITextConfig } from '../shapes/text';
5
- export interface ILoadingSceneConfig extends IShapeConfig {
2
+ import { Circle, ICircleConfig } from '../shapes2/circle';
3
+ import { ITextConfig, Text } from '../shapes2/text';
4
+ import { IShape2Config } from '../objects/shape2';
5
+ export interface ILoadingSceneConfig extends IShape2Config {
6
6
  }
7
7
  export declare class LoadingScene<Config extends ILoadingSceneConfig> extends DynamicScene {
8
8
  readonly isLoadingScene: boolean;
@@ -15,5 +15,4 @@ export declare class LoadingScene<Config extends ILoadingSceneConfig> extends Dy
15
15
  scaleTrend: boolean;
16
16
  constructor(config?: Config);
17
17
  onBeforeRender(): void;
18
- fullscreen(padding?: number, animate?: boolean): void;
19
18
  }
@@ -1,5 +1,5 @@
1
- import { StaticScene } from '../scenes/static-scene';
2
- import { AxesHelper } from '../helpers/axes-helper';
1
+ import { StaticScene } from './static-scene';
2
+ import { AxesHelper2 } from '../helpers/axes-helper2';
3
3
  export interface IMainSceneConfig {
4
4
  castShadow?: boolean;
5
5
  }
@@ -7,7 +7,7 @@ export declare class MainScene<Config extends IMainSceneConfig> extends StaticSc
7
7
  readonly isMainScene: boolean;
8
8
  name: string;
9
9
  featureKey: string;
10
- axesHelper?: AxesHelper;
10
+ axesHelper?: AxesHelper2<any>;
11
11
  constructor(config?: Config);
12
12
  destroy(): void;
13
13
  initAxesHelper(): void;
@@ -12,7 +12,6 @@ export default class Scene extends Object2 implements IScene {
12
12
  constructor();
13
13
  destroy(): void;
14
14
  setup(view?: IView): void;
15
- fullscreen(padding?: number, animate?: boolean): void;
16
15
  /** @override */
17
16
  onBeforeRender(renderer: any, scene: Object2, camera?: ICamera2): void;
18
17
  /** @override */
@@ -1,8 +1,7 @@
1
1
  import { default as Scene } from './scene';
2
2
  import { default as Box2 } from '../math/box2';
3
- import { IBox2, IRaycaster, IScene, ITree } from '../interfaces';
3
+ import { IBox2, IRaycaster, ITree } from '../interfaces';
4
4
  import { SvgChef } from '../extras/svg-chef';
5
- import { TLayer } from '../extras/chef';
6
5
  import { ISvgAppConfig } from '../extras/svg-app';
7
6
  import { SvgPainter } from '../extras/svg-painter';
8
7
  export interface ISvgSceneConfig extends ISvgAppConfig {
@@ -12,7 +11,7 @@ export type TLegend = {
12
11
  color: string;
13
12
  ids: Array<string>;
14
13
  };
15
- export declare class SvgScene<Config extends ISvgSceneConfig> extends Scene implements IScene {
14
+ export declare class SvgScene<Config extends ISvgSceneConfig> extends Scene {
16
15
  readonly isSvgScene: boolean;
17
16
  readonly name: string;
18
17
  dynamically: boolean;
@@ -45,7 +44,7 @@ export declare class SvgScene<Config extends ISvgSceneConfig> extends Scene impl
45
44
  load(url: string): Promise<any>;
46
45
  bind(str: string): void;
47
46
  appendStyles(): void;
48
- getLayers(lv?: number): TLayer[];
47
+ getLayers(lv?: number): ITree[];
49
48
  setDefaultLayers(ids: string[]): void;
50
49
  setSkeletonLayers(ids: string[]): void;
51
50
  setCurrentLayers(ids: string[]): void;
@@ -0,0 +1,6 @@
1
+ import { IPolygonConfig, Polygon } from './polygon';
2
+ export declare class Arrow<Config extends IPolygonConfig = IPolygonConfig> extends Polygon<Config> {
3
+ type: string;
4
+ readonly isArrow: boolean;
5
+ constructor(config?: Config);
6
+ }
@@ -0,0 +1,35 @@
1
+ import { IShape2Config, Shape2 } from '../objects/shape2';
2
+ export interface IAxesConfig extends IShape2Config {
3
+ width?: number;
4
+ height?: number;
5
+ arrowDeg?: number;
6
+ arrowLength?: number;
7
+ }
8
+ /**
9
+ * ^ p1
10
+ * │
11
+ * │
12
+ * ----- p0 ───────>
13
+ * ╎
14
+ * ╎
15
+ *
16
+ * @Author Dio Zhu 2024.8.11
17
+ */
18
+ export declare class Axes<Config extends IAxesConfig> extends Shape2 {
19
+ name: string;
20
+ readonly isAxes: boolean;
21
+ matrixAutoUpdate: boolean;
22
+ matrixWorldAutoUpdate: boolean;
23
+ composeNode: boolean;
24
+ dynamically: boolean;
25
+ arrowLength: number;
26
+ arrowDeg: number;
27
+ stroke: string;
28
+ fill: string | undefined;
29
+ lineWidth: number;
30
+ xMesh: Shape2;
31
+ yMesh: Shape2;
32
+ xrMesh: Shape2;
33
+ yrMesh: Shape2;
34
+ constructor(config?: Config);
35
+ }
@@ -0,0 +1,10 @@
1
+ import { IShape2Config, Shape2 } from '../objects/shape2';
2
+ export interface ICircleConfig extends IShape2Config {
3
+ radius?: number;
4
+ }
5
+ export declare class Circle<Config extends ICircleConfig> extends Shape2 {
6
+ type: string;
7
+ name: string;
8
+ readonly isCircle: boolean;
9
+ constructor(config?: Config);
10
+ }
@@ -0,0 +1,9 @@
1
+ import { IShape2Config, Shape2 } from '../objects/shape2';
2
+ export interface IPolygonConfig extends IShape2Config {
3
+ }
4
+ export declare class Polygon<Config extends IPolygonConfig> extends Shape2 {
5
+ readonly isPolygon: boolean;
6
+ type: string;
7
+ name: string;
8
+ constructor(config?: Config);
9
+ }
@@ -0,0 +1,21 @@
1
+ import { default as Vector2 } from '../math/vector2';
2
+ import { IBox2, IContext2D, IText2 } from '../interfaces';
3
+ import { ITextMaterial2Config } from '../materials/text-material2';
4
+ import { IShape2Config, Shape2 } from '../objects/shape2';
5
+ import { TextMat2 } from '../materials/text-mat2';
6
+ export interface ITextConfig extends IShape2Config, ITextMaterial2Config {
7
+ fixed?: boolean;
8
+ rotated?: number;
9
+ }
10
+ export declare class Text<Config extends ITextConfig> extends Shape2 implements IText2 {
11
+ readonly isText: boolean;
12
+ name: string;
13
+ mat: TextMat2<Config>;
14
+ textContent?: string;
15
+ size: Vector2;
16
+ constructor(config?: Config);
17
+ /** @override */
18
+ computeBoundingBox(): IBox2;
19
+ /** @override */
20
+ render(ctx: IContext2D): void;
21
+ }
@@ -1,4 +1,4 @@
1
- import { ITexture, IVector2 } from '../interfaces';
1
+ import { ICanvas, ITexture, IVector2 } from '../interfaces';
2
2
  import { default as Vector2 } from '../math/vector2';
3
3
  import { default as Matrix3 } from '../math/matrix3';
4
4
  import { Node2 } from '../objects/node2';
@@ -25,7 +25,7 @@ export declare class Texture<Config extends ITextureConfig> extends Node2<Config
25
25
  userData: any;
26
26
  version: number;
27
27
  private _needsUpdate;
28
- image: OffscreenCanvas | HTMLCanvasElement | undefined;
28
+ image: ICanvas | undefined;
29
29
  offset: Vector2;
30
30
  repeat: Vector2;
31
31
  center: Vector2;
@@ -0,0 +1,14 @@
1
+ import { IBox2, IMatrix3, ITree } from '../interfaces';
2
+ import { default as Matrix3 } from '../math/matrix3';
3
+ export declare function getBoxFromString(str?: string, out?: IBox2): IBox2;
4
+ export declare function getBoxString(box?: IBox2): string;
5
+ export declare function getRoot(svg: Element, rn?: string): Element | undefined;
6
+ export declare function removeEmpty(out: Element): Element;
7
+ export declare function traverseSvg(o: Element, cb: Function): void;
8
+ export declare function getElementsMap(el: Element, out?: Record<string, Element>): Record<string, Element>;
9
+ export declare function getLayersTree(el: Element, lv?: number, lvi?: number, out?: ITree[]): ITree[];
10
+ export declare function traverseTree(t: ITree | ITree[], cb: Function): void;
11
+ export declare function getUseSymbolId(el: Element): string | undefined;
12
+ export declare function getAttr<T>(el: Element | null, attr: string, def?: T): T;
13
+ export declare function getMatrix(el: Element, flipY?: boolean, out?: Matrix3): IMatrix3;
14
+ export declare function convertEndpointToCenterParameterization(x1: number, y1: number, x2: number, y2: number, fa: number, fs: number, rx: number, ry: number, psiDeg: number): number[];
@@ -0,0 +1 @@
1
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "archgine",
3
- "version": "1.0.36",
3
+ "version": "1.0.39",
4
4
  "description": "A simple rendering engine developed by archbds.",
5
5
  "author": "diozhu@163.com",
6
6
  "license": "ISC",
@@ -1,20 +0,0 @@
1
- import { SVGPathData } from 'svg-pathdata';
2
- import { default as Matrix3 } from '../math/matrix3';
3
- import { IBox2, IContext2D, IMatrix3, IPath2, IPath2Command } from '../interfaces';
4
- export interface IPath2Config {
5
- commands: string | IPath2Command[];
6
- }
7
- export declare class Path2<Config extends IPath2Config> extends SVGPathData implements IPath2 {
8
- readonly name: string;
9
- version: number;
10
- viewMatrix: Matrix3;
11
- boundingBox: IBox2;
12
- constructor(config?: Config);
13
- static getInstanceByPath(o: Element): Path2<any> | undefined;
14
- computeBoundingBox(): IBox2;
15
- render(ctx: IContext2D): void;
16
- applyMatrix(m: IMatrix3): IPath2;
17
- copy(source: IPath2): IPath2;
18
- clone(): IPath2;
19
- static render(ctx: IContext2D, commands: IPath2Command[]): void;
20
- }