diff --git a/CHANGELOG.md b/CHANGELOG.md index fcaf96b..ed6c9ba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +## 3.2.0-rc.1 +- Change the queue from Stack to Queue +- ShowPixelMap callback PixelMap assigns value to Image component to synchronize + ## 3.2.0-rc.0 - Rollback the old version V1 decorator. V2 decorator will be provided in version 4.x - The sub-thread network request is changed to asynchronous, thereby increasing the number of concurrent sub-thread network requests diff --git a/entry/src/ohosTest/ets/test/DefaultJobQueueTest.test.ets b/entry/src/ohosTest/ets/test/DefaultJobQueueTest.test.ets index 8543faf..23b56e0 100644 --- a/entry/src/ohosTest/ets/test/DefaultJobQueueTest.test.ets +++ b/entry/src/ohosTest/ets/test/DefaultJobQueueTest.test.ets @@ -55,12 +55,12 @@ export default function DefaultJobQueueTest() { expect(job.getQueueLength()).assertEqual(7) expect(job.pop()!.imageKnifeOption.loadSrc).assertEqual("high1") - expect(job.pop()!.imageKnifeOption.loadSrc).assertEqual("medium4") - expect(job.pop()!.imageKnifeOption.loadSrc).assertEqual("medium3") - expect(job.pop()!.imageKnifeOption.loadSrc).assertEqual("medium2") expect(job.pop()!.imageKnifeOption.loadSrc).assertEqual("medium1") - expect(job.pop()!.imageKnifeOption.loadSrc).assertEqual("low2") + expect(job.pop()!.imageKnifeOption.loadSrc).assertEqual("medium2") + expect(job.pop()!.imageKnifeOption.loadSrc).assertEqual("medium3") + expect(job.pop()!.imageKnifeOption.loadSrc).assertEqual("medium4") expect(job.pop()!.imageKnifeOption.loadSrc).assertEqual("low1") + expect(job.pop()!.imageKnifeOption.loadSrc).assertEqual("low2") expect(job.pop()).assertEqual(undefined) expect(job.getQueueLength()).assertEqual(0) diff --git a/library/oh-package.json5 b/library/oh-package.json5 index 4d5208b..5b0a79b 100644 --- a/library/oh-package.json5 +++ b/library/oh-package.json5 @@ -14,7 +14,7 @@ "main": "index.ets", "repository": "https://gitee.com/openharmony-tpc/ImageKnife", "type": "module", - "version": "3.2.0-rc.0", + "version": "3.2.0-rc.1", "dependencies": { "@ohos/gpu_transform": "^1.0.2" }, diff --git a/library/src/main/ets/ImageKnifeDispatcher.ets b/library/src/main/ets/ImageKnifeDispatcher.ets index 0272046..8eb5a05 100644 --- a/library/src/main/ets/ImageKnifeDispatcher.ets +++ b/library/src/main/ets/ImageKnifeDispatcher.ets @@ -70,7 +70,8 @@ export class ImageKnifeDispatcher { LogUtil.log("ImageKnife_DataTime_MemoryCache_onLoadStart:" + request.imageKnifeOption.loadSrc) } LogUtil.log("ImageKnife_DataTime_MemoryCache_showPixelMap.start:" + request.imageKnifeOption.loadSrc) - request.ImageKnifeRequestCallback?.showPixelMap(request.componentVersion, memoryCache.source, requestSource,memoryCache.imageAnimator) + request.ImageKnifeRequestCallback?.showPixelMap(request.componentVersion, memoryCache.source, + { width: memoryCache.imageWidth, height: memoryCache.imageHeight }, requestSource, memoryCache.imageAnimator) LogUtil.log("ImageKnife_DataTime_MemoryCache_showPixelMap.end:" + request.imageKnifeOption.loadSrc) if (requestSource == ImageKnifeRequestSource.SRC) { @@ -339,7 +340,8 @@ export class ImageKnifeDispatcher { requestWithSource.request.requestState === ImageKnifeRequestState.PROGRESS)) { LogUtil.log("ImageKnife_DataTime_getAndShowImage_showPixelMap.start:"+currentRequest.imageKnifeOption.loadSrc) requestWithSource.request.ImageKnifeRequestCallback.showPixelMap(requestWithSource.request.componentVersion, - ImageKnifeData.source, requestWithSource.source,ImageKnifeData.imageAnimator); + ImageKnifeData.source, { width: ImageKnifeData.imageWidth, height: ImageKnifeData.imageHeight }, + requestWithSource.source, ImageKnifeData.imageAnimator); LogUtil.log("ImageKnife_DataTime_getAndShowImage_showPixelMap.end:"+currentRequest.imageKnifeOption.loadSrc) } diff --git a/library/src/main/ets/components/ImageKnifeAnimatorComponent.ets b/library/src/main/ets/components/ImageKnifeAnimatorComponent.ets index 81a0f85..f83dd0d 100644 --- a/library/src/main/ets/components/ImageKnifeAnimatorComponent.ets +++ b/library/src/main/ets/components/ImageKnifeAnimatorComponent.ets @@ -111,7 +111,7 @@ export struct ImageKnifeAnimatorComponent { height, this.componentVersion, { - showPixelMap: async (version: number, pixelMap: PixelMap | string, requestSource: ImageKnifeRequestSource,imageAnimator?: Array) => { + showPixelMap: (version: number, pixelMap: PixelMap | string,size: Size, requestSource: ImageKnifeRequestSource,imageAnimator?: Array) => { if (version !== this.componentVersion) { return //针对reuse场景,不显示历史图片 } diff --git a/library/src/main/ets/components/ImageKnifeComponent.ets b/library/src/main/ets/components/ImageKnifeComponent.ets index 4ae8ce0..33772f0 100644 --- a/library/src/main/ets/components/ImageKnifeComponent.ets +++ b/library/src/main/ets/components/ImageKnifeComponent.ets @@ -134,17 +134,16 @@ export struct ImageKnifeComponent { height, this.componentVersion, { - showPixelMap: async (version: number, pixelMap: PixelMap | string, requestSource: ImageKnifeRequestSource) => { + showPixelMap: (version: number, pixelMap: PixelMap | string,size:Size, requestSource: ImageKnifeRequestSource) => { if (version !== this.componentVersion) { return //针对reuse场景,不显示历史图片 } this.pixelMap = pixelMap if (typeof this.pixelMap !== 'string') { if (this.imageKnifeOption.objectFit === ImageFit.Auto) { - let info = await this.pixelMap.getImageInfo() this.adaptiveWidth = this.currentWidth - this.adaptiveHeight = info.size.height * this.currentWidth / info.size.width + this.adaptiveHeight = size.height * this.currentWidth / size.width // if (this.currentWidth / this.currentHeight > info.size.width / info.size.height) { // this.adaptiveWidth = this.currentWidth diff --git a/library/src/main/ets/model/ImageKnifeRequest.ets b/library/src/main/ets/model/ImageKnifeRequest.ets index c63f8be..f292c13 100644 --- a/library/src/main/ets/model/ImageKnifeRequest.ets +++ b/library/src/main/ets/model/ImageKnifeRequest.ets @@ -64,5 +64,5 @@ export enum ImageKnifeRequestState { export interface ImageKnifeRequestCallback { - showPixelMap: (version: number, pixelMap: PixelMap | string , requestSource: ImageKnifeRequestSource,imageAnimator?: Array) => void; + showPixelMap: (version: number, pixelMap: PixelMap | string ,size: Size, requestSource: ImageKnifeRequestSource,imageAnimator?: Array) => void; } diff --git a/library/src/main/ets/queue/DefaultJobQueue.ets b/library/src/main/ets/queue/DefaultJobQueue.ets index 53f3d2a..5a4c1f7 100644 --- a/library/src/main/ets/queue/DefaultJobQueue.ets +++ b/library/src/main/ets/queue/DefaultJobQueue.ets @@ -18,9 +18,9 @@ import Queue from '@ohos.util.Queue'; import { taskpool,Stack } from '@kit.ArkTS'; export class DefaultJobQueue implements IJobQueue { - highQueue: Stack = new Stack(); - normalQueue: Stack = new Stack(); - lowQueue: Stack = new Stack(); + highQueue: Queue = new Queue(); + normalQueue: Queue = new Queue(); + lowQueue: Queue = new Queue(); getQueueLength(): number { return this.highQueue.length + this.normalQueue.length + this.lowQueue.length @@ -28,11 +28,11 @@ export class DefaultJobQueue implements IJobQueue { add(request: ImageKnifeRequest): void { if (request.imageKnifeOption.priority === undefined || request.imageKnifeOption.priority === taskpool.Priority.MEDIUM) { - this.normalQueue.push(request) + this.normalQueue.add(request) } else if (request.imageKnifeOption.priority === taskpool.Priority.HIGH) { - this.highQueue.push(request) + this.highQueue.add(request) } else { - this.lowQueue.push(request) + this.lowQueue.add(request) } }