Browse Source

persagy-base,draw,graph 代码飞检。

sybotan 4 years ago
parent
commit
80aa2b0e24
100 changed files with 1551 additions and 1622 deletions
  1. 1 1
      persagy-web-base/package.json
  2. 55 118
      persagy-web-base/src/SMatrix.ts
  3. 18 18
      persagy-web-base/src/SMouseEvent.ts
  4. 8 8
      persagy-web-base/src/SObject.ts
  5. 11 5
      persagy-web-base/src/SObjectObserver.ts
  6. 10 5
      persagy-web-base/src/enums/SKeyCode.ts
  7. 1 1
      persagy-web-base/src/enums/SMouseButton.ts
  8. 1 1
      persagy-web-base/src/enums/STouchState.ts
  9. 6 7
      persagy-web-base/src/undo/SCommandLog.ts
  10. 8 9
      persagy-web-base/src/undo/SUndoCommand.ts
  11. 15 16
      persagy-web-base/src/undo/SUndoStack.ts
  12. 7 3
      persagy-web-base/src/utils/SNetUtil.ts
  13. 7 5
      persagy-web-base/src/utils/SStringBuilder.ts
  14. 9 5
      persagy-web-base/src/utils/SStringUtil.ts
  15. 5 5
      persagy-web-base/src/utils/SUuid.ts
  16. 14 14
      persagy-web-big/src/factories/SItemFactory.ts
  17. 9 9
      persagy-web-big/src/items/SIconTextItem.ts
  18. 1 1
      persagy-web-big/src/items/SPolygonItem.ts
  19. 1 1
      persagy-web-big/src/items/floor/SSpaceItems.ts
  20. 1 1
      persagy-web-big/src/items/floor/SWallItems.ts
  21. 1 1
      persagy-web-big/src/parser/SFloorParser.ts
  22. 1 1
      persagy-web-big/src/parser/SParser.ts
  23. 2 2
      persagy-web-big/src/utils/SMathUtil.ts
  24. 1 1
      persagy-web-draw/package.json
  25. 5 5
      persagy-web-draw/src/SBrush.ts
  26. 39 38
      persagy-web-draw/src/SCanvasView.ts
  27. 52 67
      persagy-web-draw/src/SColor.ts
  28. 6 6
      persagy-web-draw/src/SFont.ts
  29. 13 12
      persagy-web-draw/src/SGradient.ts
  30. 3 3
      persagy-web-draw/src/SGradientStop.ts
  31. 13 12
      persagy-web-draw/src/SLinearGradient.ts
  32. 129 129
      persagy-web-draw/src/SPainter.ts
  33. 39 39
      persagy-web-draw/src/SPath.ts
  34. 4 4
      persagy-web-draw/src/SPathCommand.ts
  35. 7 7
      persagy-web-draw/src/SPen.ts
  36. 18 18
      persagy-web-draw/src/SRadialGradient.ts
  37. 12 13
      persagy-web-draw/src/SShadow.ts
  38. 49 49
      persagy-web-draw/src/engines/SCanvasPaintEngine.ts
  39. 48 48
      persagy-web-draw/src/engines/SPaintEngine.ts
  40. 3 3
      persagy-web-draw/src/engines/SPaintState.ts
  41. 38 44
      persagy-web-draw/src/engines/SSvgPaintEngine.ts
  42. 6 0
      persagy-web-draw/src/enums/SArrowStyleType.ts
  43. 1 1
      persagy-web-draw/src/enums/SAspectRatioMode.ts
  44. 1 1
      persagy-web-draw/src/enums/SBrushType.ts
  45. 9 9
      persagy-web-draw/src/enums/SCompositeType.ts
  46. 1 1
      persagy-web-draw/src/enums/SLineCapStyle.ts
  47. 1 1
      persagy-web-draw/src/enums/SLineJoinStyle.ts
  48. 4 4
      persagy-web-draw/src/enums/SPaintEngineType.ts
  49. 5 5
      persagy-web-draw/src/enums/STextAlign.ts
  50. 6 6
      persagy-web-draw/src/enums/STextBaseLine.ts
  51. 3 3
      persagy-web-draw/src/enums/STextDirection.ts
  52. 5 5
      persagy-web-draw/src/types/SArrow.ts
  53. 27 27
      persagy-web-draw/src/types/SLine.ts
  54. 22 19
      persagy-web-draw/src/types/SPoint.ts
  55. 47 46
      persagy-web-draw/src/types/SRect.ts
  56. 21 20
      persagy-web-draw/src/types/SSize.ts
  57. 6 6
      persagy-web-draw/src/utils/SPolygonUtil.ts
  58. 8 8
      persagy-web-edit/src/commands/SGraphAddCommand.ts
  59. 2 2
      persagy-web-edit/src/commands/SGraphCommand.ts
  60. 12 12
      persagy-web-edit/src/commands/SGraphMoveCommand.ts
  61. 6 6
      persagy-web-edit/src/commands/SGraphPointListDelete.ts
  62. 6 6
      persagy-web-edit/src/commands/SGraphPointListInsert.ts
  63. 7 7
      persagy-web-edit/src/commands/SGraphPointListUpdate.ts
  64. 6 6
      persagy-web-edit/src/commands/SGraphPropertyCommand.ts
  65. 2 2
      persagy-web-edit/src/items/ImageEdit.ts
  66. 32 32
      persagy-web-edit/src/items/LineEdit.ts
  67. 10 10
      persagy-web-edit/src/items/PolygonEdit.ts
  68. 44 44
      persagy-web-edit/src/items/PolylineEdit.ts
  69. 7 7
      persagy-web-edit/src/items/TextEdit.ts
  70. 1 1
      persagy-web-fengmap/src/config/ProjectRf.ts
  71. 13 13
      persagy-web-fengmap/src/parser/SFengParser.ts
  72. 1 1
      persagy-web-graph/package.json
  73. 100 100
      persagy-web-graph/src/SGraphItem.ts
  74. 42 63
      persagy-web-graph/src/SGraphScene.ts
  75. 86 91
      persagy-web-graph/src/SGraphSelectContainer.ts
  76. 61 60
      persagy-web-graph/src/SGraphView.ts
  77. 14 15
      persagy-web-graph/src/commands/SGraphAddCommand.ts
  78. 3 3
      persagy-web-graph/src/commands/SGraphCommand.ts
  79. 19 21
      persagy-web-graph/src/commands/SGraphMoveCommand.ts
  80. 12 11
      persagy-web-graph/src/commands/SGraphPointListDelete.ts
  81. 12 11
      persagy-web-graph/src/commands/SGraphPointListInsert.ts
  82. 14 13
      persagy-web-graph/src/commands/SGraphPointListUpdate.ts
  83. 12 12
      persagy-web-graph/src/commands/SGraphPropertyCommand.ts
  84. 4 4
      persagy-web-graph/src/enums/SGraphLayoutType.ts
  85. 2 2
      persagy-web-graph/src/enums/SImageShowType.ts
  86. 5 5
      persagy-web-graph/src/enums/SLineStyle.ts
  87. 4 4
      persagy-web-graph/src/enums/SOrderSetType.ts
  88. 3 3
      persagy-web-graph/src/enums/STextOrigin.ts
  89. 8 8
      persagy-web-graph/src/items/SAnchorItem.ts
  90. 16 16
      persagy-web-graph/src/items/SGraphAreaGroupItem.ts
  91. 18 13
      persagy-web-graph/src/items/SGraphLineItem.ts
  92. 15 15
      persagy-web-graph/src/items/SGraphPolyGroupItem.ts
  93. 9 9
      persagy-web-graph/src/items/SGraphRectItem.ts
  94. 12 11
      persagy-web-graph/src/items/SGraphShape.ts
  95. 13 13
      persagy-web-graph/src/items/SGraphSvgItem.ts
  96. 28 27
      persagy-web-graph/src/items/SImageItem.ts
  97. 13 13
      persagy-web-graph/src/items/SObjectItem.ts
  98. 31 32
      persagy-web-graph/src/items/STextItem.ts
  99. 2 1
      persagy-web-graph/src/types/AreaGroup.ts
  100. 0 0
      persagy-web-graph/src/types/Point.ts

+ 1 - 1
persagy-web-base/package.json

@@ -14,7 +14,7 @@
     "keywords": [
         "base"
     ],
-    "author": "庞利祥 (sybotan@126.com)",
+    "author": "庞利祥  <sybotan@126.com>",
     "license": "ISC",
     "publishConfig": {
         "registry": "http://dev.dp.sagacloud.cn:8082/repository/npm-hosted/"

+ 55 - 118
persagy-web-base/src/SMatrix.ts

@@ -27,9 +27,10 @@
 /**
  * 变换矩阵
  *
- * @author  庞利祥 <sybotan@126.com>
+ * @author 庞利祥 <sybotan@126.com>
  */
 export class SMatrix {
+    // 开始:矩阵元素定义
     m11 = 1;
     m21 = 0;
     m31 = 0;
@@ -49,56 +50,57 @@ export class SMatrix {
     m24 = 0;
     m34 = 0;
     m44 = 1;
+    // 结束:矩阵元素定义
 
-    /** x轴方向的缩放比例   */
+    /** x 轴方向的缩放比例 */
     get a(): number {
         return this.m11;
-    } //
+    } // Get a
     set a(v: number) {
         this.m11 = v;
-    }
-    /** x轴方向斜切  */
+    } // Set a
+    /** x 轴方向斜切  */
     get b(): number {
         return this.m12;
-    }
+    } // Get b
     set b(v: number) {
         this.m12 = v;
-    }
+    } // Set b
     /** y轴方向斜切  */
     get c(): number {
         return this.m21;
-    }
+    } // Get c
     set c(v: number) {
         this.m21 = v;
-    }
+    } // Set c
     /** y轴方向缩放比例    */
     get d(): number {
         return this.m22;
-    }
+    } // Get d
     set d(v: number) {
         this.m22 = v;
-    }
+    } // Set d
     /** x轴方向平移  */
     get e(): number {
         return this.m41;
-    }
+    } // Get e
     set e(v: number) {
         this.m41 = v;
-    }
+    } // Set e
     /** y轴方向平移  */
     get f(): number {
         return this.m42;
-    }
+    } // Get f
     set f(v: number) {
         this.m42 = v;
-    }
+    } // Set f
 
     /**
      * 是否为 2D 矩阵
      */
     get is2D(): boolean {
         return true;
-    }
+    } // Get is2D
 
     /**
      * 是否为单位矩阵
@@ -122,17 +124,12 @@ export class SMatrix {
             this.m34 == 0 &&
             this.m44 == 1
         );
-    }
-
-    // /**
-    //  * 构造函数
-    //  */
-    // constructor() {}
+    } // Get isIdentity
 
     /**
      * 重置变换矩阵
      *
-     * @return  返回自身
+     * @return 返回自身
      */
     reset(): SMatrix {
         this.m11 = 1;
@@ -155,13 +152,13 @@ export class SMatrix {
         this.m34 = 0;
         this.m44 = 1;
         return this;
-    }
+    } // Function reset()
 
     /**
      * 原始矩阵乘以给定的变换矩阵
      *
-     * @param   mat         给定的变换矩阵
-     * @return  返回自身
+     * @param mat   给定的变换矩阵
+     * @return 返回自身
      */
     multiply(mat: SMatrix): SMatrix {
         [
@@ -254,15 +251,15 @@ export class SMatrix {
                 this.m44 * mat.m44
         ];
         return this;
-    }
+    } // Function multiply()
 
     /**
      * 位移变换
      *
-     * @param   dx          X轴位移
-     * @param   dy          Y轴位移
-     * @param   dz          Z轴位移
-     * @return  返回自身
+     * @param dx    X 轴位移
+     * @param dy    Y 轴位移
+     * @param dz    Z 轴位移
+     * @return 返回自身
      */
     translate(dx: number, dy: number, dz = 0): SMatrix {
         const mat = new SMatrix();
@@ -271,30 +268,14 @@ export class SMatrix {
         mat.m43 = dz;
         this.multiply(mat);
         return this;
-    }
-
-    // /**
-    //  * 平移变换矩阵
-    //  *
-    //  * @param   dx          X轴位移
-    //  * @param   dy          Y轴位移
-    //  * @param   dz          Z轴位移
-    //  * @return  返回平移变换矩阵
-    //  */
-    // translated(dx: number, dy: number, dz = 0): SMatrix {
-    //     const mat = new SMatrix();
-    //     mat.m41 = dx;
-    //     mat.m42 = dy;
-    //     mat.m43 = dz;
-    //     return mat;
-    // }
+    } // Function translate()
 
     /**
      * 缩放变换
      *
-     * @param   sx          X轴缩放比例
-     * @param   sy          Y轴缩放比例
-     * @return  返回自身
+     * @param sx    X 轴缩放比例
+     * @param sy    Y 轴缩放比例
+     * @return 返回自身
      */
     scale(sx: number, sy: number): SMatrix {
         const mat = new SMatrix();
@@ -302,47 +283,33 @@ export class SMatrix {
         mat.m22 = sy;
         this.multiply(mat);
         return this;
-    }
-
-    // /**
-    //  * 缩放变换矩阵
-    //  *
-    //  * @param   sx          X轴缩放比例
-    //  * @param   sy          Y轴缩放比例
-    //  * @return  返回缩放变换矩阵
-    //  */
-    // scaled(sx: number, sy: number): SMatrix {
-    //     const mat = new SMatrix();
-    //     mat.m11 = sx;
-    //     mat.m22 = sy;
-    //     return mat;
-    // }
+    } // Function scale
 
     /**
      * 旋转变形
      *
-     * @param   angle       绕 Z 轴旋转角度(单位角度度)
-     * @return  返回自身
+     * @param angle     绕 Z 轴旋转角度(单位角度度)
+     * @return 返回自身
      */
     rotate(angle: number): SMatrix;
 
     /**
      * 旋转变形
      *
-     * @param   rotX        绕 X 轴旋转角度(单位角度度)
-     * @param   rotY        绕 X 轴旋转角度(单位角度度)
-     * @param   rotZ        绕 X 轴旋转角度(单位角度度)
-     * @return  返回自身
+     * @param rotX  绕 X 轴旋转角度(单位角度 度)
+     * @param rotY  绕 X 轴旋转角度(单位角度 度)
+     * @param rotZ  绕 X 轴旋转角度(单位角度 度)
+     * @return 返回自身
      */
     rotate(rotX: number, rotY: number, rotZ: number): SMatrix;
 
     /**
      * 旋转变形
      *
-     * @param   rotX        绕 Z 轴旋转角度 | 绕 X 轴旋转角度(单位度)
-     * @param   rotY        绕 X 轴旋转角度(单位度)
-     * @param   rotZ        绕 X 轴旋转角度(单位度)
-     * @return  返回自身
+     * @param rotX  绕 Z 轴旋转角度 | 绕 X 轴旋转角度(单位度)
+     * @param rotY  绕 X 轴旋转角度(单位度)
+     * @param rotZ  绕 X 轴旋转角度(单位度)
+     * @return 返回自身
      */
     rotate(rotX: number, rotY?: number, rotZ?: number): SMatrix {
         const matZ = new SMatrix();
@@ -375,12 +342,12 @@ export class SMatrix {
             this.multiply(matZ);
             return this;
         }
-    }
+    } // Function rotate()
 
     /**
      * 转置当前矩阵
      *
-     * @return  返回自身
+     * @return 返回自身
      */
     transpose(): SMatrix {
         [this.m12, this.m21] = [this.m21, this.m12];
@@ -392,43 +359,13 @@ export class SMatrix {
 
         [this.m34, this.m43] = [this.m43, this.m34];
         return this;
-    }
-
-    // /**
-    //  * 转置当前矩阵
-    //  *
-    //  * @return  返回自身
-    //  */
-    // transposed(): SMatrix {
-    //     const mat = new SMatrix();
-    //     mat.m11 = this.m11;
-    //     mat.m21 = this.m12;
-    //     mat.m31 = this.m13;
-    //     mat.m41 = this.m14;
-    //
-    //     mat.m12 = this.m21;
-    //     mat.m22 = this.m22;
-    //     mat.m32 = this.m23;
-    //     mat.m42 = this.m24;
-    //
-    //     mat.m13 = this.m31;
-    //     mat.m23 = this.m32;
-    //     mat.m33 = this.m33;
-    //     mat.m43 = this.m34;
-    //
-    //     mat.m14 = this.m41;
-    //     mat.m24 = this.m42;
-    //     mat.m34 = this.m43;
-    //     mat.m44 = this.m44;
-    //
-    //     return mat;
-    // }
+    } // Function transpose()
 
     /**
      * 返回当前矩阵的逆矩阵
      *
-     * @return  当前矩阵的逆矩阵
-     * */
+     * @return 当前矩阵的逆矩阵
+     */
     inversed(): SMatrix {
         const detMat = this.det();
         const d = this.value();
@@ -453,13 +390,13 @@ export class SMatrix {
         ret.m34 = detMat.m34 / d;
         ret.m44 = detMat.m44 / d;
         return ret;
-    }
+    } // Function inversed()
 
     /**
      * 返回当前矩阵的伴随矩阵
      *
-     * @return  当前矩阵的伴随矩阵
-     * */
+     * @return 当前矩阵的伴随矩阵
+     */
     det(): SMatrix {
         const m = new SMatrix();
         m.m11 =
@@ -586,13 +523,13 @@ export class SMatrix {
             this.m21 * this.m12 * this.m33 -
             this.m11 * this.m32 * this.m23;
         return m;
-    }
+    } // Function det()
 
     /**
      * 返回当前矩阵的值
      *
-     * @return  当前矩阵的值
-     * */
+     * @return 当前矩阵的值
+     */
     value(): number {
         return (
             this.m11 *
@@ -624,5 +561,5 @@ export class SMatrix {
                     this.m22 * this.m13 * this.m34 -
                     this.m12 * this.m33 * this.m24)
         );
-    }
+    } // Function value()
 }

+ 18 - 18
persagy-web-base/src/SMouseEvent.ts

@@ -24,37 +24,37 @@
  * *********************************************************************************************************************
  */
 
+import { SMatrix } from "./SMatrix";
+
 /**
  * 鼠标事件
  *
- * @author
+ * @author 郝洁 <haojie@persagy.com>
  */
-import { SMatrix } from "./SMatrix";
-
 export class SMouseEvent {
     /** 事件类型 */
     type: string;
-    /** x坐标 */
+    /** x 坐标 */
     x: number;
-    /** y坐标 */
+    /** y 坐标 */
     y: number;
-    /** 屏幕x坐标 */
+    /** 屏幕 x 坐标 */
     screenX: number;
-    /** 屏幕y坐标 */
+    /** 屏幕 y 坐标 */
     screenY: number;
-    /** 客户端x坐标 */
+    /** 客户端 x 坐标 */
     clientX: number;
-    /** 客户端Y坐标 */
+    /** 客户端 Y 坐标 */
     clientY: number;
-    /** X轴偏移量 */
+    /** X 轴偏移量 */
     offsetX: number;
-    /** Y轴偏移量 */
+    /** Y 轴偏移量 */
     offsetY: number;
-    /** 是否按下alt键 */
+    /** 是否按下 alt 键 */
     altKey: boolean;
-    /** 是否按下ctrl键 */
+    /** 是否按下 ctrl 键 */
     ctrlKey: boolean;
-    /** 是否按下shiftKey键 */
+    /** 是否按下 shiftKey 键 */
     shiftKey: boolean;
     /** 鼠标按键 */
     buttons: number;
@@ -64,7 +64,7 @@ export class SMouseEvent {
     /**
      * 构造函数
      *
-     * @param   event   系统鼠标事件
+     * @param event     系统鼠标事件
      */
     constructor(event: MouseEvent | SMouseEvent) {
         // let bbox = (this.type = event.type); //event.srcElement.getBoundingClientRect()
@@ -99,8 +99,8 @@ export class SMouseEvent {
             this.matrix.m43 = event.matrix.m43;
             this.matrix.m44 = event.matrix.m44;
         } else {
-            this.x = event.offsetX; // TODO: PLX  - bbox.left;
-            this.y = event.offsetY; // TODO: PLX  - bbox.top;
+            this.x = event.offsetX;
+            this.y = event.offsetY;
         }
-    } // Function constructor()
+    } // Constructor()
 } // Class SMouseEvent

+ 8 - 8
persagy-web-base/src/SObject.ts

