|
@@ -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()
|
|
|
|