@leafer-ui/interface 1.0.0-beta.15 → 1.0.0-beta.17
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 +3 -2
- package/src/ICachedShape.ts +8 -0
- package/src/ICommonAttr.ts +148 -0
- package/src/IUI.ts +335 -0
- package/src/module/IColorConvert.ts +5 -0
- package/src/module/IEffect.ts +12 -0
- package/src/module/IExport.ts +19 -0
- package/src/module/IPaint.ts +26 -0
- package/src/module/ITextConvert.ts +5 -0
- package/src/module/IUIBounds.ts +8 -0
- package/src/module/IUIHit.ts +5 -0
- package/src/module/IUIRender.ts +40 -0
- package/src/type/IComputedType.ts +50 -0
- package/src/type/IStringType.ts +13 -0
- package/src/type/IType.ts +134 -0
package/package.json
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@leafer-ui/interface",
|
|
3
|
-
"version": "1.0.0-beta.
|
|
3
|
+
"version": "1.0.0-beta.17",
|
|
4
4
|
"description": "@leafer-ui/interface",
|
|
5
5
|
"author": "Chao (Leafer) Wan",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"main": "src/index.ts",
|
|
8
8
|
"types": "types/index.d.ts",
|
|
9
9
|
"files": [
|
|
10
|
+
"src",
|
|
10
11
|
"types",
|
|
11
12
|
"dist"
|
|
12
13
|
],
|
|
@@ -21,6 +22,6 @@
|
|
|
21
22
|
"leaferjs"
|
|
22
23
|
],
|
|
23
24
|
"dependencies": {
|
|
24
|
-
"@leafer/interface": "1.0.0-beta.
|
|
25
|
+
"@leafer/interface": "1.0.0-beta.17"
|
|
25
26
|
}
|
|
26
27
|
}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import { IPaint, IStrokeAlign, IStrokeCap, IStrokeJoin, IBlurEffect, IFontWeight, ITextCase, ITextDecoration, IShadowEffect, IGrayscaleEffect, ITextAlign, IVerticalAlign, IOverflow, IUnitData } from './type/IType'
|
|
2
|
+
import { ILeafStrokePaint, ILeafShadowEffect, ILeafPaint } from './type/IComputedType'
|
|
3
|
+
import { IPaintString, IDashPatternString, IShadowString, IColorString, IStrokeWidthString, ICornerRadiusString } from './type/IStringType'
|
|
4
|
+
|
|
5
|
+
// corner---
|
|
6
|
+
export interface ICornerRadiusAttrData {
|
|
7
|
+
cornerRadius: number | number[] | ICornerRadiusString
|
|
8
|
+
cornerSmoothing: number
|
|
9
|
+
}
|
|
10
|
+
export interface ICornerRadiusInputData {
|
|
11
|
+
cornerRadius?: number | number[] | ICornerRadiusString
|
|
12
|
+
cornerSmoothing?: number
|
|
13
|
+
}
|
|
14
|
+
export interface ICornerRadiusComputedData {
|
|
15
|
+
cornerRadius?: number
|
|
16
|
+
cornerSmoothing?: number
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
// fill---
|
|
20
|
+
export interface IFillAttrData {
|
|
21
|
+
fill: IPaint | IPaint[] | IPaintString
|
|
22
|
+
}
|
|
23
|
+
export interface IFillInputData {
|
|
24
|
+
fill?: IPaint | IPaint[] | IPaintString
|
|
25
|
+
}
|
|
26
|
+
export interface IFillComputedData {
|
|
27
|
+
fill?: IColorString | ILeafPaint[]
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// border
|
|
31
|
+
export interface IBorderComputedData {
|
|
32
|
+
borderWidth?: number | number[]
|
|
33
|
+
borderRadius?: number | number[]
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// stroke---
|
|
37
|
+
export interface IStrokeAttrData {
|
|
38
|
+
stroke: IPaint | IPaint[] | IPaintString
|
|
39
|
+
|
|
40
|
+
strokeAlign: IStrokeAlign
|
|
41
|
+
strokeWidth: number | number[] | IStrokeWidthString
|
|
42
|
+
strokeCap: IStrokeCap
|
|
43
|
+
strokeJoin: IStrokeJoin
|
|
44
|
+
dashPattern: number[] | IDashPatternString
|
|
45
|
+
dashOffset: number
|
|
46
|
+
miterLimit: number
|
|
47
|
+
}
|
|
48
|
+
export interface IStrokeInputData {
|
|
49
|
+
stroke?: IPaint | IPaint[] | IPaintString
|
|
50
|
+
|
|
51
|
+
strokeAlign?: IStrokeAlign
|
|
52
|
+
strokeWidth?: number | number[] | IStrokeWidthString
|
|
53
|
+
strokeCap?: IStrokeCap
|
|
54
|
+
strokeJoin?: IStrokeJoin
|
|
55
|
+
dashPattern?: number[] | IDashPatternString
|
|
56
|
+
dashOffset?: number
|
|
57
|
+
miterLimit?: number
|
|
58
|
+
}
|
|
59
|
+
export interface IStrokeComputedData {
|
|
60
|
+
stroke?: IColorString | ILeafStrokePaint[]
|
|
61
|
+
|
|
62
|
+
strokeAlign?: IStrokeAlign
|
|
63
|
+
strokeWidth?: number
|
|
64
|
+
strokeWidths?: number[]
|
|
65
|
+
strokeCap?: IStrokeCap
|
|
66
|
+
strokeJoin?: IStrokeJoin
|
|
67
|
+
dashPattern?: number[]
|
|
68
|
+
dashOffset?: number
|
|
69
|
+
miterLimit?: number
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// text---
|
|
73
|
+
export interface ITextStyleAttrData {
|
|
74
|
+
fontFamily: string
|
|
75
|
+
fontSize: number
|
|
76
|
+
fontWeight: IFontWeight
|
|
77
|
+
italic: boolean
|
|
78
|
+
textCase: ITextCase
|
|
79
|
+
textDecoration: ITextDecoration
|
|
80
|
+
letterSpacing: number | IUnitData
|
|
81
|
+
lineHeight: number | IUnitData
|
|
82
|
+
|
|
83
|
+
paraIndent: number
|
|
84
|
+
paraSpacing: number
|
|
85
|
+
|
|
86
|
+
textAlign: ITextAlign
|
|
87
|
+
verticalAlign: IVerticalAlign
|
|
88
|
+
|
|
89
|
+
textOverflow: IOverflow | string
|
|
90
|
+
}
|
|
91
|
+
export interface ITextStyleInputData {
|
|
92
|
+
fontFamily?: string
|
|
93
|
+
fontSize?: number
|
|
94
|
+
fontWeight?: IFontWeight
|
|
95
|
+
italic?: boolean
|
|
96
|
+
textCase?: ITextCase
|
|
97
|
+
textDecoration?: ITextDecoration
|
|
98
|
+
letterSpacing?: number | IUnitData
|
|
99
|
+
lineHeight?: number | IUnitData
|
|
100
|
+
|
|
101
|
+
paraIndent?: number
|
|
102
|
+
paraSpacing?: number
|
|
103
|
+
|
|
104
|
+
textAlign?: ITextAlign
|
|
105
|
+
verticalAlign?: IVerticalAlign
|
|
106
|
+
|
|
107
|
+
textOverflow?: IOverflow | string
|
|
108
|
+
}
|
|
109
|
+
export interface ITextStyleComputedData {
|
|
110
|
+
fontFamily?: string
|
|
111
|
+
fontSize?: number
|
|
112
|
+
fontWeight?: IFontWeight
|
|
113
|
+
italic?: boolean
|
|
114
|
+
textCase?: ITextCase
|
|
115
|
+
textDecoration?: ITextDecoration
|
|
116
|
+
letterSpacing?: number
|
|
117
|
+
lineHeight?: number
|
|
118
|
+
|
|
119
|
+
paraIndent?: number
|
|
120
|
+
paraSpacing?: number
|
|
121
|
+
|
|
122
|
+
textAlign?: ITextAlign
|
|
123
|
+
verticalAlign?: IVerticalAlign
|
|
124
|
+
textOverflow?: IOverflow
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
// effect---
|
|
128
|
+
export interface IEffectAttrData {
|
|
129
|
+
shadow: IShadowEffect | IShadowEffect[] | IShadowString
|
|
130
|
+
innerShadow: IShadowEffect | IShadowEffect[] | IShadowString
|
|
131
|
+
blur: number | IBlurEffect
|
|
132
|
+
backgroundBlur: number | IBlurEffect
|
|
133
|
+
grayscale: number | IGrayscaleEffect
|
|
134
|
+
}
|
|
135
|
+
export interface IEffectInputData {
|
|
136
|
+
shadow?: IShadowEffect | IShadowEffect[] | IShadowString
|
|
137
|
+
innerShadow?: IShadowEffect | IShadowEffect[] | IShadowString
|
|
138
|
+
blur?: number | IBlurEffect
|
|
139
|
+
backgroundBlur?: number | IBlurEffect
|
|
140
|
+
grayscale?: number | IGrayscaleEffect
|
|
141
|
+
}
|
|
142
|
+
export interface IEffectComputedData {
|
|
143
|
+
shadow?: ILeafShadowEffect[]
|
|
144
|
+
innerShadow?: ILeafShadowEffect[]
|
|
145
|
+
blur?: number
|
|
146
|
+
backgroundBlur?: number
|
|
147
|
+
grayscale?: number
|
|
148
|
+
}
|
package/src/IUI.ts
ADDED
|
@@ -0,0 +1,335 @@
|
|
|
1
|
+
import { ILeaf, ILeafComputedData, ILeafData, ILeafInputData, ILeaferCanvas, IRenderOptions, IPathDrawer, IPointData, IPath2D, IPathCommandData, IWindingRule, ILeaferImageConfig, IBoundsData, IObject, __Number, IPathString, ILeaferImage, IBlob, IPathCreator } from '@leafer/interface'
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
IFillAttrData, IFillInputData, IFillComputedData,
|
|
5
|
+
IBorderComputedData,
|
|
6
|
+
ICornerRadiusAttrData, ICornerRadiusInputData, ICornerRadiusComputedData,
|
|
7
|
+
IStrokeAttrData, IStrokeComputedData, IStrokeInputData,
|
|
8
|
+
IEffectAttrData, IEffectInputData, IEffectComputedData,
|
|
9
|
+
ITextStyleAttrData, ITextStyleInputData, ITextStyleComputedData
|
|
10
|
+
} from './ICommonAttr'
|
|
11
|
+
import { IOverflow } from './type/IType'
|
|
12
|
+
import { IExportOptions } from './module/IExport'
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
// Line
|
|
16
|
+
export interface ILine extends IUI {
|
|
17
|
+
__: ILineData
|
|
18
|
+
toPoint: IPointData
|
|
19
|
+
points: number[]
|
|
20
|
+
curve: boolean | number
|
|
21
|
+
}
|
|
22
|
+
export interface ILineData extends IUIData { }
|
|
23
|
+
export interface ILineInputData extends IUIBaseInputData {
|
|
24
|
+
toPoint?: IPointData
|
|
25
|
+
points?: number[]
|
|
26
|
+
curve?: boolean | number
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
// Rect
|
|
31
|
+
export interface IRect extends IUI {
|
|
32
|
+
__: IRectData
|
|
33
|
+
}
|
|
34
|
+
export interface IRectData extends IUIData { }
|
|
35
|
+
export interface IRectInputData extends IUIBaseInputData { }
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
// Ellipse
|
|
39
|
+
export interface IEllipse extends IUI {
|
|
40
|
+
__: IEllipseData
|
|
41
|
+
startAngle: number
|
|
42
|
+
endAngle: number
|
|
43
|
+
innerRadius: number
|
|
44
|
+
}
|
|
45
|
+
interface IEllipseAttrData {
|
|
46
|
+
startAngle?: number
|
|
47
|
+
endAngle?: number
|
|
48
|
+
innerRadius?: number
|
|
49
|
+
}
|
|
50
|
+
export interface IEllipseData extends IEllipseAttrData, IUIData { }
|
|
51
|
+
export interface IEllipseInputData extends IEllipseAttrData, IUIBaseInputData { }
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
// Polygon
|
|
55
|
+
export interface IPolygon extends IUI {
|
|
56
|
+
__: IPolygonData
|
|
57
|
+
sides: number
|
|
58
|
+
points: number[]
|
|
59
|
+
curve: boolean | number
|
|
60
|
+
}
|
|
61
|
+
interface IPolygonAttrData {
|
|
62
|
+
sides?: number
|
|
63
|
+
points?: number[]
|
|
64
|
+
curve?: boolean | number
|
|
65
|
+
}
|
|
66
|
+
export interface IPolygonData extends IPolygonAttrData, IUIData { }
|
|
67
|
+
export interface IPolygonInputData extends IPolygonAttrData, IUIBaseInputData { }
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
// Star
|
|
71
|
+
export interface IStar extends IUI {
|
|
72
|
+
__: IStarData
|
|
73
|
+
corners: number
|
|
74
|
+
innerRadius: number
|
|
75
|
+
}
|
|
76
|
+
interface IStarAttrData {
|
|
77
|
+
corners?: number
|
|
78
|
+
innerRadius?: number
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
export interface IStarData extends IStarAttrData, IUIData { }
|
|
82
|
+
export interface IStarInputData extends IStarAttrData, IUIBaseInputData { }
|
|
83
|
+
|
|
84
|
+
// Path
|
|
85
|
+
export interface IPath extends IUI {
|
|
86
|
+
__: IPathData
|
|
87
|
+
path: IPathCommandData | IPathString
|
|
88
|
+
windingRule: IWindingRule
|
|
89
|
+
}
|
|
90
|
+
export interface IPathData extends IUIData {
|
|
91
|
+
path?: IPathCommandData
|
|
92
|
+
windingRule?: IWindingRule
|
|
93
|
+
}
|
|
94
|
+
export interface IPathInputData extends IUIBaseInputData {
|
|
95
|
+
path?: IPathCommandData | IPathString
|
|
96
|
+
windingRule?: IWindingRule
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
// Pen
|
|
100
|
+
|
|
101
|
+
export interface IPen extends IGroup, IPathCreator {
|
|
102
|
+
__: IPenData
|
|
103
|
+
pathElement: IPath
|
|
104
|
+
pathStyle: IPathInputData
|
|
105
|
+
path: IPathCommandData
|
|
106
|
+
paint(): void
|
|
107
|
+
clear(): void
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
export interface IPenData extends IGroupData { }
|
|
111
|
+
export interface IPenInputData extends IGroupInputData { }
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
// Text
|
|
115
|
+
export interface IText extends ITextStyleAttrData, IUI {
|
|
116
|
+
__: ITextData
|
|
117
|
+
text: string
|
|
118
|
+
}
|
|
119
|
+
interface ITextAttrData {
|
|
120
|
+
text?: string
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
export interface ITextData extends ITextAttrData, ITextStyleComputedData, IUIData {
|
|
124
|
+
__baseLine?: number
|
|
125
|
+
__lineHeight?: number
|
|
126
|
+
__letterSpacing?: number
|
|
127
|
+
}
|
|
128
|
+
export interface ITextInputData extends ITextAttrData, ITextStyleInputData, IUIBaseInputData {
|
|
129
|
+
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
export interface ITextRowData {
|
|
133
|
+
x?: number
|
|
134
|
+
y?: number
|
|
135
|
+
width?: number
|
|
136
|
+
height?: number
|
|
137
|
+
text?: string
|
|
138
|
+
data?: ITextCharData[]
|
|
139
|
+
words?: ITextWordData[]
|
|
140
|
+
|
|
141
|
+
paraStart?: boolean // paragraph start
|
|
142
|
+
paraEnd?: boolean // paragraph end
|
|
143
|
+
isOverflow?: boolean
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
export interface ITextWordData {
|
|
147
|
+
x?: number
|
|
148
|
+
y?: number
|
|
149
|
+
width?: number
|
|
150
|
+
height?: number
|
|
151
|
+
data?: ITextCharData[]
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
export interface ITextCharData {
|
|
155
|
+
x?: number
|
|
156
|
+
y?: number
|
|
157
|
+
width?: number
|
|
158
|
+
height?: number
|
|
159
|
+
char?: string
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
export interface ITextDrawData {
|
|
163
|
+
bounds: IBoundsData
|
|
164
|
+
rows: ITextRowData[]
|
|
165
|
+
paraNumber: number
|
|
166
|
+
font: string
|
|
167
|
+
decorationY?: number
|
|
168
|
+
decorationHeight?: number
|
|
169
|
+
overflow?: number // overflowed row number, not index
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
// Image
|
|
173
|
+
export interface IImage extends IRect, ILeaferImageConfig {
|
|
174
|
+
__: IImageData
|
|
175
|
+
url: string
|
|
176
|
+
ready: boolean
|
|
177
|
+
image?: ILeaferImage
|
|
178
|
+
}
|
|
179
|
+
interface IImageAttrData {
|
|
180
|
+
url?: string
|
|
181
|
+
}
|
|
182
|
+
export interface IImageData extends IImageAttrData, IRectData { }
|
|
183
|
+
export interface IImageInputData extends IImageAttrData, IUIBaseInputData { }
|
|
184
|
+
|
|
185
|
+
export interface ICanvas extends IRect {
|
|
186
|
+
__: ICanvasData
|
|
187
|
+
pixelRatio: number
|
|
188
|
+
smooth: boolean
|
|
189
|
+
canvas: ILeaferCanvas
|
|
190
|
+
__updateSize(): void
|
|
191
|
+
}
|
|
192
|
+
interface ICanvasAttrData {
|
|
193
|
+
pixelRatio?: number
|
|
194
|
+
smooth?: boolean
|
|
195
|
+
}
|
|
196
|
+
export interface ICanvasData extends ICanvasAttrData, IRectData { }
|
|
197
|
+
export interface ICanvasInputData extends ICanvasAttrData, IUIBaseInputData { }
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
// Leafer
|
|
201
|
+
export interface ILeaferData extends IGroupData {
|
|
202
|
+
pixelRatio?: number
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
export interface ILeaferInputData extends IGroupInputData {
|
|
206
|
+
pixelRatio?: number
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
// Frame
|
|
211
|
+
export interface IFrame extends IBox {
|
|
212
|
+
__: IFrameData
|
|
213
|
+
}
|
|
214
|
+
export interface IFrameData extends IBoxData {
|
|
215
|
+
|
|
216
|
+
}
|
|
217
|
+
export interface IFrameInputData extends IBoxInputData {
|
|
218
|
+
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
|
|
222
|
+
// Box
|
|
223
|
+
export interface IBox extends IGroup {
|
|
224
|
+
__: IBoxData
|
|
225
|
+
overflow: IOverflow
|
|
226
|
+
__updateRectRenderBounds(): void
|
|
227
|
+
__renderGroup(canvas: ILeaferCanvas, options: IRenderOptions): void
|
|
228
|
+
}
|
|
229
|
+
export interface IBoxData extends IGroupData {
|
|
230
|
+
overflow?: IOverflow
|
|
231
|
+
}
|
|
232
|
+
export interface IBoxInputData extends IGroupInputData {
|
|
233
|
+
overflow?: IOverflow
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
// Group
|
|
238
|
+
export interface IGroup extends IUI {
|
|
239
|
+
__: IGroupData
|
|
240
|
+
children: IUI[]
|
|
241
|
+
mask?: IUI
|
|
242
|
+
add(child: IUI, index?: number): void
|
|
243
|
+
addAt(child: IUI, index: number): void
|
|
244
|
+
addAfter(child: IUI, after: IUI): void
|
|
245
|
+
addBefore(child: IUI, before: IUI): void
|
|
246
|
+
remove(child?: IUI): void
|
|
247
|
+
removeAll(): void
|
|
248
|
+
}
|
|
249
|
+
export interface IGroupData extends IUIData { }
|
|
250
|
+
export interface IGroupInputData extends IUIBaseInputData { }
|
|
251
|
+
|
|
252
|
+
// UI
|
|
253
|
+
export interface IUI extends IFillAttrData, IStrokeAttrData, ICornerRadiusAttrData, IEffectAttrData, ILeaf {
|
|
254
|
+
__: IUIData
|
|
255
|
+
parent?: IGroup
|
|
256
|
+
|
|
257
|
+
set(data: IUIInputData): void
|
|
258
|
+
toJSON(): IUIInputData
|
|
259
|
+
|
|
260
|
+
getPath(curve?: boolean): IPathCommandData
|
|
261
|
+
getPathString(curve?: boolean): IPathString
|
|
262
|
+
|
|
263
|
+
__drawPathByData(drawer: IPathDrawer, data: IPathCommandData): void
|
|
264
|
+
__drawAfterFill?(canvas: ILeaferCanvas, options: IRenderOptions): void
|
|
265
|
+
|
|
266
|
+
export(filename: string, options?: IExportOptions | number): Promise<IBlob | string | boolean>
|
|
267
|
+
clone(): IUI
|
|
268
|
+
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
export interface IUIData extends IUIComputedData, ILeafData {
|
|
272
|
+
|
|
273
|
+
padding?: number | number[]
|
|
274
|
+
locked?: boolean
|
|
275
|
+
|
|
276
|
+
// 非数据属性, 自动计算的缓存数据
|
|
277
|
+
__isFills?: boolean
|
|
278
|
+
__isStrokes?: boolean
|
|
279
|
+
__drawAfterFill?: boolean
|
|
280
|
+
__isOverflow?: boolean
|
|
281
|
+
__blendLayer?: boolean
|
|
282
|
+
|
|
283
|
+
__isTranslucentFill?: boolean // 半透明的
|
|
284
|
+
__isTranslucentStroke?: boolean
|
|
285
|
+
|
|
286
|
+
__useEffect?: boolean
|
|
287
|
+
|
|
288
|
+
// path
|
|
289
|
+
path?: IPathCommandData
|
|
290
|
+
windingRule?: IWindingRule
|
|
291
|
+
|
|
292
|
+
__pathForRender?: IPathCommandData
|
|
293
|
+
__path2DForRender?: IPath2D
|
|
294
|
+
|
|
295
|
+
__boxStroke?: boolean
|
|
296
|
+
|
|
297
|
+
// text
|
|
298
|
+
__font?: string
|
|
299
|
+
__textDrawData?: ITextDrawData
|
|
300
|
+
|
|
301
|
+
}
|
|
302
|
+
export interface IUIComputedData extends IFillComputedData, IBorderComputedData, IStrokeComputedData, ITextStyleComputedData, ICornerRadiusComputedData, IEffectComputedData, ILeafComputedData {
|
|
303
|
+
padding?: number | number[]
|
|
304
|
+
|
|
305
|
+
locked?: boolean
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
export interface IUIBaseInputData extends IFillInputData, IStrokeInputData, ITextStyleInputData, ICornerRadiusInputData, IEffectInputData, ILeafInputData {
|
|
309
|
+
padding?: number | number[]
|
|
310
|
+
locked?: boolean
|
|
311
|
+
children?: IUIBaseInputData[]
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
|
|
315
|
+
export type IUITag =
|
|
316
|
+
| 'App'
|
|
317
|
+
| 'Leafer'
|
|
318
|
+
| 'Rect'
|
|
319
|
+
| 'Ellipse'
|
|
320
|
+
| 'Polygon'
|
|
321
|
+
| 'Star'
|
|
322
|
+
| 'Line'
|
|
323
|
+
| 'Path'
|
|
324
|
+
| 'Pen'
|
|
325
|
+
| 'Text'
|
|
326
|
+
| 'Image'
|
|
327
|
+
| 'Canvas'
|
|
328
|
+
| 'Group'
|
|
329
|
+
| 'Frame'
|
|
330
|
+
| 'Box'
|
|
331
|
+
|
|
332
|
+
|
|
333
|
+
export interface IUIInputData extends IRectInputData, IEllipseInputData, IPolygonInputData, IStarInputData, ILineInputData, IPathInputData, ITextInputData, IImageInputData, IGroupInputData, IFrameInputData, IUIBaseInputData, IObject {
|
|
334
|
+
|
|
335
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ILeaferCanvas, IRenderOptions } from '@leafer/interface'
|
|
2
|
+
|
|
3
|
+
import { IUI } from '../IUI'
|
|
4
|
+
import { ICachedShape } from '../ICachedShape'
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
export interface IEffectModule {
|
|
8
|
+
shadow?(ui: IUI, current: ILeaferCanvas, shape: ICachedShape, options: IRenderOptions): void
|
|
9
|
+
innerShadow?(ui: IUI, current: ILeaferCanvas, shape: ICachedShape, options: IRenderOptions): void
|
|
10
|
+
blur?(ui: IUI, current: ILeaferCanvas, origin: ILeaferCanvas, options: IRenderOptions): void
|
|
11
|
+
backgroundBlur?(ui: IUI, current: ILeaferCanvas, shape: ICachedShape, options: IRenderOptions): void
|
|
12
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { ILeaf, IExportFileType, IBlob } from '@leafer/interface'
|
|
2
|
+
|
|
3
|
+
export interface IExportOptions {
|
|
4
|
+
quality?: number
|
|
5
|
+
blob?: boolean
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export interface IExportResult {
|
|
9
|
+
data: IBlob | string | boolean
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export interface IExportResultFunction {
|
|
13
|
+
(data: IExportResult): void
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
export interface IExportModule {
|
|
18
|
+
export?(leaf: ILeaf, filename: IExportFileType | string, options?: IExportOptions | number | boolean): Promise<IExportResult>
|
|
19
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { ILeaferCanvas, IRenderOptions, IBooleanMap } from '@leafer/interface'
|
|
2
|
+
|
|
3
|
+
import { ILeafPaint } from '../type/IComputedType'
|
|
4
|
+
import { IUI, IUIData } from '../IUI'
|
|
5
|
+
import { ICachedShape } from '../ICachedShape'
|
|
6
|
+
|
|
7
|
+
export interface IPaintModule {
|
|
8
|
+
compute?(ui: IUI, attrName: 'fill' | 'stroke'): void
|
|
9
|
+
|
|
10
|
+
fill?(ui: IUI, canvas: ILeaferCanvas, fill: string): void
|
|
11
|
+
fills?(ui: IUI, canvas: ILeaferCanvas, fills: ILeafPaint[]): void
|
|
12
|
+
|
|
13
|
+
fillText?(ui: IUI, canvas: ILeaferCanvas): void
|
|
14
|
+
|
|
15
|
+
stroke?(ui: IUI, canvas: ILeaferCanvas, stroke: string): void
|
|
16
|
+
strokes?(ui: IUI, canvas: ILeaferCanvas, strokes: ILeafPaint[]): void
|
|
17
|
+
|
|
18
|
+
strokeText?(ui: IUI, canvas: ILeaferCanvas, stroke: string): void
|
|
19
|
+
strokesText?(ui: IUI, canvas: ILeaferCanvas, strokes: ILeafPaint[]): void
|
|
20
|
+
|
|
21
|
+
drawTextStroke?(ui: IUI, canvas: ILeaferCanvas): void
|
|
22
|
+
|
|
23
|
+
shape?(ui: IUI, current: ILeaferCanvas, options: IRenderOptions): ICachedShape
|
|
24
|
+
|
|
25
|
+
recycleImage?(data: IUIData, attrName: string): IBooleanMap
|
|
26
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { ILeafRender, ILeaferCanvas, IRenderOptions } from '@leafer/interface'
|
|
2
|
+
|
|
3
|
+
import { IUI, IRect, IImage, IText, IFrame, IGroup } from '../IUI'
|
|
4
|
+
|
|
5
|
+
export type IUIRenderModule = IUIRender & ThisType<IUI>
|
|
6
|
+
|
|
7
|
+
export interface IUIRender extends ILeafRender {
|
|
8
|
+
__drawAfterFill?(canvas: ILeaferCanvas, options: IRenderOptions): void
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export type IRectRenderModule = IRectRender & ThisType<IRect>
|
|
12
|
+
|
|
13
|
+
export interface IRectRender extends IUIRender {
|
|
14
|
+
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export type IImageRenderModule = IImageRender & ThisType<IImage>
|
|
18
|
+
|
|
19
|
+
export interface IImageRender extends IUIRender {
|
|
20
|
+
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export type ITextRenderModule = ITextRender & ThisType<IText>
|
|
24
|
+
|
|
25
|
+
export interface ITextRender extends IUIRender {
|
|
26
|
+
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export type IGroupRenderModule = IGroupRender & ThisType<IGroup>
|
|
30
|
+
|
|
31
|
+
export interface IGroupRender extends IUIRender {
|
|
32
|
+
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export type IFrameRenderModule = IFrameRender & ThisType<IFrame>
|
|
36
|
+
|
|
37
|
+
export interface IFrameRender extends IGroupRender {
|
|
38
|
+
|
|
39
|
+
}
|
|
40
|
+
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { IBlendMode, ILeaferImage, IMatrixData } from '@leafer/interface'
|
|
2
|
+
|
|
3
|
+
import { IColorString } from './IStringType'
|
|
4
|
+
import { IStrokeAlign, IStrokeJoin, IStrokeCap, IImagePaintMode } from './IType'
|
|
5
|
+
import { IPaintType } from './IType'
|
|
6
|
+
|
|
7
|
+
export type ILeafPaintColor = IColorString | CanvasGradient | CanvasPattern
|
|
8
|
+
|
|
9
|
+
export interface ILeafPaint {
|
|
10
|
+
type?: IPaintType
|
|
11
|
+
style?: ILeafPaintColor
|
|
12
|
+
transform?: IMatrixData
|
|
13
|
+
blendMode?: IBlendMode
|
|
14
|
+
opacity?: number
|
|
15
|
+
image?: ILeaferImage
|
|
16
|
+
loadId?: number
|
|
17
|
+
patternId?: string
|
|
18
|
+
data?: ILeafPaintPatternData
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export interface ILeafPaintPatternData {
|
|
22
|
+
width?: number
|
|
23
|
+
height?: number
|
|
24
|
+
scaleX?: number
|
|
25
|
+
scaleY?: number
|
|
26
|
+
opacity?: number
|
|
27
|
+
transform?: IMatrixData
|
|
28
|
+
mode?: IImagePaintMode
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export type ILeafFill = ILeafPaint
|
|
32
|
+
|
|
33
|
+
export interface ILeafStrokePaint extends ILeafPaint {
|
|
34
|
+
strokeAlign?: IStrokeAlign
|
|
35
|
+
strokeWidth?: number
|
|
36
|
+
strokeCap?: IStrokeCap
|
|
37
|
+
strokeJoin?: IStrokeJoin
|
|
38
|
+
dashPattern?: number[]
|
|
39
|
+
miterLimit?: number
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export interface ILeafShadowEffect {
|
|
43
|
+
x: number
|
|
44
|
+
y: number
|
|
45
|
+
blur: number
|
|
46
|
+
spread?: number
|
|
47
|
+
color: IColorString
|
|
48
|
+
blendMode?: IBlendMode
|
|
49
|
+
box?: boolean
|
|
50
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export type IPercent = string
|
|
2
|
+
export type IColorString = string
|
|
3
|
+
|
|
4
|
+
export type ICornerRadiusString = string
|
|
5
|
+
export type IStrokeWidthString = string
|
|
6
|
+
export type IDashPatternString = string
|
|
7
|
+
|
|
8
|
+
export type IPaintString = ISolidPaintString | IGradientPaintString | IImagePaintString
|
|
9
|
+
export type ISolidPaintString = string
|
|
10
|
+
export type IGradientPaintString = string
|
|
11
|
+
export type IImagePaintString = string
|
|
12
|
+
|
|
13
|
+
export type IShadowString = string
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { IPointData, IPathCommandData, IWindingRule, IBlendMode, IExportFileType } from '@leafer/interface'
|
|
2
|
+
import { IColorString } from './IStringType'
|
|
3
|
+
|
|
4
|
+
export interface IUnitData {
|
|
5
|
+
type: 'percent' | 'px'
|
|
6
|
+
value: number
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export type IPaint = ISolidPaint | IGradientPaint | IImagePaint
|
|
10
|
+
|
|
11
|
+
export interface IPaintBase {
|
|
12
|
+
type: IPaintType
|
|
13
|
+
blendMode?: IBlendMode
|
|
14
|
+
visible?: boolean
|
|
15
|
+
opacity?: number
|
|
16
|
+
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export type IPaintType =
|
|
20
|
+
| 'image'
|
|
21
|
+
| 'solid'
|
|
22
|
+
| IGradientType
|
|
23
|
+
|
|
24
|
+
export type IGradientType =
|
|
25
|
+
| 'linear'
|
|
26
|
+
| 'radial'
|
|
27
|
+
| 'angular'
|
|
28
|
+
|
|
29
|
+
// ---
|
|
30
|
+
export interface ISolidPaint extends IPaintBase {
|
|
31
|
+
type: 'solid'
|
|
32
|
+
color: IColor
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export type IColor = IColorString | IRGB | IRGBA
|
|
36
|
+
export interface IRGB {
|
|
37
|
+
r: number
|
|
38
|
+
g: number
|
|
39
|
+
b: number
|
|
40
|
+
a?: number
|
|
41
|
+
}
|
|
42
|
+
export interface IRGBA extends IRGB {
|
|
43
|
+
a: number
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// ---
|
|
47
|
+
export interface IGradientPaint extends IPaintBase {
|
|
48
|
+
type: IGradientType
|
|
49
|
+
from?: IPointData
|
|
50
|
+
to?: IPointData
|
|
51
|
+
stretch?: number
|
|
52
|
+
stops: IColorStop[]
|
|
53
|
+
}
|
|
54
|
+
export interface IColorStop {
|
|
55
|
+
offset: number
|
|
56
|
+
color: IColor
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// ---
|
|
60
|
+
export interface IImagePaint extends IPaintBase {
|
|
61
|
+
type: "image"
|
|
62
|
+
url: string
|
|
63
|
+
mode?: IImagePaintMode
|
|
64
|
+
format?: IExportFileType
|
|
65
|
+
|
|
66
|
+
filters?: IImageFilters
|
|
67
|
+
|
|
68
|
+
offset?: IPointData
|
|
69
|
+
scale?: number | IPointData
|
|
70
|
+
rotation?: number
|
|
71
|
+
}
|
|
72
|
+
export interface IImageFilters {
|
|
73
|
+
exposure?: number // 曝光
|
|
74
|
+
contrast?: number // 对比度
|
|
75
|
+
saturation?: number // 饱和度
|
|
76
|
+
temperature?: number // 色温
|
|
77
|
+
tint?: number // 色调
|
|
78
|
+
highlights?: number // 高光
|
|
79
|
+
shadows?: number // 阴影
|
|
80
|
+
}
|
|
81
|
+
export type IImagePaintMode = 'cover' | 'fit' | 'strench' | 'clip' | 'repeat'
|
|
82
|
+
|
|
83
|
+
// 描边
|
|
84
|
+
export type IStrokeAlign = 'inside' | 'outside' | 'center'
|
|
85
|
+
export type IStrokeCap = 'none' | 'round' | 'square' | 'arrow-lines' | 'arrow-equilateral'
|
|
86
|
+
export type IStrokeJoin = 'bevel' | 'round' | 'miter'
|
|
87
|
+
|
|
88
|
+
// 文本
|
|
89
|
+
export type ITextAlign = 'left' | 'center' | 'right' | 'justify'
|
|
90
|
+
export type IVerticalAlign = 'top' | 'middle' | 'bottom'
|
|
91
|
+
export type ITextCase = | 'upper' | 'lower' | 'title' | 'none' | 'small-caps'
|
|
92
|
+
export type IFontWeight = IFontWeightNumer | IFontWeightString
|
|
93
|
+
export type IFontWeightNumer = 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900
|
|
94
|
+
export type IFontWeightString =
|
|
95
|
+
| 'thin'
|
|
96
|
+
| 'extra-light'
|
|
97
|
+
| 'light'
|
|
98
|
+
| 'normal'
|
|
99
|
+
| 'medium'
|
|
100
|
+
| 'semi-bold'
|
|
101
|
+
| 'bold'
|
|
102
|
+
| 'extra-bold'
|
|
103
|
+
| 'black'
|
|
104
|
+
export type ITextDecoration = 'none' | 'under' | 'delete'
|
|
105
|
+
|
|
106
|
+
// 路径
|
|
107
|
+
export interface IVectorPath {
|
|
108
|
+
rule?: IWindingRule,
|
|
109
|
+
data: string | IPathCommandData
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// 特效
|
|
113
|
+
export interface IShadowEffect {
|
|
114
|
+
x: number
|
|
115
|
+
y: number
|
|
116
|
+
blur: number
|
|
117
|
+
spread?: number
|
|
118
|
+
color: IColorString | IColor
|
|
119
|
+
blendMode?: IBlendMode
|
|
120
|
+
visible?: boolean
|
|
121
|
+
box?: boolean
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
export interface IBlurEffect {
|
|
125
|
+
blur: number
|
|
126
|
+
visible?: boolean
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
export interface IGrayscaleEffect {
|
|
130
|
+
grayscale: number
|
|
131
|
+
visible?: boolean
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
export type IOverflow = 'show' | 'hide'
|