@meta2d/core 1.0.61 → 1.0.62
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/canvas/canvas.d.ts +0 -1
- package/src/canvas/canvas.js +24 -20
- package/src/canvas/canvas.js.map +1 -1
- package/src/core.d.ts +1 -1
- package/src/core.js +10 -2
- package/src/core.js.map +1 -1
- package/src/pen/model.d.ts +7 -0
- package/src/pen/model.js.map +1 -1
- package/src/pen/render.d.ts +1 -0
- package/src/pen/render.js +40 -2
- package/src/pen/render.js.map +1 -1
package/src/pen/model.d.ts
CHANGED
|
@@ -117,6 +117,10 @@ export interface Pen extends Rect {
|
|
|
117
117
|
*/
|
|
118
118
|
lineGradientAngle?: number;
|
|
119
119
|
gradientColors?: string;
|
|
120
|
+
switch?: boolean;
|
|
121
|
+
checked?: boolean;
|
|
122
|
+
onBackground?: string;
|
|
123
|
+
onGradientColors?: string;
|
|
120
124
|
lineGradientColors?: string;
|
|
121
125
|
lineCap?: CanvasLineCap;
|
|
122
126
|
fromLineCap?: CanvasLineCap;
|
|
@@ -422,6 +426,9 @@ export interface Pen extends Rect {
|
|
|
422
426
|
onended?: (pen: Pen) => void;
|
|
423
427
|
singleton?: any;
|
|
424
428
|
gradientColors?: string;
|
|
429
|
+
onBackground?: string;
|
|
430
|
+
onGradientColors?: string;
|
|
431
|
+
checked?: boolean;
|
|
425
432
|
lineGradientColors?: string;
|
|
426
433
|
gradient?: CanvasGradient;
|
|
427
434
|
lineGradient?: CanvasGradient;
|
package/src/pen/model.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../../../packages/core/src/pen/model.ts"],"names":[],"mappings":"AAKA,MAAM,CAAN,IAAY,OAGX;AAHD,WAAY,OAAO;IACjB,qCAAI,CAAA;IACJ,qCAAI,CAAA;AACN,CAAC,EAHW,OAAO,KAAP,OAAO,QAGlB;AAED,MAAM,CAAN,IAAY,SAQX;AARD,WAAY,SAAS;IACnB,yCAAI,CAAA;IACJ,uDAAW,CAAA;IACX,uDAAW,CAAA;IACX,yDAAY,CAAA;IACZ,iEAAgB,CAAA;IAChB,iBAAiB;IACjB,gDAAY,CAAA;AACd,CAAC,EARW,SAAS,KAAT,SAAS,QAQpB;AAED,MAAM,CAAN,IAAY,UAIX;AAJD,WAAY,UAAU;IACpB,iDAAO,CAAA;IACP,uCAAE,CAAA;IACF,yCAAG,CAAA;AACL,CAAC,EAJW,UAAU,KAAV,UAAU,QAIrB;AAED,MAAM,CAAN,IAAY,QAIX;AAJD,WAAY,QAAQ;IAClB,uCAAI,CAAA;IACJ,2CAAM,CAAA;IACN,2CAAM,CAAA;AACR,CAAC,EAJW,QAAQ,KAAR,QAAQ,QAInB;AAED,oBAAoB;AACpB,MAAM,CAAN,IAAY,WAKX;AALD,WAAY,WAAW;IACrB,iEAAkB,CAAA;IAClB,uEAAiB,CAAA;IACjB,yDAAU,CAAA;IACV,2DAAW,CAAA,CAAC,OAAO;AACrB,CAAC,EALW,WAAW,KAAX,WAAW,QAKtB;AAED,qBAAqB;AACrB,gBAAgB;AAChB,wBAAwB;AACxB,sBAAsB;AACtB,iBAAiB;AACjB,IAAI;AAEJ,wBAAwB;AACxB,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,MAAM;IACN,WAAW;IACX,YAAY;IACZ,UAAU;IACV,SAAS;IACT,YAAY;IACZ,UAAU;IACV,YAAY;IACZ,WAAW;IACX,YAAY;IACZ,WAAW;IACX,cAAc;IACd,YAAY;IACZ,UAAU;IACV,aAAa;CACd,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAE/E,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,YAAY;IACZ,cAAc;IACd,eAAe;IACf,aAAa;IACb,OAAO;IACP,OAAO;IACP,SAAS;IACT,WAAW;CACZ,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,UAAU,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;AAoB3E,MAAM,CAAN,IAAY,eAMX;AAND,WAAY,eAAe;IACzB,yDAAM,CAAA;IACN,uDAAK,CAAA;IACL,mDAAG,CAAA;IACH,uDAAK,CAAA;IACL,+DAAS,CAAA;AACX,CAAC,EANW,eAAe,KAAf,eAAe,QAM1B;
|
|
1
|
+
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../../../packages/core/src/pen/model.ts"],"names":[],"mappings":"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"}
|
package/src/pen/render.d.ts
CHANGED
|
@@ -19,6 +19,7 @@ export declare function drawImage(ctx: CanvasRenderingContext2D | OffscreenCanva
|
|
|
19
19
|
*/
|
|
20
20
|
export declare function getTextColor(pen: Pen, store: Meta2dStore): string;
|
|
21
21
|
export declare function drawIcon(ctx: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D, pen: Pen): void;
|
|
22
|
+
export declare function drawDropdown(ctx: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D, pen: Pen): void;
|
|
22
23
|
/**
|
|
23
24
|
* canvas2svg 中对 font 的解析规则比 canvas 中简单,能识别的类型很少
|
|
24
25
|
* @returns ctx.font
|
package/src/pen/render.js
CHANGED
|
@@ -109,6 +109,10 @@ function getBkRadialGradient(ctx, pen) {
|
|
|
109
109
|
if (!gradientColors) {
|
|
110
110
|
return;
|
|
111
111
|
}
|
|
112
|
+
let color = pen.calculative.gradientColors;
|
|
113
|
+
if (pen.calculative.checked) {
|
|
114
|
+
color = pen.calculative.onGradientColors;
|
|
115
|
+
}
|
|
112
116
|
const { width, height, center } = worldRect;
|
|
113
117
|
const { x: centerX, y: centerY } = center;
|
|
114
118
|
let r = width;
|
|
@@ -116,7 +120,7 @@ function getBkRadialGradient(ctx, pen) {
|
|
|
116
120
|
r = height;
|
|
117
121
|
}
|
|
118
122
|
r *= 0.5;
|
|
119
|
-
const { colors } = formatGradient(
|
|
123
|
+
const { colors } = formatGradient(color);
|
|
120
124
|
const grd = ctx.createRadialGradient(centerX, centerY, r * (gradientRadius || 0), centerX, centerY, r);
|
|
121
125
|
colors.forEach((stop) => {
|
|
122
126
|
grd.addColorStop(stop.i, stop.color);
|
|
@@ -129,7 +133,11 @@ function getBkGradient(ctx, pen) {
|
|
|
129
133
|
{ x: ex, y: y + height / 2 },
|
|
130
134
|
{ x: x, y: y + height / 2 },
|
|
131
135
|
];
|
|
132
|
-
|
|
136
|
+
let color = pen.calculative.gradientColors;
|
|
137
|
+
if (pen.calculative.checked) {
|
|
138
|
+
color = pen.calculative.onGradientColors;
|
|
139
|
+
}
|
|
140
|
+
const { angle, colors } = formatGradient(color);
|
|
133
141
|
let r = getGradientR(angle, width, height);
|
|
134
142
|
points.forEach((point) => {
|
|
135
143
|
rotatePoint(point, angle, center);
|
|
@@ -994,6 +1002,25 @@ export function drawIcon(ctx, pen) {
|
|
|
994
1002
|
ctx.fillText(pen.calculative.icon, x, y);
|
|
995
1003
|
ctx.restore();
|
|
996
1004
|
}
|
|
1005
|
+
export function drawDropdown(ctx, pen) {
|
|
1006
|
+
const scale = pen.calculative.canvas.store.data.scale;
|
|
1007
|
+
const inputPenId = pen.calculative.canvas.inputDiv.dataset.penId;
|
|
1008
|
+
const { x, y, width, height } = pen.calculative.worldRect;
|
|
1009
|
+
ctx.save();
|
|
1010
|
+
ctx.beginPath();
|
|
1011
|
+
if (pen.id === inputPenId) {
|
|
1012
|
+
ctx.moveTo(x + width - 20 * scale, y + height / 2 + 2 * scale);
|
|
1013
|
+
ctx.lineTo(x + width - 14 * scale, y + height / 2 - 4 * scale);
|
|
1014
|
+
ctx.lineTo(x + width - 8 * scale, y + height / 2 + 2 * scale);
|
|
1015
|
+
}
|
|
1016
|
+
else {
|
|
1017
|
+
ctx.moveTo(x + width - 20 * scale, y + height / 2 - 4 * scale);
|
|
1018
|
+
ctx.lineTo(x + width - 14 * scale, y + height / 2 + 2 * scale);
|
|
1019
|
+
ctx.lineTo(x + width - 8 * scale, y + height / 2 - 4 * scale);
|
|
1020
|
+
}
|
|
1021
|
+
ctx.stroke();
|
|
1022
|
+
ctx.restore();
|
|
1023
|
+
}
|
|
997
1024
|
/**
|
|
998
1025
|
* canvas2svg 中对 font 的解析规则比 canvas 中简单,能识别的类型很少
|
|
999
1026
|
* @returns ctx.font
|
|
@@ -1072,6 +1099,11 @@ export function renderPen(ctx, pen, download) {
|
|
|
1072
1099
|
pen.mouseDownBackground ||
|
|
1073
1100
|
pSBC(-0.4, pen.calculative.background || store.data.penBackground);
|
|
1074
1101
|
}
|
|
1102
|
+
else if (pen.switch && pen.calculative.checked) {
|
|
1103
|
+
if (!pen.calculative.bkType) {
|
|
1104
|
+
fill = pen.onBackground;
|
|
1105
|
+
}
|
|
1106
|
+
}
|
|
1075
1107
|
else if (pen.calculative.hover) {
|
|
1076
1108
|
_stroke = pen.hoverColor || store.options.hoverColor;
|
|
1077
1109
|
fill = pen.hoverBackground || store.options.hoverBackground;
|
|
@@ -1201,6 +1233,9 @@ export function renderPen(ctx, pen, download) {
|
|
|
1201
1233
|
if (!(pen.image && pen.calculative.img) && pen.calculative.icon) {
|
|
1202
1234
|
drawIcon(ctx, pen);
|
|
1203
1235
|
}
|
|
1236
|
+
if (pen.dropdownList) {
|
|
1237
|
+
drawDropdown(ctx, pen);
|
|
1238
|
+
}
|
|
1204
1239
|
if (!textFlip || !textRotate) {
|
|
1205
1240
|
ctx.restore();
|
|
1206
1241
|
}
|
|
@@ -1366,6 +1401,9 @@ export function renderPenRaw(ctx, pen, rect, download) {
|
|
|
1366
1401
|
else if (pen.calculative.icon) {
|
|
1367
1402
|
drawIcon(ctx, pen);
|
|
1368
1403
|
}
|
|
1404
|
+
if (pen.dropdownList) {
|
|
1405
|
+
drawDropdown(ctx, pen);
|
|
1406
|
+
}
|
|
1369
1407
|
if (!textFlip || !textRotate) {
|
|
1370
1408
|
ctx.restore();
|
|
1371
1409
|
}
|