@leafer/interface 1.0.0-beta.15 → 1.0.0-beta.16
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 +2 -1
- package/src/app/IApp.ts +6 -0
- package/src/app/ILeafer.ts +103 -0
- package/src/canvas/ICanvas.ts +334 -0
- package/src/canvas/ICanvasManager.ts +10 -0
- package/src/canvas/IHitCanvasManager.ts +9 -0
- package/src/canvas/ILeaferCanvas.ts +205 -0
- package/src/canvas/ISkiaCanvas.ts +20 -0
- package/src/control/IControl.ts +5 -0
- package/src/data/IData.ts +28 -0
- package/src/data/ILeafData.ts +27 -0
- package/src/data/IList.ts +45 -0
- package/src/display/IBranch.ts +10 -0
- package/src/display/ILeaf.ts +385 -0
- package/src/display/IView.ts +10 -0
- package/src/display/module/IBranchRender.ts +10 -0
- package/src/display/module/ILeafBounds.ts +23 -0
- package/src/display/module/ILeafDataProxy.ts +10 -0
- package/src/display/module/ILeafEventer.ts +18 -0
- package/src/display/module/ILeafHit.ts +12 -0
- package/src/display/module/ILeafMask.ts +12 -0
- package/src/display/module/ILeafMatrix.ts +8 -0
- package/src/display/module/ILeafRender.ts +16 -0
- package/src/event/IEvent.ts +111 -0
- package/src/event/IEventer.ts +43 -0
- package/src/event/IUIEvent.ts +88 -0
- package/src/file/IFileType.ts +2 -0
- package/src/function/IFunction.ts +13 -0
- package/src/image/IImageManager.ts +18 -0
- package/src/image/ILeaferImage.ts +43 -0
- package/src/interaction/IInteraction.ts +106 -0
- package/src/layout/ILeafLayout.ts +94 -0
- package/src/layouter/ILayouter.ts +60 -0
- package/src/math/IMath.ts +182 -0
- package/src/path/IPathCommand.ts +50 -0
- package/src/path/IPathDrawer.ts +41 -0
- package/src/platform/IPlatform.ts +49 -0
- package/src/plugin/IPlugin.ts +10 -0
- package/src/renderer/IRenderer.ts +53 -0
- package/src/selector/ISelector.ts +35 -0
- package/src/task/ITaskProcessor.ts +44 -0
- package/src/watcher/IWatcher.ts +34 -0
package/package.json
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@leafer/interface",
|
|
3
|
-
"version": "1.0.0-beta.
|
|
3
|
+
"version": "1.0.0-beta.16",
|
|
4
4
|
"description": "@leafer/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
|
],
|
package/src/app/IApp.ts
ADDED
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { ILeaf } from '../display/ILeaf'
|
|
2
|
+
import { IRenderer, IRendererConfig } from '../renderer/IRenderer'
|
|
3
|
+
import { IHitCanvas, ILeaferCanvas, ILeaferCanvasConfig, IHitCanvasConfig } from '../canvas/ILeaferCanvas'
|
|
4
|
+
import { ILayouter, ILayouterConfig } from '../layouter/ILayouter'
|
|
5
|
+
import { ISelector, ISelectorConfig } from '../selector/ISelector'
|
|
6
|
+
import { IInteraction, IInteractionCanvas, IInteractionConfig } from '../interaction/IInteraction'
|
|
7
|
+
import { IWatcher, IWatcherConfig } from '../watcher/IWatcher'
|
|
8
|
+
import { IAutoBounds, IScreenSizeData } from '../math/IMath'
|
|
9
|
+
import { ICanvasManager } from '../canvas/ICanvasManager'
|
|
10
|
+
import { IHitCanvasManager } from '../canvas/IHitCanvasManager'
|
|
11
|
+
import { IEventListenerId } from '../event/IEventer'
|
|
12
|
+
import { IObject } from '../data/IData'
|
|
13
|
+
import { IZoomView } from '../display/IView'
|
|
14
|
+
import { IApp } from './IApp'
|
|
15
|
+
import { ILeaferImage, ILeaferImageConfig } from '../image/ILeaferImage'
|
|
16
|
+
import { IControl } from '../control/IControl'
|
|
17
|
+
import { IFunction } from '../function/IFunction'
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
export type ILeaferType = 'draw' | 'design' | 'board' | 'document' | 'user'
|
|
21
|
+
export interface ILeaferConfig extends IRendererConfig, ILeaferCanvasConfig, IInteractionConfig, ILayouterConfig {
|
|
22
|
+
start?: boolean
|
|
23
|
+
type?: ILeaferType
|
|
24
|
+
realCanvas?: boolean
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export interface ILeafer extends IZoomView, IControl {
|
|
28
|
+
|
|
29
|
+
readonly isApp: boolean
|
|
30
|
+
readonly app: ILeafer
|
|
31
|
+
parent?: IApp
|
|
32
|
+
|
|
33
|
+
running: boolean
|
|
34
|
+
created: boolean
|
|
35
|
+
ready: boolean
|
|
36
|
+
viewReady: boolean
|
|
37
|
+
viewCompleted: boolean
|
|
38
|
+
|
|
39
|
+
pixelRatio: number
|
|
40
|
+
|
|
41
|
+
view: unknown
|
|
42
|
+
|
|
43
|
+
canvas: ILeaferCanvas
|
|
44
|
+
renderer: IRenderer
|
|
45
|
+
|
|
46
|
+
watcher: IWatcher
|
|
47
|
+
layouter: ILayouter
|
|
48
|
+
|
|
49
|
+
selector?: ISelector
|
|
50
|
+
interaction?: IInteraction
|
|
51
|
+
|
|
52
|
+
canvasManager: ICanvasManager
|
|
53
|
+
hitCanvasManager?: IHitCanvasManager
|
|
54
|
+
|
|
55
|
+
autoLayout?: IAutoBounds
|
|
56
|
+
|
|
57
|
+
config: ILeaferConfig
|
|
58
|
+
|
|
59
|
+
__eventIds: IEventListenerId[]
|
|
60
|
+
__nextRenderWait: IFunction[]
|
|
61
|
+
|
|
62
|
+
init(userConfig?: ILeaferConfig, parentApp?: IApp): void
|
|
63
|
+
setZoomLayer(zoomLayer: ILeaf, moveLayer?: ILeaf): void
|
|
64
|
+
forceFullRender(): void
|
|
65
|
+
updateCursor(): void
|
|
66
|
+
resize(size: IScreenSizeData): void
|
|
67
|
+
|
|
68
|
+
waitReady(item: IFunction): void
|
|
69
|
+
waitViewReady(item: IFunction): void
|
|
70
|
+
waitViewCompleted(item: IFunction): void
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
export interface ILeaferTypeCreator {
|
|
74
|
+
list: ILeaferTypeList
|
|
75
|
+
register(name: string, fn: ILeaferTypeFunction): void
|
|
76
|
+
run(name: string, leafer: ILeafer): void
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export interface ILeaferTypeFunction {
|
|
80
|
+
(leafer: ILeafer): void
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
export interface ILeaferTypeList {
|
|
84
|
+
[key: string]: ILeaferTypeFunction
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
export interface ICreator {
|
|
88
|
+
image?(options?: ILeaferImageConfig): ILeaferImage
|
|
89
|
+
canvas?(options?: ILeaferCanvasConfig, manager?: ICanvasManager): ILeaferCanvas
|
|
90
|
+
hitCanvas?(options?: IHitCanvasConfig, manager?: ICanvasManager): IHitCanvas
|
|
91
|
+
|
|
92
|
+
watcher?(target: ILeaf, options?: IWatcherConfig): IWatcher
|
|
93
|
+
layouter?(target: ILeaf, options?: ILayouterConfig): ILayouter
|
|
94
|
+
renderer?(target: ILeaf, canvas: ILeaferCanvas, options?: IRendererConfig): IRenderer
|
|
95
|
+
selector?(target: ILeaf, options?: ISelectorConfig): ISelector
|
|
96
|
+
|
|
97
|
+
interaction?(target: ILeaf, canvas: IInteractionCanvas, selector: ISelector, options?: IInteractionConfig): IInteraction
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
export interface IUICreator {
|
|
101
|
+
register(UI: IObject): void
|
|
102
|
+
get(tag: string, data: IObject): IObject
|
|
103
|
+
}
|
|
@@ -0,0 +1,334 @@
|
|
|
1
|
+
type GlobalCompositeOperation = 'color' | 'color-burn' | 'color-dodge' | 'copy' | 'darken' | 'destination-atop' | 'destination-in' | 'destination-out' | 'destination-over' | 'difference' | 'exclusion' | 'hard-light' | 'hue' | 'lighten' | 'lighter' | 'luminosity' | 'multiply' | 'overlay' | 'saturation' | 'screen' | 'soft-light' | 'source-atop' | 'source-in' | 'source-out' | 'source-over' | 'xor'
|
|
2
|
+
type CanvasDirection = 'inherit' | 'ltr' | 'rtl'
|
|
3
|
+
export type IWindingRule = 'evenodd' | 'nonzero'
|
|
4
|
+
// type CanvasFontKerning = 'auto' | 'none' | 'normal'
|
|
5
|
+
// type CanvasFontStretch = 'condensed' | 'expanded' | 'extra-condensed' | 'extra-expanded' | 'normal' | 'semi-condensed' | 'semi-expanded' | 'ultra-condensed' | 'ultra-expanded'
|
|
6
|
+
// type CanvasFontVariantCaps = 'all-petite-caps' | 'all-small-caps' | 'normal' | 'petite-caps' | 'small-caps' | 'titling-caps' | 'unicase'
|
|
7
|
+
type CanvasLineCap = 'butt' | 'round' | 'square'
|
|
8
|
+
type CanvasLineJoin = 'bevel' | 'miter' | 'round'
|
|
9
|
+
type CanvasTextAlign = 'center' | 'end' | 'left' | 'right' | 'start'
|
|
10
|
+
type CanvasTextBaseline = 'alphabetic' | 'bottom' | 'hanging' | 'ideographic' | 'middle' | 'top'
|
|
11
|
+
//type CanvasTextRendering = 'auto' | 'geometricPrecision' | 'optimizeLegibility' | 'optimizeSpeed'
|
|
12
|
+
|
|
13
|
+
export interface IPath2D extends CanvasPath {
|
|
14
|
+
addPath(path: IPath2D, transform?: DOMMatrix2DInit): void
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
declare var IPath2D: {
|
|
18
|
+
prototype: IPath2D
|
|
19
|
+
new(path?: IPath2D | string): IPath2D
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
interface CanvasCompositing {
|
|
23
|
+
globalAlpha: number
|
|
24
|
+
globalCompositeOperation: GlobalCompositeOperation
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
type CanvasImageSource = any
|
|
28
|
+
interface CanvasDrawImage {
|
|
29
|
+
drawImage(image: CanvasImageSource, dx: number, dy: number): void
|
|
30
|
+
drawImage(image: CanvasImageSource, dx: number, dy: number, dw: number, dh: number): void
|
|
31
|
+
drawImage(image: CanvasImageSource, sx: number, sy: number, sw: number, sh: number, dx: number, dy: number, dw: number, dh: number): void
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
interface CanvasDrawPath {
|
|
35
|
+
beginPath(): void
|
|
36
|
+
clip(fillRule?: IWindingRule): void
|
|
37
|
+
clip(path: IPath2D, fillRule?: IWindingRule): void
|
|
38
|
+
fill(fillRule?: IWindingRule): void
|
|
39
|
+
fill(path: IPath2D, fillRule?: IWindingRule): void
|
|
40
|
+
isPointInPath(x: number, y: number, fillRule?: IWindingRule): boolean
|
|
41
|
+
isPointInPath(path: IPath2D, x: number, y: number, fillRule?: IWindingRule): boolean
|
|
42
|
+
isPointInStroke(x: number, y: number): boolean
|
|
43
|
+
isPointInStroke(path: IPath2D, x: number, y: number): boolean
|
|
44
|
+
stroke(): void
|
|
45
|
+
stroke(path: IPath2D): void
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
interface CanvasFillStrokeStyles {
|
|
49
|
+
fillStyle: string | CanvasGradient | CanvasPattern
|
|
50
|
+
strokeStyle: string | CanvasGradient | CanvasPattern
|
|
51
|
+
createConicGradient(startAngle: number, x: number, y: number): CanvasGradient
|
|
52
|
+
createLinearGradient(x0: number, y0: number, x1: number, y1: number): CanvasGradient
|
|
53
|
+
createPattern(image: CanvasImageSource, repetition: string | null): CanvasPattern | null
|
|
54
|
+
createRadialGradient(x0: number, y0: number, r0: number, x1: number, y1: number, r1: number): CanvasGradient
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
interface CanvasFilters {
|
|
58
|
+
filter: string
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export interface CanvasGradient {
|
|
62
|
+
addColorStop(offset: number, color: string): void
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
declare var CanvasGradient: {
|
|
66
|
+
prototype: CanvasGradient
|
|
67
|
+
new(): CanvasGradient
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
interface ImageDataSettings {
|
|
71
|
+
colorSpace?: PredefinedColorSpace
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
interface CanvasImageData {
|
|
75
|
+
createImageData(sw: number, sh: number, settings?: ImageDataSettings): ImageData
|
|
76
|
+
createImageData(imagedata: ImageData): ImageData
|
|
77
|
+
getImageData(sx: number, sy: number, sw: number, sh: number, settings?: ImageDataSettings): ImageData
|
|
78
|
+
putImageData(imagedata: ImageData, dx: number, dy: number): void
|
|
79
|
+
putImageData(imagedata: ImageData, dx: number, dy: number, dirtyX: number, dirtyY: number, dirtyWidth: number, dirtyHeight: number): void
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
interface CanvasImageSmoothing {
|
|
83
|
+
imageSmoothingEnabled: boolean
|
|
84
|
+
imageSmoothingQuality: ImageSmoothingQuality
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
interface CanvasPath {
|
|
88
|
+
arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, anticlockwise?: boolean): void
|
|
89
|
+
arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): void
|
|
90
|
+
bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): void
|
|
91
|
+
closePath(): void
|
|
92
|
+
ellipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number, startAngle: number, endAngle: number, anticlockwise?: boolean): void
|
|
93
|
+
lineTo(x: number, y: number): void
|
|
94
|
+
moveTo(x: number, y: number): void
|
|
95
|
+
quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void
|
|
96
|
+
rect(x: number, y: number, w: number, h: number): void
|
|
97
|
+
roundRect(x: number, y: number, width: number, height: number, radius?: number | number[]): void
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
interface CanvasPathDrawingStyles {
|
|
101
|
+
lineCap: CanvasLineCap
|
|
102
|
+
lineDashOffset: number
|
|
103
|
+
lineJoin: CanvasLineJoin
|
|
104
|
+
lineWidth: number
|
|
105
|
+
miterLimit: number
|
|
106
|
+
getLineDash(): number[]
|
|
107
|
+
setLineDash(segments: number[]): void
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
export interface CanvasPattern {
|
|
111
|
+
setTransform(transform?: DOMMatrix2DInit): void
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
declare var CanvasPattern: {
|
|
115
|
+
prototype: CanvasPattern
|
|
116
|
+
new(): CanvasPattern
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
interface CanvasRect {
|
|
120
|
+
clearRect(x: number, y: number, w: number, h: number): void
|
|
121
|
+
fillRect(x: number, y: number, w: number, h: number): void
|
|
122
|
+
strokeRect(x: number, y: number, w: number, h: number): void
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
type PredefinedColorSpace = 'display-p3' | 'srgb'
|
|
126
|
+
interface CanvasRenderingContext2DSettings {
|
|
127
|
+
alpha?: boolean
|
|
128
|
+
colorSpace?: PredefinedColorSpace
|
|
129
|
+
desynchronized?: boolean
|
|
130
|
+
willReadFrequently?: boolean
|
|
131
|
+
}
|
|
132
|
+
export interface ICanvasContext2D extends CanvasCompositing, CanvasDrawImage, CanvasDrawPath, CanvasFillStrokeStyles, CanvasFilters, CanvasImageData, CanvasImageSmoothing, CanvasPath, CanvasPathDrawingStyles, CanvasRect, CanvasShadowStyles, CanvasState, CanvasText, CanvasTextDrawingStyles, CanvasTransform, CanvasUserInterface {
|
|
133
|
+
readonly canvas: HTMLCanvasElement
|
|
134
|
+
getContextAttributes(): CanvasRenderingContext2DSettings
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
declare var ICanvasContext2D: {
|
|
138
|
+
prototype: ICanvasContext2D
|
|
139
|
+
new(): ICanvasContext2D
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
interface CanvasShadowStyles {
|
|
143
|
+
shadowBlur: number
|
|
144
|
+
shadowColor: string
|
|
145
|
+
shadowOffsetX: number
|
|
146
|
+
shadowOffsetY: number
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
interface CanvasState {
|
|
150
|
+
restore(): void
|
|
151
|
+
save(): void
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
interface CanvasUserInterface {
|
|
155
|
+
drawFocusIfNeeded(element: any): void
|
|
156
|
+
drawFocusIfNeeded(path: IPath2D, element: any): void
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
export interface ITextMetrics {
|
|
161
|
+
/** Returns the measurement described below. */
|
|
162
|
+
readonly actualBoundingBoxAscent: number
|
|
163
|
+
/** Returns the measurement described below. */
|
|
164
|
+
readonly actualBoundingBoxDescent: number
|
|
165
|
+
/** Returns the measurement described below. */
|
|
166
|
+
readonly actualBoundingBoxLeft: number
|
|
167
|
+
/** Returns the measurement described below. */
|
|
168
|
+
readonly actualBoundingBoxRight: number
|
|
169
|
+
/** Returns the measurement described below. */
|
|
170
|
+
readonly fontBoundingBoxAscent: number
|
|
171
|
+
/** Returns the measurement described below. */
|
|
172
|
+
readonly fontBoundingBoxDescent: number
|
|
173
|
+
/** Returns the measurement described below. */
|
|
174
|
+
readonly width: number
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
declare var TextMetrics: {
|
|
178
|
+
prototype: ITextMetrics
|
|
179
|
+
new(): ITextMetrics
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
interface CanvasText {
|
|
183
|
+
fillText(text: string, x: number, y: number, maxWidth?: number): void
|
|
184
|
+
measureText(text: string): ITextMetrics
|
|
185
|
+
strokeText(text: string, x: number, y: number, maxWidth?: number): void
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
interface CanvasTextDrawingStyles {
|
|
189
|
+
direction: CanvasDirection
|
|
190
|
+
font: string
|
|
191
|
+
textAlign: CanvasTextAlign
|
|
192
|
+
textBaseline: CanvasTextBaseline
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
interface CanvasTransform {
|
|
196
|
+
getTransform(): DOMMatrix
|
|
197
|
+
resetTransform(): void
|
|
198
|
+
rotate(angle: number): void
|
|
199
|
+
scale(x: number, y: number): void
|
|
200
|
+
setTransform(a: number, b: number, c: number, d: number, e: number, f: number): void
|
|
201
|
+
setTransform(transform?: DOMMatrix2DInit): void
|
|
202
|
+
transform(a: number, b: number, c: number, d: number, e: number, f: number): void
|
|
203
|
+
translate(x: number, y: number): void
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
interface DOMMatrix2DInit {
|
|
209
|
+
a?: number
|
|
210
|
+
b?: number
|
|
211
|
+
c?: number
|
|
212
|
+
d?: number
|
|
213
|
+
e?: number
|
|
214
|
+
f?: number
|
|
215
|
+
m11?: number
|
|
216
|
+
m12?: number
|
|
217
|
+
m21?: number
|
|
218
|
+
m22?: number
|
|
219
|
+
m41?: number
|
|
220
|
+
m42?: number
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
interface DOMMatrixInit extends DOMMatrix2DInit {
|
|
224
|
+
is2D?: boolean
|
|
225
|
+
m13?: number
|
|
226
|
+
m14?: number
|
|
227
|
+
m23?: number
|
|
228
|
+
m24?: number
|
|
229
|
+
m31?: number
|
|
230
|
+
m32?: number
|
|
231
|
+
m33?: number
|
|
232
|
+
m34?: number
|
|
233
|
+
m43?: number
|
|
234
|
+
m44?: number
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
interface DOMMatrixReadOnly {
|
|
238
|
+
readonly a: number
|
|
239
|
+
readonly b: number
|
|
240
|
+
readonly c: number
|
|
241
|
+
readonly d: number
|
|
242
|
+
readonly e: number
|
|
243
|
+
readonly f: number
|
|
244
|
+
readonly is2D: boolean
|
|
245
|
+
readonly isIdentity: boolean
|
|
246
|
+
readonly m11: number
|
|
247
|
+
readonly m12: number
|
|
248
|
+
readonly m13: number
|
|
249
|
+
readonly m14: number
|
|
250
|
+
readonly m21: number
|
|
251
|
+
readonly m22: number
|
|
252
|
+
readonly m23: number
|
|
253
|
+
readonly m24: number
|
|
254
|
+
readonly m31: number
|
|
255
|
+
readonly m32: number
|
|
256
|
+
readonly m33: number
|
|
257
|
+
readonly m34: number
|
|
258
|
+
readonly m41: number
|
|
259
|
+
readonly m42: number
|
|
260
|
+
readonly m43: number
|
|
261
|
+
readonly m44: number
|
|
262
|
+
flipX(): DOMMatrix
|
|
263
|
+
flipY(): DOMMatrix
|
|
264
|
+
inverse(): DOMMatrix
|
|
265
|
+
multiply(other?: DOMMatrixInit): DOMMatrix
|
|
266
|
+
rotate(rotX?: number, rotY?: number, rotZ?: number): DOMMatrix
|
|
267
|
+
rotateAxisAngle(x?: number, y?: number, z?: number, angle?: number): DOMMatrix
|
|
268
|
+
rotateFromVector(x?: number, y?: number): DOMMatrix
|
|
269
|
+
scale(scaleX?: number, scaleY?: number, scaleZ?: number, originX?: number, originY?: number, originZ?: number): DOMMatrix
|
|
270
|
+
scale3d(scale?: number, originX?: number, originY?: number, originZ?: number): DOMMatrix
|
|
271
|
+
scaleNonUniform(scaleX?: number, scaleY?: number): DOMMatrix
|
|
272
|
+
skewX(sx?: number): DOMMatrix
|
|
273
|
+
skewY(sy?: number): DOMMatrix
|
|
274
|
+
toFloat32Array(): Float32Array
|
|
275
|
+
toFloat64Array(): Float64Array
|
|
276
|
+
toJSON(): any
|
|
277
|
+
transformPoint(point?: DOMPointInit): DOMPoint
|
|
278
|
+
translate(tx?: number, ty?: number, tz?: number): DOMMatrix
|
|
279
|
+
toString(): string
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
declare var DOMMatrixReadOnly: {
|
|
283
|
+
prototype: DOMMatrixReadOnly
|
|
284
|
+
new(init?: string | number[]): DOMMatrixReadOnly
|
|
285
|
+
fromFloat32Array(array32: Float32Array): DOMMatrixReadOnly
|
|
286
|
+
fromFloat64Array(array64: Float64Array): DOMMatrixReadOnly
|
|
287
|
+
fromMatrix(other?: DOMMatrixInit): DOMMatrixReadOnly
|
|
288
|
+
toString(): string
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
interface DOMMatrix extends DOMMatrixReadOnly {
|
|
292
|
+
a: number
|
|
293
|
+
b: number
|
|
294
|
+
c: number
|
|
295
|
+
d: number
|
|
296
|
+
e: number
|
|
297
|
+
f: number
|
|
298
|
+
m11: number
|
|
299
|
+
m12: number
|
|
300
|
+
m13: number
|
|
301
|
+
m14: number
|
|
302
|
+
m21: number
|
|
303
|
+
m22: number
|
|
304
|
+
m23: number
|
|
305
|
+
m24: number
|
|
306
|
+
m31: number
|
|
307
|
+
m32: number
|
|
308
|
+
m33: number
|
|
309
|
+
m34: number
|
|
310
|
+
m41: number
|
|
311
|
+
m42: number
|
|
312
|
+
m43: number
|
|
313
|
+
m44: number
|
|
314
|
+
invertSelf(): DOMMatrix
|
|
315
|
+
multiplySelf(other?: DOMMatrixInit): DOMMatrix
|
|
316
|
+
preMultiplySelf(other?: DOMMatrixInit): DOMMatrix
|
|
317
|
+
rotateAxisAngleSelf(x?: number, y?: number, z?: number, angle?: number): DOMMatrix
|
|
318
|
+
rotateFromVectorSelf(x?: number, y?: number): DOMMatrix
|
|
319
|
+
rotateSelf(rotX?: number, rotY?: number, rotZ?: number): DOMMatrix
|
|
320
|
+
scale3dSelf(scale?: number, originX?: number, originY?: number, originZ?: number): DOMMatrix
|
|
321
|
+
scaleSelf(scaleX?: number, scaleY?: number, scaleZ?: number, originX?: number, originY?: number, originZ?: number): DOMMatrix
|
|
322
|
+
setMatrixValue(transformList: string): DOMMatrix
|
|
323
|
+
skewXSelf(sx?: number): DOMMatrix
|
|
324
|
+
skewYSelf(sy?: number): DOMMatrix
|
|
325
|
+
translateSelf(tx?: number, ty?: number, tz?: number): DOMMatrix
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
declare var DOMMatrix: {
|
|
329
|
+
prototype: DOMMatrix
|
|
330
|
+
new(init?: string | number[]): DOMMatrix
|
|
331
|
+
fromFloat32Array(array32: Float32Array): DOMMatrix
|
|
332
|
+
fromFloat64Array(array64: Float64Array): DOMMatrix
|
|
333
|
+
fromMatrix(other?: DOMMatrixInit): DOMMatrix
|
|
334
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { IScreenSizeData, ILeaferCanvas } from '@leafer/interface'
|
|
2
|
+
|
|
3
|
+
export interface ICanvasManager {
|
|
4
|
+
add(canvas: ILeaferCanvas): void
|
|
5
|
+
get(size: IScreenSizeData): ILeaferCanvas
|
|
6
|
+
recycle(old: ILeaferCanvas): void
|
|
7
|
+
clearRecycled(): void
|
|
8
|
+
clear(): void
|
|
9
|
+
destroy(): void
|
|
10
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ILeaf } from '../display/ILeaf'
|
|
2
|
+
import { IScreenSizeData } from '../math/IMath'
|
|
3
|
+
import { ICanvasManager } from './ICanvasManager'
|
|
4
|
+
import { IHitCanvas } from './ILeaferCanvas'
|
|
5
|
+
|
|
6
|
+
export interface IHitCanvasManager extends ICanvasManager {
|
|
7
|
+
getPathType(leaf: ILeaf): IHitCanvas
|
|
8
|
+
getImageType(leaf: ILeaf, size: IScreenSizeData): IHitCanvas
|
|
9
|
+
}
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
import { IObject } from '../data/IData'
|
|
2
|
+
import { IBounds, IMatrixData, IBoundsData, IAutoBoundsData, IAutoBounds, IScreenSizeData, IMatrixWithBoundsData, IPointData } from '../math/IMath'
|
|
3
|
+
import { ICanvasContext2D, IWindingRule, IPath2D, ITextMetrics, CanvasGradient, CanvasPattern } from './ICanvas'
|
|
4
|
+
import { IResizeEventListener } from '../event/IEvent'
|
|
5
|
+
import { IPathDrawer } from '../path/IPathDrawer'
|
|
6
|
+
import { InnerId } from '../event/IEventer'
|
|
7
|
+
import { ICanvasManager } from './ICanvasManager'
|
|
8
|
+
import { ICursorType } from '../display/ILeaf'
|
|
9
|
+
|
|
10
|
+
export interface ILeaferCanvasConfig extends IAutoBoundsData {
|
|
11
|
+
view?: string | IObject
|
|
12
|
+
fill?: string
|
|
13
|
+
pixelRatio?: number
|
|
14
|
+
smooth?: boolean
|
|
15
|
+
hittable?: boolean
|
|
16
|
+
webgl?: boolean
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export type IHitCanvasConfig = ILeaferCanvasConfig
|
|
20
|
+
|
|
21
|
+
export interface ICanvasStrokeOptions {
|
|
22
|
+
strokeWidth?: number
|
|
23
|
+
strokeAlign?: string
|
|
24
|
+
|
|
25
|
+
strokeCap?: string // lineCap
|
|
26
|
+
strokeJoin?: string // lineJoin
|
|
27
|
+
dashPattern?: number[] // lineDash
|
|
28
|
+
dashOffset?: number // lineDashOffset
|
|
29
|
+
miterLimit?: number
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export interface ICanvasAttr extends ICanvasStrokeOptions, IObject {
|
|
33
|
+
|
|
34
|
+
smooth: boolean // imageSmoothingEnabled: boolean
|
|
35
|
+
smoothLevel: string // imageSmoothingQuality: string
|
|
36
|
+
opacity: number // globalAlpha: number
|
|
37
|
+
blendMode: string // globalCompositeOperation: string
|
|
38
|
+
|
|
39
|
+
fillStyle: string | object
|
|
40
|
+
|
|
41
|
+
strokeStyle: string | object
|
|
42
|
+
strokeWidth: number // lineWidth
|
|
43
|
+
|
|
44
|
+
shadowBlur: number
|
|
45
|
+
shadowColor: string
|
|
46
|
+
shadowOffsetX: number
|
|
47
|
+
shadowOffsetY: number
|
|
48
|
+
|
|
49
|
+
filter: string
|
|
50
|
+
|
|
51
|
+
font: string
|
|
52
|
+
fontKerning: string
|
|
53
|
+
fontStretch: string
|
|
54
|
+
fontVariantCaps: string
|
|
55
|
+
|
|
56
|
+
textAlign: string
|
|
57
|
+
textBaseline: string
|
|
58
|
+
textRendering: string
|
|
59
|
+
wordSpacing: string
|
|
60
|
+
letterSpacing: string
|
|
61
|
+
|
|
62
|
+
direction: string
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
interface ICanvasMethod {
|
|
66
|
+
save(): void
|
|
67
|
+
restore(): void
|
|
68
|
+
|
|
69
|
+
fill(path?: IPath2D | IWindingRule, rule?: IWindingRule): void
|
|
70
|
+
stroke(path?: IPath2D): void
|
|
71
|
+
clip(path?: IPath2D | IWindingRule, rule?: IWindingRule): void
|
|
72
|
+
|
|
73
|
+
fillRect(x: number, y: number, width: number, height: number): void
|
|
74
|
+
strokeRect(x: number, y: number, width: number, height: number): void
|
|
75
|
+
clearRect(x: number, y: number, width: number, height: number): void
|
|
76
|
+
|
|
77
|
+
transform(a: number | IMatrixData, b?: number, c?: number, d?: number, e?: number, f?: number): void
|
|
78
|
+
translate(x: number, y: number): void
|
|
79
|
+
scale(x: number, y: number): void
|
|
80
|
+
rotate(angle: number): void
|
|
81
|
+
|
|
82
|
+
drawImage(image: CanvasImageSource, dx: number, dy: number): void
|
|
83
|
+
drawImage(image: CanvasImageSource, dx: number, dy: number, dw: number, dh: number): void
|
|
84
|
+
drawImage(image: CanvasImageSource, sx: number, sy: number, sw: number, sh: number, dx: number, dy: number, dw: number, dh: number): void
|
|
85
|
+
|
|
86
|
+
setTransform(a: number | IMatrixData, b?: number, c?: number, d?: number, e?: number, f?: number): void
|
|
87
|
+
getTransform(): IMatrixData
|
|
88
|
+
resetTransform(): void
|
|
89
|
+
|
|
90
|
+
createConicGradient(startAngle: number, x: number, y: number): CanvasGradient
|
|
91
|
+
createLinearGradient(x0: number, y0: number, x1: number, y1: number): CanvasGradient
|
|
92
|
+
createPattern(image: CanvasImageSource, repetition: string | null): CanvasPattern | null
|
|
93
|
+
createRadialGradient(x0: number, y0: number, r0: number, x1: number, y1: number, r1: number): CanvasGradient
|
|
94
|
+
|
|
95
|
+
// text
|
|
96
|
+
|
|
97
|
+
fillText(text: string, x: number, y: number, maxWidth?: number): void
|
|
98
|
+
measureText(text: string): ITextMetrics
|
|
99
|
+
strokeText(text: string, x: number, y: number, maxWidth?: number): void
|
|
100
|
+
|
|
101
|
+
// custom
|
|
102
|
+
|
|
103
|
+
saveBlendMode(blendMode?: string): void
|
|
104
|
+
restoreBlendMode(): void
|
|
105
|
+
|
|
106
|
+
hitFill(point: IPointData, fillRule?: string): boolean
|
|
107
|
+
hitStroke(point: IPointData, strokeWidth?: number): boolean
|
|
108
|
+
|
|
109
|
+
setStroke(strokeStyle: string | object, strokeWidth: number, options?: ICanvasStrokeOptions): void
|
|
110
|
+
setStrokeOptions(options: ICanvasStrokeOptions): void
|
|
111
|
+
|
|
112
|
+
setWorld(matrix: IMatrixData, parentMatrix?: IMatrixData): void
|
|
113
|
+
useWorldTransform(worldTransform?: IMatrixData): void
|
|
114
|
+
|
|
115
|
+
setWorldShadow(x: number, y: number, blur: number, color?: string): void
|
|
116
|
+
setWorldBlur(blur: number): void
|
|
117
|
+
|
|
118
|
+
copyWorld(canvas: ILeaferCanvas, fromBounds?: IBoundsData, toBounds?: IBoundsData, blendMode?: string): void
|
|
119
|
+
copyWorldByReset(canvas: ILeaferCanvas, from?: IBoundsData, to?: IBoundsData, blendMode?: string): void
|
|
120
|
+
copyWorldToInner(canvas: ILeaferCanvas, fromWorld: IMatrixWithBoundsData, toInnerBounds: IBoundsData, blendMode?: string): void
|
|
121
|
+
|
|
122
|
+
useMask(maskCanvas: ILeaferCanvas, fromBounds?: IBoundsData, toBounds?: IBoundsData): void
|
|
123
|
+
useEraser(eraserCanvas: ILeaferCanvas, fromBounds?: IBoundsData, toBounds?: IBoundsData): void
|
|
124
|
+
|
|
125
|
+
fillWorld(bounds: IBoundsData, color: string | object, blendMode?: string): void
|
|
126
|
+
strokeWorld(bounds: IBoundsData, color: string | object, blendMode?: string): void
|
|
127
|
+
clipWorld(bounds: IBoundsData, ceilPixel?: boolean): void
|
|
128
|
+
clearWorld(bounds: IBoundsData, ceilPixel?: boolean): void
|
|
129
|
+
|
|
130
|
+
clear(): void
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
export interface ILeaferCanvas extends ICanvasAttr, ICanvasMethod, IPathDrawer {
|
|
134
|
+
|
|
135
|
+
readonly innerId: InnerId
|
|
136
|
+
name: string
|
|
137
|
+
|
|
138
|
+
manager: ICanvasManager
|
|
139
|
+
|
|
140
|
+
width: number
|
|
141
|
+
height: number
|
|
142
|
+
|
|
143
|
+
pixelRatio: number
|
|
144
|
+
readonly pixelWidth: number
|
|
145
|
+
readonly pixelHeight: number
|
|
146
|
+
|
|
147
|
+
readonly allowBackgroundColor?: boolean
|
|
148
|
+
backgroundColor?: string
|
|
149
|
+
hittable?: boolean
|
|
150
|
+
|
|
151
|
+
bounds: IBounds
|
|
152
|
+
clientBounds: IBoundsData
|
|
153
|
+
|
|
154
|
+
config: ILeaferCanvasConfig
|
|
155
|
+
|
|
156
|
+
autoLayout: boolean
|
|
157
|
+
|
|
158
|
+
view: any
|
|
159
|
+
parentView: any
|
|
160
|
+
|
|
161
|
+
unreal?: boolean
|
|
162
|
+
|
|
163
|
+
context: ICanvasContext2D
|
|
164
|
+
|
|
165
|
+
recycled?: boolean
|
|
166
|
+
|
|
167
|
+
worldTransform: IMatrixData
|
|
168
|
+
|
|
169
|
+
init(): void
|
|
170
|
+
|
|
171
|
+
toBlob(type?: string, quality?: number): Promise<IBlob>
|
|
172
|
+
toDataURL(type?: string, quality?: number): string | Promise<string>
|
|
173
|
+
saveAs(filename: string, quality?: number): Promise<boolean>
|
|
174
|
+
|
|
175
|
+
startAutoLayout(autoBounds: IAutoBounds, listener: IResizeEventListener): void
|
|
176
|
+
stopAutoLayout(): void
|
|
177
|
+
|
|
178
|
+
resize(size: IScreenSizeData): void
|
|
179
|
+
updateViewSize(): void
|
|
180
|
+
updateClientBounds(): void
|
|
181
|
+
|
|
182
|
+
setCursor(cursor: ICursorType | ICursorType[]): void
|
|
183
|
+
|
|
184
|
+
// other
|
|
185
|
+
isSameSize(options: ILeaferCanvasConfig): boolean
|
|
186
|
+
getSameCanvas(useSameWorldTransform?: boolean): ILeaferCanvas
|
|
187
|
+
getBiggerCanvas(addWidth: number, addHeight: number): ILeaferCanvas
|
|
188
|
+
recycle(): void
|
|
189
|
+
|
|
190
|
+
updateRender(): void
|
|
191
|
+
unrealCanvas(): void
|
|
192
|
+
destroy(): void
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
|
|
196
|
+
export interface IHitCanvas extends ILeaferCanvas {
|
|
197
|
+
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
export interface IBlobFunction {
|
|
202
|
+
(blob: IBlob | null): void
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
export type IBlob = any
|