@@ -29,7 +29,7 @@ import { SObjectObserver } from "./SObjectObserver";
 /**
  * Sybotan 对象
  *
- * @author  庞利祥(sybotan@126.com)
+ * @author 庞利祥 <sybotan@126.com>
  */
 export class SObject {
     /** 对象名 */
@@ -42,9 +42,9 @@ export class SObject {
     /**
      * 连接信号
      *
-     * @param   name        信息名称
-     * @param   receiver    信号接收者
-     * @param   callback    回调函数
+     * @param name        信息名称
+     * @param receiver    信号接收者
+     * @param callback    回调函数
      */
     // eslint-disable-next-line @typescript-eslint/no-explicit-any
     connect(name: string, receiver: any, callback: Function): void {
@@ -69,8 +69,8 @@ export class SObject {
     /**
      * 断开连接的信号
      *
-     * @param   name        信息名称
-     * @param   receiver    信号接收者
+     * @param name        信息名称
+     * @param receiver    信号接收者
      */
     // eslint-disable-next-line @typescript-eslint/no-explicit-any
     disconnect(name: string, receiver: any): void {
@@ -97,8 +97,8 @@ export class SObject {
     /**
      * 发出事件
      *
-     * @param   name    事件名称
-     * @param   args    参数
+     * @param name    事件名称
+     * @param args    参数
      */
     // eslint-disable-next-line @typescript-eslint/no-explicit-any
     $emit(name: string, ...args: any): void {

+ 11 - 5
persagy-web-base/src/SObjectObserver.ts

@@ -24,6 +24,11 @@
  * *********************************************************************************************************************
  */
 
+/**
+ * object 事件订阅
+ *
+ * @author 郝洁 <haojie@persagy.com>
+ */
 export class SObjectObserver {
     /** 回调函数 */
     private readonly callback: Function;
@@ -34,8 +39,8 @@ export class SObjectObserver {
     /**
      * 构造函数
      *
-     * @param   receiver    信号接收者
-     * @param   callback    回调函数
+     * @param receiver  信号接收者
+     * @param callback  回调函数
      */
     // eslint-disable-next-line @typescript-eslint/no-explicit-any
     constructor(receiver: any, callback: Function) {
@@ -46,7 +51,7 @@ export class SObjectObserver {
     /**
      * 发送通知
      *
-     * @param   args    参数
+     * @param args  参数
      */
     // eslint-disable-next-line @typescript-eslint/no-explicit-any
     notify(...args: any): void {
@@ -54,9 +59,10 @@ export class SObjectObserver {
     } // Function notify()
 
     /**
-     * 上信号接收者比较
+     * 上一个信号接收者比较
      *
-     * @param   receiver        信号接收者
+     * @param receiver  信号接收者
+     * @return 是否相同
      */
     // eslint-disable-next-line @typescript-eslint/no-explicit-any
     compar(receiver: any): boolean {

+ 10 - 5
persagy-web-base/src/enums/SKeyCode.ts

@@ -27,11 +27,16 @@
 /**
  * 键盘按键枚举
  *
- * @author
+ * @author 郝洁 <haojie@persagy.com>
  */
 export enum SKeyCode {
-  Enter = 13,
-  Esc = 27,
-  Delete = 46,
-  Z = 90
+    /** 回车键 */
+    Enter = 13,
+    /** Esc键 */
+    Esc = 27,
+    /** 删除键 */
+    Delete = 46,
+    /** Z 键 */
+    Z = 90
 } // Enum SKeyCode
+//todo a-z 0-9 郝洁补充

+ 1 - 1
persagy-web-base/src/enums/SMouseButton.ts

@@ -27,7 +27,7 @@
 /**
  * 鼠标按键枚举
  *
- * @author
+ * @author 郝洁 <haojie@persagy.com>
  */
 export enum SMouseButton {
     /** 鼠标左键 */

+ 1 - 1
persagy-web-base/src/enums/STouchState.ts

@@ -27,7 +27,7 @@
 /**
  * 手势状态
  *
- * @author  庞利祥(sybotan@126.com)
+ * @author 庞利祥 <sybotan@126.com>
  */
 export enum STouchState {
     /** 标准状态 */

+ 6 - 7
persagy-web-base/src/undo/SCommandLog.ts

@@ -25,16 +25,15 @@
  */
 
 /**
- *  命令日志接口
+ * 命令日志接口
  *
- *  @author haojianlong
- * */
-
+ * @author 郝建龙 <haojianlong@sagacloud.com>
+ */
 export interface SCommandLog {
-    /** 命令名称    */
+    /** 命令名称 */
     command: string;
-    /** 命令描述    */
+    /** 命令描述 */
     desc: string;
-    /** 命令细节    */
+    /** 命令细节 */
     detail: string;
 } // interface SCommandLog

+ 8 - 9
persagy-web-base/src/undo/SUndoCommand.ts

@@ -27,18 +27,18 @@
 /**
  * Undo命令
  *
- * @author  庞利祥(sybotan@126.com)
+ * @author 庞利祥 <sybotan@126.com>
  */
 export abstract class SUndoCommand {
-    /** 命令名称    */
+    /** 命令名称 */
     abstract get command(): string;
-    /** 命令描述    */
+    /** 命令描述 */
     desc: string = "undefined";
 
     /**
      * 构造函数
      *
-     * @param   parent      指向父命令
+     * @param  parent   指向父命令
      */
     protected constructor(parent: SUndoCommand | null = null) {} // Constructor
 
@@ -55,15 +55,15 @@ export abstract class SUndoCommand {
     /**
      * 合并命令
      *
-     * @param   command     合并的命令
-     * @return  成功能返回true,否则返回false
+     * @param command     合并的命令
+     * @return 成功能返回true,否则返回false
      */
     mergeWith(command: SUndoCommand): boolean {
         return false;
     } // Function mergeWith()
 
     /**
-     * 命令ID。如果命令不能合并,则返回-1。如果支持合并则返回一个正整数。
+     * 命令 ID 。如果命令不能合并,则返回 -1 。如果支持合并则返回一个正整数。
      */
     id(): number {
         return -1;
@@ -71,8 +71,7 @@ export abstract class SUndoCommand {
 
     /**
      * 命令转为描述谢姐
-     *
-     * */
+     */
     toString(): string {
         return "";
     } // toString()

+ 15 - 16
persagy-web-base/src/undo/SUndoStack.ts

@@ -29,9 +29,9 @@ import { SUndoCommand } from "./SUndoCommand";
 import { SCommandLog } from "./SCommandLog";
 
 /**
- * Undo操作堆栈
+ * Undo 操作堆栈
  *
- * @author  庞利祥(sybotan@126.com)
+ * @author 庞利祥 <sybotan@126.com>
  */
 export class SUndoStack extends SObject {
     /** 命令栈 */
@@ -52,10 +52,10 @@ export class SUndoStack extends SObject {
     isChange: boolean = false;
 
     /**
-     * 执行redo操作
+     * 执行 redo 操作
      */
     redo(): void {
-        if (!this.canRedo()) {
+        if (!this.canRedo()) { // 不能执行 redo ,直接返回
             return;
         }
 
@@ -65,10 +65,10 @@ export class SUndoStack extends SObject {
     } // Function redo()
 
     /**
-     * 执行undo操作
+     * 执行 undo 操作
      */
     undo(): void {
-        if (!this.canUndo()) {
+        if (!this.canUndo()) { // 不能执行 undo ,直接返回
             return;
         }
 
@@ -78,18 +78,18 @@ export class SUndoStack extends SObject {
     } // Function undo()
 
     /**
-     * 是否可以执行Redo操作
+     * 是否可以执行 Redo 操作
      *
-     * @return  可以执行,返回true;否则返回false。
+     * @return 可以执行,返回 true ;否则返回 false 
      */
     canRedo(): boolean {
         return this.index + 1 < this.cmdStack.length;
     } // Function canRedo()
 
     /**
-     * 是否可以执行Undo操作
+     * 是否可以执行 Undo 操作
      *
-     * @return  可以执行,返回true;否则返回false。
+     * @return 可以执行,返回 true ;否则返回 false 
      */
     canUndo(): boolean {
         return this.index >= 0;
@@ -107,11 +107,11 @@ export class SUndoStack extends SObject {
     /**
      * 返回指定索引的命令
      *
-     * @param   index       命令在栈中的索引
+     * @param index     命令在栈中的索引
      */
     command(index: number): SUndoCommand | null {
-        // 如果索引越界,则返回null
-        if (index < 0 || index >= this.cmdStack.length) {
+        if (index < 0 || index >= this.cmdStack.length) { // 如果索引越界
+            // 返回null
             return null;
         }
 
@@ -128,7 +128,7 @@ export class SUndoStack extends SObject {
     /**
      * 将命令添加到命令栈
      *
-     * @param   cmd     被添加的命令
+     * @param cmd     被添加的命令
      */
     push(cmd: SUndoCommand): void {
         this.cmdStack.length = this._index + 1;
@@ -143,8 +143,7 @@ export class SUndoStack extends SObject {
 
     /**
      * 将命令堆栈转为日志(命令数组)
-     *
-     * */
+     */
     toLog(): SCommandLog[] {
         let stackList: SCommandLog[] = [];
         for (let i = 0; i <= this.index; i++) {

+ 7 - 3
persagy-web-base/src/utils/SNetUtil.ts

@@ -23,13 +23,17 @@
  *
  * *********************************************************************************************************************
  */
-
+/**
+ * 网络操作工具类
+ *
+ * @author 郝洁 <haojie@persagy.com>
+ */
 export class SNetUtil {
     /**
      * 下载
      *
-     * @param   name    下载文件名称
-     * @param   url     下载url地址
+     * @param name  下载文件名称
+     * @param url   下载url地址
      */
     static downLoad(name: string, url: string): void {
         let oA = document.createElement("a");

+ 7 - 5
persagy-web-base/src/utils/SStringBuilder.ts

@@ -25,9 +25,9 @@
  */
 
 /**
- * 字符串builder
+ * 字符串 builder
  *
- * @author  庞利祥(sybotan@126.com)
+ * @author 庞利祥 <sybotan@126.com>
  */
 export class SStringBuilder {
     /** 字符串数组 */
@@ -36,7 +36,7 @@ export class SStringBuilder {
     /**
      * 构造函数
      *
-     * @param   msg     初始字符串
+     * @param msg   初始字符串
      */
     constructor(msg?: string) {
         if (msg != undefined) {
@@ -47,7 +47,8 @@ export class SStringBuilder {
     /**
      * 追加字符串
      *
-     * @param   msg     追加的字符串
+     * @param msg   追加的字符串
+     * @return 字符串 builder 对象
      */
     append(msg: string): SStringBuilder {
         this._strArray.push(msg);
@@ -57,7 +58,8 @@ export class SStringBuilder {
     /**
      * 转换为字符串
      *
-     * @param   gap     分隔符,默认换行(\n)
+     * @param gap   分隔符,默认换行 (\n)
+     * @return 转换后的字符串
      */
     toString(gap: string = "\n"): string {
         return this._strArray.join(gap);

+ 9 - 5
persagy-web-base/src/utils/SStringUtil.ts

@@ -23,14 +23,18 @@
  *
  * *********************************************************************************************************************
  */
-
+/**
+ * 字符串工具类
+ *
+ * @author 郝洁 <haojie@persagy.com>
+ */
 export class SStringUtil {
     /**
-     * 数值转16进制字符串
+     * 数值转 16 进制字符串
      *
-     * @param   n       要转换的数值
-     * @param   len     转换后的长度(默认为2)
-     * @return  转换后的数据
+     * @param n         要转换的数值
+     * @param len       转换后的长度(默认为 2)
+     * @return 转换后的数据
      */
     static num2Hex(n: number, len: number = 2): string {
         let hex = "";

+ 5 - 5
persagy-web-base/src/utils/SUuid.ts

@@ -26,15 +26,15 @@
 
 /**
  * 生成uuid工具
- *
+ * @author 郝洁 <haojie@persagy.com>
  */
 export class SUuid {
     /**
-     * 默认生成32位uuid
+     * 默认生成 32  uuid
      *
-     * @param   len     要生成的uuid的长度
-     * @param   radix   生成uuid的基数
-     * */
+     * @param len       要生成的 uuid 的长度
+     * @param radix     生成 uuid 的基数
+     */
     static uuid(len: number, radix: number): string {
         const chars = "0123456789abcdef".split("");
         let uuid = [],

+ 14 - 14
persagy-web-big/src/factories/SItemFactory.ts

@@ -53,8 +53,8 @@ export class SItemFactory {
     /**
      * 创建柱子item
      *
-     * @param   data    柱子数据
-     * @return  柱子 item
+     * @param data    柱子数据
+     * @return 柱子 item
      */
     createColumn(data: Column): SColumnItem {
         return new SColumnItem(null, data);
@@ -63,8 +63,8 @@ export class SItemFactory {
     /**
      * 创建墙item
      *
-     * @param   data    墙数据
-     * @return  墙 item
+     * @param data    墙数据
+     * @return 墙 item
      */
     createWall(data: Wall): SWallItem {
         return new SWallItem(null, data);
@@ -73,8 +73,8 @@ export class SItemFactory {
     /**
      * 创建虚拟墙item
      *
-     * @param   data    虚拟墙数据
-     * @return  虚拟墙 item
+     * @param data    虚拟墙数据
+     * @return 虚拟墙 item
      */
     createVirtualWall(data: VirtualWall): SVirtualWallItem {
         return new SVirtualWallItem(null, data);
@@ -83,8 +83,8 @@ export class SItemFactory {
     /**
      * 创建空间item
      *
-     * @param   data    空间数据
-     * @return  空间 item
+     * @param data    空间数据
+     * @return 空间 item
      */
     createSpace(data: Space): SSpaceItem {
         return new SSpaceItem(null, data);
@@ -93,8 +93,8 @@ export class SItemFactory {
     /**
      * 创建门item
      *
-     * @param   data    门数据
-     * @return  门item
+     * @param data    门数据
+     * @return 门item
      */
     createDoor(data: Door): SDoorItem {
         return new SDoorItem(null, data);
@@ -103,8 +103,8 @@ export class SItemFactory {
     /**
      * 创建窗item
      *
-     * @param   data    窗户数据
-     * @return  窗户 item
+     * @param data    窗户数据
+     * @return 窗户 item
      */
     createWindow(data: Casement): SWindowItem {
         return new SWindowItem(null, data);
@@ -113,8 +113,8 @@ export class SItemFactory {
     /**
      * 创建业务空间item
      *
-     * @param   data    业务空间数据
-     * @return  业务空间 item
+     * @param data    业务空间数据
+     * @return 业务空间 item
      */
     createZone(data: Zone): SZoneItem {
         return new SZoneItem(null, data);

+ 9 - 9
persagy-web-big/src/items/SIconTextItem.ts

@@ -234,8 +234,8 @@ export class SIconTextItem extends SObjectItem {
     /**
      * 构造体
      *
-     * @param   parent  父类
-     * @param   data    锚点数据
+     * @param parent  父类
+     * @param data    锚点数据
      */
     constructor(parent: SGraphItem | null, data?: Anchor[]) {
         super(parent);
@@ -312,8 +312,8 @@ export class SIconTextItem extends SObjectItem {
     /**
      * 鼠标按下事件
      *
-     * @param   event   事件对象
-     * @return  是否处理事件
+     * @param event   事件对象
+     * @return 是否处理事件
      */
     onMouseDown(event: SMouseEvent): boolean {
         if (this.status == SItemStatus.Normal) {
@@ -327,8 +327,8 @@ export class SIconTextItem extends SObjectItem {
     /**
      * 宽高发发生变化
      *
-     * @param   oldSize 改之前的大小
-     * @param   newSize 改之后大小
+     * @param oldSize 改之前的大小
+     * @param newSize 改之后大小
      */
     onResize(oldSize: SSize, newSize: SSize): void {
         console.log(arguments);
@@ -337,8 +337,8 @@ export class SIconTextItem extends SObjectItem {
     /**
      * 鼠标双击事件
      *
-     * @param   event   鼠标事件
-     * @return  是否处理事件
+     * @param event   鼠标事件
+     * @return 是否处理事件
      */
     onDoubleClick(event: SMouseEvent): boolean {
         // 如果位show状态 双击改对象则需改为编辑状态
@@ -356,7 +356,7 @@ export class SIconTextItem extends SObjectItem {
     /**
      * Item 对象边界区域
      *
-     * @return  边界矩阵
+     * @return 边界矩阵
      */
     boundingRect(): SRect {
         let rect = this.img

+ 1 - 1
persagy-web-big/src/items/SPolygonItem.ts

@@ -204,7 +204,7 @@ export class SPolygonItem extends SGraphItem {
      * @param x   点位得 x 坐标
      * @param y   点位得 y 坐标
      * @param i   点位得 i 坐标
-     * @return    移动对应得点。如果索引无法找到移动顶点,则返回 null
+     * @return   移动对应得点。如果索引无法找到移动顶点,则返回 null
      */
     movePoint(x: number, y: number, i: number): SPoint | null {
         let point = null;

+ 1 - 1
persagy-web-big/src/items/floor/SSpaceItems.ts

@@ -215,7 +215,7 @@ export class SSpaceItems extends SGraphItem {
     /**
      * Item绘制操作
      *
-     * @param   painter       painter对象
+     * @param painter    绘制对象
      */
     onDraw(painter: SPainter): void {
         painter.pen.color = ItemColor.spaceBorderColor;

+ 1 - 1
persagy-web-big/src/items/floor/SWallItems.ts

@@ -140,7 +140,7 @@ export class SWallItems extends SGraphItem {
     /**
      * Item绘制操作
      *
-     * @param   painter       painter对象
+     * @param painter    绘制对象
      */
     onDraw(painter: SPainter): void {
         painter.pen.color = ItemColor.wallColor;

+ 1 - 1
persagy-web-big/src/parser/SFloorParser.ts

@@ -114,7 +114,7 @@ export class SFloorParser extends SParser {
     /**
      * 添加柱子至场景中
      *
-     * @param   t   柱子数据
+     * @param t   柱子数据
      */
     private addColumn(t: Column): void {
         let item = this.factory.createColumn(t);

+ 1 - 1
persagy-web-big/src/parser/SParser.ts

@@ -39,7 +39,7 @@ export abstract class SParser {
      * 构造函数
      *
      * @param factory   解析工厂
-     * */
+     */
     constructor(factory: SItemFactory | null = null) {
         if (factory) {
             this.factory = factory;

+ 2 - 2
persagy-web-big/src/utils/SMathUtil.ts

@@ -45,7 +45,7 @@ export class SMathUtil {
      * @param y1    点 1 的 y 坐标
      * @param x2    点 2 的 x 坐标
      * @param y2    点 2 的 y 坐标
-     * @return  距离
+     * @return 距离
      */
     static pointDistance(
         x1: number,
@@ -200,7 +200,7 @@ export class SMathUtil {
      * @param rect1     矩形1
      * @param rect2     矩形2
      * @return 是否有交集
-     * */
+     */
     static rectIntersection(rect1: SRect, rect2: SRect): boolean {
         let minX = rect1.x < rect2.x ? rect1.x : rect2.x;
         let minY = rect1.y < rect2.y ? rect1.y : rect2.y;

+ 1 - 1
persagy-web-draw/package.json

@@ -14,7 +14,7 @@
     "keywords": [
         "draw"
     ],
-    "author": "庞利祥 (sybotan@126.com)",
+    "author": "庞利祥  <sybotan@126.com>",
     "license": "ISC",
     "publishConfig": {
         "registry": "http://dev.dp.sagacloud.cn:8082/repository/npm-hosted/"

+ 5 - 5
persagy-web-draw/src/SBrush.ts

@@ -30,7 +30,7 @@ import { SColor, SGradient } from "./";
 /**
  * 画刷
  *
- * @author  庞利祥(sybotan@126.com)
+ * @author 庞利祥 <sybotan@126.com>
  */
 export class SBrush {
     /** 画笔类型 */
@@ -64,28 +64,28 @@ export class SBrush {
     /**
      * 构造函数
      *
-     * @param   brush       画刷
+     * @param brush     画刷
      */
     constructor(brush: SBrush);
 
     /**
      * 构造函数
      *
-     * @param   color       颜色
+     * @param color     颜色
      */
     constructor(color: SColor);
 
     /**
      * 构造函数
      *
-     * @param   gradient    过渡
+     * @param gradient    过渡
      */
     constructor(gradient: SGradient);
 
     /**
      * 构造函数(重载实现)
      *
-     * @param   brush       画笔
+     * @param brush     画笔
      */
     constructor(brush?: SColor | SGradient | SBrush) {
         if (brush == undefined) {

+ 39 - 38
persagy-web-draw/src/SCanvasView.ts

@@ -36,13 +36,14 @@ import { SPoint } from "./types/SPoint";
 import { SPainter } from "./SPainter";
 
 /**
- * Canvas视图基类
+ * Canvas 视图基类
  *
- * @author  庞利祥(sybotan@126.com)
+ * @author 庞利祥 <sybotan@126.com>
  */
 export class SCanvasView extends SObject {
+    /** 需要绘制 */
     private _needDraw = true;
-    /** canvas视图 */
+    /** canvas 视图 */
     protected readonly canvasView: HTMLCanvasElement;
     get canvas(): CanvasRenderingContext2D | null {
         return this.canvasView.getContext("2d") as CanvasRenderingContext2D;
@@ -110,7 +111,7 @@ export class SCanvasView extends SObject {
     private _beforeLength = 0;
     /** 缩放后二指间距离 */
     private _afterLength = 0;
-    /** 鼠标样式    */
+    /** 鼠标样式 */
     set cursor(v: string) {
         this.canvasView.style.cursor = v;
     } // Set cursor
@@ -120,7 +121,7 @@ export class SCanvasView extends SObject {
     /**
      * 构造函数
      *
-     * @param   id      画布对象ID
+     * @param id      画布对象 ID
      */
     constructor(id: string) {
         super();
@@ -140,8 +141,8 @@ export class SCanvasView extends SObject {
     /**
      * 保存图像
      *
-     * @param   name    名称
-     * @param   type    图像类型
+     * @param name    名称
+     * @param type    图像类型
      */
     saveImage(name: string, type: string): void {
         let url = this.canvasView.toDataURL(`image/${type}`);
@@ -149,18 +150,18 @@ export class SCanvasView extends SObject {
     } // Function saveImage()
 
     /**
-     * 图像的URL
+     * 图像的 URL
      *
-     * @param   type    图像类型
+     * @param type    图像类型
      */
     imageUrl(type: string): string {
         return this.canvasView.toDataURL(`image/${type}`);
     } // Function imageUrl()
 
     /**
-     * 视图内容保存为SVG文件
+     * 视图内容保存为 SVG 文件
      *
-     * @param   name    文件名
+     * @param name    文件名
      */
     saveSvg(name: string): void {
         let url = URL.createObjectURL(
@@ -170,9 +171,9 @@ export class SCanvasView extends SObject {
     } // Function saveSvg()
 
     /**
-     * 视图SVG图形的数据
+     * 视图 SVG 图形的数据
      *
-     * @return  URL地址
+     * @return URL 地址
      */
     svgData(): string {
         let engine = new SSvgPaintEngine(this.width, this.height);
@@ -184,9 +185,9 @@ export class SCanvasView extends SObject {
     /**
      * 缩放视图时计算视图的位置与缩放比例
      *
-     * @param   zoom        缩放比例
-     * @param   x0          缩放计算的中心点X坐标
-     * @param   y0          缩放计算的中心点Y坐标
+     * @param zoom        缩放比例
+     * @param x0          缩放计算的中心点 X 坐标
+     * @param y0          缩放计算的中心点 Y 坐标
      */
     scaleByPoint(zoom: number, x0: number, y0: number): void {
         if (!this.scalable) {
@@ -217,7 +218,7 @@ export class SCanvasView extends SObject {
      * 循环
      */
     protected loop(): void {
-        /** painter对象 */
+        /** painter 对象 */
         let ctx = this.canvas;
         if (null != ctx && this._needDraw) {
             this._needDraw = false;
@@ -230,28 +231,28 @@ export class SCanvasView extends SObject {
     /**
      * 绘制视图
      *
-     * @param   painter     painter对象
+     * @param painter     painter 对象
      */
     protected onDraw(painter: SPainter): void {} // Function onDraw()
 
     /**
      * 鼠标单击事件
      *
-     * @param   event       事件参数
+     * @param event       事件参数
      */
     protected onClick(event: MouseEvent): void {} // Function onClick()
 
     /**
      * 鼠标双击事件
      *
-     * @param   event       事件参数
+     * @param event       事件参数
      */
     protected onDoubleClick(event: MouseEvent): void {} // Function onDoubleClick()
 
     /**
      * 鼠标按下事件
      *
-     * @param   event       事件参数
+     * @param event       事件参数
      */
     protected onMouseDown(event: MouseEvent): void {
         let se = new SMouseEvent(event);
@@ -264,7 +265,7 @@ export class SCanvasView extends SObject {
     /**
      * 鼠标移动事件
      *
-     * @param   event       事件参数
+     * @param event       事件参数
      */
     protected onMouseMove(event: MouseEvent): void {
         // 如果可以移动
@@ -285,21 +286,21 @@ export class SCanvasView extends SObject {
     /**
      * 鼠标松开事件
      *
-     * @param   event       事件参数
+     * @param event       事件参数
      */
     protected onMouseUp(event: MouseEvent): void {} // Function onMouseUp()
 
     /**
      * 上下文菜单事件
      *
-     * @param   event       事件参数
+     * @param event       事件参数
      */
     protected onContextMenu(event: MouseEvent): void {} // Function onContextMenu()
 
     /**
      * 鼠标滚轮事件
      *
-     * @param   event       事件参数
+     * @param event       事件参数
      */
     protected onMouseWheel(event: WheelEvent): void {
         if (event.deltaY < 0) {
@@ -312,28 +313,28 @@ export class SCanvasView extends SObject {
     /**
      * 按键按下事件
      *
-     * @param   event       事件参数
+     * @param event       事件参数
      */
     protected onKeyDown(event: KeyboardEvent): void {} // Function onKeydown()
 
     /**
      * 按键press事件
      *
-     * @param   event       事件参数
+     * @param event       事件参数
      */
     protected onKeyPress(event: KeyboardEvent): void {} // Function onKeypress()
 
     /**
      * 按键松开事件
      *
-     * @param   event       事件参数
+     * @param event       事件参数
      */
     protected onKeyUp(event: KeyboardEvent): void {} // Function onKeyup()
 
     /**
      * 开始触摸事件
      *
-     * @param   event       事件参数
+     * @param event       事件参数
      */
     protected onTouchStart(event: TouchEvent): void {
         let touches = event.touches;
@@ -350,7 +351,7 @@ export class SCanvasView extends SObject {
     /**
      * 触摸移动事件
      *
-     * @param   event       事件参数
+     * @param event       事件参数
      */
     protected onTouchMove(event: TouchEvent): void {
         let touches = event.touches;
@@ -368,7 +369,7 @@ export class SCanvasView extends SObject {
     /**
      * 结束触摸事件
      *
-     * @param   event       事件参数
+     * @param event       事件参数
      */
     protected onTouchEnd(event: TouchEvent): void {
         this._touchState = STouchState.None;
@@ -377,14 +378,14 @@ export class SCanvasView extends SObject {
     /**
      * View大小变更事件
      *
-     * @param   event       事件参数
+     * @param event       事件参数
      */
     protected onResize(event: UIEvent): void {} // Function onClick()
 
     /**
      * 绑定事件
      *
-     * @param   element     要绑定事件的元素
+     * @param element     要绑定事件的元素
      */
     private bindEvent(element: HTMLElement): void {
         // 绑定鼠标事件
@@ -413,7 +414,7 @@ export class SCanvasView extends SObject {
     /**
      * 启动动画帧(即指定时间执行回调函数)
      *
-     * @param   callback        回调函数
+     * @param callback        回调函数
      */
     private requestAnimationFrame(callback: FrameRequestCallback): number {
         let currTime = new Date().getTime();
@@ -428,7 +429,7 @@ export class SCanvasView extends SObject {
     /**
      * 缩放视图
      *
-     * @param   event       触摸事件
+     * @param event       触摸事件
      */
     private viewZoom(event: TouchEvent): boolean {
         if (this._touchState == STouchState.Zoom) {
@@ -451,7 +452,7 @@ export class SCanvasView extends SObject {
     /**
      * 获取两手指之间的距离
      *
-     * @param   event       触摸事件
+     * @param event       触摸事件
      * @return 两手指之间的距离
      */
     private getDistance(event: TouchEvent): number {
@@ -467,8 +468,8 @@ export class SCanvasView extends SObject {
     /**
      * 获得两个手指触摸点的中点坐标
      *
-     * @param   event
-     * @return  得到视图的x坐标中点
+     * @param event     触摸事件
+     * @return 得到视图的 x 坐标中点
      */
     private getMiddlePoint(event: TouchEvent): SPoint {
         return new SPoint(

+ 52 - 67
persagy-web-draw/src/SColor.ts

@@ -29,7 +29,7 @@ import { SStringUtil } from "@persagy-web/base";
 /**
  * 颜色类
  *
- * @author  庞利祥(sybotan@126.com)
+ * @author 庞利祥 <sybotan@126.com>
  */
 export class SColor {
     static readonly Transparent = new SColor("#00000000");
@@ -54,10 +54,10 @@ export class SColor {
     /**
      * 根据rgb分量生成颜色
      *
-     * @param   r       红色分量
-     * @param   g       绿色分量
-     * @param   b       蓝色分量
-     * @return  颜色
+     * @param r       红色分量
+     * @param g       绿色分量
+     * @param b       蓝色分量
+     * @return 颜色
      */
     static rgb(r: number, g: number, b: number): SColor {
         return new SColor(r, g, b);
@@ -66,11 +66,11 @@ export class SColor {
     /**
      * 根据rgba分量生成颜色
      *
-     * @param   r       红色分量
-     * @param   g       绿色分量
-     * @param   b       蓝色分量
-     * @param   a       透明度分量
-     * @return  颜色
+     * @param r       红色分量
+     * @param g       绿色分量
+     * @param b       蓝色分量
+     * @param a       透明度分量
+     * @return 颜色
      */
     static rgba(r: number, g: number, b: number, a: number): SColor {
         return new SColor(r, g, b, a);
@@ -81,44 +81,44 @@ export class SColor {
     /** 红色分量 */
     get red(): number {
         return (this._value >> 24) & 0xff;
-    }
+    } // Get red
     set red(v: number) {
         const r = (Math.floor(v) & 0xff) << 24;
         this._value = (this._value & 0x00ffffff) | r;
-    }
+    } // Set red
 
     /** 绿色分量 */
     get green(): number {
         return (this._value >> 16) & 0xff;
-    }
+    } // Get green
     set green(v: number) {
         const r = (Math.floor(v) & 0xff) << 16;
         this._value = (this._value & 0xff00ffff) | r;
-    }
+    } //Set green
 
     /** 蓝色分量 */
     get blue(): number {
         return (this._value >> 8) & 0xff;
-    }
+    } // Get blue
     set blue(v: number) {
         const r = (Math.floor(v) & 0xff) << 8;
         this._value = (this._value & 0xffff00ff) | r;
-    }
+    } // Set blue
 
     /** 透明度 */
     get alpha(): number {
         return this._value & 0xff;
-    }
+    } // Get alpha
     set alpha(v: number) {
         const r = Math.floor(v) & 0xff;
         this._value = (this._value & 0xffffff00) | r;
-    }
+    } // Set alpha
 
     /** 颜色 */
     private _value = 0xff;
     get value(): string {
         return "#" + SStringUtil.num2Hex(this._value, 8);
-    }
+    } // Get value
     set value(v: string) {
         if (v.substr(0, 1) != "#") {
             return;
@@ -130,7 +130,7 @@ export class SColor {
         if (v.length == 7) {
             this._value = (this._value << 8) + 0xff;
         }
-    }
+    } // Set value
 
     ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     // 构造函数
@@ -142,43 +142,43 @@ export class SColor {
     /**
      * 构造函数
      *
-     * @param   r       红色分量
-     * @param   g       绿色分量
-     * @param   b       蓝色分量
+     * @param r       红色分量
+     * @param g       绿色分量
+     * @param b       蓝色分量
      */
     constructor(r: number, g: number, b: number);
 
     /**
      * 构造函数
      *
-     * @param   r       红色分量
-     * @param   g       绿色分量
-     * @param   b       蓝色分量
-     * @param   a       透明度分量0-255
+     * @param r       红色分量
+     * @param g       绿色分量
+     * @param b       蓝色分量
+     * @param a       透明度分量 0 - 255
      */
     constructor(r: number, g: number, b: number, a: number);
 
     /**
      * 构造函数
      *
-     * @param   color   颜色
+     * @param color   颜色
      */
     constructor(color: string);
 
     /**
      * 构造函数
      *
-     * @param   color   颜色
+     * @param color   颜色
      */
     constructor(color: SColor);
 
     /**
      * 构造函数(重载实现)
      *
-     * @param   r       红色分量 | 字符串描述颜色 | 颜色
-     * @param   g       绿色分量
-     * @param   b       蓝色分量
-     * @param   a       透明度分量0-255
+     * @param r       红色分量 | 字符串描述颜色 | 颜色
+     * @param g       绿色分量
+     * @param b       蓝色分量
+     * @param a       透明度分量 0 - 255
      */
     constructor(
         r?: number | string | SColor,
@@ -197,14 +197,14 @@ export class SColor {
         } else {
             this.setRgba(r as number, g as number, b as number, a as number);
         }
-    }
+    } // Constructor
 
     /**
      * 设置颜色
      *
-     * @param   r       红色分量
-     * @param   g       绿色分量
-     * @param   b       蓝色分量
+     * @param r       红色分量
+     * @param g       绿色分量
+     * @param b       蓝色分量
      */
     private setRgb(r: number, g: number, b: number): void {
         this._value =
@@ -212,15 +212,15 @@ export class SColor {
             ((g as number) << 16) +
             ((b as number) << 8) +
             0xff;
-    }
+    } // Function setRgb()
 
     /**
      * 设置颜色
      *
-     * @param   r       红色分量
-     * @param   g       绿色分量
-     * @param   b       蓝色分量
-     * @param   a       透明度分量0-255
+     * @param r       红色分量
+     * @param g       绿色分量
+     * @param b       蓝色分量
+     * @param a       透明度分量 0 - 255
      */
     private setRgba(r: number, g: number, b: number, a: number): void {
         this._value =
@@ -228,47 +228,32 @@ export class SColor {
             ((g as number) << 16) +
             ((b as number) << 8) +
             (a as number);
-    }
-
-    // /**
-    //  * 设置颜色
-    //  *
-    //  * @param   str     颜色字符串
-    //  */
-    // private setColor(str: string): void {
-    //     if (str.substr(0, 1) != "#") {
-    //         return;
-    //     }
-    //
-    //     // 先去“#”,再转换16进制数
-    //     this._value = parseInt(str.substr(1), 16);
-    //     // 如果未写alpha值,则左移8位+0xff;
-    //     if (str.length == 7) {
-    //         this._value = (this._value << 8) + 0xff;
-    //     }
-    // }
+    } // Function setRgba()
 
     /**
-     * 颜色转rgb
+     * 颜色转 rgb
      *
-     * */
+     * @return rgb 字符串
+     */
     toRgb(): string {
         return `rgb(${this.red}, ${this.green}, ${this.blue})`;
     } // Function toRgb()
 
     /**
-     * 颜色转rgba
+     * 颜色转 rgba
      *
-     * */
+     * @return rgba 字符串
+     */
     toRgba(): string {
         return `rgba(${this.red}, ${this.green}, ${this.blue}, ${this.alpha /
             255.0})`;
     } // Function toRgb()
 
     /**
-     * 颜色转6位16进制
+     * 颜色转 6  16 进制
      *
-     * */
+     * @return 6 位 16 进制颜色
+     */
     toVal(): string {
         return "#" + SStringUtil.num2Hex(this._value, 6);
     } // Function toRgb()

+ 6 - 6
persagy-web-draw/src/SFont.ts

@@ -31,7 +31,7 @@ import { STextDirection } from "./enums/STextDirection";
 /**
  * 字体
  *
- * @author  庞利祥(sybotan@126.com)
+ * @author 庞利祥 <sybotan@126.com>
  */
 export class SFont {
     ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -60,22 +60,22 @@ export class SFont {
     /**
      * 构造函数
      *
-     * @param   font        FONT
+     * @param font  FONT
      */
     constructor(font: SFont);
 
     /**
      * 构造函数
      *
-     * @param   name        字体
-     * @param   size        字号
+     * @param name        字体
+     * @param size        字号
      */
     constructor(name: string, size?: number);
     /**
      * 构造函数
      *
-     * @param   name        字体 | SFont
-     * @param   size        字号
+     * @param name        字体 | SFont
+     * @param size        字号
      */
     constructor(name?: string | SFont, size?: number) {
         if (name == undefined) {

+ 13 - 12
persagy-web-draw/src/SGradient.ts

@@ -29,7 +29,7 @@ import { SColor, SGradientStop, SPoint } from "./";
 /**
  * 渐变颜色节点
  *
- * @author  庞利祥(sybotan@126.com)
+ * @author 庞利祥 <sybotan@126.com>
  */
 export abstract class SGradient {
     ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -40,7 +40,7 @@ export abstract class SGradient {
     /** 结束点 */
     end = new SPoint();
 
-    /** 起点X坐标 */
+    /** 起点 X 坐标 */
     get x1(): number {
         return this.start.x;
     } // Get x1
@@ -48,7 +48,7 @@ export abstract class SGradient {
         this.start.x = value;
     } // Set x1
 
-    /** 起点Y坐标 */
+    /** 起点 Y 坐标 */
     get y1(): number {
         return this.start.y;
     } // Get y1
@@ -56,7 +56,7 @@ export abstract class SGradient {
         this.start.y = value;
     } // Set y1
 
-    /** 终点X坐标 */
+    /** 终点 X 坐标 */
     get x2(): number {
         return this.end.x;
     } // Get x2
@@ -64,7 +64,7 @@ export abstract class SGradient {
         this.end.x = value;
     } // Set x2
 
-    /** 终点Y坐标 */
+    /** 终点 Y 坐标 */
     get y2(): number {
         return this.end.y;
     } // Get y2
@@ -78,8 +78,8 @@ export abstract class SGradient {
     /**
      * 添加渐变颜色节点
      *
-     * @param   pos     位置[0-1]
-     * @param   color   颜色
+     * @param pos     位置[0 - 1]
+     * @param color   颜色
      */
     addColorStop(pos: number, color: SColor): void {
         this.stopList.push(new SGradientStop(pos, color));
@@ -88,8 +88,8 @@ export abstract class SGradient {
     /**
      * 设置起点坐标
      *
-     * @param   x       X坐标
-     * @param   y       Y坐标
+     * @param x       X 坐标
+     * @param y       Y 坐标
      */
     setStart(x: number, y: number): void {
         this.start.x = x;
@@ -99,8 +99,8 @@ export abstract class SGradient {
     /**
      * 设置终点坐标
      *
-     * @param   x       X坐标
-     * @param   y       Y坐标
+     * @param x       X 坐标
+     * @param y       Y 坐标
      */
     setEnd(x: number, y: number): void {
         this.end.x = x;
@@ -110,6 +110,7 @@ export abstract class SGradient {
     /**
      * 转为字符串保存
      *
-     * */
+     * @return 转为字符串保存
+     */
     abstract value(): string;
 } // Class SGradientStop

+ 3 - 3
persagy-web-draw/src/SGradientStop.ts

@@ -29,7 +29,7 @@ import { SColor } from "./";
 /**
  * 渐变颜色节点
  *
- * @author  庞利祥(sybotan@126.com)
+ * @author 庞利祥 <sybotan@126.com>
  */
 export class SGradientStop {
     /** 位置 */
@@ -52,8 +52,8 @@ export class SGradientStop {
     /**
      * 构造函数
      *
-     * @param   pos         节点位置
-     * @param   color       节点颜色
+     * @param pos         节点位置
+     * @param color       节点颜色
      */
     constructor(pos: number, color: SColor) {
         this.pos = pos;

+ 13 - 12
persagy-web-draw/src/SLinearGradient.ts

@@ -29,34 +29,34 @@ import { SGradient, SPoint } from "./";
 /**
  * 线性渐变
  *
- * @author  庞利祥(sybotan@126.com)
+ * @author 庞利祥 <sybotan@126.com>
  */
 export class SLinearGradient extends SGradient {
     /**
      * 构造函数
      *
-     * @param   start   起点坐标
-     * @param   end     终点坐标
+     * @param start   起点坐标
+     * @param end     终点坐标
      */
     constructor(start: SPoint, end: SPoint);
 
     /**
      * 构造函数
      *
-     * @param   x1      起点X坐标
-     * @param   y1      起点Y坐标
-     * @param   x2      终点X坐标
-     * @param   y2      终点Y坐标
+     * @param x1      起点 X 坐标
+     * @param y1      起点 Y 坐标
+     * @param x2      终点 X 坐标
+     * @param y2      终点 Y 坐标
      */
     constructor(x1: number, y1: number, x2: number, y2: number);
 
     /**
      * 构造函数(重载实现)
      *
-     * @param   x1      起点X坐标
-     * @param   y1      起点Y坐标
-     * @param   x2      终点X坐标
-     * @param   y2      终点Y坐标
+     * @param x1      起点 X 坐标
+     * @param y1      起点 Y 坐标
+     * @param x2      终点 X 坐标
+     * @param y2      终点 Y 坐标
      */
     constructor(
         x1: number | SPoint,
@@ -77,7 +77,8 @@ export class SLinearGradient extends SGradient {
     /**
      * 转为字符串保存
      *
-     * */
+     * @return 转为字符串保存
+     */
     value(): string {
         let str = `SLinearGradient{`;
         str += `${this.x1},${this.y1};`;

+ 129 - 129
persagy-web-draw/src/SPainter.ts

@@ -46,7 +46,7 @@ import { SShadow } from "./SShadow";
 /**
  * Painter
  *
- * @author  庞利祥(sybotan@126.com)
+ * @author 庞利祥 <sybotan@126.com>
  */
 export class SPainter extends SObject {
     ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -62,7 +62,7 @@ export class SPainter extends SObject {
         this.engine.state.pen = value;
     } // Set pen
 
-    /** 画刷  */
+    /** 画刷 */
     get brush(): SBrush {
         return this.engine.state.brush;
     } // Get brush
@@ -111,7 +111,7 @@ export class SPainter extends SObject {
     /**
      * 构造函数
      *
-     * @param   engine      绘制引擎
+     * @param engine    绘制引擎
      */
     constructor(engine: SCanvasView | SPaintEngine) {
         super();
@@ -130,14 +130,14 @@ export class SPainter extends SObject {
     } // Constructor()
 
     /**
-     * 保存painter状态
+     * 保存 painter 状态
      */
     save(): void {
         this.engine.save();
     } // Function save()
 
     /**
-     * 恢复painter状态
+     * 恢复 painter 状态
      */
     restore(): void {
         this.engine.restore();
@@ -148,8 +148,8 @@ export class SPainter extends SObject {
     /**
      * 平移变换
      *
-     * @param   x       X轴方向平移
-     * @param   y       Y辆方向平移
+     * @param x       X 轴方向平移
+     * @param y       Y 轴方向平移
      */
     translate(x: number, y: number): void {
         this.engine.translate(x, y);
@@ -158,8 +158,8 @@ export class SPainter extends SObject {
     /**
      * 缩放
      *
-     * @param   x       X轴方向缩放
-     * @param   y       Y辆方向缩放
+     * @param x       X 轴方向缩放
+     * @param y       Y 轴方向缩放
      */
     scale(x: number, y: number): void {
         this.engine.scale(x, y);
@@ -168,7 +168,7 @@ export class SPainter extends SObject {
     /**
      * 旋转
      *
-     * @param   angle   旋转角度(单位弧度)
+     * @param angle   旋转角度(单位弧度)
      */
     rotate(angle: number): void {
         this.engine.rotate(angle);
@@ -177,12 +177,12 @@ export class SPainter extends SObject {
     /**
      * 将当前的变形矩阵乘上一个基于自身参数的矩阵
      *
-     * @param   m11     水平方向的缩放
-     * @param   m12     水平方向的倾斜偏移
-     * @param   m21     竖直方向的倾斜偏移
-     * @param   m22     竖直方向的缩放
-     * @param   dx      水平方向的移动
-     * @param   dy      竖直方向的移动
+     * @param m11     水平方向的缩放
+     * @param m12     水平方向的倾斜偏移
+     * @param m21     竖直方向的倾斜偏移
+     * @param m22     竖直方向的缩放
+     * @param dx      水平方向的移动
+     * @param dy      竖直方向的移动
      */
     transform(
         m11: number,
@@ -198,12 +198,12 @@ export class SPainter extends SObject {
     /**
      * 将当前的变形矩阵重置为单位矩阵,再将当前的变形矩阵乘上一个基于自身参数的矩阵
      *
-     * @param   m11     水平方向的缩放
-     * @param   m12     水平方向的倾斜偏移
-     * @param   m21     竖直方向的倾斜偏移
-     * @param   m22     竖直方向的缩放
-     * @param   dx      水平方向的移动
-     * @param   dy      竖直方向的移动
+     * @param m11     水平方向的缩放
+     * @param m12     水平方向的倾斜偏移
+     * @param m21     竖直方向的倾斜偏移
+     * @param m22     竖直方向的缩放
+     * @param dx      水平方向的移动
+     * @param dy      竖直方向的移动
      */
     setTransform(
         m11: number,
@@ -217,7 +217,7 @@ export class SPainter extends SObject {
     } // Function transform()
 
     /**
-     * 重置当前变形为单位矩阵。等价于调用setTransform(1, 0, 0, 1, 0, 0)
+     * 重置当前变形为单位矩阵。等价于调用 setTransform(1, 0, 0, 1, 0, 0)
      */
     resetTransform(): void {
         this.engine.resetTransform();
@@ -229,43 +229,43 @@ export class SPainter extends SObject {
     /**
      * 清空矩形区域
      *
-     * @param   rect        矩形
+     * @param rect  矩形
      */
     clearRect(rect: SRect): void;
 
     /**
      * 清空矩形区域
      *
-     * @param   leftTop         左上角坐标
-     * @param   rightBottom     右下角坐标
+     * @param leftTop         左上角坐标
+     * @param rightBottom     右下角坐标
      */
     clearRect(leftTop: SPoint, rightBottom: SPoint): void;
 
     /**
      * 清空矩形区域
      *
-     * @param   leftTop     左上角坐标
-     * @param   size        大小
+     * @param leftTop     左上角坐标
+     * @param size        大小
      */
     clearRect(leftTop: SPoint, size: SSize): void;
 
     /**
      * 清空矩形区域
      *
-     * @param   x       X坐标
-     * @param   y       Y坐标
-     * @param   w       宽度
-     * @param   h       高度
+     * @param x       X 坐标
+     * @param y       Y 坐标
+     * @param w       宽度
+     * @param h       高度
      */
     clearRect(x: number, y: number, w: number, h: number): void;
 
     /**
      * 清空矩形区域(重载实现)
      *
-     * @param   x       X坐标 | 左上角坐标 | 矩形
-     * @param   y       Y坐标 | 右下角坐标 | 大小
-     * @param   w       宽度
-     * @param   h       高度
+     * @param x       X 坐标 | 左上角坐标 | 矩形
+     * @param y       Y 坐标 | 右下角坐标 | 大小
+     * @param w       宽度
+     * @param h       高度
      */
     clearRect(
         x: number | SPoint | SRect,
@@ -289,43 +289,43 @@ export class SPainter extends SObject {
     /**
      * 绘制矩形
      *
-     * @param   rect        矩形
+     * @param rect        矩形
      */
     drawRect(rect: SRect): void;
 
     /**
      * 绘制矩形
      *
-     * @param   leftTop         左上角坐标
-     * @param   rightBottom     右下角坐标
+     * @param leftTop         左上角坐标
+     * @param rightBottom     右下角坐标
      */
     drawRect(leftTop: SPoint, rightBottom: SPoint): void;
 
     /**
      * 绘制矩形
      *
-     * @param   leftTop     左上角坐标
-     * @param   size        大小
+     * @param leftTop     左上角坐标
+     * @param size        大小
      */
     drawRect(leftTop: SPoint, size: SSize): void;
 
     /**
      * 绘制矩形
      *
-     * @param   x       X坐标
-     * @param   y       Y坐标
-     * @param   w       宽度
-     * @param   h       高度
+     * @param x       X 坐标
+     * @param y       Y 坐标
+     * @param w       宽度
+     * @param h       高度
      */
     drawRect(x: number, y: number, w: number, h: number): void;
 
     /**
      * 绘制矩形
      *
-     * @param   x       X坐标 | 左上角坐标 | 矩形
-     * @param   y       Y坐标 | 右下角坐标 | 大小
-     * @param   w       宽度
-     * @param   h       高度
+     * @param x       X 坐标 | 左上角坐标 | 矩形
+     * @param y       Y 坐标 | 右下角坐标 | 大小
+     * @param w       宽度
+     * @param h       高度
      */
     drawRect(
         x: number | SPoint | SRect,
@@ -355,48 +355,48 @@ export class SPainter extends SObject {
     /**
      * 绘制带导角矩形
      *
-     * @param   rect        矩形
-     * @param   r           导角半径
+     * @param rect        矩形
+     * @param r           导角半径
      */
     drawRoundRect(rect: SRect, r: number): void;
 
     /**
      * 绘制带导角矩形
      *
-     * @param   p1        矩形
-     * @param   p2           导角半径
-     * @param r
+     * @param p1        矩形左上角的点
+     * @param p2        矩形右上角的点
+     * @param r         导角半径
      */
     drawRoundRect(p1: SPoint, p2: SPoint, r: number): void;
 
     /**
      * 绘制带导角矩形
      *
-     * @param   pos         左上角位置
-     * @param   size        大小
-     * @param   r           导角半径
+     * @param pos         左上角位置
+     * @param size        大小
+     * @param r           导角半径
      */
     drawRoundRect(pos: SPoint, size: SSize, r: number): void;
 
     /**
      * 绘制带导角矩形
      *
-     * @param   x           X坐标
-     * @param   y           Y坐标
-     * @param   w           宽度
-     * @param   h           高度
-     * @param   r           导角半径
+     * @param x           X 坐标
+     * @param y           Y 坐标
+     * @param w           宽度
+     * @param h           高度
+     * @param r           导角半径
      */
     drawRoundRect(x: number, y: number, w: number, h: number, r: number): void;
 
     /**
      * 绘制带导角矩形
      *
-     * @param   x           X坐标
-     * @param   y           Y坐标
-     * @param   w           宽度
-     * @param   h           高度
-     * @param   radius      导角半径
+     * @param x           X 坐标
+     * @param y           Y 坐标
+     * @param w           宽度
+     * @param h           高度
+     * @param radius      导角半径
      */
     drawRoundRect(
         x: number | SPoint | SRect,
@@ -435,9 +435,9 @@ export class SPainter extends SObject {
     /**
      * 绘制圆形
      *
-     * @param   cx          圆心X坐标
-     * @param   cy          圆心X坐标
-     * @param   r           圆半径
+     * @param cx          圆心 X 坐标
+     * @param cy          圆心 Y 坐标
+     * @param r           圆半径
      */
     drawCircle(cx: number, cy: number, r: number): void {
         this.engine.drawCircle(cx, cy, r);
@@ -446,10 +446,10 @@ export class SPainter extends SObject {
     /**
      * 绘制椭圆
      *
-     * @param   cx          圆点X坐标
-     * @param   cy          圆点Y坐标
-     * @param   rx          水平半径
-     * @param   ry          垂直半径
+     * @param cx          圆点 X 坐标
+     * @param cy          圆点 Y 坐标
+     * @param rx          水平半径
+     * @param ry          垂直半径
      */
     drawEllipse(cx: number, cy: number, rx: number, ry: number): void {
         this.engine.drawEllipse(cx, cy, rx, ry);
@@ -458,35 +458,35 @@ export class SPainter extends SObject {
     /**
      * 绘制一条线段
      *
-     * @param   line    线段
+     * @param line    线段
      */
     drawLine(line: SLine): void;
 
     /**
      * 绘制一条线段
      *
-     * @param   p1      启点坐标
-     * @param   p2      终点坐标
+     * @param p1      启点坐标
+     * @param p2      终点坐标
      */
     drawLine(p1: SPoint, p2: SPoint): void;
 
     /**
      * 绘制一条线段
      *
-     * @param   x1      启点X坐标
-     * @param   y1      启点Y坐标
-     * @param   x2      终点X坐标
-     * @param   y2      终点Y坐标
+     * @param x1      启点 X 坐标
+     * @param y1      启点 Y 坐标
+     * @param x2      终点 X 坐标
+     * @param y2      终点 Y 坐标
      */
     drawLine(x1: number, y1: number, x2: number, y2: number): void;
 
     /**
      * 绘制一条线段(重载实现)
      *
-     * @param   x1      启点X坐标 | 起点1坐标 | 线段 |
-     * @param   y1      启点Y坐标 | 终点坐标
-     * @param   x2      终点X坐标
-     * @param   y2      终点Y坐标
+     * @param x1      启点 X 坐标 | 起点 1 坐标 | 线段 |
+     * @param y1      启点 Y 坐标 | 终点坐标
+     * @param x2      终点 X 坐标
+     * @param y2      终点 Y 坐标
      */
     drawLine(
         x1: number | SPoint | SLine,
@@ -513,7 +513,7 @@ export class SPainter extends SObject {
     /**
      * 绘制折线
      *
-     * @param   points      折线折点
+     * @param points      折线折点
      */
     drawPolyline(points: SPoint[]): void {
         this.engine.drawPolyline(points);
@@ -522,7 +522,7 @@ export class SPainter extends SObject {
     /**
      * 绘制多边形
      *
-     * @param   points      多边形顶点
+     * @param points      多边形顶点
      */
     drawPolygon(points: SPoint[]): void {
         this.engine.drawPolygon(points);
@@ -531,7 +531,7 @@ export class SPainter extends SObject {
     /**
      * 绘制路径
      *
-     * @param   path        路径
+     * @param path        路径
      */
     drawPath(path: SPath): void {
         this.engine.drawPath(path);
@@ -540,10 +540,10 @@ export class SPainter extends SObject {
     /**
      * 绘制文本
      *
-     * @param   text        文本内容
-     * @param   x           X坐标
-     * @param   y           Y坐标
-     * @param   maxWidth    最大宽度
+     * @param text        文本内容
+     * @param x           X 坐标
+     * @param y           Y 坐标
+     * @param maxWidth    最大宽度
      */
     drawText(text: string, x: number, y: number, maxWidth?: number): void {
         this.engine.drawText(text, x, y, maxWidth);
@@ -553,8 +553,8 @@ export class SPainter extends SObject {
      * 绘制图片
      *
      * @param img       图片
-     * @param x         X坐标
-     * @param y         Y坐标
+     * @param x         X 坐标
+     * @param y         Y 坐标
      * @param width     宽度
      * @param height    高度
      */
@@ -569,9 +569,9 @@ export class SPainter extends SObject {
     } // Function drawImage()
 
     /**
-     * painter转实现view象素
+     * painter 转实现 view 象素
      *
-     * @param   p       绘制坐标
+     * @param p       绘制坐标
      */
     toPx(p: number): number {
         return p / this.engine.state.matrix.a;
@@ -580,9 +580,9 @@ export class SPainter extends SObject {
     /**
      * 预测量文本宽度
      *
-     * @param   text    文本字符
-     * @return  文本所占长度像素
-     * */
+     * @param text    文本字符
+     * @return 文本所占长度像素
+     */
     textWidth(text: string): number {
         return this.engine.textWidth(text);
     }
@@ -590,28 +590,28 @@ export class SPainter extends SObject {
     /**
      * 绘制带箭头的线段
      *
-     * @param   line    线段
-     * @param   style   末端样式
+     * @param line    线段
+     * @param style   末端样式
      */
     drawArrowLine(line: SLine, style?: SArrow): void;
 
     /**
      * 绘制带箭头的线段
      *
-     * @param   p1      启点坐标
-     * @param   p2      终点坐标
-     * @param   style   末端样式
+     * @param p1      启点坐标
+     * @param p2      终点坐标
+     * @param style   末端样式
      */
     drawArrowLine(p1: SPoint, p2: SPoint, style?: SArrow): void;
 
     /**
      * 绘制带箭头的线段
      *
-     * @param   x1      启点X坐标
-     * @param   y1      启点Y坐标
-     * @param   x2      终点X坐标
-     * @param   y2      终点Y坐标
-     * @param   style   末端样式
+     * @param x1      启点 X 坐标
+     * @param y1      启点 Y 坐标
+     * @param x2      终点 X 坐标
+     * @param y2      终点 Y 坐标
+     * @param style   末端样式
      */
     drawArrowLine(
         x1: number,
@@ -624,11 +624,11 @@ export class SPainter extends SObject {
     /**
      * 绘制带箭头的线段
      *
-     * @param   x1  启点X坐标
-     * @param   y1  启点Y坐标
-     * @param   x2  终点X坐标
-     * @param   y2  终点Y坐标
-     * @param   st  线段两端样式
+     * @param x1  启点 X 坐标
+     * @param y1  启点 Y 坐标
+     * @param x2  终点 X 坐标
+     * @param y2  终点 Y 坐标
+     * @param st  线段两端样式
      */
     drawArrowLine(
         x1: number | SPoint | SLine,
@@ -687,9 +687,9 @@ export class SPainter extends SObject {
     /**
      * 私有计算方法-绘制线段末端标准箭头
      *
-     * @param   line    要加末端样式的线段
-     * @param   isEnd   是否为结束位置
-     * */
+     * @param line    要加末端样式的线段
+     * @param isEnd   是否为结束位置
+     */
     private drawBasicArrow(line: SLine, isEnd: boolean = true): void {
         // 定义箭头长度
         const d = this.toPx(10);
@@ -726,9 +726,9 @@ export class SPainter extends SObject {
     /**
      * 私有计算方法-绘制线段末端三角形箭头
      *
-     * @param   line    要加末端样式的线段
-     * @param   isEnd   是否为结束位置
-     * */
+     * @param line    要加末端样式的线段
+     * @param isEnd   是否为结束位置
+     */
     private drawTriangleArrow(line: SLine, isEnd: boolean = true): void {
         // 定义箭头长度
         const d = this.toPx(10);
@@ -765,9 +765,9 @@ export class SPainter extends SObject {
     /**
      * 私有计算方法-绘制线段末端菱形箭头
      *
-     * @param   line    要加末端样式的线段
-     * @param   isEnd   是否为结束位置
-     * */
+     * @param line    要加末端样式的线段
+     * @param isEnd   是否为结束位置
+     */
     private drawDiamondArrow(line: SLine, isEnd: boolean = true): void {
         // 定义箭头长度
         const d = this.toPx(5);
@@ -806,9 +806,9 @@ export class SPainter extends SObject {
     /**
      * 私有计算方法-绘制线段末端方形箭头
      *
-     * @param   line    要加末端样式的线段
-     * @param   isEnd   是否为结束位置
-     * */
+     * @param line    要加末端样式的线段
+     * @param isEnd   是否为结束位置
+     */
     private drawSquareArrow(line: SLine, isEnd: boolean = true): void {
         // 定义箭头长度
         const d = this.toPx(5);
@@ -844,9 +844,9 @@ export class SPainter extends SObject {
     /**
      * 私有计算方法-绘制线段末端圆形箭头
      *
-     * @param   line    要加末端样式的线段
-     * @param   isEnd   是否为结束位置
-     * */
+     * @param line    要加末端样式的线段
+     * @param isEnd   是否为结束位置
+     */
     private drawCircleArrow(line: SLine, isEnd: boolean = true): void {
         // 定义箭头长度
         const d = this.toPx(5);

+ 39 - 39
persagy-web-draw/src/SPath.ts

@@ -28,9 +28,9 @@ import { SPathCommand } from "./SPathCommand";
 import { SPoint } from "./types/SPoint";
 
 /**
- * Path对象
+ * Path 对象
  *
- * @author  庞利祥 <sybotan@126.com>
+ * @author 庞利祥 <sybotan@126.com>
  */
 export class SPath {
     /** 命令集合 */
@@ -39,8 +39,8 @@ export class SPath {
     /**
      * 添加 path 命令
      *
-     * @param   cmd         命令
-     * @param   args        命令参数
+     * @param cmd         命令
+     * @param args        命令参数
      */
     private addCommand(cmd: string, ...args: number[]): void {
         this.cmdList.push({ command: cmd, args: args });
@@ -49,7 +49,7 @@ export class SPath {
     /**
      * 添加一条新路径到对当前路径。
      *
-     * @param path
+     * @param path  路径对象
      */
     addPath(path: SPath): void {
         this.cmdList = this.cmdList.concat(path.cmdList);
@@ -65,8 +65,8 @@ export class SPath {
     /**
      * 移动当前点到指定位置
      *
-     * @param   x       X坐标
-     * @param   y       Y坐标
+     * @param x       X 坐标
+     * @param y       Y 坐标
      */
     moveTo(x: number, y: number): void {
         this.addCommand("M", x, y);
@@ -75,8 +75,8 @@ export class SPath {
     /**
      * 从当前点向指定点画线
      *
-     * @param   x       X坐标
-     * @param   y       Y坐标
+     * @param x       X 坐标
+     * @param y       Y 坐标
      */
     lineTo(x: number, y: number): void {
         this.addCommand("L", x, y);
@@ -85,12 +85,12 @@ export class SPath {
     /**
      * 添加一条圆弧路径。
      *
-     * @param   x               圆孤圆心的 X 坐标
-     * @param   y               圆弧圆心的 Y 坐标
-     * @param   radius          圆弧半径
-     * @param   startAngle      开始角度
-     * @param   endAngle        结束角度
-     * @param   anticlockwise   是否逆时针绘制(1是,0不是)
+     * @param x               圆孤圆心的 X 坐标
+     * @param y               圆弧圆心的 Y 坐标
+     * @param radius          圆弧半径
+     * @param startAngle      开始角度
+     * @param endAngle        结束角度
+     * @param anticlockwise   是否逆时针绘制( 1 是, 0 不是)
      */
     arc(
         x: number,
@@ -114,11 +114,11 @@ export class SPath {
     /**
      * 根据控制点和半径添加一条圆弧路径,使用直线连接前一个点。
      *
-     * @param x1
-     * @param y1
-     * @param x2
-     * @param y2
-     * @param radius
+     * @param x1        点 1 的 x 坐标
+     * @param y1        点 1 的 y 坐标
+     * @param x2        点 2 的 x 坐标
+     * @param y2        点 1 的 y 坐标
+     * @param radius    半径
      */
     arcTo(
         x1: number,
@@ -133,10 +133,10 @@ export class SPath {
     /**
      * 添加二次贝塞尔曲线
      *
-     * @param   cp1x    控制点X坐标
-     * @param   cp1y    控制点Y坐标
-     * @param   x       结束点X坐标
-     * @param   y       结束点Y坐标
+     * @param cp1x    控制点 X 坐标
+     * @param cp1y    控制点 Y 坐标
+     * @param x       结束点 X 坐标
+     * @param y       结束点 Y 坐标
      */
     quadraticCurveTo(cp1x: number, cp1y: number, x: number, y: number): void {
         this.addCommand("Q", cp1x, cp1y, x, y);
@@ -145,12 +145,12 @@ export class SPath {
     /**
      * 添加三次贝塞尔曲线
      *
-     * @param   cp1x    起始点控制点X坐标
-     * @param   cp1y    起始点控制点Y坐标
-     * @param   cp2x    结束点控制点X坐标
-     * @param   cp2y    结束点控制点Y坐标
-     * @param   x       结束点X坐标
-     * @param   y       结束点Y坐标
+     * @param cp1x    起始点控制点 X 坐标
+     * @param cp1y    起始点控制点 Y 坐标
+     * @param cp2x    结束点控制点 X 坐标
+     * @param cp2y    结束点控制点 Y 坐标
+     * @param x       结束点 X 坐标
+     * @param y       结束点 Y 坐标
      */
     bezierCurveTo(
         cp1x: number,
@@ -166,10 +166,10 @@ export class SPath {
     /**
      * 添加椭圆
      *
-     * @param   cx          圆点X坐标
-     * @param   cy          圆点Y坐标
-     * @param   rx          水平半径
-     * @param   ry          垂直半径
+     * @param cx          圆点 X 坐标
+     * @param cy          圆点 Y 坐标
+     * @param rx          水平半径
+     * @param ry          垂直半径
      */
     ellipse(cx: number, cy: number, rx: number, ry: number): void {
         this.addCommand("Ellipse", cx, cy, rx, ry);
@@ -178,10 +178,10 @@ export class SPath {
     /**
      * 添加矩形
      *
-     * @param   x           X坐标
-     * @param   y           Y坐标
-     * @param   w           宽度
-     * @param   h           高度
+     * @param x           X 坐标
+     * @param y           Y 坐标
+     * @param w           宽度
+     * @param h           高度
      */
     rect(x: number, y: number, w: number, h: number): void {
         this.addCommand("M", x, y);
@@ -194,7 +194,7 @@ export class SPath {
     /**
      * 添加多边形
      *
-     * @param   pList   点集数组
+     * @param pList   点集数组
      */
     polygon(pList: SPoint[]): void {
         if (pList.length > 2) {

+ 4 - 4
persagy-web-draw/src/SPathCommand.ts

@@ -27,11 +27,11 @@
 /**
  *  路径命令接口
  *
- *  @author  庞利祥 <sybotan@126.com>
- * */
+ *  @author 庞利祥 <sybotan@126.com>
+ */
 export interface SPathCommand {
-    /** 命令    */
+    /** 命令 */
     command: string;
-    /** 参数    */
+    /** 参数 */
     args: number[];
 }

+ 7 - 7
persagy-web-draw/src/SPen.ts

@@ -29,7 +29,7 @@ import { SColor, SLineCapStyle, SLineJoinStyle } from "./";
 /**
  * 画笔
  *
- * @author  庞利祥(sybotan@126.com)
+ * @author 庞利祥 <sybotan@126.com>
  */
 export class SPen {
     ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -46,7 +46,7 @@ export class SPen {
     /** 线段与线段间接合处的样式 */
     lineJoinStyle = SLineJoinStyle.Miter;
 
-    /** 限制当两条线相交时交接处最大长度 (默认值是10.0)*/
+    /** 限制当两条线相交时交接处最大长度 (默认值是10.0) */
     miterLimit = 10;
 
     /** 虚线样式 */
@@ -65,23 +65,23 @@ export class SPen {
     /**
      * 构造函数
      *
-     * @param   pen     画笔
+     * @param pen   画笔
      */
     constructor(pen: SPen);
 
     /**
      * 构造函数
      *
-     * @param   color       颜色
-     * @param   lineWidth   线宽
+     * @param color       颜色
+     * @param lineWidth   线宽
      */
     constructor(color: SColor, lineWidth?: number);
 
     /**
      * 构造函数
      *
-     * @param   color       颜色 | 画笔
-     * @param   lineWidth   线宽
+     * @param color       颜色 | 画笔
+     * @param lineWidth   线宽
      */
     constructor(color?: SColor | SPen, lineWidth?: number) {
         if (color == undefined) {

+ 18 - 18
persagy-web-draw/src/SRadialGradient.ts

@@ -29,7 +29,7 @@ import { SGradient, SPoint } from "./";
 /**
  * 放射性渐变
  *
- * @author  庞利祥(sybotan@126.com)
+ * @author 庞利祥 <sybotan@126.com>
  */
 export class SRadialGradient extends SGradient {
     /** 开始圆形半径 */
@@ -40,22 +40,22 @@ export class SRadialGradient extends SGradient {
     /**
      * 构造函数
      *
-     * @param   start   开始圆形坐标
-     * @param   r1      开始圆形半径
-     * @param   end     结束圆形坐标
-     * @param   r2      结束圆形半径
+     * @param start   开始圆形坐标
+     * @param r1      开始圆形半径
+     * @param end     结束圆形坐标
+     * @param r2      结束圆形半径
      */
     constructor(start: SPoint, r1: number, end: SPoint, r2: number);
 
     /**
      * 构造函数
      *
-     * @param   x1      开始圆形X坐标
-     * @param   y1      开始圆形Y坐标
-     * @param   r1      开始圆形半径
-     * @param   x2      结束圆形X坐标
-     * @param   y2      结束圆形Y坐标
-     * @param   r2      结束圆形半径
+     * @param x1      开始圆形 X 坐标
+     * @param y1      开始圆形 Y 坐标
+     * @param r1      开始圆形半径
+     * @param x2      结束圆形 X 坐标
+     * @param y2      结束圆形 Y 坐标
+     * @param r2      结束圆形半径
      */
     constructor(
         x1: number,
@@ -69,12 +69,12 @@ export class SRadialGradient extends SGradient {
     /**
      * 构造函数(重载实现)
      *
-     * @param   x1      开始圆形X坐标 | 开始圆形坐标
-     * @param   y1      开始圆形Y坐标 | 开始圆形半径
-     * @param   r1      开始圆形半径 | 结束圆形坐标
-     * @param   x2      结束圆形X坐标 | 结束圆形半径
-     * @param   y2      结束圆形Y坐标
-     * @param   r2      结束圆形半径
+     * @param x1      开始圆形 X 坐标 | 开始圆形坐标
+     * @param y1      开始圆形 Y 坐标 | 开始圆形半径
+     * @param r1      开始圆形半径 | 结束圆形坐标
+     * @param x2      结束圆形 X 坐标 | 结束圆形半径
+     * @param y2      结束圆形 Y 坐标
+     * @param r2      结束圆形半径
      */
     constructor(
         x1: number | SPoint,
@@ -101,7 +101,7 @@ export class SRadialGradient extends SGradient {
     /**
      * 转为字符串保存
      *
-     * */
+     */
     value(): string {
         let str = `SRadialGradient{`;
         str += `${this.x1},${this.y1},${this.r1};`;

+ 12 - 13
persagy-web-draw/src/SShadow.ts

@@ -29,17 +29,16 @@ import { SColor } from "./SColor";
 /**
  * 阴影
  *
- * @author  hoajianlong(1061851420@qq.com)
+ * @author 郝洁 <haojie@persagy.com>
  */
-
 export class SShadow {
-    /** 阴影扩散距离  */
+    /** 阴影扩散距离 */
     shadowBlur: number = 0;
-    /** 阴影颜色    */
+    /** 阴影颜色 */
     shadowColor: SColor | null = null;
-    /** 阴影x轴偏移量 */
+    /** 阴影 x 轴偏移量 */
     shadowOffsetX: number = 0;
-    /** 阴影y轴偏移量 */
+    /** 阴影 y 轴偏移量 */
     shadowOffsetY: number = 0;
 
     /**
@@ -50,24 +49,24 @@ export class SShadow {
     /**
      * 构造函数
      *
-     * @param   shadow  阴影画刷
+     * @param shadow    阴影画刷
      */
     constructor(shadow: SShadow);
 
     /**
      * 构造函数
      *
-     * @param   blur    扩散距离
-     * @param   color   颜色
+     * @param blur    扩散距离
+     * @param color   颜色
      */
     constructor(blur: number, color: SColor);
 
     /**
      * 构造函数
      *
-     * @param   blur    阴影|扩散距离
-     * @param   color   阴影颜色
-     * */
+     * @param blur    阴影|扩散距离
+     * @param color   阴影颜色
+     */
     constructor(blur?: number | SShadow, color?: SColor) {
         if (blur == undefined) {
             return;
@@ -81,5 +80,5 @@ export class SShadow {
             this.shadowBlur = blur;
             this.shadowColor = color || SColor.Black;
         }
-    }
+    } // Constructor
 } // Class SShadow

+ 49 - 49
persagy-web-draw/src/engines/SCanvasPaintEngine.ts

@@ -43,14 +43,14 @@ import {
 import { SPath } from "../SPath";
 
 /**
- * Canvas绘制引擎基类
+ * Canvas 绘制引擎基类
  *
- * @author  庞利祥(sybotan@126.com)
+ * @author 庞利祥 <sybotan@126.com>
  */
 export class SCanvasPaintEngine extends SPaintEngine {
-    /** 画布对象    */
+    /** 画布对象 */
     private readonly _canvas: CanvasRenderingContext2D;
-    /** 融合类型    */
+    /** 融合类型 */
     static gcoList = [
         "copy",
         "destination-atop",
@@ -69,7 +69,7 @@ export class SCanvasPaintEngine extends SPaintEngine {
     /**
      * 绘制引擎类型
      *
-     * @return  返回Canvas绘制引擎类型
+     * @return 返回 Canvas 绘制引擎类型
      */
     get type(): SPaintEngineType {
         return SPaintEngineType.Canvas;
@@ -80,7 +80,7 @@ export class SCanvasPaintEngine extends SPaintEngine {
     /**
      * 构造函数
      *
-     * @param   canvas      canvas对象
+     * @param canvas    canvas对象
      */
     constructor(canvas: CanvasRenderingContext2D) {
         super();
@@ -95,7 +95,7 @@ export class SCanvasPaintEngine extends SPaintEngine {
     /**
      * 清空矩形区域
      *
-     * @param   rect        矩形
+     * @param rect  矩形
      */
     clearRect(rect: SRect): void {
         this.setMatrix();
@@ -103,9 +103,9 @@ export class SCanvasPaintEngine extends SPaintEngine {
     } // Function clearRect()
 
     /**
-     * 绘制空心矩形
+     * 绘制矩形
      *
-     * @param   rect        矩形
+     * @param rect  矩形
      */
     drawRect(rect: SRect): void {
         this.init(() => {
@@ -119,9 +119,9 @@ export class SCanvasPaintEngine extends SPaintEngine {
     /**
      * 绘制圆形
      *
-     * @param   cx          圆心X坐标
-     * @param   cy          圆心X坐标
-     * @param   r           圆半径
+     * @param cx    圆心 x 坐标
+     * @param cy    圆心 y 坐标
+     * @param r     圆半径
      */
     drawCircle(cx: number, cy: number, r: number): void {
         this.init(() => {
@@ -135,10 +135,10 @@ export class SCanvasPaintEngine extends SPaintEngine {
     /**
      * 绘制椭圆
      *
-     * @param   cx          圆点X坐标
-     * @param   cy          圆点Y坐标
-     * @param   rx          水平半径
-     * @param   ry          垂直半径
+     * @param cx    圆点 X 坐标
+     * @param cy    圆点 Y 坐标
+     * @param rx    水平半径
+     * @param ry    垂直半径
      */
     drawEllipse(cx: number, cy: number, rx: number, ry: number): void {
         this.init(() => {
@@ -152,7 +152,7 @@ export class SCanvasPaintEngine extends SPaintEngine {
     /**
      * 绘制线段
      *
-     * @param   line        线段
+     * @param line  线段
      */
     drawLine(line: SLine): void {
         this.init(() => {
@@ -166,7 +166,7 @@ export class SCanvasPaintEngine extends SPaintEngine {
     /**
      * 绘制折线
      *
-     * @param   points      折线折点
+     * @param points    折线折点
      */
     drawPolyline(points: SPoint[]): void {
         // 折线至少要有2个节点
@@ -187,7 +187,7 @@ export class SCanvasPaintEngine extends SPaintEngine {
     /**
      * 绘制多边形
      *
-     * @param   points      多边形顶点
+     * @param points    多边形顶点
      */
     drawPolygon(points: SPoint[]): void {
         // 多边形至少要有3个节点
@@ -211,7 +211,7 @@ export class SCanvasPaintEngine extends SPaintEngine {
     /**
      * 绘制路径
      *
-     * @param   path        路径
+     * @param path  路径
      */
     drawPath(path: SPath): void {
         this.init(() => {
@@ -222,10 +222,10 @@ export class SCanvasPaintEngine extends SPaintEngine {
     /**
      * 绘制文本
      *
-     * @param   text        文本内容
-     * @param   x           X坐标
-     * @param   y           Y坐标
-     * @param   maxWidth    最大宽度
+     * @param text      文本内容
+     * @param x         X 坐标
+     * @param y         Y 坐标
+     * @param maxWidth  最大宽度
      */
     drawText(text: string, x: number, y: number, maxWidth?: number): void {
         this.init(() => {
@@ -242,8 +242,8 @@ export class SCanvasPaintEngine extends SPaintEngine {
      * 绘制图片
      *
      * @param img       图片
-     * @param x         X坐标
-     * @param y         Y坐标
+     * @param x         X 坐标
+     * @param y         Y 坐标
      * @param width     宽度
      * @param height    高度
      */
@@ -270,9 +270,9 @@ export class SCanvasPaintEngine extends SPaintEngine {
     /**
      * 预测量文本宽度
      *
-     * @param   text    预测的文本
-     * @return  文本长度像素
-     * */
+     * @param text  预测的文本
+     * @return 文本长度像素
+     */
     textWidth(text: string): number {
         return this._canvas.measureText(text).width;
     } // Function textWidth()
@@ -280,10 +280,10 @@ export class SCanvasPaintEngine extends SPaintEngine {
     /**
      * 绘制二次贝塞尔曲线
      *
-     * @param   cp1x    控制点X坐标
-     * @param   cp1y    控制点Y坐标
-     * @param   x       结束点X坐标
-     * @param   y       结束点Y坐标
+     * @param cp1x    控制点 X 坐标
+     * @param cp1y    控制点 Y 坐标
+     * @param x       结束点 X 坐标
+     * @param y       结束点 Y 坐标
      */
     quadraticCurveTo(cp1x: number, cp1y: number, x: number, y: number): void {
         this._canvas.quadraticCurveTo(cp1x, cp1y, x, y);
@@ -292,12 +292,12 @@ export class SCanvasPaintEngine extends SPaintEngine {
     /**
      * 绘制三次贝塞尔曲线
      *
-     * @param   cp1x    起始点控制点X坐标
-     * @param   cp1y    起始点控制点Y坐标
-     * @param   cp2x    结束点控制点X坐标
-     * @param   cp2y    结束点控制点Y坐标
-     * @param   x       结束点X坐标
-     * @param   y       结束点Y坐标
+     * @param cp1x    起始点控制点 X 坐标
+     * @param cp1y    起始点控制点 Y 坐标
+     * @param cp2x    结束点控制点 X 坐标
+     * @param cp2y    结束点控制点 Y 坐标
+     * @param x       结束点X坐标
+     * @param y       结束点Y坐标
      */
     bezierCurveTo(
         cp1x: number,
@@ -313,8 +313,8 @@ export class SCanvasPaintEngine extends SPaintEngine {
     /**
      * 绘制带导角空心矩形
      *
-     * @param   rect    矩形
-     * @param   r       导角半径
+     * @param rect    矩形
+     * @param r       导角半径
      */
     drawRoundRect(rect: SRect, r: number): void {
         this.init(() => {
@@ -351,7 +351,7 @@ export class SCanvasPaintEngine extends SPaintEngine {
     /**
      * 设置字体
      *
-     * @param   font    字体
+     * @param font  字体
      */
     changeFont(font: SFont): void {
         this._canvas.font = `${font.size}px ${font.name}`;
@@ -366,8 +366,8 @@ export class SCanvasPaintEngine extends SPaintEngine {
     /**
      * 设置整体绘制状态
      *
-     * fn   绘制图形的具体函数
-     * */
+     * @param fn    绘制图形的具体函数
+     */
     private init(fn: Function): void {
         this.setMatrix();
         this.setPen();
@@ -405,7 +405,7 @@ export class SCanvasPaintEngine extends SPaintEngine {
     /**
      * 线段端点风格
      *
-     * @param   style       风格
+     * @param style     风格
      */
     private setLineCapStyle(style: SLineCapStyle): void {
         if (style == undefined) return;
@@ -505,7 +505,7 @@ export class SCanvasPaintEngine extends SPaintEngine {
     /**
      * 文本对齐选项
      *
-     * @param   value       对齐方式
+     * @param value     对齐方式
      */
     private setTextAlign(value: STextAlign): void {
         if (value == undefined) {
@@ -527,7 +527,7 @@ export class SCanvasPaintEngine extends SPaintEngine {
     /**
      * 设置文本基线对齐选项
      *
-     * @param   value       对齐方式
+     * @param value     对齐方式
      */
     private setBaseLine(value: STextBaseLine): void {
         if (value == undefined) {
@@ -551,7 +551,7 @@ export class SCanvasPaintEngine extends SPaintEngine {
     /**
      * 设置文本方向选项
      *
-     * @param   value       文本方向
+     * @param value     文本方向
      */
     private setTextDirection(value: STextDirection): void {
         if (value == undefined) {
@@ -594,7 +594,7 @@ export class SCanvasPaintEngine extends SPaintEngine {
     /**
      * 绘制路径
      *
-     * */
+     */
     private drawWay(path: SPath): void {
         this._canvas.beginPath();
         path.cmdList.forEach(cmd => {

+ 48 - 48
persagy-web-draw/src/engines/SPaintEngine.ts

@@ -31,17 +31,17 @@ import { SMatrix } from "@persagy-web/base";
 /**
  * 绘制引擎基类
  *
- * @author  庞利祥(sybotan@126.com)
+ * @author 庞利祥 <sybotan@126.com>
  */
 export abstract class SPaintEngine {
     /** 当关状态 */
     private _state = new SPaintState();
     get state(): SPaintState {
         return this._state;
-    } // Function state()
+    } // Get state
     set state(value: SPaintState) {
         this._state = value;
-    } // Function state()
+    } // Set state
 
     /** 状态栈 */
     private stateStack = new Array<SPaintState>();
@@ -50,7 +50,7 @@ export abstract class SPaintEngine {
     abstract get type(): SPaintEngineType;
 
     /**
-     * 保存painter状态
+     * 保存 painter 状态
      */
     save(): void {
         let state = new SPaintState(this.state);
@@ -58,7 +58,7 @@ export abstract class SPaintEngine {
     } // Function save()
 
     /**
-     * 恢复painter状态
+     * 恢复 painter 状态
      */
     restore(): void {
         if (this.stateStack.length > 0) {
@@ -71,8 +71,8 @@ export abstract class SPaintEngine {
     /**
      * 平移变换
      *
-     * @param   x       X轴方向平移
-     * @param   y       Y辆方向平移
+     * @param x     X 轴方向平移
+     * @param y     Y 辆方向平移
      */
     translate(x: number, y: number): void {
         this.state.matrix.translate(x, y);
@@ -81,8 +81,8 @@ export abstract class SPaintEngine {
     /**
      * 缩放
      *
-     * @param   x       X轴方向缩放
-     * @param   y       Y辆方向缩放
+     * @param x     X 轴方向缩放
+     * @param y     Y 轴方向缩放
      */
     scale(x: number, y: number): void {
         this.state.matrix.scale(x, y);
@@ -91,7 +91,7 @@ export abstract class SPaintEngine {
     /**
      * 旋转
      *
-     * @param   angle   旋转角度(单位弧度)
+     * @param angle     旋转角度(单位弧度)
      */
     rotate(angle: number): void {
         this.state.matrix.rotate(0, 0, angle);
@@ -100,12 +100,12 @@ export abstract class SPaintEngine {
     /**
      * 将当前的变形矩阵乘上一个基于自身参数的矩阵
      *
-     * @param   m11     水平方向的缩放
-     * @param   m12     水平方向的倾斜偏移
-     * @param   m21     竖直方向的倾斜偏移
-     * @param   m22     竖直方向的缩放
-     * @param   dx      水平方向的移动
-     * @param   dy      竖直方向的移动
+     * @param m11   水平方向的缩放
+     * @param m12   水平方向的倾斜偏移
+     * @param m21   竖直方向的倾斜偏移
+     * @param m22   竖直方向的缩放
+     * @param dx    水平方向的移动
+     * @param dy    竖直方向的移动
      */
     transform(
         m11: number,
@@ -119,12 +119,12 @@ export abstract class SPaintEngine {
     /**
      * 将当前的变形矩阵重置为单位矩阵,再将当前的变形矩阵乘上一个基于自身参数的矩阵
      *
-     * @param   m11     水平方向的缩放
-     * @param   m12     水平方向的倾斜偏移
-     * @param   m21     竖直方向的倾斜偏移
-     * @param   m22     竖直方向的缩放
-     * @param   dx      水平方向的移动
-     * @param   dy      竖直方向的移动
+     * @param m11   水平方向的缩放
+     * @param m12   水平方向的倾斜偏移
+     * @param m21   竖直方向的倾斜偏移
+     * @param m22   竖直方向的缩放
+     * @param dx    水平方向的移动
+     * @param dy    竖直方向的移动
      */
     setTransform(
         m11: number,
@@ -136,7 +136,7 @@ export abstract class SPaintEngine {
     ): void {} // Function transform()
 
     /**
-     * 重置当前变形为单位矩阵。等价于调用setTransform(1, 0, 0, 1, 0, 0)
+     * 重置当前变形为单位矩阵。等价于调用 setTransform(1, 0, 0, 1, 0, 0)
      */
     resetTransform(): void {
         this.state.matrix = new SMatrix();
@@ -148,71 +148,71 @@ export abstract class SPaintEngine {
     /**
      * 清空矩形区域
      *
-     * @param   rect        矩形
+     * @param rect  矩形
      */
     abstract clearRect(rect: SRect): void;
 
     /**
      * 绘制空心矩形
      *
-     * @param   rect        矩形
+     * @param rect  矩形
      */
     abstract drawRect(rect: SRect): void;
 
     /**
      * 绘制圆形
      *
-     * @param   cx          圆心X坐标
-     * @param   cy          圆心X坐标
-     * @param   r           圆半径
+     * @param cx    圆心 X 坐标
+     * @param cy    圆心 Y 坐标
+     * @param r     圆半径
      */
     abstract drawCircle(cx: number, cy: number, r: number): void;
 
     /**
      * 绘制椭圆
      *
-     * @param   cx          圆点X坐标
-     * @param   cy          圆点Y坐标
-     * @param   rx          水平半径
-     * @param   ry          垂直半径
+     * @param cx    圆点 X 坐标
+     * @param cy    圆点 Y 坐标
+     * @param rx    水平半径
+     * @param ry    垂直半径
      */
     abstract drawEllipse(cx: number, cy: number, rx: number, ry: number): void;
 
     /**
      * 绘制线段
      *
-     * @param   line        线段
+     * @param line  线段
      */
     abstract drawLine(line: SLine): void;
 
     /**
      * 绘制折线
      *
-     * @param   points      折线折点
+     * @param points    折线折点
      */
     abstract drawPolyline(points: SPoint[]): void;
 
     /**
      * 绘制多边形
      *
-     * @param   points      多边形顶点
+     * @param points    多边形顶点
      */
     abstract drawPolygon(points: SPoint[]): void;
 
     /**
      * 绘制路径
      *
-     * @param   path        路径
+     * @param path  路径
      */
     abstract drawPath(path: SPath): void;
 
     /**
      * 绘制文本
      *
-     * @param   text        文本内容
-     * @param   x           X坐标
-     * @param   y           Y坐标
-     * @param   maxWidth    最大宽度
+     * @param text          文本内容
+     * @param x             X 坐标
+     * @param y             Y 坐标
+     * @param maxWidth      最大宽度
      */
     abstract drawText(
         text: string,
@@ -225,8 +225,8 @@ export abstract class SPaintEngine {
      * 绘制图片
      *
      * @param img       图片
-     * @param x         X坐标
-     * @param y         Y坐标
+     * @param x         X 坐标
+     * @param y         Y 坐标
      * @param width     宽度
      * @param height    高度
      */
@@ -241,22 +241,22 @@ export abstract class SPaintEngine {
     /**
      * 预测量文本宽度
      *
-     * @param   text    预测的文本
-     * */
+     * @param text  预测的文本
+     */
     abstract textWidth(text: string): number;
 
     /**
      * 修改字体
      *
-     * @param   font    字体
-     * */
+     * @param font  字体
+     */
     abstract changeFont(font: SFont): void;
 
     /**
      * 绘制带导角空心矩形
      *
-     * @param   rect    矩形
-     * @param   r       导角半径
+     * @param rect    矩形
+     * @param r       导角半径
      */
     abstract drawRoundRect(rect: SRect, r: number): void;
 } // class SPaintEngine

+ 3 - 3
persagy-web-draw/src/engines/SPaintState.ts

@@ -32,7 +32,7 @@ import { SMatrix } from "@persagy-web/base";
 /**
  * 绘制状态
  *
- * @author  庞利祥(sybotan@126.com)
+ * @author 庞利祥 <sybotan@126.com>
  */
 export class SPaintState {
     /** 变换矩阵 */
@@ -68,7 +68,7 @@ export class SPaintState {
     /** 融合 */
     _composite = SCompositeType.SourceOver;
 
-    /** 阴影效果    */
+    /** 阴影效果 */
     private _shadow: SShadow = new SShadow();
     get shadow(): SShadow {
         return this._shadow;
@@ -94,7 +94,7 @@ export class SPaintState {
     /**
      * 构造函数
      *
-     * @param   state   绘制状态
+     * @param state     绘制状态
      */
     constructor(state?: SPaintState) {
         if (state != undefined) {

+ 38 - 44
persagy-web-draw/src/engines/SSvgPaintEngine.ts

@@ -36,16 +36,17 @@ import {
 import { SPath } from "../SPath";
 
 /**
- * Canvas绘制引擎基类
+ * Canvas 绘制引擎基类
  *
- * @author  庞利祥(sybotan@126.com)
+ * @author 庞利祥 <sybotan@126.com>
  */
 export class SSvgPaintEngine extends SPaintEngine {
+    /** 字符串 builder */
     private _builder = new SStringBuilder();
 
     ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     // 属性定义
-    /** svg版本号(1.1) */
+    /** svg 版本号(1.1) */
     version = "1.1";
     /** 宽度 */
     width: number = 0;
@@ -55,7 +56,7 @@ export class SSvgPaintEngine extends SPaintEngine {
     /**
      * 绘制引擎类型
      *
-     * @return  返回SVG绘制引擎类型
+     * @return 返回 SVG 绘制引擎类型
      */
     get type(): SPaintEngineType {
         return SPaintEngineType.SVG;
@@ -66,8 +67,8 @@ export class SSvgPaintEngine extends SPaintEngine {
     /**
      * 构造函数
      *
-     * @param   w       宽度
-     * @param   h       高度
+     * @param w     宽度
+     * @param h     高度
      */
     constructor(w: number, h: number) {
         super();
@@ -88,9 +89,9 @@ export class SSvgPaintEngine extends SPaintEngine {
     } // Constructor
 
     /**
-     * 转svg图像
+     * 转 svg 图像
      *
-     * @return  svg图像
+     * @return svg图像
      */
     toSvg(): string {
         return this._builder.toString("\n") + "</svg>\n";
@@ -98,25 +99,18 @@ export class SSvgPaintEngine extends SPaintEngine {
 
     // =================================================================================================================
     // 绘制图形
-    /**
-     * 设置裁剪路径
-     *
-     * @param   path        裁剪路径
-     */
-    // setClip(path: SPath): void {
-    //     // TODO:  PLX添加实现代码
-    // } // Function setClip()
+
     /**
      * 清空矩形区域
      *
-     * @param   rect        矩形
+     * @param rect  矩形
      */
     clearRect(rect: SRect): void {} // Function clearRect()
 
     /**
      * 绘制空心矩形
      *
-     * @param   rect       矩形
+     * @param rect  矩形
      */
     drawRect(rect: SRect): void {
         this._builder.append(
@@ -125,14 +119,14 @@ export class SSvgPaintEngine extends SPaintEngine {
                 rect.height
             }" ${this.getStyle(true, true, false)} ${this.getSvgMatrix()}/>`
         );
-    } // Functin drawRects()
+    } // Function drawRects()
 
     /**
      * 绘制圆形
      *
-     * @param   cx          圆心X坐标
-     * @param   cy          圆心X坐标
-     * @param   r           圆半径
+     * @param cx    圆心 X 坐标
+     * @param cy    圆心 Y 坐标
+     * @param r     圆半径
      */
     drawCircle(cx: number, cy: number, r: number): void {
         this._builder.append(
@@ -147,10 +141,10 @@ export class SSvgPaintEngine extends SPaintEngine {
     /**
      * 绘制椭圆
      *
-     * @param   cx          圆点X坐标
-     * @param   cy          圆点Y坐标
-     * @param   rx          水平半径
-     * @param   ry          垂直半径
+     * @param cx    圆点 X 坐标
+     * @param cy    圆点 Y 坐标
+     * @param rx    水平半径
+     * @param ry    垂直半径
      */
     drawEllipse(cx: number, cy: number, rx: number, ry: number): void {
         this._builder.append(
@@ -165,7 +159,7 @@ export class SSvgPaintEngine extends SPaintEngine {
     /**
      * 绘制线段
      *
-     * @param   line        线段
+     * @param line  线段
      */
     drawLine(line: SLine): void {
         this._builder.append(
@@ -178,7 +172,7 @@ export class SSvgPaintEngine extends SPaintEngine {
     /**
      * 绘制折线
      *
-     * @param   points      折线折点
+     * @param points    折线折点
      */
     drawPolyline(points: SPoint[]): void {
         this._builder.append(
@@ -191,7 +185,7 @@ export class SSvgPaintEngine extends SPaintEngine {
     /**
      * 绘制多边形
      *
-     * @param   points      多边形顶点
+     * @param points    多边形顶点
      */
     drawPolygon(points: SPoint[]): void {
         this._builder.append(
@@ -204,7 +198,7 @@ export class SSvgPaintEngine extends SPaintEngine {
     /**
      * 绘制路径
      *
-     * @param   path        路径
+     * @param path  路径
      */
     drawPath(path: SPath): void {
         // this._builder.append(
@@ -219,10 +213,10 @@ export class SSvgPaintEngine extends SPaintEngine {
     /**
      * 绘制文本
      *
-     * @param   text        文本内容
-     * @param   x           X坐标
-     * @param   y           Y坐标
-     * @param   maxWidth    最大宽度
+     * @param text        文本内容
+     * @param x           X 坐标
+     * @param y           Y 坐标
+     * @param maxWidth    最大宽度
      */
     drawText(text: string, x: number, y: number, maxWidth?: number): void {
         this._builder.append(
@@ -238,8 +232,8 @@ export class SSvgPaintEngine extends SPaintEngine {
      * 绘制图片
      *
      * @param img       图片
-     * @param x         X坐标
-     * @param y         Y坐标
+     * @param x         X 坐标
+     * @param y         Y 坐标
      * @param width     宽度
      * @param height    高度
      */
@@ -256,9 +250,9 @@ export class SSvgPaintEngine extends SPaintEngine {
     /**
      * 预测量文本宽度
      *
-     * @param   text    预测的文本
-     * @return  文本长度像素
-     * */
+     * @param text  预测的文本
+     * @return 文本长度像素
+     */
     textWidth(text: string): number {
         return 0;
     } // Function textWidth()
@@ -266,14 +260,14 @@ export class SSvgPaintEngine extends SPaintEngine {
     /**
      * 设置字体
      *
-     * @param   font    字体
+     * @param font  字体
      */
     changeFont(font: SFont): void {} // Function changeFont()
 
     /**
      * 获得svg需要的变形信息
      *
-     * @return  变换信息
+     * @return 变换信息
      */
     private getSvgMatrix(): string {
         // eslint-disable-next-line max-len
@@ -283,8 +277,8 @@ export class SSvgPaintEngine extends SPaintEngine {
     /**
      * 将点列表转换为字符串表达形式
      *
-     * @param   points      被转换的点
-     * @return  点列表字符串
+     * @param points    被转换的点
+     * @return 点列表字符串
      */
     private static pointsToStr(points: SPoint[]): string {
         let strBuilder = new SStringBuilder();
@@ -340,6 +334,6 @@ export class SSvgPaintEngine extends SPaintEngine {
 
     /**
      * 绘制圆角矩形
-     * */
+     */
     drawRoundRect(): void {} // Function drawRoundRect()
 } // Class SSvgPaintEngine

+ 6 - 0
persagy-web-draw/src/enums/SArrowStyleType.ts

@@ -30,10 +30,16 @@
  * @author  郝建龙 <haojianlong@sagacloud.cn>
  */
 export enum SArrowStyleType {
+    /** 无类型 */
     None,
+    /** 基本类型 */
     Basic,
+    /** 三角型类型 */
     Triangle,
+    /** 菱形类型 */
     Diamond,
+    /** 正方形类型 */
     Square,
+    /** 圆形类型 */
     Circle
 } // Enum SArrowStyleType

+ 1 - 1
persagy-web-draw/src/enums/SAspectRatioMode.ts

@@ -27,7 +27,7 @@
 /**
  * 终横比模式
  *
- * @author  庞利祥(sybotan@126.com)
+ * @author 庞利祥 <sybotan@126.com>
  */
 export enum SAspectRatioMode {
     /** 自由缩放放,不保存纵横比 */

+ 1 - 1
persagy-web-draw/src/enums/SBrushType.ts

@@ -27,7 +27,7 @@
 /**
  * 线端端点样式
  *
- * @author  庞利祥(sybotan@126.com)
+ * @author 庞利祥 <sybotan@126.com>
  */
 export enum SBrushType {
     /** 颜色 */

+ 9 - 9
persagy-web-draw/src/enums/SCompositeType.ts

@@ -30,26 +30,26 @@
  * @author  郝建龙 <haojianlong@sagacloud.cn>
  */
 export enum SCompositeType {
-    /** 显示源图像。忽略目标图像。   */
+    /** 显示源图像。忽略目标图像。 */
     Copy,
     /** 在源图像顶部显示目标图像。源图像之外的目标图像部分不会被显示。 */
     DestinationAtop,
-    /** 在源图像中显示目标图像。只有源图像内的目标图像部分会被显示,源图像是透明的。  */
+    /** 在源图像中显示目标图像。只有源图像内的目标图像部分会被显示,源图像是透明的。 */
     DestinationIn,
-    /** 在源图像外显示目标图像。只有源图像外的目标图像部分会被显示,源图像是透明的。  */
+    /** 在源图像外显示目标图像。只有源图像外的目标图像部分会被显示,源图像是透明的。 */
     DestinationOut,
-    /** 在源图像上方显示目标图像。   */
+    /** 在源图像上方显示目标图像。 */
     DestinationOver,
-    /** 显示源图像 + 目标图像。   */
+    /** 显示源图像 + 目标图像。 */
     Lighter,
-    /** 在目标图像顶部显示源图像。源图像位于目标图像之外的部分是不可见的    */
+    /** 在目标图像顶部显示源图像。源图像位于目标图像之外的部分是不可见的 */
     SourceAtop,
-    /** 在目标图像中显示源图像。只有目标图像内的源图像部分会显示,目标图像是透明的。  */
+    /** 在目标图像中显示源图像。只有目标图像内的源图像部分会显示,目标图像是透明的。 */
     SourceIn,
-    /** 在目标图像之外显示源图像。只会显示目标图像之外源图像部分,目标图像是透明的。  */
+    /** 在目标图像之外显示源图像。只会显示目标图像之外源图像部分,目标图像是透明的。 */
     SourceOut,
     /** 默认。在目标图像上显示源图像。 */
     SourceOver,
-    /** 使用异或操作对源图像与目标图像进行组合。    */
+    /** 使用异或操作对源图像与目标图像进行组合。 */
     Xor
 } // Enum SCompositeType

+ 1 - 1
persagy-web-draw/src/enums/SLineCapStyle.ts

@@ -27,7 +27,7 @@
 /**
  * 线端端点样式
  *
- * @author  庞利祥(sybotan@126.com)
+ * @author 庞利祥 <sybotan@126.com>
  */
 export enum SLineCapStyle {
     /** 线段末端以方形结束。 */

+ 1 - 1
persagy-web-draw/src/enums/SLineJoinStyle.ts

@@ -27,7 +27,7 @@
 /**
  * 线段与线段间接合处的样式
  *
- * @author  庞利祥(sybotan@126.com)
+ * @author 庞利祥 <sybotan@126.com>
  */
 export enum SLineJoinStyle {
     /** 默认。通过延伸相连部分的外边缘,使其相交于一点,形成一个额外的菱形区域。 */

+ 4 - 4
persagy-web-draw/src/enums/SPaintEngineType.ts

@@ -27,14 +27,14 @@
 /**
  * 绘制引擎类型
  *
- * @author  庞利祥(sybotan@126.com)
+ * @author 庞利祥 <sybotan@126.com>
  */
 export enum SPaintEngineType {
-    /** Canvas绘制引擎 */
+    /** Canvas 绘制引擎 */
     Canvas,
-    /** SVG绘制引擎 */
+    /** SVG 绘制引擎 */
     SVG,
-    /** OpenGL引擎 */
+    /** OpenGL 引擎 */
     OpenGL,
     /** 图片绘制引擎 */
     Image

+ 5 - 5
persagy-web-draw/src/enums/STextAlign.ts

@@ -27,17 +27,17 @@
 /**
  * 文本对齐选项
  *
- * @author  庞利祥(sybotan@126.com)
+ * @author 庞利祥 <sybotan@126.com>
  */
 export enum STextAlign {
     /** 默认。文本在指定的位置开始 */
     Start,
-    /** 文本在指定的位置结束  */
+    /** 文本在指定的位置结束 */
     End,
-    /** 文本右对齐   */
+    /** 文本右对齐 */
     Right,
-    /** 文本左对齐   */
+    /** 文本左对齐 */
     Left,
-    /** 文本的中心被放置在指定的位置  */
+    /** 文本的中心被放置在指定的位置 */
     Center
 } // Enum STextAlign

+ 6 - 6
persagy-web-draw/src/enums/STextBaseLine.ts

@@ -27,19 +27,19 @@
 /**
  * 文本基线对齐选项
  *
- * @author  庞利祥(sybotan@126.com)
+ * @author 庞利祥 <sybotan@126.com>
  */
 export enum STextBaseLine {
     /** 默认。文本基线是普通的字母基线 */
     Alphabetic,
-    /** 文本基线是 em 方框的顶端  */
+    /** 文本基线是 em 方框的顶端 */
     Top,
-    /** 文本基线是悬挂基线  */
+    /** 文本基线是悬挂基线 */
     Hanging,
-    /** 文本基线是 em 方框的正中  */
+    /** 文本基线是 em 方框的正中 */
     Middle,
-    /** 文本基线是表意基线  */
+    /** 文本基线是表意基线 */
     Ideographic,
-    /** 文本基线是 em 方框的底端  */
+    /** 文本基线是 em 方框的底端 */
     Bottom
 } // Enum STextBaseLine

+ 3 - 3
persagy-web-draw/src/enums/STextDirection.ts

@@ -27,13 +27,13 @@
 /**
  * 文本方向
  *
- * @author  庞利祥(sybotan@126.com)
+ * @author 庞利祥 <sybotan@126.com>
  */
 export enum STextDirection {
     /** 默认 */
     Inherit,
-    /** 文本方向从左向右    */
+    /** 文本方向从左向右 */
     LTR,
-    /** 文本方向从右向左    */
+    /** 文本方向从右向左 */
     RTL
 } // Enum STextDirection

+ 5 - 5
persagy-web-draw/src/types/SArrow.ts

@@ -24,16 +24,16 @@
  * *********************************************************************************************************************
  */
 
+import { SArrowStyleType } from "..";
+
 /**
  * 箭头数据类型定义
  *
- * @author 郝建龙
+ * @author 郝洁 <haojie@persagy.com>
  */
-import { SArrowStyleType } from "..";
-
 export interface SArrow {
-    /** 箭头起点样式  */
+    /** 箭头起点样式 */
     begin: SArrowStyleType;
-    /** 箭头终点样式  */
+    /** 箭头终点样式 */
     end: SArrowStyleType;
 } // Class SArrow

+ 27 - 27
persagy-web-draw/src/types/SLine.ts

@@ -29,17 +29,17 @@ import { SPoint } from "./SPoint";
 /**
  * 线数据类型定义
  *
- * @author 庞利祥(sybotan@126.com)
+ * @author 庞利祥 <sybotan@126.com>
  */
 export class SLine {
     ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     // 属性定义
-    /** 端点1坐标 */
+    /** 端点 1 坐标 */
     p1: SPoint;
-    /** 端点2坐标 */
+    /** 端点 2 坐标 */
     p2: SPoint;
 
-    /** 属性X1 */
+    /** 属性 X1 */
     get x1(): number {
         return this.p1.x;
     } // Get x1
@@ -47,7 +47,7 @@ export class SLine {
         this.p1.x = value;
     } // Set x1
 
-    /** 属性Y1 */
+    /** 属性 Y1 */
     get y1(): number {
         return this.p1.y;
     } // Get y1
@@ -55,7 +55,7 @@ export class SLine {
         this.p1.y = value;
     } // Set y1
 
-    /** 属性X2 */
+    /** 属性 X2 */
     get x2(): number {
         return this.p2.x;
     } // Get x2
@@ -63,7 +63,7 @@ export class SLine {
         this.p2.x = v;
     } // Set x2
 
-    /** 属性Y2 */
+    /** 属性 Y2 */
     get y2(): number {
         return this.p2.y;
     } // Get y2
@@ -71,11 +71,11 @@ export class SLine {
         this.p2.y = value;
     } // Set y2
 
-    /** 属性dx */
+    /** 属性 dx */
     get dx(): number {
         return this.p2.x - this.p1.x;
     } // Get dx
-    /** 属性dy */
+    /** 属性 dy */
     get dy(): number {
         return this.p2.y - this.p1.y;
     } // Get dy()
@@ -90,35 +90,35 @@ export class SLine {
     /**
      * 构造函数
      *
-     * @param   line    线段
+     * @param line    线段
      */
     constructor(line: SLine);
 
     /**
      * 构造函数
      *
-     * @param   p1      启点坐标
-     * @param   p2      终点坐标
+     * @param p1      启点坐标
+     * @param p2      终点坐标
      */
     constructor(p1: SPoint, p2: SPoint);
 
     /**
      * 构造函数
      *
-     * @param   x1      启点X坐标
-     * @param   y1      启点Y坐标
-     * @param   x2      终点X坐标
-     * @param   y2      终点Y坐标
+     * @param x1      启点 X 坐标
+     * @param y1      启点 Y 坐标
+     * @param x2      终点 X 坐标
+     * @param y2      终点 Y 坐标
      */
     constructor(x1: number, y1: number, x2: number, y2: number);
 
     /**
      * 构造函数(重载实现)
      *
-     * @param   x1      启点X坐标 | 启点坐标 | 线段
-     * @param   y1      启点Y坐标 | 终点坐标
-     * @param   x2      终点X坐标
-     * @param   y2      终点Y坐标
+     * @param x1      启点 X 坐标 | 启点坐标 | 线段
+     * @param y1      启点 Y 坐标 | 终点坐标
+     * @param x2      终点 X 坐标
+     * @param y2      终点 Y 坐标
      */
     constructor(
         x1?: number | SPoint | SLine,
@@ -144,7 +144,7 @@ export class SLine {
     /**
      * 判断线段是否为空
      *
-     * @return  如果线段长度为零,返回true,否则返回false。
+     * @return 如果线段长度为零,返回 true,否则返回 false。
      */
     isNull(): boolean {
         return (
@@ -156,7 +156,7 @@ export class SLine {
     /**
      * 返回线段的中点
      *
-     * @return  线段的中点
+     * @return 线段的中点
      */
     center(): SPoint {
         return new SPoint(
@@ -168,8 +168,8 @@ export class SLine {
     /**
      * 平移线段
      *
-     * @param   dx      X轴方向平衡量
-     * @param   dy      Y轴方向平衡量
+     * @param dx    X 轴方向平衡量
+     * @param dy    Y 轴方向平衡量
      */
     translate(dx: number, dy: number): void {
         this.p1.x += dx;
@@ -181,9 +181,9 @@ export class SLine {
     /**
      * 生成平移线段
      *
-     * @param   dx      X轴方向平衡量
-     * @param   dy      Y轴方向平衡量
-     * @return  平移后的线段
+     * @param dx    X 轴方向平衡量
+     * @param dy    Y 轴方向平衡量
+     * @return 平移后的线段
      */
     translated(dx: number, dy: number): SLine {
         return new SLine(

+ 22 - 19
persagy-web-draw/src/types/SPoint.ts

@@ -24,13 +24,13 @@
  * *********************************************************************************************************************
  */
 
+import { SMatrix } from "@persagy-web/base";
+
 /**
  * 点数据类型定义
  *
- * @author 庞利祥(sybotan@126.com)
+ * @author 庞利祥 <sybotan@126.com>
  */
-import { SMatrix } from "@persagy-web/base";
-
 export class SPoint {
     ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     // 属性定义
@@ -49,23 +49,23 @@ export class SPoint {
     /**
      * 构造函数
      *
-     * @param   p  
+     * @param p     点
      */
     constructor(p: SPoint);
 
     /**
      * 构造函数
      *
-     * @param   x       X轴坐标
-     * @param   y       Y轴坐标
+     * @param x     X 轴坐标
+     * @param y     Y 轴坐标
      */
     constructor(x: number, y: number);
 
     /**
      * 构造函数(重载实现)
      *
-     * @param   x       X轴坐标 | 点 | undefined
-     * @param   y       Y轴坐标
+     * @param x     X 轴坐标 | 点 | undefined
+     * @param y     Y 轴坐标
      */
     constructor(x?: number | SPoint, y?: number) {
         if (x == undefined) {
@@ -78,25 +78,28 @@ export class SPoint {
             this.x = x as number;
             this.y = y as number;
         }
-    } // Function constructor()
+    } // Constructor()
 
     /**
      * 设置点
-     * @param   pos      点
+     *
+     * @param pos   点
      */
     setPoint(pos: SPoint): void;
 
     /**
      * 设置点
-     * @param   x       X轴坐标
-     * @param   y       Y轴坐标
+     *
+     * @param x     X 轴坐标
+     * @param y     Y 轴坐标
      */
     setPoint(x: number, y: number): void;
 
     /**
      * 设置点(重载实现)
-     * @param   x       X轴坐标 | 点
-     * @param   y       Y轴坐标
+     *
+     * @param x     X 轴坐标 | 点
+     * @param y     Y 轴坐标
      */
     setPoint(x: number | SPoint, y?: number): void {
         if (x instanceof SPoint) {
@@ -111,7 +114,7 @@ export class SPoint {
     /**
      * 布线长度
      *
-     * @return  返回 |X| + |Y|
+     * @return 返回 |X| + |Y|
      */
     manhattanLength(): number {
         // noinspection JSSuspiciousNameCombination
@@ -121,8 +124,8 @@ export class SPoint {
     /**
      * 返回点矩阵变换后的值
      *
-     * @return  变换后的点
-     * */
+     * @return 变换后的点
+     */
     matrixTransform(mat: SMatrix): SPoint {
         const p = new SPoint();
         p.x = this.x * mat.a + this.y * mat.b + mat.e;
@@ -133,8 +136,8 @@ export class SPoint {
     /**
      * 平移点
      *
-     * @param   dx      X轴位移
-     * @param   dy      Y轴位移
+     * @param dx    X 轴位移
+     * @param dy    Y 轴位移
      */
     translate(dx: number, dy: number): void {
         this.x += dx;

+ 47 - 46
persagy-web-draw/src/types/SRect.ts

@@ -30,7 +30,7 @@ import { SSize } from "./SSize";
 /**
  * 矩形数据类型定义
  *
- * @author 庞利祥(sybotan@126.com)
+ * @author 庞利祥 <sybotan@126.com>
  */
 export class SRect {
     ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -40,7 +40,7 @@ export class SRect {
     /** 大小 */
     size: SSize;
 
-    /** 矩形的X轴坐标 */
+    /** 矩形的 X 轴坐标 */
     get x(): number {
         return this.leftTop.x;
     } // Get x
@@ -48,7 +48,7 @@ export class SRect {
         this.leftTop.x = value;
     } // Set x
 
-    /** 矩形的Y轴坐标 */
+    /** 矩形的 Y 轴坐标 */
     get y(): number {
         return this.leftTop.y;
     } // Get x
@@ -114,36 +114,36 @@ export class SRect {
     /**
      *构造函数
      *
-     * @param   leftTop         左上角坐标
-     * @param   rightBottom     右下角坐标
+     * @param leftTop       左上角坐标
+     * @param rightBottom   右下角坐标
      */
     constructor(leftTop: SPoint, rightBottom: SPoint);
 
     /**
      * 构造函数
      *
-     * @param   leftTop         左上角坐标
-     * @param   size            大小
+     * @param leftTop   左上角坐标
+     * @param size      大小
      */
     constructor(leftTop: SPoint, size: SSize);
 
     /**
      * 构造函数
      *
-     * @param   x           X轴坐标
-     * @param   y           Y轴坐标
-     * @param   width       宽度
-     * @param   height      高度
+     * @param x         X 轴坐标
+     * @param y         Y 轴坐标
+     * @param width     宽度
+     * @param height    高度
      */
     constructor(x: number, y: number, width: number, height: number);
 
     /**
      * 构造函数
      *
-     * @param   x           X轴坐标 | 左上角坐标
-     * @param   y           Y轴坐标 | 右下角坐标 | 大小
-     * @param   width       宽度
-     * @param   height      高度
+     * @param x         X 轴坐标 | 左上角坐标
+     * @param y         Y 轴坐标 | 右下角坐标 | 大小
+     * @param width     宽度
+     * @param height    高度
      */
     constructor(
         x?: number | SPoint,
@@ -168,12 +168,12 @@ export class SRect {
             this.leftTop = new SPoint(x as number, y as number);
             this.size = new SSize(width as number, height as number);
         }
-    } // constructor
+    } // Constructor
 
     /**
      * 是否为空
      *
-     * @return  width或height小于等于0,返回true,否则返回false。
+     * @return width  height 小于等于 0,返回 true,否则返回 false。
      *
      * @see isNull(), isValid()
      */
@@ -182,9 +182,9 @@ export class SRect {
     } // Function isEmpty()
 
     /**
-     * 是否为Null
+     * 是否为 Null
      *
-     * @return  width与height都等于0,返回true,否则返回false。
+     * @return width  height 都等于 0,返回 true,否则返回 false。
      *
      * @see isEmpty(), isValid()
      */
@@ -195,7 +195,8 @@ export class SRect {
     /**
      * 是否有效
      *
-     * @return  width与height都大于0,返回true,否则返回false。
+     * @return width 与 height 都大于 0,返回 true,否则返回 false。
+     *
      * @see isEmpty(), isNull()
      */
     isValid(): boolean {
@@ -205,7 +206,7 @@ export class SRect {
     /**
      * 是否包含另一个矩阵
      *
-     * @return  true    包含
+     * @return true     包含
      */
     isIn(rect: SRect): boolean {
         return (
@@ -219,9 +220,9 @@ export class SRect {
     /**
      * 判断矩形空间是否包含点x,y
      *
-     * @param   x       X坐标
-     * @param   y       Y坐标
-     * @return  如果包含返回true, 否则返回false
+     * @param x       X 坐标
+     * @param y       Y 坐标
+     * @return 如果包含返回 true, 否则返回 false
      */
     contains(x: number, y: number): boolean {
         return (
@@ -235,7 +236,7 @@ export class SRect {
     /**
      * 计算中心点
      *
-     * @return  中心点坐标
+     * @return 中心点坐标
      */
     center(): SPoint {
         return new SPoint(
@@ -247,8 +248,8 @@ export class SRect {
     /**
      * 平移矩形
      *
-     * @param   dx      X轴位移
-     * @param   dy      Y轴位移
+     * @param dx    X 轴位移
+     * @param dy    Y 轴位移
      */
     translate(dx: number, dy: number): void {
         this.x += dx;
@@ -258,9 +259,9 @@ export class SRect {
     /**
      * 生成平移矩形
      *
-     * @param   dx      X轴位移
-     * @param   dy      Y轴位移
-     * @return  移动后的矩形
+     * @param dx    X 轴位移
+     * @param dy    Y 轴位移
+     * @return 移动后的矩形
      */
     translated(dx: number, dy: number): SRect {
         return new SRect(this.x + dx, this.y + dy, this.width, this.height);
@@ -269,10 +270,10 @@ export class SRect {
     /**
      * 调整Rect位置
      *
-     * @param   dx          X轴位移
-     * @param   dy          Y轴位移
-     * @param   dw          宽度调整
-     * @param   dh          高度调整
+     * @param dx          X 轴位移
+     * @param dy          Y 轴位移
+     * @param dw          宽度调整
+     * @param dh          高度调整
      */
     adjust(dx: number, dy: number, dw: number, dh: number): void {
         this.x += dx;
@@ -282,13 +283,13 @@ export class SRect {
     } // Function adjusted()
 
     /**
-     * 调整Rect位置
+     * 调整 Rect 位置
      *
-     * @param   dx          X轴位移
-     * @param   dy          Y轴位移
-     * @param   dw          宽度调整
-     * @param   dh          高度调整
-     * @return  SRect       调整后的矩形
+     * @param dx          X 轴位移
+     * @param dy          Y 轴位移
+     * @param dw          宽度调整
+     * @param dh          高度调整
+     * @return 调整后的矩形
      */
     adjusted(dx: number, dy: number, dw: number, dh: number): SRect {
         return new SRect(
@@ -302,7 +303,7 @@ export class SRect {
     /**
      * 合并矩形
      *
-     * @param   rect    合并的矩形
+     * @param rect    合并的矩形
      */
     union(rect: SRect): void {
         let r = this.unioned(rect);
@@ -315,8 +316,8 @@ export class SRect {
     /**
      * 生成合并矩形
      *
-     * @param   rect    合并的矩形
-     * @return  返回合并后的矩形
+     * @param rect    合并的矩形
+     * @return 返回合并后的矩形
      */
     unioned(rect: SRect): SRect {
         let left = Math.min(this.left, rect.left);
@@ -329,8 +330,8 @@ export class SRect {
     /**
      * 生成相交矩形
      *
-     * @param   rect    合并的矩形
-     * @return  返回合并后的矩形
+     * @param rect    合并的矩形
+     * @return 返回合并后的矩形
      */
     intersected(rect: SRect): SRect {
         let minX = this.left < rect.left ? this.left : rect.left;
@@ -349,7 +350,7 @@ export class SRect {
     /**
      * 相交矩形
      *
-     * @param   rect    合并的矩形
+     * @param rect    合并的矩形
      */
     intersect(rect: SRect): SRect {
         let left = Math.min(this.left, rect.left);

+ 21 - 20
persagy-web-draw/src/types/SSize.ts

@@ -29,7 +29,7 @@ import { SAspectRatioMode } from "..";
 /**
  * 大小数据类型定义
  *
- * @author 庞利祥(sybotan@126.com)
+ * @author 庞利祥 <sybotan@126.com>
  */
 export class SSize {
     ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -49,23 +49,23 @@ export class SSize {
     /**
      * 构造函数
      *
-     * @param   size    大小
+     * @param size    大小
      */
     constructor(size: SSize);
 
     /**
      * 构造函数(重载实现)
      *
-     * @param   width   宽度
-     * @param   height  高度
+     * @param width   宽度
+     * @param height  高度
      */
     constructor(width: number, height: number);
 
     /**
      * 构造函数(重载实现)
      *
-     * @param   width   宽度
-     * @param   height  高度
+     * @param width   宽度
+     * @param height  高度
      */
     constructor(width?: number | SSize, height?: number) {
         if (width == undefined) {
@@ -85,7 +85,7 @@ export class SSize {
     /**
      * 是否为空
      *
-     * @return  width或height小于等于0,返回true,否则返回false。
+     * @return width  height 小于等于 0,返回 true,否则返回 false。
      *
      * @see isNull(), isValid()
      */
@@ -94,9 +94,9 @@ export class SSize {
     } // Function isEmpty()
 
     /**
-     * 是否为Null
+     * 是否为 Null
      *
-     * @return  width与height都等于0,返回true,否则返回false。
+     * @return width  height 都等于 0,返回 true,否则返回 false。
      *
      * @see isEmpty(), isValid()
      */
@@ -107,7 +107,8 @@ export class SSize {
     /**
      * 是否有效
      *
-     * @return  width与height都大于0,返回true,否则返回false。
+     * @return width与 height 都大于 0,返回 true,否则返回 false。
+     *
      * @see isEmpty(), isNull()
      */
     isValid(): boolean {
@@ -117,9 +118,9 @@ export class SSize {
     /**
      * 缩放
      *
-     * @param   width       宽度
-     * @param   height      高度
-     * @param   mode        缩放模式
+     * @param width       宽度
+     * @param height      高度
+     * @param mode        缩放模式
      */
     scale(
         width: number,
@@ -134,10 +135,10 @@ export class SSize {
     /**
      * 生成缩放大小
      *
-     * @param   width       宽度
-     * @param   height      高度
-     * @param   mode        缩放模式
-     * @return  缩放大小
+     * @param width       宽度
+     * @param height      高度
+     * @param mode        缩放模式
+     * @return 缩放大小
      */
     scaled(
         width: number,
@@ -163,7 +164,7 @@ export class SSize {
     } // Function scaled()
 
     /**
-     * 互换width与height
+     * 互换 width  height
      *
      * @see transposed()
      */
@@ -174,9 +175,9 @@ export class SSize {
     } // Function transpose()
 
     /**
-     * 生成互换width与height的SSize
+     * 生成互换 width  height  SSize
      *
-     * @return  返回互换width与height的SSize。
+     * @return 返回互换 width  height  SSize。
      *
      * @see transpose()
      */

+ 6 - 6
persagy-web-draw/src/utils/SPolygonUtil.ts

@@ -29,15 +29,15 @@ import { SPoint } from "..";
 /**
  * 多边形工具
  *
- * @author  庞利祥(sybotan@126.com)
+ * @author 庞利祥 <sybotan@126.com>
  */
 export class SPolygonUtil {
     /**
      * 判断点是否在多边形内
      *
-     * @param   x           点的x坐标
-     * @param   y           点的y坐标
-     * @param   pointList   多边形顶点
+     * @param x           点的 x 坐标
+     * @param y           点的 y 坐标
+     * @param pointList   多边形顶点
      */
     static pointIn(x: number, y: number, pointList: SPoint[]): boolean {
         let crossNum = 0;
@@ -71,8 +71,8 @@ export class SPolygonUtil {
     /**
      * 判断多边型顶点的时针方向(计算基于数学坐标系统,在绘图坐标系由于y轴方向相反结果也要取反)
      *
-     * @param   pointList   多边形顶点
-     * @return  为负,顺时针;为正,逆时针;0,点在直线上。
+     * @param pointList   多边形顶点
+     * @return 为负,顺时针;为正,逆时针;0,点在直线上。
      */
     static clockDir(pointList: SPoint[]): number {
         if (pointList.length < 3) {

+ 8 - 8
persagy-web-edit/src/commands/SGraphAddCommand.ts

@@ -33,7 +33,7 @@ import { SUndoCommand } from "@persagy-web/base";
  * 添加item命令
  *
  * @author  panglixiang
- * */
+ */
 export class SGraphAddCommand extends SGraphCommand {
     /** 命令名称    */
     readonly command: string;
@@ -45,9 +45,9 @@ export class SGraphAddCommand extends SGraphCommand {
     /**
      * 构造函数
      *
-     * @param   scene   item所在场景
-     * @param   item    命令item对象
-     * */
+     * @param scene   item所在场景
+     * @param item    命令item对象
+     */
     constructor(scene: SGraphScene, item: SGraphItem) {
         super(scene);
         this.item = item;
@@ -59,8 +59,8 @@ export class SGraphAddCommand extends SGraphCommand {
     /**
      * 合并命令
      *
-     * @return  boolean 是否已执行合并
-     * */
+     * @return boolean 是否已执行合并
+     */
     mergeWith(command: SUndoCommand): boolean {
         return false;
     } // Function mergeWith()
@@ -68,7 +68,7 @@ export class SGraphAddCommand extends SGraphCommand {
     /**
      * 重做
      *
-     * */
+     */
     redo(): void {
         this.item.parent = this.parent;
         // @ts-ignore
@@ -78,7 +78,7 @@ export class SGraphAddCommand extends SGraphCommand {
     /**
      * 撤销
      *
-     * */
+     */
     undo(): void {
         this.item.parent = null;
         // @ts-ignore

+ 2 - 2
persagy-web-edit/src/commands/SGraphCommand.ts

@@ -30,7 +30,7 @@ import { SGraphScene } from "@persagy-web/graph/";
 /**
  * Graph命令基类
  *
- * @author  庞利祥(sybotan@126.com)
+ * @author 庞利祥 <sybotan@126.com>
  */
 export abstract class SGraphCommand extends SUndoCommand {
     /** 命令所属的场景类 */
@@ -39,7 +39,7 @@ export abstract class SGraphCommand extends SUndoCommand {
     /**
      * 构造函数
      *
-     * @param   scene       命令所属的场景类
+     * @param scene       命令所属的场景类
      */
     protected constructor(scene: SGraphScene | null) {
         super();

+ 12 - 12
persagy-web-edit/src/commands/SGraphMoveCommand.ts

@@ -35,7 +35,7 @@ import { SGraphScene } from "@persagy-web/graph/";
  *
  * @author  panglixiang
  *
- * */
+ */
 export class SGraphMoveCommand extends SGraphCommand {
     /** 命令名称    */
     readonly command: string;
@@ -49,11 +49,11 @@ export class SGraphMoveCommand extends SGraphCommand {
     /**
      * 构造函数
      *
-     * @param   scene   当前场景
-     * @param   item    item对象
-     * @param   old     移动前位置
-     * @param   pos     移动后位置
-     * */
+     * @param scene   当前场景
+     * @param item    item对象
+     * @param old     移动前位置
+     * @param pos     移动后位置
+     */
     constructor(
         scene: SGraphScene,
         item: SGraphItem,
@@ -71,9 +71,9 @@ export class SGraphMoveCommand extends SGraphCommand {
     /**
      * 合并命令
      *
-     * @param   command 命令
-     * @return  boolean 是否已执行合并命令
-     * */
+     * @param command 命令
+     * @return boolean 是否已执行合并命令
+     */
     mergeWith(command: SUndoCommand): boolean {
         if (command instanceof SGraphMoveCommand && command.item == this.item) {
             command.pos = this.pos;
@@ -85,7 +85,7 @@ export class SGraphMoveCommand extends SGraphCommand {
     /**
      * 重做
      *
-     * */
+     */
     redo(): void {
         this.item.pos = new SPoint(this.pos.x, this.pos.y);
         this.item.update();
@@ -94,7 +94,7 @@ export class SGraphMoveCommand extends SGraphCommand {
     /**
      * 撤销
      *
-     * */
+     */
     undo(): void {
         this.item.pos = new SPoint(this.old.x, this.old.y);
         this.item.update();
@@ -103,7 +103,7 @@ export class SGraphMoveCommand extends SGraphCommand {
     /**
      * 命令细节描述
      *
-     * */
+     */
     toString(): string {
         return `oldPos=${JSON.stringify(this.old)};\nnewPos=${JSON.stringify(
             this.pos

+ 6 - 6
persagy-web-edit/src/commands/SGraphPointListDelete.ts

@@ -47,11 +47,11 @@ export class SGraphPointListDelete extends SGraphCommand {
 
     /**
      * 构造函数
-     * @param   scene       item所在场景
-     * @param   item        指向item对象
-     * @param   pointList   顶点数组
-     * @param   pos         删除的点
-     * @param   index       索引
+     * @param scene       item所在场景
+     * @param item        指向item对象
+     * @param pointList   顶点数组
+     * @param pos         删除的点
+     * @param index       索引
      */
     constructor(
         scene: SGraphScene,
@@ -97,7 +97,7 @@ export class SGraphPointListDelete extends SGraphCommand {
     /**
      * 命令细节描述
      *
-     * */
+     */
     toString(): string {
         const pointList = `pointList=${JSON.stringify(this.pointList)}`;
         const pos = `pos=${JSON.stringify(this.pos)}`;

+ 6 - 6
persagy-web-edit/src/commands/SGraphPointListInsert.ts

@@ -47,11 +47,11 @@ export class SGraphPointListInsert extends SGraphCommand {
 
     /**
      * 构造函数
-     * @param   scene       item所在场景
-     * @param   item        指向item对象
-     * @param   pointList   顶点数组
-     * @param   pos         当前位置
-     * @param   index       索引
+     * @param scene       item所在场景
+     * @param item        指向item对象
+     * @param pointList   顶点数组
+     * @param pos         当前位置
+     * @param index       索引
      */
     constructor(
         scene: SGraphScene,
@@ -97,7 +97,7 @@ export class SGraphPointListInsert extends SGraphCommand {
     /**
      * 命令细节描述
      *
-     * */
+     */
     toString(): string {
         const pointList = `pointList=${JSON.stringify(this.pointList)}`;
         const pos = `pos=${JSON.stringify(this.pos)}`;

+ 7 - 7
persagy-web-edit/src/commands/SGraphPointListUpdate.ts

@@ -49,12 +49,12 @@ export class SGraphPointListUpdate extends SGraphCommand {
 
     /**
      * 构造函数
-     * @param   scene       item所在场景
-     * @param   item        指向item对象
-     * @param   pointList   顶点数组
-     * @param   old         原位置
-     * @param   pos         当前位置
-     * @param   index       索引
+     * @param scene       item所在场景
+     * @param item        指向item对象
+     * @param pointList   顶点数组
+     * @param old         原位置
+     * @param pos         当前位置
+     * @param index       索引
      */
     constructor(
         scene: SGraphScene,
@@ -95,7 +95,7 @@ export class SGraphPointListUpdate extends SGraphCommand {
     /**
      * 命令细节描述
      *
-     * */
+     */
     toString(): string {
         const pointList = `pointList=${JSON.stringify(this.pointList)}`;
         const old = `old=${JSON.stringify(this.old)}`;

+ 6 - 6
persagy-web-edit/src/commands/SGraphPropertyCommand.ts

@@ -49,11 +49,11 @@ export class SGraphPropertyCommand<T> extends SGraphCommand {
     /**
      * 构造函数
      *
-     * @param   scene       命令所属的场景类
-     * @param   item        命令所属的item类
-     * @param   propName    修改的属性名称
-     * @param   oldProp     修改前的属性值
-     * @param   newProp     修改后的属性值
+     * @param scene       命令所属的场景类
+     * @param item        命令所属的item类
+     * @param propName    修改的属性名称
+     * @param oldProp     修改前的属性值
+     * @param newProp     修改后的属性值
      */
     constructor(
         scene: SGraphScene,
@@ -92,7 +92,7 @@ export class SGraphPropertyCommand<T> extends SGraphCommand {
     /**
      * 命令细节描述
      *
-     * */
+     */
     toString(): string {
         const propName = `propName=${this.propName}`;
         const oldProp = `oldProp=${JSON.stringify(this.oldProp)}`;

+ 2 - 2
persagy-web-edit/src/items/ImageEdit.ts

@@ -56,7 +56,7 @@ export class ImageEdit extends SImageItem {
     /**
      * 构造函数
      *
-     * @param   parent      指向父对象
+     * @param parent      指向父对象
      */
     constructor(parent: SGraphItem | null, url: string) {
         super(parent);
@@ -90,4 +90,4 @@ export class ImageEdit extends SImageItem {
         this.origin = new SPoint(this.width / 2, this.height / 2);
         this.update();
     } // Function computeImgSize()
-} // Class SImageItem
+} // Class SImageItem

+ 32 - 32
persagy-web-edit/src/items/LineEdit.ts

@@ -153,32 +153,32 @@ export class LineEdit extends SGraphEdit {
     /**
      * 构造函数
      *
-     * @param   parent  父级
-     * */
+     * @param parent  父级
+     */
     constructor(parent: SGraphItem | null);
 
     /**
      * 构造函数
      *
-     * @param   parent  父级
-     * @param   line    坐标集合
-     * */
+     * @param parent  父级
+     * @param line    坐标集合
+     */
     constructor(parent: SGraphItem | null, line: SPoint[]);
 
     /**
      * 构造函数
      *
-     * @param   parent  父级
-     * @param   point   第一个点坐标
-     * */
+     * @param parent  父级
+     * @param point   第一个点坐标
+     */
     constructor(parent: SGraphItem | null, point: SPoint);
 
     /**
      * 构造函数
      *
-     * @param   parent  父级
-     * @param   l       坐标集合|第一个点坐标
-     * */
+     * @param parent  父级
+     * @param l       坐标集合|第一个点坐标
+     */
     constructor(parent: SGraphItem | null, l?: SPoint | SPoint[]) {
         super(parent);
         if (l) {
@@ -195,8 +195,8 @@ export class LineEdit extends SGraphEdit {
     /**
      * 添加点至数组中
      *
-     * @param   p       添加的点
-     * */
+     * @param p       添加的点
+     */
     private addPoint(p: SPoint): void {
         if (this.line.length < 2) {
             this.line.push(p);
@@ -232,9 +232,9 @@ export class LineEdit extends SGraphEdit {
     /**
      * 鼠标按下事件
      *
-     * @param   event   鼠标事件
-     * @return  是否处理事件
-     * */
+     * @param event   鼠标事件
+     * @return 是否处理事件
+     */
     onMouseDown(event: SMouseEvent): boolean {
         this.curIndex = -1;
         this.curPoint = null;
@@ -287,9 +287,9 @@ export class LineEdit extends SGraphEdit {
     /**
      * 鼠标移动事件
      *
-     * @param   event   鼠标事件
-     * @return  是否处理事件
-     * */
+     * @param event   鼠标事件
+     * @return 是否处理事件
+     */
     onMouseMove(event: SMouseEvent): boolean {
         if (event.shiftKey || this._verAndLeve) {
             event = this.compare(event);
@@ -313,8 +313,8 @@ export class LineEdit extends SGraphEdit {
     /**
      * 获取点击点与Point[]中的点距离最近点
      *
-     * @param   p   鼠标点击点
-     * */
+     * @param p   鼠标点击点
+     */
     findNearestPoint(p: SPoint): void {
         let len = this.sceneDis;
         for (let i = 0; i < this.line.length; i++) {
@@ -347,9 +347,9 @@ export class LineEdit extends SGraphEdit {
     /**
      * 移动后处理所有坐标,并肩原点置为场景原点
      *
-     * @param   x   x坐标
-     * @param   y   y坐标
-     * */
+     * @param x   x坐标
+     * @param y   y坐标
+     */
     moveToOrigin(x: number, y: number): void {
         super.moveToOrigin(x, y);
         this.line = this.line.map(t => {
@@ -364,8 +364,8 @@ export class LineEdit extends SGraphEdit {
     /**
      * shift垂直水平创建或编辑
      *
-     * @param   event   事件
-     * */
+     * @param event   事件
+     */
     compare(event: SMouseEvent): SMouseEvent {
         if (this.line.length) {
             let last = new SPoint(event.x, event.y);
@@ -392,9 +392,9 @@ export class LineEdit extends SGraphEdit {
     /**
      * 判断点是否在区域内
      *
-     * @param   x
-     * @param   y
-     * @return  true-是
+     * @param x
+     * @param y
+     * @return true-是
      */
     contains(x: number, y: number): boolean {
         if (this.line.length == 2) {
@@ -432,7 +432,7 @@ export class LineEdit extends SGraphEdit {
     /**
      * 取消操作item事件
      *
-     * */
+     */
     cancelOperate(): void {
         if (this.status == SItemStatus.Create) {
             this.parent = null;
@@ -482,7 +482,7 @@ export class LineEdit extends SGraphEdit {
     /**
      * Item绘制操作
      *
-     * @param   painter painter对象
+     * @param painter painter对象
      */
     onDraw(painter: SPainter): void {
         this.sceneDis = painter.toPx(this.dis);
@@ -538,4 +538,4 @@ export class LineEdit extends SGraphEdit {
             }
         }
     } // Function onDraw()
-} // Class SLineItem
+} // Class SLineItem

+ 10 - 10
persagy-web-edit/src/items/PolygonEdit.ts

@@ -186,7 +186,7 @@ export class PolygonEdit extends SGraphEdit {
      * 删除点位
      *
      * @param i   删除点所在的索引
-     * @return    SPoint|null。索引不在数组范围则返回null
+     * @return   SPoint|null。索引不在数组范围则返回null
      */
     deletePoint(i: number | null = null): SPoint | null {
         let point = null;
@@ -217,7 +217,7 @@ export class PolygonEdit extends SGraphEdit {
      * @param x   点位得x坐标
      * @param y   点位得y坐标
      * @param i   点位得i坐标
-     * @return    移动对应得点。如果索引无法找到移动顶点,则返回null
+     * @return   移动对应得点。如果索引无法找到移动顶点,则返回null
      */
     movePoint(x: number, y: number, i: number): SPoint | null {
         let point = null;
@@ -235,7 +235,7 @@ export class PolygonEdit extends SGraphEdit {
     /**
      * 打印出多边形数组
      *
-     * @return  顶点数组
+     * @return 顶点数组
      */
     PrintPointList(): SPoint[] {
         return this.pointList;
@@ -678,8 +678,8 @@ export class PolygonEdit extends SGraphEdit {
     /**
      * shift垂直水平创建或编辑
      *
-     * @param   event   事件
-     * */
+     * @param event   事件
+     */
     compare(event: SMouseEvent): SMouseEvent {
         if (this.pointList.length) {
             let last = new SPoint(event.x, event.y);
@@ -731,9 +731,9 @@ export class PolygonEdit extends SGraphEdit {
     /**
      * 移动后处理所有坐标,并肩原点置为场景原点
      *
-     * @param   x   x坐标
-     * @param   y   y坐标
-     * */
+     * @param x   x坐标
+     * @param y   y坐标
+     */
     moveToOrigin(x: number, y: number): void {
         super.moveToOrigin(x, y);
         this.pointList = this.pointList.map(t => {
@@ -824,7 +824,7 @@ export class PolygonEdit extends SGraphEdit {
     /**
      * Item绘制操作
      *
-     * @param   painter       painter对象
+     * @param painter    绘制对象
      */
     onDraw(painter: SPainter): void {
         this.scenceLen = painter.toPx(this.len);
@@ -840,4 +840,4 @@ export class PolygonEdit extends SGraphEdit {
             this.drawEditPolygon(painter, this.pointList);
         }
     } // Function onDraw()
-}
+}

+ 44 - 44
persagy-web-edit/src/items/PolylineEdit.ts

@@ -125,25 +125,25 @@ export class PolylineEdit extends SGraphEdit {
     /**
      * 构造函数
      *
-     * @param   parent  父级
-     * @param   list    坐标集合
-     * */
+     * @param parent  父级
+     * @param list    坐标集合
+     */
     constructor(parent: null | SGraphItem, list: SPoint[]);
 
     /**
      * 构造函数
      *
-     * @param   parent  父级
-     * @param   list    第一个坐标
-     * */
+     * @param parent  父级
+     * @param list    第一个坐标
+     */
     constructor(parent: null | SGraphItem, list: SPoint);
 
     /**
      * 构造函数
      *
-     * @param   parent  父级
-     * @param   list    第一个坐标|坐标集合
-     * */
+     * @param parent  父级
+     * @param list    第一个坐标|坐标集合
+     */
     constructor(parent: null | SGraphItem, list: SPoint | SPoint[]) {
         super(parent);
         if (list instanceof SPoint) {
@@ -156,9 +156,9 @@ export class PolylineEdit extends SGraphEdit {
     /**
      * 添加点至数组中
      *
-     * @param   p       添加的点
-     * @param   index   添加到的索引
-     * */
+     * @param p       添加的点
+     * @param index   添加到的索引
+     */
     private addPoint(p: SPoint, index?: number): void {
         if (index && this.canHandle(index)) {
             this.pointList.splice(index, 0, p);
@@ -177,9 +177,9 @@ export class PolylineEdit extends SGraphEdit {
     /**
      * 是否可以添加点到数组中
      *
-     * @param   index   要添加到的索引
-     * @return  boolean 是否可添加
-     * */
+     * @param index   要添加到的索引
+     * @return boolean 是否可添加
+     */
     private canHandle(index: number): boolean {
         return index >= 0 && index <= this.pointList.length;
     } // Function canHandle()
@@ -187,8 +187,8 @@ export class PolylineEdit extends SGraphEdit {
     /**
      * 根据索引删除点
      *
-     * @param   index   删除点
-     * */
+     * @param index   删除点
+     */
     deletePoint(index: number): void {
         if (this.canHandle(index) && this.pointList.length > 2) {
             const p = new SPoint(
@@ -210,9 +210,9 @@ export class PolylineEdit extends SGraphEdit {
     /**
      * 鼠标按下事件
      *
-     * @param   event   鼠标事件
-     * @return  boolean 是否处理事件
-     * */
+     * @param event   鼠标事件
+     * @return boolean 是否处理事件
+     */
     onMouseDown(event: SMouseEvent): boolean {
         this.curIndex = -1;
         this.curPoint = null;
@@ -246,9 +246,9 @@ export class PolylineEdit extends SGraphEdit {
     /**
      * 鼠标移动事件
      *
-     * @param   event   鼠标事件
-     * @return  boolean 是否处理事件
-     * */
+     * @param event   鼠标事件
+     * @return boolean 是否处理事件
+     */
     onMouseMove(event: SMouseEvent): boolean {
         if (event.shiftKey || this.verAndLeve) {
             event = this.compare(event);
@@ -279,9 +279,9 @@ export class PolylineEdit extends SGraphEdit {
     /**
      * 鼠标移动事件
      *
-     * @param   event   鼠标事件
-     * @return  boolean 是否处理事件
-     * */
+     * @param event   鼠标事件
+     * @return boolean 是否处理事件
+     */
     onMouseUp(event: SMouseEvent): boolean {
         if (this.status == SItemStatus.Edit) {
             if (this.curIndex > -1) {
@@ -354,9 +354,9 @@ export class PolylineEdit extends SGraphEdit {
     /**
      * 移动后处理所有坐标,并肩原点置为场景原点
      *
-     * @param   x   x坐标
-     * @param   y   y坐标
-     * */
+     * @param x   x坐标
+     * @param y   y坐标
+     */
     moveToOrigin(x: number, y: number): void {
         super.moveToOrigin(x, y);
         this.pointList = this.pointList.map(t => {
@@ -371,8 +371,8 @@ export class PolylineEdit extends SGraphEdit {
     /**
      * 获取点击点与点集中距离最近点
      *
-     * @param   p   鼠标点击点
-     * */
+     * @param p   鼠标点击点
+     */
     findNearestPoint(p: SPoint): void {
         let len = this.sceneDis;
         for (let i = 0; i < this.pointList.length; i++) {
@@ -396,8 +396,8 @@ export class PolylineEdit extends SGraphEdit {
     /**
      * 计算增加点的位置
      *
-     * @param   p   鼠标点击点
-     * */
+     * @param p   鼠标点击点
+     */
     findAddPos(p: SPoint): void {
         let len = SMathUtil.pointToLine(
             p,
@@ -426,8 +426,8 @@ export class PolylineEdit extends SGraphEdit {
     /**
      * shift垂直水平创建或编辑
      *
-     * @param   event   事件
-     * */
+     * @param event   事件
+     */
     compare(event: SMouseEvent): SMouseEvent {
         if (this.pointList.length) {
             let last = new SPoint(event.x, event.y);
@@ -464,8 +464,8 @@ export class PolylineEdit extends SGraphEdit {
     /**
      * Item对象边界区域
      *
-     * @return  SRect   外接矩阵
-     * */
+     * @return SRect   外接矩阵
+     */
     boundingRect(): SRect {
         if (this.pointList.length) {
             this.minX = this.pointList[0].x;
@@ -500,9 +500,9 @@ export class PolylineEdit extends SGraphEdit {
     /**
      * 判断点是否在区域内
      *
-     * @param   x
-     * @param   y
-     * @return  true-是
+     * @param x
+     * @param y
+     * @return true-是
      */
     contains(x: number, y: number): boolean {
         let p = new SPoint(x, y);
@@ -546,7 +546,7 @@ export class PolylineEdit extends SGraphEdit {
     /**
      * 取消操作执行
      *
-     * */
+     */
     cancelOperate(): void {
         if (this.status == SItemStatus.Create) {
             this.parent = null;
@@ -559,7 +559,7 @@ export class PolylineEdit extends SGraphEdit {
 
     /**
      * 绘制基本图形
-     * */
+     */
     drawBaseLine(painter: SPainter): void {
         // 绘制基本图形
         painter.pen.color = this.strokeColor;
@@ -580,7 +580,7 @@ export class PolylineEdit extends SGraphEdit {
     /**
      * Item绘制操作
      *
-     * @param   painter painter对象
+     * @param painter painter对象
      */
     onDraw(painter: SPainter): void {
         // 缓存场景长度
@@ -626,4 +626,4 @@ export class PolylineEdit extends SGraphEdit {
             this.drawBaseLine(painter);
         }
     } // Function onDraw()
-} // Class SPolylineItem
+} // Class SPolylineItem

+ 7 - 7
persagy-web-edit/src/items/TextEdit.ts

@@ -145,8 +145,8 @@ export class TextEdit extends SObjectItem {
     /**
      * 构造函数
      *
-     * @param   parent      指向父Item
-     * @param   str         文本内容
+     * @param parent      指向父Item
+     * @param str         文本内容
      */
     constructor(parent: SGraphItem | null, str: string = "") {
         super(parent);
@@ -158,7 +158,7 @@ export class TextEdit extends SObjectItem {
     /**
      * 对象边界区域
      *
-     * @return  边界区域
+     * @return 边界区域
      */
     boundingRect(): SRect {
         return new SRect(
@@ -172,9 +172,9 @@ export class TextEdit extends SObjectItem {
     /**
      * 移动后处理所有坐标,并肩原点置为场景原点
      *
-     * @param   x   x坐标
-     * @param   y   y坐标
-     * */
+     * @param x   x坐标
+     * @param y   y坐标
+     */
     moveToOrigin(x: number, y: number): void {
         this.moveTo(this.x + x, this.y + y);
     } // Function moveToOrigin()
@@ -246,7 +246,7 @@ export class TextEdit extends SObjectItem {
     /**
      * Item绘制操作
      *
-     * @param   painter      绘画类
+     * @param painter      绘画类
      */
     onDraw(painter: SPainter): void {
         if (!(this._painter instanceof SPainter)) {

+ 1 - 1
persagy-web-fengmap/src/config/ProjectRf.ts

@@ -27,7 +27,7 @@
 /**
  * 项目特殊顶层处理
  *
- * */
+ */
 export const ProjectRf = {
     1002006: [
         //1002006_322

+ 13 - 13
persagy-web-fengmap/src/parser/SFengParser.ts

@@ -269,9 +269,9 @@ export class SFengParser extends SParser {
     /**
      * 解析数据
      *
-     * @param   groupId         当前楼层((前台传入为gname))
-     * @param   _fn             查询成功回调函数(返回参数为FloorData)
-     * */
+     * @param groupId         当前楼层((前台传入为gname))
+     * @param _fn             查询成功回调函数(返回参数为FloorData)
+     */
     parseData(groupId: string, _fn: Function): void {
         let obj = {};
         // 切换至当前楼层才可查询
@@ -379,9 +379,9 @@ export class SFengParser extends SParser {
     /**
      * 加载底图
      *
-     * @param   mapId   蜂鸟地图id
-     * @param   _fn     load成功回调
-     * */
+     * @param mapId   蜂鸟地图id
+     * @param _fn     load成功回调
+     */
     loadMap(mapId: string, _fn: Function): void {
         this.fmap = new fengmap.FMMap({
             container: document.getElementById(this.domId),
@@ -414,9 +414,9 @@ export class SFengParser extends SParser {
     /**
      * 加载主题文件
      *
-     * @param   url     主题文件url
-     * @return  promise promise对象
-     * */
+     * @param url     主题文件url
+     * @return promise promise对象
+     */
     loadTheme(url: string): Promise<void> {
         return new Promise((resolve, reject): void => {
             Axios({
@@ -441,7 +441,7 @@ export class SFengParser extends SParser {
      *
      * @param groupId
      * @param _fn
-     * */
+     */
     loadFloor(groupId: string, _fn: Function): any {
         const minx = this.fmap.minX;
         const maxy = this.fmap.maxY;
@@ -476,9 +476,9 @@ export class SFengParser extends SParser {
     /**
      * 计算平均值
      *
-     * @param   Outline 轮廓线束
-     * @return  object  {X:X,Y:Y}x的平均值,y的平均值
-     * */
+     * @param Outline 轮廓线束
+     * @return object  {X:X,Y:Y}x的平均值,y的平均值
+     */
     private getAverageVal(Outline: { X: number; Y: number }[][]): object {
         let X = 0,
             Y = 0,

+ 1 - 1
persagy-web-graph/package.json

@@ -22,7 +22,7 @@
     "keywords": [
         "graph"
     ],
-    "author": "庞利祥 (sybotan@126.com)",
+    "author": "庞利祥  <sybotan@126.com>",
     "license": "ISC",
     "publishConfig": {
         "registry": "http://dev.dp.sagacloud.cn:8082/repository/npm-hosted/"

+ 100 - 100
persagy-web-graph/src/SGraphItem.ts

@@ -30,9 +30,9 @@ import { SGraphScene } from "./SGraphScene";
 import { SPath } from "@persagy-web/draw/lib";
 
 /**
- * Graph图形引擎Item类
+ * Graph 图形引擎 Item 
  *
- * @author  庞利祥(sybotan@126.com)
+ * @author 庞利祥 <sybotan@126.com>
  */
 export class SGraphItem extends SObject {
     ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -50,27 +50,28 @@ export class SGraphItem extends SObject {
         this._scene = v;
         this.update();
     } // Set scene
-    /** parent属性存值函数 */
+
+    /** parent 属性存值函数 */
     private _parent: SGraphItem | null = null;
     get parent(): SGraphItem | null {
         return this._parent;
     } // Get parent
     set parent(v: SGraphItem | null) {
-        // 如果parent未变更
+        // 如果 parent 未变更
         if (this.parent == v) {
             return;
         }
-        // 如果原parent不为空
+        // 如果原 parent 不为空
         if (this._parent != null) {
-            // 将节点从原parent节点中摘除
+            // 将节点从原 parent 节点中摘除
             let i = this._parent.children.indexOf(this);
             this._parent.children.splice(i, 1);
         }
         this._parent = v;
         this.update();
-        // 如果新parent不为空
+        // 如果新 parent 不为空
         if (this._parent != null) {
-            // 将节点加入到新parent节点中
+            // 将节点加入到新 parent 节点中
             this._parent.children.push(this);
             this._parent.children.sort(SGraphItem.sortItemZOrder);
         }
@@ -79,7 +80,7 @@ export class SGraphItem extends SObject {
     /** 子节点 */
     children: SGraphItem[] = [];
 
-    /** Z轴顺序 */
+    /** Z 轴顺序 */
     private _zOrder: number = 0;
     get zOrder(): number {
         return this._zOrder;
@@ -94,7 +95,7 @@ export class SGraphItem extends SObject {
 
     /** 位置 */
     pos: SPoint = new SPoint(0, 0);
-    /** X轴坐标 */
+    /** X 轴坐标 */
     get x(): number {
         return this.pos.x;
     } // Get x
@@ -106,7 +107,7 @@ export class SGraphItem extends SObject {
         this.pos.x = v;
         this.update();
     } // Set x
-    /** Y轴坐标 */
+    /** Y 轴坐标 */
     get y(): number {
         return this.pos.y;
     } // Get y
@@ -121,7 +122,7 @@ export class SGraphItem extends SObject {
 
     /** 缩放比例 */
     scale: number = 1;
-    /** 放缩反比例   */
+    /** 放缩反比例 */
     private _inverseScale: number = 1;
     get inverseScale(): number {
         return this._inverseScale;
@@ -194,10 +195,10 @@ export class SGraphItem extends SObject {
     /** 鼠标按下时位置 */
     protected _mouseDownPos = new SPoint();
 
-    /** 鼠标样式    */
+    /** 鼠标样式 */
     cursor: string = "default";
 
-    /** 保存上一次的grabitem  */
+    /** 保存上一次的 grabItem */
     private _lastGrab: SGraphItem | null = null;
 
     ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -205,7 +206,7 @@ export class SGraphItem extends SObject {
     /**
      * 构造函数
      *
-     * @param   parent      指向父对象
+     * @param parent      指向父对象
      */
     constructor(parent: SGraphItem | null = null) {
         super();
@@ -215,19 +216,19 @@ export class SGraphItem extends SObject {
     } // Function constructor()
 
     /**
-     * Item绘制框架
+     * Item 绘制框架
      *
-     * @param   painter       painter对象
-     * @param   rect          绘制区域
+     * @param painter   绘制对象
+     * @param rect      绘制区域
      */
     onPaint(painter: SPainter, rect: SRect): void {
         this.onDraw(painter);
         for (let item of this.children) {
-            // 如果item不可见
+            // 如果 item 不可见
             if (!item.visible) {
                 continue;
             }
-            // item所占矩阵与要刷新的矩阵相交则刷新,否则不刷
+            // item 所占矩阵与要刷新的矩阵相交则刷新,否则不刷
             // if (item.boundingRect()--rect){
             //
             // }
@@ -235,20 +236,20 @@ export class SGraphItem extends SObject {
             // 保存画布状态
             painter.save();
             try {
-                // item位移到指定位置绘制
+                // item 位移到指定位置绘制
                 painter.translate(item.x, item.y);
                 painter.scale(item.scale, item.scale);
                 painter.rotate(item.rotate);
 
-                // 如果不进行变形处理,则取消painter的变型操作
+                // 如果不进行变形处理,则取消 painter 的变型操作
                 if (!item.isTransform) {
                     let matrix = painter.worldTransform;
                     item._inverseScale = 1.0 / matrix.a;
                     painter.scale(item._inverseScale, item._inverseScale);
                 }
 
-                // rect 调整  宽度高度取最小值  根据pos位移
-                // 绘制item
+                // rect 调整  宽度高度取最小值  根据 pos 位移
+                // 绘制 item
                 item.onPaint(painter, rect);
             } catch (e) {
                 console.log(e);
@@ -259,9 +260,9 @@ export class SGraphItem extends SObject {
     } // Function onPaint()
 
     /**
-     * Item绘制操作
+     * Item 绘制操作
      *
-     * @param   painter       painter对象
+     * @param painter    绘制对象
      */
     onDraw(painter: SPainter): void {} // Function onDraw()
 
@@ -280,7 +281,7 @@ export class SGraphItem extends SObject {
     } // Function show()
 
     /**
-     * 更新Item
+     * 更新 Item
      */
     update(): void {
         if (null != this.scene) {
@@ -292,19 +293,19 @@ export class SGraphItem extends SObject {
     } // Function update()
 
     /**
-     * Item对象边界区域
+     * Item 对象边界区域
      *
-     * @return  对象边界区域
+     * @return 对象边界区域
      */
     boundingRect(): SRect {
         return new SRect(0, 0, 10, 10);
     } // Function boundingRect()
 
     /**
-     * 移动item到指定位置
+     * 移动 item 到指定位置
      *
-     * @param   x           新位置的x坐标
-     * @param   y           新位置的y坐标
+     * @param x     新位置的 x 坐标
+     * @param y     新位置的 y 坐标
      */
     moveTo(x: number, y: number): void {
         this.x = x;
@@ -312,21 +313,20 @@ export class SGraphItem extends SObject {
     } // moveTo()
 
     /**
-     * 判断item是否包含点x,y
-     *
-     * @param   x       横坐标(当前item)
-     * @param   y       纵坐标(当前item)
+     * 判断 item 是否包含点 x, y
      *
-     * @return  boolean
+     * @param x     横坐标(当前 item)
+     * @param y     纵坐标(当前 item)
+     * @return item 是否包含点 x, y
      */
     contains(x: number, y: number): boolean {
         return this.boundingRect().contains(x, y);
     } // Function contains()
 
     /**
-     * 获得item的路径节点列表。(该节点被加载到场景中,如果未被加载到场景中,计算会出错)
+     * 获得 item 的路径节点列表。(该节点被加载到场景中,如果未被加载到场景中,计算会出错)
      *
-     * @return  *[]
+     * @return item 的路径节点列表
      */
     itemPath(): SGraphItem[] {
         if (this.parent != null) {
@@ -339,12 +339,11 @@ export class SGraphItem extends SObject {
     } // Function itemPath()
 
     /**
-     * 将场景中的xy坐标转换成item坐标。(该节点被加载到场景中,如果未被加载到场景中,计算会出错)
+     * 将场景中的 x, y 坐标转换成 item 坐标。(该节点被加载到场景中,如果未被加载到场景中,计算会出错)
      *
-     * @param   x       场景中的横坐标
-     * @param   y       场景中的纵坐标
-     *
-     * @return  在item中的坐标
+     * @param x     场景中的横坐标
+     * @param y     场景中的纵坐标
+     * @return 在 item 中的坐标
      */
     mapFromScene(x: number, y: number): SPoint {
         const m = this.scene2itemMattrix();
@@ -352,12 +351,11 @@ export class SGraphItem extends SObject {
     } // Function mapFromScene()
 
     /**
-     * 将item中的xy坐标转换成场景坐标。(该节点被加载到场景中,如果未被加载到场景中,计算会出错)
-     *
-     * @param   x       item中的横坐标
-     * @param   y       item中的纵坐标
+     * 将 item 中的 x, y 坐标转换成场景坐标。(该节点被加载到场景中,如果未被加载到场景中,计算会出错)
      *
-     * @return  在场景中的坐标
+     * @param x     item 中的横坐标
+     * @param y     item 中的纵坐标
+     * @return 在场景中的坐标
      */
     mapToScene(x: number, y: number): SPoint {
         if (this.parent == null) {
@@ -370,9 +368,9 @@ export class SGraphItem extends SObject {
     } // Function mapToScene()
 
     /**
-     * 场景对象到item对象的转换矩阵
+     * 场景对象到 item 对象的转换矩阵
      *
-     * @return  转换矩阵
+     * @return 转换矩阵
      */
     scene2itemMattrix(): SMatrix {
         let m = new SMatrix();
@@ -382,22 +380,22 @@ export class SGraphItem extends SObject {
             m.scale(item.scale, item.scale);
             m.rotate(item.rotate);
 
-            // 如果不进行变形处理,则取消painter的变型操作
+            // 如果不进行变形处理,则取消 painter 的变型操作
             if (!item.isTransform) {
                 m.scale(item._inverseScale, item._inverseScale);
             }
         }
 
         return m;
-    }
+    } // Function scene2itemMattrix()
 
     // =================================================================================================================
     // 事件
     /**
      * 鼠标单击事件
      *
-     * @param   event       保存事件参数
-     * @return  boolean
+     * @param event     保存事件参数
+     * @return 是否处理事件
      */
     onClick(event: SMouseEvent): boolean {
         for (let i = this.children.length - 1; i >= 0; i--) {
@@ -418,8 +416,8 @@ export class SGraphItem extends SObject {
     /**
      * 鼠标双击事件
      *
-     * @param   event   保存事件参数
-     * @return  boolean
+     * @param event   保存事件参数
+     * @return 是否处理事件
      */
     onDoubleClick(event: SMouseEvent): boolean {
         for (let i = this.children.length - 1; i >= 0; i--) {
@@ -440,8 +438,8 @@ export class SGraphItem extends SObject {
     /**
      * 鼠标按下事件
      *
-     * @param   event   保存事件参数
-     * @return  boolean
+     * @param event   保存事件参数
+     * @return 是否处理事件
      */
     onMouseDown(event: SMouseEvent): boolean {
         for (let i = this.children.length - 1; i >= 0; i--) {
@@ -475,8 +473,8 @@ export class SGraphItem extends SObject {
     /**
      * 鼠标移动事件
      *
-     * @param   event   保存事件参数
-     * @return  boolean
+     * @param event   保存事件参数
+     * @return 是否处理事件
      */
     onMouseMove(event: SMouseEvent): boolean {
         for (let i = this.children.length - 1; i >= 0; i--) {
@@ -507,7 +505,7 @@ export class SGraphItem extends SObject {
             this.$emit("onMove", old, this.pos);
         }
 
-        // 处理hover
+        // 处理 hover
         const scene = this.scene;
         if (null != scene) {
             if (scene.hoverItem == null || scene.hoverItem !== this) {
@@ -525,8 +523,8 @@ export class SGraphItem extends SObject {
     /**
      * 释放鼠标事件
      *
-     * @param   event   保存事件参数
-     * @return  boolean
+     * @param event   保存事件参数
+     * @return 是否处理事件
      */
     onMouseUp(event: SMouseEvent): boolean {
         for (let i = this.children.length - 1; i >= 0; i--) {
@@ -558,8 +556,8 @@ export class SGraphItem extends SObject {
     /**
      * 鼠标进入事件
      *
-     * @param   event   保存事件参数
-     * @return  boolean
+     * @param event   保存事件参数
+     * @return 是否处理事件
      */
     onMouseEnter(event: SMouseEvent): boolean {
         return false;
@@ -568,8 +566,8 @@ export class SGraphItem extends SObject {
     /**
      * 鼠标离开事件
      *
-     * @param   event   保存事件参数
-     * @return  boolean
+     * @param event   保存事件参数
+     * @return 是否处理事件
      */
     onMouseLeave(event: SMouseEvent): boolean {
         return false;
@@ -578,7 +576,8 @@ export class SGraphItem extends SObject {
     /**
      * 上下文菜单事件
      *
-     * @param   event       事件参数
+     * @param event       事件参数
+     * @return 是否处理事件
      */
     onContextMenu(event: SMouseEvent): boolean {
         for (let i = this.children.length - 1; i >= 0; i--) {
@@ -598,44 +597,44 @@ export class SGraphItem extends SObject {
     /**
      * 按键按下事件
      *
-     * @param   event       事件参数
+     * @param event       事件参数
      */
     onKeyDown(event: KeyboardEvent): void {} // Function onKeyDown()
 
     /**
-     * 按键press事件
+     * 按键 press 事件
      *
-     * @param   event       事件参数
+     * @param event       事件参数
      */
     onKeyPress(event: KeyboardEvent): void {} // Function onKeyPress()
 
     /**
      * 按键松开事件
      *
-     * @param   event       事件参数
+     * @param event       事件参数
      */
     onKeyUp(event: KeyboardEvent): void {} // Function onKeyUp()
 
     /**
-     * 取消操作item事件
-     *
-     * */
+     * 取消操作 item 事件
+     */
     cancelOperate(): void {} // Function cancelOperate()
 
     /**
-     * 返回item对应的数据对象
+     * 返回 item 对应的数据对象
      *
-     * */
+     * @return  item 数据
+     */
     toData(): any | null {
         return null;
     } // Function toData()
 
     /**
-     * 移动item后的处理,计算其他信息,将原点置为场景原点
+     * 移动 item 后的处理,计算其他信息,将原点置为场景原点
      *
-     * @param   x   x坐标
-     * @param   y   y坐标
-     * */
+     * @param x   x 坐标
+     * @param y   y 坐标
+     */
     moveToOrigin(x: number, y: number): void {
         if (this.children && this.children.length) {
             this.children.forEach(it => {
@@ -647,11 +646,11 @@ export class SGraphItem extends SObject {
     // =================================================================================================================
     // 私有方法
     /**
-     * 按ZOrder排序
+     * 按 ZOrder 排序
      *
-     * @param   a   比较元素1
-     * @param   b   比较元素2
-     * @return {number}
+     * @param a   比较元素 1
+     * @param b   比较元素 2
+     * @return 2 个元素 zOrder 的差值
      */
     private static sortItemZOrder(a: SGraphItem, b: SGraphItem): number {
         return a.zOrder - b.zOrder;
@@ -660,9 +659,9 @@ export class SGraphItem extends SObject {
     /**
      * 鼠标事件转子对象鼠标事件
      *
-     * @param   child   子对象
-     * @param   event   事件参数
-     * @return  子对象鼠标事件
+     * @param child   子对象
+     * @param event   事件参数
+     * @return 子对象鼠标事件
      */
     private static toChildMouseEvent(
         child: SGraphItem,
@@ -688,9 +687,9 @@ export class SGraphItem extends SObject {
     } // Function toChildMouseEvent()
 
     /**
-     * 锁定item
+     * 锁定 item
      *
-     * @param   item    被锁定的item
+     * @param item    被锁定的 item
      */
     protected grabItem(item: SGraphItem): void {
         if (this.scene != null) {
@@ -699,7 +698,7 @@ export class SGraphItem extends SObject {
     } // Function grabItem
 
     /**
-     * 释放被锁定的item
+     * 释放被锁定的 item
      */
     protected releaseItem(): void {
         if (this.scene != null) {
@@ -710,9 +709,9 @@ export class SGraphItem extends SObject {
     /**
      * 计算点在父节点的位置
      *
-     * @param   x       X轴
-     * @param   y       Y轴
-     * @return  在父节点的位置
+     * @param x     X 
+     * @param y     Y 
+     * @return 在父节点的位置
      */
     protected toParentChange(x: number, y: number): SPoint {
         const m = new SMatrix();
@@ -729,19 +728,20 @@ export class SGraphItem extends SObject {
     /**
      * 判断是否处理事件
      *
-     * @return  true: 处理事件,否则不处理
+     * @return 是否处理事件
      */
     private acceptEvent(): boolean {
         return this.visible && this.enabled;
     } // Function acceptEvent()
 
     /**
-     * 点选item对象
+     * 点选 item 对象
      *
-     * @param   event       事件参数
+     * @param event     事件参数
+     * @return 是否处理事件
      */
     private clickSelect(event: SMouseEvent): boolean {
-        // 如果Item不可被选中,或没有按下鼠标左键,则直接返回
+        // 如果 Item 不可被选中,或没有按下鼠标左键,则直接返回
         if (!this.selectable) {
             // || event.buttons != SMouseButton.LeftButton
             return false;
@@ -750,7 +750,7 @@ export class SGraphItem extends SObject {
         if (scene == null) {
             return false;
         }
-        // 如果按下Ctrl键,只改变当前item的选择标志
+        // 如果按下 Ctrl 键,只改变当前 item 的选择标志
         if (event.ctrlKey) {
             scene.selectContainer.toggleItem(this);
         } else {

+ 42 - 63
persagy-web-graph/src/SGraphScene.ts

@@ -31,18 +31,18 @@ import { SGraphView } from "./SGraphView";
 import { SGraphSelectContainer } from "./SGraphSelectContainer";
 
 /**
- * Graphy图形引擎场景类
+ * Graph 图形引擎场景类
  *
- * @author  庞利祥(sybotan@126.com)
+ * @author 庞利祥 <sybotan@126.com>
  */
 export class SGraphScene {
     /** 展示场景的视图 */
     view: SGraphView | null = null;
     /** 根节点 */
     protected root: SGraphItem = new SGraphItem();
-    /** 当前捕获Item */
+    /** 当前捕获 Item */
     grabItem: SGraphItem | null = null;
-    /** 鼠标所在Item */
+    /** 鼠标所在 Item */
     hoverItem: SGraphItem | null = null;
     /** 选择器 */
     selectContainer: SGraphSelectContainer = new SGraphSelectContainer();
@@ -56,18 +56,18 @@ export class SGraphScene {
     } // Constructor
 
     /**
-     * 添加item对象到场景。
+     * 添加 item 对象到场景。
      *
-     * @param   item        添加的对象
+     * @param item        添加的对象
      */
     addItem(item: SGraphItem): void {
         item.parent = this.root;
-    } // Functin addItem()
+    } // Function addItem()
 
     /**
-     * 从场景中移除Item。
+     * 从场景中移除 Item。
      *
-     * @param   item        被移除的对象
+     * @param item        被移除的对象
      */
     removeItem(item: SGraphItem): void {
         item.parent = null;
@@ -76,8 +76,8 @@ export class SGraphScene {
     /**
      * 绘制场景
      *
-     * @param   painter     painter对象
-     * @param   rect        更新绘制区域
+     * @param painter     绘制对象
+     * @param rect        更新绘制区域
      */
     drawScene(painter: SPainter, rect: SRect): void {
         this.root.onPaint(painter, rect);
@@ -86,8 +86,8 @@ export class SGraphScene {
     /**
      * 绘制背景
      *
-     * @param   painter     painter对象
-     * @param   rect        更新绘制区域
+     * @param painter     绘制对象
+     * @param rect        更新绘制区域
      */
     drawBackground(painter: SPainter, rect: SRect) {
         // DO NOTHING
@@ -96,21 +96,22 @@ export class SGraphScene {
     /**
      * 绘制前景
      *
-     * @param   painter     painter对象
-     * @param   rect        更新绘制区域
+     * @param painter     绘制对象
+     * @param rect        更新绘制区域
      */
     drawForeground(painter: SPainter, rect: SRect) {
         // DO NOTHING
     } // Function drawForeground()
 
     /**
-     * 所有item占用的矩形区域
+     * 所有 item 占用的矩形区域
      *
-     * @param   flag 是否只对可见item处理
+     * @param flag 是否只对可见 item 处理
+     * @return 所有 item 占用的矩形区域
      */
     allItemRect(flag: boolean = true): SRect | null {
         let rect: SRect | null = null;
-        // 依次取item列中的所有item。将所有item的边界做并焦处理。
+        // 依次取 item 列中的所有 item。将所有 item 的边界做并焦处理。
         for (let item of this.root.children) {
             if ((flag && item.visible) || !flag) {
                 if (rect == null) {
@@ -129,14 +130,16 @@ export class SGraphScene {
     } // Function allItemRect()
 
     /**
-     * 被选中item占用的矩形区域
+     * 被选中 item 占用的矩形区域
+     *
+     * @return 被选中 item 占用的矩形区域
      */
     selectedItemRect(): SRect | null {
         let rect: SRect | null = null;
 
-        // 依次取item列中的所有item。将所有item的边界做并焦处理。
+        // 依次取 item 列中的所有 item。将所有 item 的边界做并焦处理。
         for (let item of this.root.children) {
-            // 如果item未被选中,则去选择下一个item
+            // 如果 item 未被选中,则去选择下一个 item
             if (!item.selected) {
                 continue;
             }
@@ -156,12 +159,12 @@ export class SGraphScene {
     /**
      * 获得选中的对象列表
      *
-     * @return  选中对象列表
+     * @return 选中对象列表
      */
     selectedItems(): SGraphItem[] {
         let itemList = Array<SGraphItem>();
         for (let item of this.root.children) {
-            // 如果item未被选中,则去选择下一个item
+            // 如果 item 未被选中,则去选择下一个 item
             if (item.selected) {
                 itemList.push(item);
             }
@@ -171,26 +174,12 @@ export class SGraphScene {
 
     // =================================================================================================================
     // 事件
-    // /**
-    //  * 鼠标单击事件
-    //  *
-    //  * @param   event   保存事件参数
-    //  * @return  boolean
-    //  */
-    // onClick(event: SMouseEvent): boolean {
-    //     if (this.grabItem != null) {
-    //         return this.grabItem.onClick(
-    //             SGraphScene.toGrabItemMotionEvent(this.grabItem, event)
-    //         );
-    //     }
-    //     return this.root.onClick(event);
-    // } // Function onClick()
 
     /**
      * 鼠标双击事件
      *
-     * @param   event   保存事件参数
-     * @return  boolean
+     * @param event   保存事件参数
+     * @return 是否处理事件
      */
     onDoubleClick(event: SMouseEvent): boolean {
         if (this.grabItem != null) {
@@ -204,8 +193,8 @@ export class SGraphScene {
     /**
      * 鼠标按下事件
      *
-     * @param   event   保存事件参数
-     * @return  boolean
+     * @param event   保存事件参数
+     * @return 是否处理事件
      */
     onMouseDown(event: SMouseEvent): boolean {
         if (this.grabItem != null) {
@@ -223,8 +212,8 @@ export class SGraphScene {
     /**
      * 鼠标移动事件
      *
-     * @param   event   保存事件参数
-     * @return  boolean
+     * @param event   保存事件参数
+     * @return 是否处理事件
      */
     onMouseMove(event: SMouseEvent): boolean {
         if (this.grabItem != null) {
@@ -238,8 +227,8 @@ export class SGraphScene {
     /**
      * 释放鼠标事件
      *
-     * @param   event       保存事件参数
-     * @return  boolean
+     * @param event       保存事件参数
+     * @return 是否处理事件
      */
     onMouseUp(event: SMouseEvent): boolean {
         if (this.grabItem != null) {
@@ -253,7 +242,8 @@ export class SGraphScene {
     /**
      * 上下文菜单事件
      *
-     * @param   event       事件参数
+     * @param event       事件参数
+     * @return 是否处理事件
      */
     onContextMenu(event: SMouseEvent): boolean {
         if (this.grabItem != null) {
@@ -268,7 +258,7 @@ export class SGraphScene {
     /**
      * 按键按下事件
      *
-     * @param   event       事件参数
+     * @param event       事件参数
      */
     onKeyDown(event: KeyboardEvent): void {
         if (this.grabItem != null) {
@@ -277,21 +267,10 @@ export class SGraphScene {
         return this.root.onKeyDown(event);
     } // Function onKeyDown()
 
-    // /**
-    //  * 按键press事件
-    //  *
-    //  * @param   event       事件参数
-    //  */
-    // onKeyPress(event: KeyboardEvent): void {
-    //     if (this.grabItem != null) {
-    //         this.grabItem.onKeyPress(event);
-    //     }
-    // } // Function onKeyPress()
-
     /**
      * 按键松开事件
      *
-     * @param   event       事件参数
+     * @param event       事件参数
      */
     onKeyUp(event: KeyboardEvent): void {
         if (this.grabItem != null) {
@@ -301,11 +280,11 @@ export class SGraphScene {
     } // Function onKeyUp()
 
     /**
-     * 转换场景事件坐标到指定Item坐标事件
+     * 转换场景事件坐标到指定 Item 坐标事件
      *
-     * @param   item        指定的item对象
-     * @param   event       场景事件
-     * @return  {}
+     * @param item        指定的 item 对象
+     * @param event       场景事件
+     * @return 转换场景事件坐标到指定 Item 坐标事件
      */
     private toGrabItemMotionEvent(
         item: SGraphItem,

+ 86 - 91
persagy-web-graph/src/SGraphSelectContainer.ts

@@ -37,14 +37,16 @@ import { SMouseEvent } from "@persagy-web/base";
  * @author  郝建龙 <haojianlong@sagacloud.cn>
  */
 export class SGraphSelectContainer extends SGraphItem {
-    /** 选择对象list */
+    /** 选择对象 list */
     private _itemList: SGraphItem[] = [];
     get itemList(): SGraphItem[] {
         return this._itemList;
     } // Get itemList
-    /** 外接点的list */
+
+    /** 外接点的 list */
     private pointList: SPoint[] = [];
-    /** item宽 */
+
+    /** item 宽 */
     private _width: number = 0;
     get width(): number {
         return this._width;
@@ -56,7 +58,8 @@ export class SGraphSelectContainer extends SGraphItem {
         this._width = v;
         this.update();
     } // Set width
-    /** item高 */
+
+    /** item 高 */
     private _height: number = 0;
     get height(): number {
         return this._height;
@@ -68,6 +71,7 @@ export class SGraphSelectContainer extends SGraphItem {
         this._height = v;
         this.update();
     } // Set height
+
     /** 修改之前的宽 */
     private oldWidth: number = 0;
     /** 修改之前的高 */
@@ -82,7 +86,7 @@ export class SGraphSelectContainer extends SGraphItem {
     maxHeight: number = Number.MAX_SAFE_INTEGER;
     /** 边框颜色 */
     _strokeColor: SColor = new SColor("#82C7FC");
-    /**  画笔颜色 */
+    /** 画笔颜色 */
     get strokeColor(): SColor {
         return this._strokeColor;
     } // Get strokeColor
@@ -90,6 +94,7 @@ export class SGraphSelectContainer extends SGraphItem {
         this._strokeColor = v;
         this.update();
     } // Set strokeColor
+
     /** 填充颜色 */
     _fillColor: SColor = new SColor("#ffffff");
     get fillColor(): SColor {
@@ -99,12 +104,13 @@ export class SGraphSelectContainer extends SGraphItem {
         this._fillColor = v;
         this.update();
     } // Set fillColor
-    /** 绘制矩形的圆角半径 */
-    /** 统计选中item的数量 */
+
+    /** 统计选中 item 的数量 */
     get count(): number {
         return this.itemList.length;
-    }
-    /** 置顶zorder增加基数    */
+    } // Get count
+
+    /** 置顶 zOrder 增加基数 */
     private radix: number = 0.001;
     /** 定时器 */
     private timer: number | undefined;
@@ -114,6 +120,7 @@ export class SGraphSelectContainer extends SGraphItem {
     dis: number = 10;
     /** 灵敏度转换为场景长度 */
     private sceneDis: number = 10;
+
     /** 当前点索引 */
     private _curIndex: number = -1;
     get curIndex(): number {
@@ -126,6 +133,7 @@ export class SGraphSelectContainer extends SGraphItem {
         this._curIndex = v;
         this.update();
     } // set curIndex
+
     /** 当前点索引 */
     private curPoint: SPoint | undefined;
     /** 鼠标样式 */
@@ -144,7 +152,7 @@ export class SGraphSelectContainer extends SGraphItem {
 
     /**
      * 构造体
-     * */
+     */
     constructor() {
         super();
         this.zOrder = 9999999;
@@ -153,10 +161,10 @@ export class SGraphSelectContainer extends SGraphItem {
     } // Constructor
 
     /**
-     * 添加item到list
+     * 添加 item  list
      *
-     * @param   item    当前选中的item
-     * */
+     * @param item    当前选中的 item
+     */
     addItem(item: SGraphItem): void {
         for (let i = 0; i < this.itemList.length; i++) {
             if (this.itemList[i] == item) {
@@ -171,8 +179,8 @@ export class SGraphSelectContainer extends SGraphItem {
     /**
      * 清空再添加(事件+复制数组)
      *
-     * @param   item    当前选中的item
-     * */
+     * @param item    当前选中的 item
+     */
     setItem(item: SGraphItem): void {
         this.itemList.forEach((t: SGraphItem): void => {
             t.selected = false;
@@ -185,8 +193,7 @@ export class SGraphSelectContainer extends SGraphItem {
 
     /**
      * 清空选择对象
-     *
-     * */
+     */
     clear(): void {
         this.itemList.forEach((t: SGraphItem): void => {
             t.selected = false;
@@ -198,8 +205,8 @@ export class SGraphSelectContainer extends SGraphItem {
     /**
      * 切换选择对象
      *
-     * @param   item    当前选中的item
-     * */
+     * @param item    当前选中的 item
+     */
     toggleItem(item: SGraphItem): void {
         for (let i = 0; i < this.itemList.length; i++) {
             if (this.itemList[i] == item) {
@@ -209,7 +216,7 @@ export class SGraphSelectContainer extends SGraphItem {
                 return;
             }
         }
-        // 多选时,父级item需要一致
+        // 多选时,父级 item 需要一致
         if (this.itemList.length) {
             if (item.parent != this.itemList[0].parent) {
                 return;
@@ -223,8 +230,8 @@ export class SGraphSelectContainer extends SGraphItem {
     /**
      * 对齐
      *
-     * @param   type    对齐方式
-     * */
+     * @param type    对齐方式
+     */
     layout(type: SGraphLayoutType): void {
         if (this.itemList.length < 2) {
             return;
@@ -263,8 +270,8 @@ export class SGraphSelectContainer extends SGraphItem {
     /**
      * 图层操作
      *
-     * @param   type    操作类型
-     * */
+     * @param type    操作类型
+     */
     setOrder(type: SOrderSetType): void {
         if (this.itemList.length < 1) {
             return;
@@ -290,8 +297,7 @@ export class SGraphSelectContainer extends SGraphItem {
 
     /**
      * 左对齐
-     *
-     * */
+     */
     private alignLeft(): void {
         let standardItem = this.itemList[0];
         // 计算第一个外接矩阵左上角坐标在场景中的坐标
@@ -302,7 +308,7 @@ export class SGraphSelectContainer extends SGraphItem {
         for (let i = 1; i < this.itemList.length; i++) {
             let curItem = this.itemList[i];
             if (curItem.moveable) {
-                // 将p转换为当前item中的坐标
+                // 将 p 转换为当前 item 中的坐标
                 let p1 = curItem.mapFromScene(p.x, p.y);
                 // 根据等式差值相等 newboundx - oldboundx = newposx - oldposx => newposx = newboundx - oldboundx + oldposx
                 curItem.x =
@@ -314,8 +320,7 @@ export class SGraphSelectContainer extends SGraphItem {
 
     /**
      * 顶对齐
-     *
-     * */
+     */
     private alignTop(): void {
         let standardItem = this.itemList[0];
         let p = standardItem.mapToScene(
@@ -335,8 +340,7 @@ export class SGraphSelectContainer extends SGraphItem {
 
     /**
      * 右对齐
-     *
-     * */
+     */
     private alignRight(): void {
         let standardItem = this.itemList[0];
         let p = standardItem.mapToScene(
@@ -357,8 +361,7 @@ export class SGraphSelectContainer extends SGraphItem {
 
     /**
      * 底对齐
-     *
-     * */
+     */
     private alignBottom(): void {
         let standardItem = this.itemList[0];
         let p = standardItem.mapToScene(
@@ -379,10 +382,9 @@ export class SGraphSelectContainer extends SGraphItem {
 
     /**
      * 水平居中对齐
-     *
-     * */
+     */
     private alignCenter(): void {
-        // 第一个选中的item即为基准对象
+        // 第一个选中的 item 即为基准对象
         let standardItem = this.itemList[0];
         // 基准对象的中心点
         let center = standardItem.boundingRect().center();
@@ -403,10 +405,9 @@ export class SGraphSelectContainer extends SGraphItem {
 
     /**
      * 垂直居中对齐
-     *
-     * */
+     */
     private alignMiddle(): void {
-        // 第一个选中的item即为基准对象
+        // 第一个选中的 item 即为基准对象
         let standardItem = this.itemList[0];
         // 基准对象的中心点
         let center = standardItem.boundingRect().center();
@@ -426,8 +427,7 @@ export class SGraphSelectContainer extends SGraphItem {
 
     /**
      * 垂直分布
-     *
-     * */
+     */
     private alignVertical(): void {
         if (this.itemList.length < 3) {
             return;
@@ -483,8 +483,7 @@ export class SGraphSelectContainer extends SGraphItem {
 
     /**
      * 水平分布
-     *
-     * */
+     */
     private alignHorizontal(): void {
         if (this.itemList.length < 3) {
             return;
@@ -541,15 +540,14 @@ export class SGraphSelectContainer extends SGraphItem {
 
     // 修改层级操作步骤:
     // 排序(保持相对层级不变)
-    // children里边要取 整数部分相同的 点:children是已经排好序的
+    // children 里边要取 整数部分相同的 点: children 是已经排好序的
     // 然后再取最大值
     /**
      * 置顶
-     *
-     * */
+     */
     private setTop(): void {
         const arr: SGraphItem[] = this.sortItemList(this.itemList, true);
-        // 按顺序zOrder增加
+        // 按顺序 zOrder 增加
         arr.forEach(it => {
             let max = it.zOrder;
             if (it.parent) {
@@ -569,11 +567,10 @@ export class SGraphSelectContainer extends SGraphItem {
 
     /**
      * 置底
-     *
-     * */
+     */
     private setBottom(): void {
         const arr: SGraphItem[] = this.sortItemList(this.itemList, false);
-        // 按顺序zOrder增加
+        // 按顺序 zOrder 增加
         arr.forEach(it => {
             let min = it.zOrder;
             if (it.parent) {
@@ -592,9 +589,8 @@ export class SGraphSelectContainer extends SGraphItem {
     } // Function setBottom()
 
     /**
-     * 下移一层zorder减小
-     *
-     * */
+     * 下移一层 zOrder 减小
+     */
     private setBefore(): void {
         const arr: SGraphItem[] = this.sortItemList(this.itemList, false);
         arr.forEach(it => {
@@ -614,11 +610,11 @@ export class SGraphSelectContainer extends SGraphItem {
                 // 当前层有多个
                 const index = temp.indexOf(it.zOrder);
                 if (index <= 1) {
-                    // 当前item 索引为1时 将当前item放至第一个前边
+                    // 当前 item 索引为1时 将当前 item 放至第一个前边
                     // @ts-ignore
                     it.zOrder = temp[0] - this.radix;
                 } else if (index > 1) {
-                    // 当前item 索引大于等于2,将当前item放至前两个中间
+                    // 当前 item 索引大于等于2,将当前 item 放至前两个中间
                     // @ts-ignore
                     it.zOrder = (temp[index - 1] + temp[index - 2]) / 2;
                 }
@@ -627,9 +623,8 @@ export class SGraphSelectContainer extends SGraphItem {
     } // Function setAfter()
 
     /**
-     * 上移一层zorder增加
-     *
-     * */
+     * 上移一层 zOrder 增加
+     */
     private setAfter(): void {
         const arr: SGraphItem[] = this.sortItemList(this.itemList, false);
         arr.forEach(it => {
@@ -649,11 +644,11 @@ export class SGraphSelectContainer extends SGraphItem {
                 // 当前层有多个
                 const index = temp.indexOf(it.zOrder);
                 if (index <= 1) {
-                    // 当前item 索引为1时 将当前item放至第一个前边
+                    // 当前 item 索引为1时 将当前 item 放至第一个前边
                     // @ts-ignore
                     it.zOrder = temp[0] + this.radix;
                 } else if (index > 1) {
-                    // 当前item 索引大于等于2,将当前item放至前两个中间
+                    // 当前 item 索引大于等于2,将当前 item 放至前两个中间
                     // @ts-ignore
                     it.zOrder = (temp[index - 1] + temp[index - 2]) / 2;
                 }
@@ -664,10 +659,10 @@ export class SGraphSelectContainer extends SGraphItem {
     /**
      * 数组排序
      *
-     * @param   arr     排序前的数组
-     * @param   flag    正序or逆序
-     * @return  list    排序后的数组
-     * */
+     * @param arr       排序前的数组
+     * @param flag      正序 or 逆序
+     * @return 排序后的数组
+     */
     sortItemList(arr: SGraphItem[], flag: boolean = true): SGraphItem[] {
         const list: SGraphItem[] = arr.map(t => t);
         list.sort(this.compare("zOrder", flag));
@@ -677,9 +672,9 @@ export class SGraphSelectContainer extends SGraphItem {
     /**
      * 按照某个属性排序
      *
-     * @param   prop    属性
-     * @param   flag    默认正序
-     * */
+     * @param prop    属性
+     * @param flag    默认正序
+     */
     private compare(prop: string, flag: boolean): any {
         const f = flag ? 1 : -1;
         // eslint-disable-next-line @typescript-eslint/explicit-function-return-type
@@ -697,8 +692,8 @@ export class SGraphSelectContainer extends SGraphItem {
     } // Function compare()
 
     /**
-     * 防抖-防止快速多次触发 itemChange;只执行最后一次
-     * */
+     * 防抖-防止快速多次触发 itemChange; 只执行最后一次
+     */
     throttle(fn: Function, wait: number): void {
         if (this.timer) clearTimeout(this.timer);
         this.timer = setTimeout((): void => {
@@ -707,15 +702,15 @@ export class SGraphSelectContainer extends SGraphItem {
     } // Function throttle()
 
     /**
-     * 选中的item更新时更新自身边界
-     * */
+     * 选中的 item 更新时更新自身边界
+     */
     selectChange(): void {
         // 抛出事件
         this.$emit("listChange", this.itemList);
         if (this.count > 0) {
             // 重新计算边界
             this.getSize();
-            // 计算边界8个点
+            // 计算边界 8 个点
             this.calExtreme();
             if (
                 this.count > 1 ||
@@ -730,10 +725,10 @@ export class SGraphSelectContainer extends SGraphItem {
     } // Function selectChange()
 
     /**
-     * 计算选中item的外接矩形和
+     * 计算选中 item 的外接矩形和
      *
      * @return 外接矩形的和
-     * */
+     */
     calItemBounding(): SRect {
         if (this.itemList.length) {
             const fir = this.itemList[0];
@@ -758,11 +753,11 @@ export class SGraphSelectContainer extends SGraphItem {
         this.width = r.width;
         this.height = r.height;
         this.moveTo(r.left, r.top);
-    } // getSize()
+    } // Function getSize()
 
     /**
      * 计算外接矩形 8 个端点
-     * */
+     */
     calExtreme(): void {
         this.pointList = [];
         this.pointList.push(new SPoint(0, 0));
@@ -796,9 +791,9 @@ export class SGraphSelectContainer extends SGraphItem {
     } // Function getNearestPoint()
 
     /**
-     * Item对象边界区域
+     * Item 对象边界区域
      *
-     * @return  对象边界区域
+     * @return 对象边界区域
      */
     boundingRect(): SRect {
         if (this.visible) {
@@ -816,9 +811,9 @@ export class SGraphSelectContainer extends SGraphItem {
     /**
      * 宽高发发生变化
      *
-     * @param   oldSize 改之前的大小
-     * @param   newSize 改之后大小
-     * */
+     * @param oldSize   改之前的大小
+     * @param newSize   改之后大小
+     */
     protected resize(oldSize: SSize, newSize: SSize): void {
         for (let v of this.itemList) {
             // @ts-ignore
@@ -832,8 +827,8 @@ export class SGraphSelectContainer extends SGraphItem {
     /**
      * 鼠标按下事件
      *
-     * @param   event   保存事件参数
-     * @return  boolean
+     * @param event   保存事件参数
+     * @return 是否处理事件
      */
     onMouseDown(event: SMouseEvent): boolean {
         if (event.buttons == 1) {
@@ -857,8 +852,8 @@ export class SGraphSelectContainer extends SGraphItem {
     /**
      * 鼠标按下事件
      *
-     * @param   event   保存事件参数
-     * @return  boolean
+     * @param event   保存事件参数
+     * @return 是否处理事件
      */
     onMouseMove(event: SMouseEvent): boolean {
         this.setCursor(9);
@@ -979,8 +974,8 @@ export class SGraphSelectContainer extends SGraphItem {
     /**
      * 设置鼠标样式
      *
-     * @param   n 样式的索引
-     * */
+     * @param n 样式的索引
+     */
     private setCursor(n: number): void {
         this.cursor = SGraphSelectContainer.cursorList[n] || "default";
         if (this.scene && this.scene.view) {
@@ -991,8 +986,8 @@ export class SGraphSelectContainer extends SGraphItem {
     /**
      * 鼠标按下事件
      *
-     * @param   event   保存事件参数
-     * @return  boolean
+     * @param event   保存事件参数
+     * @return 是否处理事件
      */
     onMouseUp(event: SMouseEvent): boolean {
         this.curIndex = -1;
@@ -1001,9 +996,9 @@ export class SGraphSelectContainer extends SGraphItem {
     } // Function onMouseUp()
 
     /**
-     * Item绘制操作
+     * Item 绘制操作
      *
-     * @param   painter       painter对象
+     * @param painter    绘制对象
      */
     onDraw(painter: SPainter): void {
         // 缓存场景长度

+ 61 - 60
persagy-web-graph/src/SGraphView.ts

@@ -39,9 +39,9 @@ import { v1 as uuidv1 } from "uuid";
 import { SColor } from "@persagy-web/draw";
 
 /**
- * Graphy图形引擎视图类
+ * Graph 图形引擎视图类
  *
- * @author  庞利祥(sybotan@126.com)
+ * @author 庞利祥 <sybotan@126.com>
  */
 export class SGraphView extends SCanvasView {
     /** 场景对象 */
@@ -61,24 +61,24 @@ export class SGraphView extends SCanvasView {
     } // Set scene
     /** 背景色 */
     backgroundColor: SColor = SColor.Transparent;
-    /** 旋转角度    */
+    /** 旋转角度 */
     rotate: number = 0;
 
     /**
      * 构造函数
      *
-     * @param   id      画布对象ID
+     * @param id      画布对象 ID
      */
     constructor(id: string) {
         super(id);
     } // Function constructor()
 
     /**
-     * 保存场景SVG文件
+     * 保存场景 SVG 文件
      *
-     * @param   name    文件名
-     * @param   width   svg宽度
-     * @param   height  svg高度
+     * @param name    文件名
+     * @param width   svg 宽度
+     * @param height  svg 高度
      */
     saveSceneSvg(name: string, width: number, height: number): void {
         let url = URL.createObjectURL(
@@ -90,11 +90,11 @@ export class SGraphView extends SCanvasView {
     } // Function saveSceneSvg()
 
     /**
-     * 场景SVG图形的数据
+     * 场景 SVG 图形的数据
      *
-     * @param   width   svg宽度
-     * @param   height  svg高度
-     * @return  URL地址
+     * @param width   svg 宽度
+     * @param height  svg 高度
+     * @return URL 地址
      */
     sceneSvgData(width: number, height: number): string {
         if (null == this.scene) {
@@ -156,7 +156,7 @@ export class SGraphView extends SCanvasView {
         }
         let rect: SRect | null = null;
 
-        // 依次取item列中的所有item。将所有item的边界做并焦处理。
+        // 依次取 item 列中的所有 item。将所有 item 的边界做并焦处理。
         for (let item of itemList) {
             if (rect == null) {
                 rect = item.boundingRect().translated(item.pos.x, item.pos.y);
@@ -171,32 +171,32 @@ export class SGraphView extends SCanvasView {
     } // Function fitItemToView()
 
     /**
-     * 将场景中的xy坐标转换成视图坐标。
+     * 将场景中的 x, y 坐标转换成视图坐标。
      *
-     * @param   x       场景中的横坐标
-     * @param   y       场景中的纵坐标
-     * @return  视图坐标
+     * @param x     场景中的横坐标
+     * @param y     场景中的纵坐标
+     * @return 视图坐标
      */
     mapFromScene(x: number, y: number): SPoint;
 
     /**
-     * 将场景中的xy坐标转换成视图坐标。
+     * 将场景中的 x, y 坐标转换成视图坐标。
      *
-     * @param   pos      场景中的坐标
-     * @return  视图坐标
+     * @param pos   场景中的坐标
+     * @return 视图坐标
      */
     mapFromScene(pos: SPoint): SPoint;
 
     /**
-     * 将场景中的xy坐标转换成视图坐标(重载实现)。
+     * 将场景中的 x, y 坐标转换成视图坐标(重载实现)。
      *
-     * @param   x       场景中的横坐标
-     * @param   y       场景中的纵坐标
-     * @return  视图坐标
+     * @param x     场景中的横坐标
+     * @param y     场景中的纵坐标
+     * @return 视图坐标
      */
     mapFromScene(x: number | SPoint, y?: number): SPoint {
         if (x instanceof SPoint) {
-            // 如果传入的是SPoint对象
+            // 如果传入的是 SPoint 对象
             return new SPoint(
                 x.x * this.scale + this.origin.x,
                 x.y * this.scale + this.origin.y
@@ -211,32 +211,32 @@ export class SGraphView extends SCanvasView {
     } // Function mapFromScene()
 
     /**
-     * 将i视图的xy坐标转换成场景坐标。
+     * 将视图的 x, y 坐标转换成场景坐标。
      *
-     * @param   x       视图横坐标
-     * @param   y       视图纵坐标
-     * @return  场景坐标
+     * @param x     视图横坐标
+     * @param y     视图纵坐标
+     * @return 场景坐标
      */
     mapToScene(x: number, y: number): SPoint;
 
     /**
-     * 将i视图的xy坐标转换成场景坐标。
+     * 将视图的 x, y 坐标转换成场景坐标。
      *
-     * @param   pos     视图坐标
-     * @return  场景坐标
+     * @param pos     视图坐标
+     * @return 场景坐标
      */
     mapToScene(pos: SPoint): SPoint;
 
     /**
-     * 将i视图的xy坐标转换成场景坐标。(不推荐在外部调用)
+     * 将视图的 x, y 坐标转换成场景坐标。(不推荐在外部调用)
      *
-     * @param   x       视图的横坐标/或SPoint对象
-     * @param   y       视图的纵坐标
-     * @return  场景坐标
+     * @param x       视图的横坐标或 SPoint 对象
+     * @param y       视图的纵坐标
+     * @return 场景坐标
      */
     mapToScene(x: number | SPoint, y?: number): SPoint {
         if (x instanceof SPoint) {
-            // 如果传入的是SPoint对象
+            // 如果传入的是 SPoint 对象
             return new SPoint(
                 (x.x - this.origin.x) / this.scale,
                 (x.y - this.origin.y) / this.scale
@@ -252,10 +252,10 @@ export class SGraphView extends SCanvasView {
     /**
      * 保存图像
      *
-     * @param   name    名称
-     * @param   type    图像类型
-     * @param   width   要保存图形的宽
-     * @param   height  要保存图形的高
+     * @param name    名称
+     * @param type    图像类型
+     * @param width   要保存图形的宽
+     * @param height  要保存图形的高
      */
     saveImageSize(
         name: string,
@@ -289,7 +289,7 @@ export class SGraphView extends SCanvasView {
     /**
      * 绘制视图
      *
-     * @param   painter     painter对象
+     * @param painter       绘制对象
      */
     protected onDraw(painter: SPainter): void {
         painter.save();
@@ -322,7 +322,7 @@ export class SGraphView extends SCanvasView {
     /**
      * 绘制场景背景
      *
-     * @param   painter     painter对象
+     * @param painter     绘制对象
      */
     protected drawBackground(painter: SPainter): void {
         painter.brush.color = this.backgroundColor;
@@ -334,7 +334,7 @@ export class SGraphView extends SCanvasView {
     /**
      * 绘制场景前景
      *
-     * @param   painter     painter对象
+     * @param painter     绘制对象
      */
     protected drawForeground(painter: SPainter): void {
         // DO NOTHING
@@ -343,19 +343,19 @@ export class SGraphView extends SCanvasView {
     /**
      * 鼠标双击事件
      *
-     * @param   event       事件参数
+     * @param event       事件参数
      */
     protected onDoubleClick(event: MouseEvent): void {
         if (this.scene != null) {
             let ce = this.toSceneMotionEvent(event);
             this.scene.onDoubleClick(ce);
         }
-    } // Function onClick()
+    } // Function onDoubleClick()
 
     /**
      * 鼠标按下事件
      *
-     * @param   event       事件参数
+     * @param event       事件参数
      */
     protected onMouseDown(event: MouseEvent): void {
         super.onMouseDown(event);
@@ -363,12 +363,12 @@ export class SGraphView extends SCanvasView {
             let ce = this.toSceneMotionEvent(event);
             this.scene.onMouseDown(ce);
         }
-    } // Function onClick()
+    } // Function onMouseDown()
 
     /**
      * 鼠标移动事件
      *
-     * @param   event       事件参数
+     * @param event       事件参数
      */
     protected onMouseMove(event: MouseEvent): void {
         super.onMouseMove(event);
@@ -376,12 +376,12 @@ export class SGraphView extends SCanvasView {
             let ce = this.toSceneMotionEvent(event);
             this.scene.onMouseMove(ce);
         }
-    } // Function onClick()
+    } // Function onMouseMove()
 
     /**
      * 鼠标松开事件
      *
-     * @param   event       事件参数
+     * @param event       事件参数
      */
     protected onMouseUp(event: MouseEvent): void {
         super.onMouseUp(event);
@@ -389,12 +389,12 @@ export class SGraphView extends SCanvasView {
             let ce = this.toSceneMotionEvent(event);
             this.scene.onMouseUp(ce);
         }
-    } // Function onClick()
+    } // Function onMouseUp()
 
     /**
      * 上下文菜单事件
      *
-     * @param   event       事件参数
+     * @param event       事件参数
      */
     protected onContextMenu(event: MouseEvent): void {
         if (this.scene != null) {
@@ -406,7 +406,7 @@ export class SGraphView extends SCanvasView {
     /**
      * 按键按下事件
      *
-     * @param   event       事件参数
+     * @param event       事件参数
      */
     protected onKeyDown(event: KeyboardEvent): void {
         if (this.scene != null) {
@@ -417,7 +417,7 @@ export class SGraphView extends SCanvasView {
     /**
      * 按键松开事件
      *
-     * @param   event       事件参数
+     * @param event       事件参数
      */
     protected onKeyUp(event: KeyboardEvent): void {
         if (this.scene != null) {
@@ -428,9 +428,9 @@ export class SGraphView extends SCanvasView {
     /**
      * 适配场景在视图中可见
      *
-     * @param   width       宽度
-     * @param   height      高度
-     * @param   rect        对象的矩阵大小
+     * @param width       宽度
+     * @param height      高度
+     * @param rect        对象的矩阵大小
      */
     private fitRectToSize(
         width: number,
@@ -451,9 +451,10 @@ export class SGraphView extends SCanvasView {
     } // Function fitRectToSize()
 
     /**
-     * MouseEvent事件转换成场景SMouseEvent事件
+     * MouseEvent 事件转换成场景 SMouseEvent 事件
      *
-     * @param   event       事件参数
+     * @param event       事件参数
+     * @return MouseEvent 事件转换成场景 SMouseEvent 事件
      */
     private toSceneMotionEvent(event: MouseEvent): SMouseEvent {
         let se = new SMouseEvent(event);

+ 14 - 15
persagy-web-graph/src/commands/SGraphAddCommand.ts

@@ -32,22 +32,22 @@ import { SGraphScene } from "../SGraphScene";
 /**
  * 添加item命令
  *
- * @author  panglixiang
- * */
+ * @author 郝洁 <haojie@persagy.com>
+ */
 export class SGraphAddCommand extends SGraphCommand {
-    /** 命令名称    */
+    /** 命令名称 */
     readonly command: string;
-    /** 命令item对象    */
+    /** 命令item对象 */
     item: SGraphItem;
-    /** 命令item的父类   */
+    /** 命令item的父类 */
     parent: SGraphItem | null;
 
     /**
      * 构造函数
      *
-     * @param   scene   item所在场景
-     * @param   item    命令item对象
-     * */
+     * @param scene   item 所在场景
+     * @param item    命令 item 对象
+     */
     constructor(scene: SGraphScene, item: SGraphItem) {
         super(scene);
         this.item = item;
@@ -57,18 +57,18 @@ export class SGraphAddCommand extends SGraphCommand {
     } // Constructor
 
     /**
-     * 合并命令
+     * 判断当前命令是否可以与指定的命令合并
      *
-     * @return  boolean 是否已执行合并
-     * */
+     * @param command   指定命令
+     * @return 是否已执行合并
+     */
     mergeWith(command: SUndoCommand): boolean {
         return false;
     } // Function mergeWith()
 
     /**
      * 重做
-     *
-     * */
+     */
     redo(): void {
         this.item.parent = this.parent;
         // @ts-ignore
@@ -77,8 +77,7 @@ export class SGraphAddCommand extends SGraphCommand {
 
     /**
      * 撤销
-     *
-     * */
+     */
     undo(): void {
         this.item.parent = null;
         // @ts-ignore

+ 3 - 3
persagy-web-graph/src/commands/SGraphCommand.ts

@@ -28,9 +28,9 @@ import { SUndoCommand } from "@persagy-web/base";
 import { SGraphScene } from "../SGraphScene";
 
 /**
- * Graph命令基类
+ * Graph 命令基类
  *
- * @author  庞利祥(sybotan@126.com)
+ * @author 庞利祥 <sybotan@126.com>
  */
 export abstract class SGraphCommand extends SUndoCommand {
     /** 命令所属的场景类 */
@@ -39,7 +39,7 @@ export abstract class SGraphCommand extends SUndoCommand {
     /**
      * 构造函数
      *
-     * @param   scene       命令所属的场景类
+     * @param scene       命令所属的场景类
      */
     protected constructor(scene: SGraphScene | null) {
         super();

+ 19 - 21
persagy-web-graph/src/commands/SGraphMoveCommand.ts

@@ -31,29 +31,28 @@ import { SUndoCommand } from "@persagy-web/base";
 import { SGraphScene } from "../SGraphScene";
 
 /**
- * item移动命令
+ * item 移动命令
  *
- * @author  panglixiang
- *
- * */
+ * @author 郝洁 <haojie@persagy.com>
+ */
 export class SGraphMoveCommand extends SGraphCommand {
-    /** 命令名称    */
+    /** 命令名称 */
     readonly command: string;
-    /** 执行命令的item   */
+    /** 执行命令的 item */
     item: SGraphItem;
-    /** 移动前位置    */
+    /** 移动前位置 */
     old: SPoint;
-    /** 移动后位置   */
+    /** 移动后位置 */
     pos: SPoint;
 
     /**
      * 构造函数
      *
-     * @param   scene   当前场景
-     * @param   item    item对象
-     * @param   old     移动前位置
-     * @param   pos     移动后位置
-     * */
+     * @param scene   当前场景
+     * @param item    item 对象
+     * @param old     移动前位置
+     * @param pos     移动后位置
+     */
     constructor(
         scene: SGraphScene,
         item: SGraphItem,
@@ -71,9 +70,9 @@ export class SGraphMoveCommand extends SGraphCommand {
     /**
      * 合并命令
      *
-     * @param   command 命令
-     * @return  boolean 是否已执行合并命令
-     * */
+     * @param command   指定命令
+     * @return 是否已执行合并命令
+     */
     mergeWith(command: SUndoCommand): boolean {
         if (command instanceof SGraphMoveCommand && command.item == this.item) {
             command.pos = this.pos;
@@ -84,8 +83,7 @@ export class SGraphMoveCommand extends SGraphCommand {
 
     /**
      * 重做
-     *
-     * */
+     */
     redo(): void {
         this.item.pos = new SPoint(this.pos.x, this.pos.y);
         this.item.update();
@@ -93,8 +91,7 @@ export class SGraphMoveCommand extends SGraphCommand {
 
     /**
      * 撤销
-     *
-     * */
+     */
     undo(): void {
         this.item.pos = new SPoint(this.old.x, this.old.y);
         this.item.update();
@@ -103,7 +100,8 @@ export class SGraphMoveCommand extends SGraphCommand {
     /**
      * 命令细节描述
      *
-     * */
+     * @return 将当前命令转为字符串
+     */
     toString(): string {
         return `oldPos=${JSON.stringify(this.old)};\nnewPos=${JSON.stringify(
             this.pos

+ 12 - 11
persagy-web-graph/src/commands/SGraphPointListDelete.ts

@@ -30,28 +30,28 @@ import { SGraphCommand, SGraphItem, SGraphScene } from "../index";
 /**
  * 多边形、折线等相关顶点的位置删除命令
  *
- * @author  韩耀龙
+ * @author 郝洁 <haojie@persagy.com>
  */
-
 export class SGraphPointListDelete extends SGraphCommand {
-    /** 命令名称    */
+    /** 命令名称 */
     readonly command: string;
-    /**  指向item对象 */
+    /** 指向 item 对象 */
     item: SGraphItem;
     /** 索引 */
     index: number | null;
-    /**  删除位置 */
+    /** 删除位置 */
     pos: SPoint | null;
     /** 顶点数组 */
     pointList: SPoint[];
 
     /**
      * 构造函数
-     * @param   scene       item所在场景
-     * @param   item        指向item对象
-     * @param   pointList   顶点数组
-     * @param   pos         删除的点
-     * @param   index       索引
+     *
+     * @param scene       item 所在场景
+     * @param item        指向 item 对象
+     * @param pointList   顶点数组
+     * @param pos         删除的点
+     * @param index       索引
      */
     constructor(
         scene: SGraphScene,
@@ -97,7 +97,8 @@ export class SGraphPointListDelete extends SGraphCommand {
     /**
      * 命令细节描述
      *
-     * */
+     * @return 将命令转为字符串
+     */
     toString(): string {
         const pointList = `pointList=${JSON.stringify(this.pointList)}`;
         const pos = `pos=${JSON.stringify(this.pos)}`;

+ 12 - 11
persagy-web-graph/src/commands/SGraphPointListInsert.ts

@@ -30,15 +30,14 @@ import { SGraphCommand, SGraphItem, SGraphScene } from "../index";
 /**
  * 多边形、折线等相关顶点的位置插入命令
  *
- * @author  韩耀龙
+ * @author 郝洁 <haojie@persagy.com>
  */
-
 export class SGraphPointListInsert extends SGraphCommand {
-    /** 命令名称    */
+    /** 命令名称 */
     readonly command: string;
-    /**  指向item对象 */
+    /** 指向 item 对象 */
     item: SGraphItem;
-    /**  当前位置 */
+    /** 当前位置 */
     pos: SPoint;
     /** 索引 */
     index: number | null;
@@ -47,11 +46,12 @@ export class SGraphPointListInsert extends SGraphCommand {
 
     /**
      * 构造函数
-     * @param   scene       item所在场景
-     * @param   item        指向item对象
-     * @param   pointList   顶点数组
-     * @param   pos         当前位置
-     * @param   index       索引
+     *
+     * @param scene       item 所在场景
+     * @param item        指向 item 对象
+     * @param pointList   顶点数组
+     * @param pos         当前位置
+     * @param index       索引
      */
     constructor(
         scene: SGraphScene,
@@ -97,7 +97,8 @@ export class SGraphPointListInsert extends SGraphCommand {
     /**
      * 命令细节描述
      *
-     * */
+     * @return 将命令转为字符串
+     */
     toString(): string {
         const pointList = `pointList=${JSON.stringify(this.pointList)}`;
         const pos = `pos=${JSON.stringify(this.pos)}`;

+ 14 - 13
persagy-web-graph/src/commands/SGraphPointListUpdate.ts

@@ -30,17 +30,16 @@ import { SGraphCommand, SGraphItem, SGraphScene } from "../index";
 /**
  * 多边形、折线等相关顶点的位置更新命令
  *
- * @author  韩耀龙
+ * @author 郝洁 <haojie@persagy.com>
  */
-
 export class SGraphPointListUpdate extends SGraphCommand {
-    /** 命令名称    */
+    /** 命令名称 */
     readonly command: string;
-    /**  指向item对象 */
+    /** 指向 item 对象 */
     item: SGraphItem;
-    /**  原位置 */
+    /** 原位置 */
     old: SPoint;
-    /**  当前位置 */
+    /** 当前位置 */
     pos: SPoint;
     /** 索引 */
     index: number;
@@ -49,12 +48,13 @@ export class SGraphPointListUpdate extends SGraphCommand {
 
     /**
      * 构造函数
-     * @param   scene       item所在场景
-     * @param   item        指向item对象
-     * @param   pointList   顶点数组
-     * @param   old         原位置
-     * @param   pos         当前位置
-     * @param   index       索引
+     *
+     * @param scene       item 所在场景
+     * @param item        指向 item 对象
+     * @param pointList   顶点数组
+     * @param old         原位置
+     * @param pos         当前位置
+     * @param index       索引
      */
     constructor(
         scene: SGraphScene,
@@ -95,7 +95,8 @@ export class SGraphPointListUpdate extends SGraphCommand {
     /**
      * 命令细节描述
      *
-     * */
+     * @return 将命令转为字符串
+     */
     toString(): string {
         const pointList = `pointList=${JSON.stringify(this.pointList)}`;
         const old = `old=${JSON.stringify(this.old)}`;

+ 12 - 12
persagy-web-graph/src/commands/SGraphPropertyCommand.ts

@@ -31,13 +31,12 @@ import { SGraphScene } from "../SGraphScene";
 /**
  * 属性修改命令类
  *
- * @author  张宇(taohuzy@163.com)
+ * @author  张宇 <taohuzy@163.com>
  */
-
 export class SGraphPropertyCommand<T> extends SGraphCommand {
-    /** 命令名称    */
+    /** 命令名称 */
     readonly command: string;
-    /**	指向item对象	*/
+    /**	指向 item 对象	*/
     item: SGraphItem;
     /** 属性名称 */
     propName: string;
@@ -49,11 +48,11 @@ export class SGraphPropertyCommand<T> extends SGraphCommand {
     /**
      * 构造函数
      *
-     * @param   scene       命令所属的场景类
-     * @param   item        命令所属的item类
-     * @param   propName    修改的属性名称
-     * @param   oldProp     修改前的属性值
-     * @param   newProp     修改后的属性值
+     * @param scene       命令所属的场景类
+     * @param item        命令所属的 item 
+     * @param propName    修改的属性名称
+     * @param oldProp     修改前的属性值
+     * @param newProp     修改后的属性值
      */
     constructor(
         scene: SGraphScene,
@@ -72,7 +71,7 @@ export class SGraphPropertyCommand<T> extends SGraphCommand {
     } // Constructor
 
     /**
-     * redo操作
+     * redo 操作
      */
     redo(): void {
         // @ts-ignore
@@ -81,7 +80,7 @@ export class SGraphPropertyCommand<T> extends SGraphCommand {
     } // Function redo()
 
     /**
-     * undo操作
+     * undo 操作
      */
     undo(): void {
         // @ts-ignore
@@ -92,7 +91,8 @@ export class SGraphPropertyCommand<T> extends SGraphCommand {
     /**
      * 命令细节描述
      *
-     * */
+     * @return 将命令转为字符串
+     */
     toString(): string {
         const propName = `propName=${this.propName}`;
         const oldProp = `oldProp=${JSON.stringify(this.oldProp)}`;

+ 4 - 4
persagy-web-graph/src/enums/SGraphLayoutType.ts

@@ -30,9 +30,9 @@
  * @author  郝建龙 <haojianlong@sagacloud.cn>
  */
 export enum SGraphLayoutType {
-    /** 垂直分布    */
+    /** 垂直分布 */
     Vertical,
-    /** 垂直分布    */
+    /** 垂直分布 */
     Horizontal,
     /** 左对齐 */
     Left,
@@ -42,8 +42,8 @@ export enum SGraphLayoutType {
     Top,
     /** 底对齐 */
     Bottom,
-    /** 水平居中    */
+    /** 水平居中 */
     Center,
-    /** 垂直居中    */
+    /** 垂直居中 */
     Middle
 } // Enum SGraphLayoutType

+ 2 - 2
persagy-web-graph/src/enums/SImageShowType.ts

@@ -25,9 +25,9 @@
  */
 
 /**
- * 图片item展示方式
+ * 图片 item 展示方式
  *
- * @author  haojianlong
+ * @author 郝洁 <haojie@persagy.com>
  */
 export enum SImageShowType {
     /** 铺满  */

+ 5 - 5
persagy-web-graph/src/enums/SLineStyle.ts

@@ -27,15 +27,15 @@
 /**
  * 线样式
  *
- * @author  张宇
+ * @author 郝洁 <haojie@persagy.com>
  */
 export enum SLineStyle {
-    /** 实线    */
+    /** 实线 */
     Solid,
-    /** 虚线    */
+    /** 虚线 */
     Dashed,
-    /** 点线    */
+    /** 点线 */
     Dotted,
-    /** 无    */
+    /** 无 */
     None
 } // Enum SLineStyle

+ 4 - 4
persagy-web-graph/src/enums/SOrderSetType.ts

@@ -30,12 +30,12 @@
  * @author  郝建龙 <haojianlong@sagacloud.cn>
  */
 export enum SOrderSetType {
-    /** 置顶  */
+    /** 置顶 */
     Top,
-    /** 置底    */
+    /** 置底 */
     Bottom,
-    /** 上移一层    */
+    /** 上移一层 */
     After,
-    /** 下移一层    */
+    /** 下移一层 */
     Before
 } // Enum SOrderSetType

+ 3 - 3
persagy-web-graph/src/enums/STextOrigin.ts

@@ -27,11 +27,11 @@
 /**
  * 文本原点位置
  *
- * @author  张宇
+ * @author 郝洁 <haojie@persagy.com>
  */
 export enum STextOrigin {
-    /** 左上点    */
+    /** 左上点 */
     LeftTop,
-    /** 中心点    */
+    /** 中心点 */
     Center
 } // Enum STextOrigin

+ 8 - 8
persagy-web-graph/src/items/SAnchorItem.ts

@@ -29,26 +29,26 @@ import { SGraphItem } from "../SGraphItem";
 import { v1 as uuidv1 } from "uuid";
 
 /**
- * 锚点item
+ * 锚点 item
  *
- * @author  郝建龙 <haojianlong@sagacloud.cn>(1061851420@qq.com)
+ * @author  郝建龙 <haojianlong@sagacloud.cn>
  */
 export class SAnchorItem extends SGraphItem {
     /** 锚点宽 */
     private width: number = 3;
     /** 锚点高 */
     private height: number = 3;
-    /** 是否被连接   */
+    /** 是否被连接 */
     isConnected: boolean = false;
-    /** 全局灵敏度   */
+    /** 全局灵敏度 */
     dis: number = 3;
-    /** 灵敏度转换为场景长度  */
+    /** 灵敏度转换为场景长度 */
     sceneDis: number = 3;
 
     /**
      * 构造函数
      *
-     * @param   parent      指向父对象
+     * @param parent      指向父对象
      */
     constructor(parent: SGraphItem | null = null) {
         super(parent);
@@ -56,9 +56,9 @@ export class SAnchorItem extends SGraphItem {
     } // Function constructor()
 
     /**
-     * Item绘制操作
+     * Item 绘制操作
      *
-     * @param   painter       painter对象
+     * @param painter   绘制对象
      */
     onDraw(painter: SPainter): void {
         this.sceneDis = painter.toPx(this.dis);

+ 16 - 16
persagy-web-graph/src/items/SGraphAreaGroupItem.ts

@@ -41,25 +41,25 @@ import { AreaGroup } from "../types/AreaGroup";
  * @author  郝建龙 <haojianlong@sagacloud.cn>
  */
 export class SGraphAreaGroupItem extends SGraphShape {
-    /** X坐标最小值 */
+    /** X 坐标最小值 */
     private minX = Number.MAX_SAFE_INTEGER;
-    /** X坐标最大值 */
+    /** X 坐标最大值 */
     private maxX = Number.MIN_SAFE_INTEGER;
-    /** Y坐标最小值 */
+    /** Y 坐标最小值 */
     private minY = Number.MAX_SAFE_INTEGER;
-    /** Y坐标最大值 */
+    /** Y 坐标最大值 */
     private maxY = Number.MIN_SAFE_INTEGER;
-    /** 墙轮廓线坐标list */
+    /** 墙轮廓线坐标 list */
     private readonly pointList: SPoint[][][] = [];
-    /** path对象 */
+    /** path 对象 */
     private pathList: SPath[] = [];
 
     /**
      * 构造函数
      *
-     * @param   parent  父类
-     * @param   data    轮廓线及风格数据
-     * */
+     * @param parent  父类
+     * @param data    轮廓线及风格数据
+     */
     constructor(parent: SGraphItem | null, data: AreaGroup) {
         super(parent, data.style);
         if (data.outline.length && data.outline[0] && data.outline[0].length) {
@@ -101,9 +101,9 @@ export class SGraphAreaGroupItem extends SGraphShape {
     } // Constructor
 
     /**
-     * Item对象边界区域
+     * Item 对象边界区域
      *
-     * @return SRect
+     * @return 对象边界区域
      */
     boundingRect(): SRect {
         return new SRect(
@@ -117,9 +117,9 @@ export class SGraphAreaGroupItem extends SGraphShape {
     /**
      * 判断点是否在区域内
      *
-     * @param x
-     * @param y
-     * @return boolean
+     * @param x 点 x 坐标
+     * @param y 点 y 坐标
+     * @return 是否在区域内
      */
     contains(x: number, y: number): boolean {
         for (let j = 0; j < this.pointList.length; j++) {
@@ -146,9 +146,9 @@ export class SGraphAreaGroupItem extends SGraphShape {
     } // Function contains()
 
     /**
-     * Item绘制操作
+     * Item 绘制操作
      *
-     * @param   painter       painter对象
+     * @param painter    绘制对象
      */
     onDraw(painter: SPainter): void {
         super.onDraw(painter);

+ 18 - 13
persagy-web-graph/src/items/SGraphLineItem.ts

@@ -28,28 +28,33 @@ import { SColor, SPainter, SPen, SRect } from "@persagy-web/draw";
 import { SGraphItem } from "../SGraphItem";
 
 /**
- * 线Item类
+ * 线 Item 
  *
- * @author  庞利祥(sybotan@126.com)
+ * @author 庞利祥 <sybotan@126.com>
  */
 export class SGraphLineItem extends SGraphItem {
+    /** 点 1 的 x 坐标 */
     x1: number;
+    /** 点 1 的 y 坐标 */
     y1: number;
+    /** 点 2 的 x 坐标 */
     x2: number;
+    /** 点 2 的 y 坐标 */
     y2: number;
+    /** 线条颜色 */
     color: SColor = SColor.Black;
+    /** 线条宽度 */
     width: number = 1;
 
     /**
      * 构造函数
      *
-     * @param x1  线的起始x坐标
-     * @param y1  线的起始y坐标
-     * @param x2    线的终止x坐标
-     * @param y2    线的终止y坐标
-     * @param width   线的宽度
-     *
-     * @param color  线的颜色
+     * @param x1        线的起始 x 坐标
+     * @param y1        线的起始 y 坐标
+     * @param x2        线的终止 x 坐标
+     * @param y2        线的终止 y 坐标
+     * @param width     线的宽度
+     * @param color     线的颜色
      * @param parent    是否为虚线
      */
     constructor(
@@ -69,9 +74,9 @@ export class SGraphLineItem extends SGraphItem {
     } // Constructor()
 
     /**
-     * Item对象边界区域
+     * Item 对象边界区域
      *
-     * @return SRect
+     * @return 边界区域
      */
     boundingRect(): SRect {
         let minX = Math.min(this.x1, this.x2);
@@ -87,9 +92,9 @@ export class SGraphLineItem extends SGraphItem {
     } // Function boundingRect()
 
     /**
-     * 绘制Item
+     * 绘制 Item
      *
-     * @param   painter     画布
+     * @param painter 绘制对象
      */
     onDraw(painter: SPainter): void {
         painter.pen = new SPen(this.color, this.width);

+ 15 - 15
persagy-web-graph/src/items/SGraphPolyGroupItem.ts

@@ -35,23 +35,23 @@ import { PolyGroup } from "..";
  * @author  郝建龙 <haojianlong@sagacloud.cn>
  */
 export class SGraphPolyGroupItem extends SGraphShape {
-    /** X坐标最小值 */
+    /** X 坐标最小值 */
     private minX = Number.MAX_SAFE_INTEGER;
-    /** X坐标最大值 */
+    /** X 坐标最大值 */
     private maxX = Number.MIN_SAFE_INTEGER;
-    /** Y坐标最小值 */
+    /** Y 坐标最小值 */
     private minY = Number.MAX_SAFE_INTEGER;
-    /** Y坐标最大值 */
+    /** Y 坐标最大值 */
     private maxY = Number.MIN_SAFE_INTEGER;
-    /** 多边形组轮廓线坐标list */
+    /** 多边形组轮廓线坐标 list */
     private readonly pointList: SPoint[][] = [];
 
     /**
      * 构造函数
      *
-     * @param   parent  父类
-     * @param   data    轮廓线及风格数据
-     * */
+     * @param parent  父类
+     * @param data    轮廓线及风格数据
+     */
     constructor(parent: SGraphItem | null, data: PolyGroup) {
         super(parent, data.style);
         if (data.outline.length && data.outline[0] && data.outline[0].length) {
@@ -84,9 +84,9 @@ export class SGraphPolyGroupItem extends SGraphShape {
     } // Constructor
 
     /**
-     * Item对象边界区域
+     * Item 对象边界区域
      *
-     * @return SRect
+     * @return 边界区域
      */
     boundingRect(): SRect {
         return new SRect(
@@ -100,9 +100,9 @@ export class SGraphPolyGroupItem extends SGraphShape {
     /**
      * 判断点是否在区域内
      *
-     * @param x
-     * @param y
-     * @return boolean
+     * @param x     点 x 坐标
+     * @param y     点 y 坐标
+     * @return 是否在区域内
      */
     contains(x: number, y: number): boolean {
         let arr = this.pointList;
@@ -115,9 +115,9 @@ export class SGraphPolyGroupItem extends SGraphShape {
     } // Function contains()
 
     /**
-     * Item绘制操作
+     * Item 绘制操作
      *
-     * @param   painter       painter对象
+     * @param painter    绘制对象
      */
     onDraw(painter: SPainter): void {
         super.onDraw(painter);

+ 9 - 9
persagy-web-graph/src/items/SGraphRectItem.ts

@@ -30,12 +30,12 @@ import { SPainter, SRect } from "@persagy-web/draw";
 import { SGraphRect } from "..";
 
 /**
- * 矩形(包含圆角矩形)item
+ * 矩形(包含圆角矩形) item
  *
- * @author 郝建龙
- * */
+ * @author 郝洁 <haojie@persagy.com>
+ */
 export class SGraphRectItem extends SGraphShape {
-    /** item宽 */
+    /** item 宽 */
     private _width: number = 0;
     get width(): number {
         return this._width;
@@ -47,7 +47,7 @@ export class SGraphRectItem extends SGraphShape {
         this._width = v;
         this.update();
     } // Set width
-    /** item高 */
+    /** item 高 */
     private _height: number = 0;
     get height(): number {
         return this._height;
@@ -89,9 +89,9 @@ export class SGraphRectItem extends SGraphShape {
     } // Constructor
 
     /**
-     * Item对象边界区域
+     * Item 对象边界区域
      *
-     * @return	SRect
+     * @return	边界区域
      */
     boundingRect(): SRect {
         return new SRect(0, 0, this.width, this.height);
@@ -100,8 +100,8 @@ export class SGraphRectItem extends SGraphShape {
     /**
      * 绘制
      *
-     * @param   painter painter对象
-     * */
+     * @param painter   绘制对象
+     */
     onDraw(painter: SPainter): void {
         super.onDraw(painter);
         if (this.radius != 0) {

+ 12 - 11
persagy-web-graph/src/items/SGraphShape.ts

@@ -35,20 +35,20 @@ import {
 } from "@persagy-web/draw/lib";
 
 /**
- * 图形item基类
+ * 图形 item 基类
  *
  * @author  郝建龙 <haojianlong@sagacloud.cn>
  */
 export class SGraphShape extends SGraphItem {
-    /** 当前item的风格 */
+    /** 当前 item 的风格 */
     style: Style | undefined;
 
     /**
      * 构造函数
      *
-     * @param   parent  父类
-     * @param   style   item各种状态的样式
-     * */
+     * @param parent  父类
+     * @param style   item 各种状态的样式
+     */
     constructor(parent: SGraphItem | null, style?: Style) {
         super(parent);
         this.style = style;
@@ -57,7 +57,8 @@ export class SGraphShape extends SGraphItem {
     /**
      * 绘制前设置绘制样式
      *
-     * */
+     * @return 当前 item 状态值
+     */
     setStyle(): string {
         let status = "default";
         if (this.style) {
@@ -75,9 +76,9 @@ export class SGraphShape extends SGraphItem {
     /**
      * 解析渐变样式
      *
-     * @param   str 渐变存储的字符串
-     * @return  SGradient
-     * */
+     * @param str   渐变存储的字符串
+     * @return 渐变颜色转为的字符串
+     */
     parseFill(str: string): SGradient | undefined {
         const index1 = str.indexOf("{");
         const index2 = str.indexOf("}");
@@ -122,8 +123,8 @@ export class SGraphShape extends SGraphItem {
     /**
      * 绘制
      *
-     * @param   painter painter对象
-     * */
+     * @param painter   绘制对象
+     */
     onDraw(painter: SPainter): void {
         const status = this.setStyle();
         if (this.style && this.style[status]) {

+ 13 - 13
persagy-web-graph/src/items/SGraphSvgItem.ts

@@ -30,12 +30,12 @@ import { SGraphItem } from "../SGraphItem";
 import { SGraphSvg } from "../types/SGraphSvg";
 
 /**
- * SVG图片item
+ * SVG 图片 item
  *
  * @author  郝建龙 <haojianlong@sagacloud.cn>
  */
 export class SGraphSvgItem extends SGraphShape {
-    /** 图片dom */
+    /** 图片 dom */
     img: CanvasImageSource | undefined;
     /** 图片加载是否完成 */
     isLoadOver: boolean = false;
@@ -55,7 +55,7 @@ export class SGraphSvgItem extends SGraphShape {
         // @ts-ignore
         this.img.src = v;
     } // Set Url
-    /** item宽 */
+    /** item 宽 */
     private _width: number = 0;
     get width(): number {
         return this._width;
@@ -67,7 +67,7 @@ export class SGraphSvgItem extends SGraphShape {
         this._width = v;
         this.update();
     } // Set width
-    /** item高 */
+    /** item 高 */
     private _height: number = 0;
     get height(): number {
         return this._height;
@@ -80,17 +80,17 @@ export class SGraphSvgItem extends SGraphShape {
         this.update();
     } // Set height
 
-    /** img宽 */
+    /** img 宽 */
     private imgWidth: number = 0;
-    /** img高 */
+    /** img 高 */
     private imgHeight: number = 0;
 
     /**
      * 构造函数
      *
-     * @param   parent  父类
-     * @param   data    传入数据
-     * */
+     * @param parent  父类
+     * @param data    传入数据
+     */
     constructor(parent: SGraphItem | null, data: SGraphSvg) {
         super(parent, data.style);
         if (data.url) {
@@ -112,18 +112,18 @@ export class SGraphSvgItem extends SGraphShape {
     } // Constructor
 
     /**
-     * Item对象边界区域
+     * Item 对象边界区域
      *
-     * @return	SRect
+     * @return 边界区域
      */
     boundingRect(): SRect {
         return new SRect(0, 0, this.width, this.height);
     } // Function boundingRect()
 
     /**
-     * Item绘制操作
+     * Item 绘制操作
      *
-     * @param   painter      绘画类
+     * @param painter   绘制对象
      */
     onDraw(painter: SPainter): void {
         if (this.isLoadOver) {

+ 28 - 27
persagy-web-graph/src/items/SImageItem.ts

@@ -30,54 +30,54 @@ import { SImageShowType, STextOrigin } from "..";
 import { SGraphItem } from "../SGraphItem";
 
 /**
- * 图片item
+ * 图片 item
  *
- * @author  张宇(taohuzy@163.com)
+ * @author  张宇 <taohuzy@163.com>
  */
 export class SImageItem extends SObjectItem {
-    /** 图片dom */
+    /** 图片 dom */
     img: CanvasImageSource | undefined;
 
     /** 展示模式 */
     private _showType: SImageShowType = SImageShowType.Full;
     get showType(): SImageShowType {
         return this._showType;
-    }
+    } // Get showType
     set showType(v: SImageShowType) {
         this._showType = v;
         this.computeImgSize();
         this.update();
-    }
+    } // Set showType
 
     /** 边框色 */
     private _strokeColor: SColor = SColor.Transparent;
     get strokeColor(): SColor {
         return this._strokeColor;
-    }
+    } // Get strokeColor
     set strokeColor(v: SColor) {
         this._strokeColor = v;
         this.update();
-    }
+    } // Set strokeColor
 
     /** 边框宽度 */
     private _lineWidth: number = 1;
     get lineWidth(): number {
         return this._lineWidth;
-    }
+    } // Get lineWidth
     set lineWidth(v: number) {
         this._lineWidth = v;
         this.update();
-    }
+    } // Set lineWidth
 
-    /** 原点位置    */
+    /** 原点位置 */
     private _originPosition: STextOrigin = STextOrigin.LeftTop;
     get originPosition(): STextOrigin {
         return this._originPosition;
-    }
+    } // Get originPosition
     set originPosition(v: STextOrigin) {
         this._originPosition = v;
         this.update();
-    }
+    } // Set originPosition
 
     /** 图片加载是否完成 */
     isLoadOver: boolean = false;
@@ -92,7 +92,7 @@ export class SImageItem extends SObjectItem {
     private _url: string = "";
     get url(): string {
         return this._url;
-    }
+    } // Get url
     set url(v: string) {
         this._url = v;
         this.img = new Image();
@@ -117,13 +117,13 @@ export class SImageItem extends SObjectItem {
             }
         };
         this.img.src = v;
-    }
+    } // Set url
 
     /**
      * 构造函数
      *
-     * @param   parent      指向父Item
-     * @param   url         图片地址
+     * @param parent      指向父 Item
+     * @param url         图片地址
      */
     constructor(parent: SGraphItem | null, url?: string) {
         super(parent);
@@ -139,7 +139,7 @@ export class SImageItem extends SObjectItem {
             let width = 0;
             // 要绘制图片的宽度
             let height = 0;
-            // 图片item的宽高比
+            // 图片 item 的宽高比
             let itemAspectRatio: number = this.width / this.height;
             // 原始图片的宽高比
             let imgAspectRatio: number =
@@ -183,8 +183,8 @@ export class SImageItem extends SObjectItem {
     /**
      * 判断当前地址和回调地址是否相同
      *
-     * @param   imgUrl      图片回调地址
-     * @return  当前地址和回调地址是否相同
+     * @param imgUrl        图片回调地址
+     * @return 当前地址和回调地址是否相同
      */
     private isUrlIdentical(imgUrl: string): boolean {
         if (this.url.indexOf("://") == -1) {
@@ -202,8 +202,9 @@ export class SImageItem extends SObjectItem {
 
     /**
      * 截取绝对路径中的相对路径
-     * @param   url      绝对路径
      *
+     * @param url      绝对路径
+     * @return 截取出的绝对路径中的相对路径
      */
     private GetUrlRelativePath(url: string): string {
         const arrUrl = url.split("//");
@@ -213,9 +214,9 @@ export class SImageItem extends SObjectItem {
     } // Function GetUrlRelativePath()
 
     /**
-     * Item对象边界区域
+     * Item 对象边界区域
      *
-     * @return	SRect
+     * @return 边界区域
      */
     boundingRect(): SRect {
         return new SRect(
@@ -229,18 +230,18 @@ export class SImageItem extends SObjectItem {
     /**
      * 宽高发发生变化
      *
-     * @param   oldSize 改之前的大小
-     * @param   newSize 改之后大小
-     * */
+     * @param oldSize   改之前的大小
+     * @param newSize   改之后大小
+     */
     protected onResize(oldSize: SSize, newSize: SSize): void {
         this.computeImgSize();
         this.update();
     } // Function onResize()
 
     /**
-     * Item绘制操作
+     * Item 绘制操作
      *
-     * @param   painter      绘画类
+     * @param painter   绘制对象
      */
     onDraw(painter: SPainter): void {
         painter.translate(-this.origin.x, -this.origin.y);

+ 13 - 13
persagy-web-graph/src/items/SObjectItem.ts

@@ -29,18 +29,18 @@ import { SPoint, SSize } from "@persagy-web/draw";
 import { SGraphItem } from "..";
 
 /**
- * 对象item
+ * 对象 item
  *
- * @author  郝建龙 <haojianlong@sagacloud.cn>(1061851420@qq.com)
+ * @author  郝建龙 <haojianlong@sagacloud.cn>
  */
 export abstract class SObjectItem extends SGraphItem {
-    /** 锚点list  */
+    /** 锚点 list */
     anchorList: SAnchorItem[] = [];
-    /** 宽度  */
+    /** 宽度 */
     private _width: number = 64;
     get width(): number {
         return this._width;
-    }
+    } // Get width
     set width(v: number) {
         if (v > 0) {
             if (v != this._width) {
@@ -52,13 +52,13 @@ export abstract class SObjectItem extends SGraphItem {
                 );
             }
         }
-    }
+    } // Set width
 
     /** 高度  */
     private _height: number = 64;
     get height(): number {
         return this._height;
-    }
+    } // Get height
     set height(v: number) {
         if (v > 0) {
             if (v != this._height) {
@@ -70,16 +70,16 @@ export abstract class SObjectItem extends SGraphItem {
                 );
             }
         }
-    }
+    } // Set height
 
-    /** 原点  */
+    /** 原点 */
     origin = new SPoint();
 
     /**
      * 宽高发发生变化
      *
-     * @param   oldSize 改之前的大小
-     * @param   newSize 改之后大小
-     * */
-    protected onResize(oldSize: SSize, newSize: SSize) {} // Function onResize()
+     * @param oldSize   改之前的大小
+     * @param newSize   改之后大小
+     */
+    protected onResize(oldSize: SSize, newSize: SSize): void {} // Function onResize()
 } // Class SObjectItem

+ 31 - 32
persagy-web-graph/src/items/STextItem.ts

@@ -31,25 +31,25 @@ import { SLineStyle } from "..";
 import { STextOrigin } from "..";
 
 /**
- * 文本item
+ * 文本 item
  *
- * @author  张宇(taohuzy@163.com)
+ * @author  张宇 <taohuzy@163.com>
  */
 export class STextItem extends SObjectItem {
-    /** 记录painter */
+    /** 记录 painter */
     private _painter: SPainter | null = null;
 
     /** 文本内容 */
     private _text: string = "";
     get text(): string {
         return this._text;
-    }
+    } // Get text
     set text(v: string) {
         this._text = v;
         this._textArr = this.text.split(/\n/g);
         this.drawFormatText();
         this.update();
-    }
+    } // Set text
 
     /** 切割后的文本数组 */
     private _textArr: string[] = [];
@@ -58,72 +58,72 @@ export class STextItem extends SObjectItem {
     private _color: SColor = new SColor("#333333");
     get color(): SColor {
         return this._color;
-    }
+    } // Get color
     set color(v: SColor) {
         this._color = v;
         this.update();
-    }
+    } // Set color
 
     /** 字体 */
     private _font: SFont;
     get font(): SFont {
         return this._font;
-    }
+    } // Get font
     set font(v: SFont) {
         this._font = v;
         this.drawFormatText();
         this.update();
-    }
+    } // Set font
 
     /** 背景色 */
     private _backgroundColor: SColor = SColor.Transparent;
     get backgroundColor(): SColor {
         return this._backgroundColor;
-    }
+    } // Get backgroundColor
     set backgroundColor(v: SColor) {
         this._backgroundColor = v;
         this.update();
-    }
+    } // Set backgroundColor
 
     /** 边框色 */
     private _strokeColor: SColor = SColor.Transparent;
     get strokeColor(): SColor {
         return this._strokeColor;
-    }
+    } // Get strokeColor
     set strokeColor(v: SColor) {
         this._strokeColor = v;
         this.update();
-    }
+    } // Set strokeColor
 
     /** 边框宽度 */
     private _lineWidth: number = 1;
     get lineWidth(): number {
         return this._lineWidth;
-    }
+    } // Get lineWidth
     set lineWidth(v: number) {
         this._lineWidth = v;
         this.update();
-    }
+    } // Set lineWidth
 
-    /** 边框样式    */
+    /** 边框样式 */
     private _borderStyle: SLineStyle = SLineStyle.None;
     get borderStyle(): SLineStyle {
         return this._borderStyle;
-    }
+    } // Get borderStyle
     set borderStyle(v: SLineStyle) {
         this._borderStyle = v;
         this.update();
-    }
+    } // Set borderStyle
 
-    /** 原点位置    */
+    /** 原点位置 */
     private _originPosition: STextOrigin = STextOrigin.LeftTop;
     get originPosition(): STextOrigin {
         return this._originPosition;
-    }
+    } // Get originPosition
     set originPosition(v: STextOrigin) {
         this._originPosition = v;
         this.update();
-    }
+    } // Set originPosition
 
     /** 文本绘制最大宽 */
     maxWidth: number | undefined = undefined;
@@ -131,8 +131,8 @@ export class STextItem extends SObjectItem {
     /**
      * 构造函数
      *
-     * @param   parent      指向父Item
-     * @param   str         文本内容
+     * @param parent      指向父 Item
+     * @param str         文本内容
      */
     constructor(parent: SGraphItem | null, str: string = "") {
         super(parent);
@@ -144,7 +144,7 @@ export class STextItem extends SObjectItem {
     /**
      * 对象边界区域
      *
-     * @return  边界区域
+     * @return 边界区域
      */
     boundingRect(): SRect {
         return new SRect(
@@ -158,17 +158,17 @@ export class STextItem extends SObjectItem {
     /**
      * 移动后处理所有坐标,并肩原点置为场景原点
      *
-     * @param   x   x坐标
-     * @param   y   y坐标
-     * */
+     * @param x   x 坐标
+     * @param y   y 坐标
+     */
     moveToOrigin(x: number, y: number): void {
         this.moveTo(this.x + x, this.y + y);
     } // Function moveToOrigin()
 
     /**
-     * 绘制显示状态文本Item
+     * 绘制显示状态文本 Item
      *
-     * @param painter    绘制
+     * @param painter    绘制对象
      */
     protected drawShowText(painter: SPainter): void {
         painter.translate(-this.origin.x, -this.origin.y);
@@ -202,7 +202,6 @@ export class STextItem extends SObjectItem {
 
     /**
      * 根据换行切割文本,绘制多行并计算外轮廓宽高
-     *
      */
     protected drawFormatText(): void {
         if (this._painter instanceof SPainter) {
@@ -230,9 +229,9 @@ export class STextItem extends SObjectItem {
     } // Function drawFormatText()
 
     /**
-     * Item绘制操作
+     * Item 绘制操作
      *
-     * @param   painter      绘画类
+     * @param painter   绘画对象
      */
     onDraw(painter: SPainter): void {
         if (!(this._painter instanceof SPainter)) {

+ 2 - 1
persagy-web-graph/src/types/AreaGroup.ts

@@ -29,7 +29,8 @@ import { Style } from "./Style";
 /**
  * 多边形组数据类型
  *
- * */
+ * @author 郝洁 <haojie@persagy.com>
+ */
 export interface AreaGroup {
     /** 轮廓线集合 */
     outline: Point[][][];

+ 0 - 0
persagy-web-graph/src/types/Point.ts


Some files were not shown because too many files changed in this diff