@leafer/image 2.0.1 → 2.0.3
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 +7 -7
- package/src/ImageManager.ts +6 -6
- package/src/LeaferFilm.ts +10 -0
- package/src/LeaferImage.ts +11 -2
- package/src/LeaferVideo.ts +10 -0
- package/src/index.ts +2 -0
- package/types/index.d.ts +13 -2
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@leafer/image",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.3",
|
|
4
4
|
"description": "@leafer/image",
|
|
5
5
|
"author": "Chao (Leafer) Wan",
|
|
6
6
|
"license": "MIT",
|
|
@@ -22,13 +22,13 @@
|
|
|
22
22
|
"leaferjs"
|
|
23
23
|
],
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@leafer/task": "2.0.
|
|
26
|
-
"@leafer/file": "2.0.
|
|
27
|
-
"@leafer/data": "2.0.
|
|
28
|
-
"@leafer/math": "2.0.
|
|
29
|
-
"@leafer/platform": "2.0.
|
|
25
|
+
"@leafer/task": "2.0.3",
|
|
26
|
+
"@leafer/file": "2.0.3",
|
|
27
|
+
"@leafer/data": "2.0.3",
|
|
28
|
+
"@leafer/math": "2.0.3",
|
|
29
|
+
"@leafer/platform": "2.0.3"
|
|
30
30
|
},
|
|
31
31
|
"devDependencies": {
|
|
32
|
-
"@leafer/interface": "2.0.
|
|
32
|
+
"@leafer/interface": "2.0.3"
|
|
33
33
|
}
|
|
34
34
|
}
|
package/src/ImageManager.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { IImageManager, ILeaferImageConfig, ILeaferImage, IExportFileType } from '@leafer/interface'
|
|
1
|
+
import { IImageManager, ILeaferImageConfig, ILeaferImage, IExportFileType, IMultimediaType } from '@leafer/interface'
|
|
2
2
|
import { Creator, Platform } from '@leafer/platform'
|
|
3
3
|
import { FileHelper, Resource } from '@leafer/file'
|
|
4
|
-
import { TaskProcessor } from '@leafer/task'
|
|
5
4
|
|
|
6
5
|
|
|
7
6
|
export const ImageManager: IImageManager = {
|
|
@@ -10,16 +9,17 @@ export const ImageManager: IImageManager = {
|
|
|
10
9
|
|
|
11
10
|
recycledList: [],
|
|
12
11
|
|
|
13
|
-
patternTasker:
|
|
12
|
+
patternTasker: Resource.queue, // 全局按顺序执行的任务队列,防止阻塞主线程
|
|
14
13
|
|
|
15
|
-
get(config: ILeaferImageConfig): ILeaferImage {
|
|
14
|
+
get(config: ILeaferImageConfig, type?: IMultimediaType): ILeaferImage {
|
|
16
15
|
let image: ILeaferImage = Resource.get(config.url)
|
|
17
|
-
if (!image) Resource.set(config.url, image = Creator.image(config))
|
|
16
|
+
if (!image) Resource.set(config.url, image = type === 'film' ? Creator.film(config) : Creator.image(config))
|
|
18
17
|
image.use++
|
|
19
18
|
return image
|
|
20
19
|
},
|
|
21
20
|
|
|
22
21
|
recycle(image: ILeaferImage): void {
|
|
22
|
+
if (image.parent) image = image.parent // 存在 image filters 的情况
|
|
23
23
|
image.use--
|
|
24
24
|
setTimeout(() => {
|
|
25
25
|
if (!image.use) {
|
|
@@ -57,7 +57,7 @@ export const ImageManager: IImageManager = {
|
|
|
57
57
|
if (config.format) return config.format === format
|
|
58
58
|
const { url } = config
|
|
59
59
|
if (url.startsWith('data:')) {
|
|
60
|
-
if (url.startsWith('data:' + FileHelper.
|
|
60
|
+
if (url.startsWith('data:' + FileHelper.mimeType(format))) return true
|
|
61
61
|
} else {
|
|
62
62
|
if (url.includes('.' + format) || url.includes('.' + FileHelper.upperCaseTypeMap[format])) return true
|
|
63
63
|
else if (format === 'png' && !url.includes('.')) return true // blob: 等无后缀名协议的图片无法分析类型,直接当透明图片处理
|
package/src/LeaferImage.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ILeaferImage, ILeaferImageConfig, IFunction, IObject, InnerId, IMatrixData, ICanvasPattern, ILeaferImageCacheCanvas, ILeaferImagePatternPaint, ILeaferImageLevel, ISizeData, IImageCrossOrigin, IImageLOD, IInterlace } from '@leafer/interface'
|
|
1
|
+
import { ILeaferImage, ILeaferImageConfig, IFunction, IObject, InnerId, ILeaf, IMatrixData, ICanvasPattern, ILeaferImageCacheCanvas, ILeaferImagePatternPaint, ILeaferImageLevel, ISizeData, IImageCrossOrigin, IImageLOD, IInterlace } from '@leafer/interface'
|
|
2
2
|
import { Platform } from '@leafer/platform'
|
|
3
3
|
import { Resource } from '@leafer/file'
|
|
4
4
|
import { IncrementId } from '@leafer/math'
|
|
@@ -12,6 +12,8 @@ const { IMAGE, create } = IncrementId
|
|
|
12
12
|
export class LeaferImage implements ILeaferImage {
|
|
13
13
|
|
|
14
14
|
public readonly innerId: InnerId
|
|
15
|
+
public get tag() { return 'Image' }
|
|
16
|
+
|
|
15
17
|
public get url() { return this.config.url }
|
|
16
18
|
public lod?: IImageLOD
|
|
17
19
|
public get crossOrigin(): IImageCrossOrigin { const { crossOrigin } = this.config; return isUndefined(crossOrigin) ? Platform.image.crossOrigin : crossOrigin }
|
|
@@ -53,7 +55,7 @@ export class LeaferImage implements ILeaferImage {
|
|
|
53
55
|
public load(onSuccess?: IFunction, onError?: IFunction, thumbSize?: ISizeData): number {
|
|
54
56
|
if (!this.loading) {
|
|
55
57
|
this.loading = true
|
|
56
|
-
Resource.tasker.add(async () => await Platform.origin.loadImage(this.getLoadUrl(thumbSize), this.crossOrigin, this).then(img => {
|
|
58
|
+
Resource.tasker.add(async () => await Platform.origin['load' + this.tag as 'loadImage'](this.getLoadUrl(thumbSize), this.crossOrigin, this).then(img => {
|
|
57
59
|
if (thumbSize) this.setThumbView(img)
|
|
58
60
|
this.setView(img)
|
|
59
61
|
}).catch((e) => {
|
|
@@ -127,6 +129,10 @@ export class LeaferImage implements ILeaferImage {
|
|
|
127
129
|
return pattern
|
|
128
130
|
}
|
|
129
131
|
|
|
132
|
+
public render(canvas: any, x: number, y: number, width: number, height: number, _leaf: ILeaf, _paint: any, _imageScaleX: number, _imageScaleY: number): void {
|
|
133
|
+
canvas.drawImage(this.view, x, y, width, height)
|
|
134
|
+
}
|
|
135
|
+
|
|
130
136
|
// need rewrite
|
|
131
137
|
public getLoadUrl(_thumbSize?: ISizeData): string { return this.url }
|
|
132
138
|
public setThumbView(_view: number): void { }
|
|
@@ -136,8 +142,11 @@ export class LeaferImage implements ILeaferImage {
|
|
|
136
142
|
public getLevelData(_level: number, _width?: number, _height?: number,): ILeaferImageLevel { return undefined }
|
|
137
143
|
public clearLevels(_checkUse?: boolean): void { }
|
|
138
144
|
|
|
145
|
+
public destroyFilter(): void { }
|
|
146
|
+
|
|
139
147
|
public destroy(): void {
|
|
140
148
|
this.clearLevels()
|
|
149
|
+
this.destroyFilter()
|
|
141
150
|
|
|
142
151
|
const { view } = this
|
|
143
152
|
if (view && view.close) view.close() // 可能为 ImageBitmap
|
package/src/index.ts
CHANGED
package/types/index.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { ILeaferImage, InnerId, IImageLOD, IImageCrossOrigin, IObject, ILeaferImageConfig, IFunction, ILeaferImageCacheCanvas, ISizeData, IInterlace, IMatrixData, ILeaferImagePatternPaint, ICanvasPattern, ILeaferImageLevel, IImageManager } from '@leafer/interface';
|
|
1
|
+
import { ILeaferImage, InnerId, IImageLOD, IImageCrossOrigin, IObject, ILeaferImageConfig, IFunction, ILeaferImageCacheCanvas, ISizeData, IInterlace, IMatrixData, ILeaferImagePatternPaint, ICanvasPattern, ILeaf, ILeaferImageLevel, ILeaferFilm, ILeaferVideo, IImageManager } from '@leafer/interface';
|
|
2
2
|
|
|
3
3
|
declare class LeaferImage implements ILeaferImage {
|
|
4
4
|
readonly innerId: InnerId;
|
|
5
|
+
get tag(): string;
|
|
5
6
|
get url(): string;
|
|
6
7
|
lod?: IImageLOD;
|
|
7
8
|
get crossOrigin(): IImageCrossOrigin;
|
|
@@ -26,15 +27,25 @@ declare class LeaferImage implements ILeaferImage {
|
|
|
26
27
|
getFull(_filters?: IObject): any;
|
|
27
28
|
getCanvas(width: number, height: number, opacity?: number, filters?: IObject, xGap?: number, yGap?: number, smooth?: boolean, interlace?: IInterlace): any;
|
|
28
29
|
getPattern(canvas: any, repeat: string | null, transform?: IMatrixData, paint?: ILeaferImagePatternPaint): ICanvasPattern;
|
|
30
|
+
render(canvas: any, x: number, y: number, width: number, height: number, _leaf: ILeaf, _paint: any, _imageScaleX: number, _imageScaleY: number): void;
|
|
29
31
|
getLoadUrl(_thumbSize?: ISizeData): string;
|
|
30
32
|
setThumbView(_view: number): void;
|
|
31
33
|
getThumbSize(_lod?: IImageLOD): ISizeData;
|
|
32
34
|
getMinLevel(): number;
|
|
33
35
|
getLevelData(_level: number, _width?: number, _height?: number): ILeaferImageLevel;
|
|
34
36
|
clearLevels(_checkUse?: boolean): void;
|
|
37
|
+
destroyFilter(): void;
|
|
35
38
|
destroy(): void;
|
|
36
39
|
}
|
|
37
40
|
|
|
41
|
+
declare class LeaferFilm extends LeaferImage implements ILeaferFilm {
|
|
42
|
+
get tag(): string;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
declare class LeaferVideo extends LeaferImage implements ILeaferVideo {
|
|
46
|
+
get tag(): string;
|
|
47
|
+
}
|
|
48
|
+
|
|
38
49
|
declare const ImageManager: IImageManager;
|
|
39
50
|
|
|
40
|
-
export { ImageManager, LeaferImage };
|
|
51
|
+
export { ImageManager, LeaferFilm, LeaferImage, LeaferVideo };
|