소스 검색

修改融合类型修改方式

haojianlong 5 년 전
부모
커밋
f18eb571ef
1개의 변경된 파일21개의 추가작업 그리고 41개의 파일을 삭제
  1. 21 41
      saga-web-draw/src/engines/SCanvasPaintEngine.ts

+ 21 - 41
saga-web-draw/src/engines/SCanvasPaintEngine.ts

@@ -22,9 +22,22 @@ import { SCompositeType } from "../enums/SCompositeType";
  * @author  庞利祥(sybotan@126.com)
  */
 export class SCanvasPaintEngine extends SPaintEngine {
-    /** 画布对象 */
+    /** 画布对象    */
     private readonly _canvas: CanvasRenderingContext2D;
-
+    /** 融合类型    */
+    static gcoList = [
+        "copy",
+        "destination-atop",
+        "destination-in",
+        "destination-out",
+        "destination-over",
+        "lighter",
+        "source-atop",
+        "source-in",
+        "source-out",
+        "source-over",
+        "xor"
+    ];
     ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     // 属性定义
     /**
@@ -393,7 +406,6 @@ export class SCanvasPaintEngine extends SPaintEngine {
     /**
      * 线段端点风格
      *
-     * @param   canvas      canvas对象
      * @param   style       风格
      */
     private setLineCapStyle(style: SLineCapStyle): void {
@@ -455,44 +467,12 @@ export class SCanvasPaintEngine extends SPaintEngine {
      * 设置融合
      */
     private setComposite(): void {
-        const type = this.state._composite;
-        switch (type) {
-            case SCompositeType.SourceOver:
-                this._canvas.globalCompositeOperation = "source-over";
-                return;
-            case SCompositeType.Copy:
-                this._canvas.globalCompositeOperation = "copy";
-                return;
-            case SCompositeType.DestinationAtop:
-                this._canvas.globalCompositeOperation = "destination-atop";
-                return;
-            case SCompositeType.DestinationIn:
-                this._canvas.globalCompositeOperation = "destination-in";
-                return;
-            case SCompositeType.DestinationOut:
-                this._canvas.globalCompositeOperation = "destination-out";
-                return;
-            case SCompositeType.DestinationOver:
-                this._canvas.globalCompositeOperation = "destination-over";
-                return;
-            case SCompositeType.Lighter:
-                this._canvas.globalCompositeOperation = "lighter";
-                return;
-            case SCompositeType.SourceAtop:
-                this._canvas.globalCompositeOperation = "source-atop";
-                return;
-            case SCompositeType.SourceIn:
-                this._canvas.globalCompositeOperation = "source-in";
-                return;
-            case SCompositeType.SourceOut:
-                this._canvas.globalCompositeOperation = "source-out";
-                return;
-            case SCompositeType.Xor:
-                this._canvas.globalCompositeOperation = "xor";
-                return;
-            default:
-                this._canvas.globalCompositeOperation = "source-over";
-                return;
+        if (
+            this.state._composite >= 0 &&
+            this.state._composite < SCanvasPaintEngine.gcoList.length
+        ) {
+            this._canvas.globalCompositeOperation =
+                SCanvasPaintEngine.gcoList[this.state._composite];
         }
     } // Function setComposite()