From af84eb8ab49daff9ecd2ba8b71741b840dccb962 Mon Sep 17 00:00:00 2001 From: zhoulisheng1 Date: Tue, 19 Sep 2023 10:57:52 +0800 Subject: [PATCH] =?UTF-8?q?1.ArkTs=E6=95=B4=E6=94=B98=20=E6=95=B4=E6=94=B9?= =?UTF-8?q?imageknife->holder/interface/=E9=83=A8=E5=88=86utils?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zhoulisheng1 --- .../components/imageknife/RequestOption.ets | 12 +++---- .../imageknife/holder/ErrorHolderManager.ets | 31 ++++++++++--------- .../imageknife/holder/PlaceHolderManager.ets | 30 +++++++++--------- .../imageknife/holder/RetryHolderManager.ets | 26 ++++++++-------- .../interface/IAllCacheInfoCallback.ets | 2 +- .../imageknife/interface/IParseImage.ets | 8 ++--- .../imageknife/utils/FileTypeUtil.ets | 2 +- .../imageknife/utils/ParseImageUtil.ets | 12 +++---- .../imageknife/utils/svg/SVGParseImpl.ets | 5 ++- 9 files changed, 66 insertions(+), 62 deletions(-) diff --git a/imageknife/src/main/ets/components/imageknife/RequestOption.ets b/imageknife/src/main/ets/components/imageknife/RequestOption.ets index 8d2a77f..abdeace 100644 --- a/imageknife/src/main/ets/components/imageknife/RequestOption.ets +++ b/imageknife/src/main/ets/components/imageknife/RequestOption.ets @@ -370,7 +370,7 @@ export class RequestOption { } // 占位图解析成功 - placeholderOnComplete(imageKnifeData: ImageKnifeData) { + placeholderOnComplete = (imageKnifeData: ImageKnifeData)=> { LogUtil.log("placeholderOnComplete has called!"); LogUtil.log("Main Image is Ready:" + this.loadMainReady); if (!this.loadMainReady && !(this.loadErrorReady || this.loadRetryReady) && !this.loadThumbnailReady) { @@ -380,7 +380,7 @@ export class RequestOption { } // 占位图解析失败 - placeholderOnError(error) { + placeholderOnError = (error)=>{ LogUtil.log("占位图解析失败 error =" + error) } @@ -399,7 +399,7 @@ export class RequestOption { } // 加载失败 占位图解析成功 - errorholderOnComplete(imageKnifeData: ImageKnifeData) { + errorholderOnComplete = (imageKnifeData: ImageKnifeData)=> { // 如果有错误占位图 先解析并保存在RequestOption中 等到加载失败时候进行调用 this.errorholderData = imageKnifeData; if (this.loadErrorReady) { @@ -408,18 +408,18 @@ export class RequestOption { } //加载失败 占位图解析失败 - errorholderOnError(error) { + errorholderOnError = (error)=> { LogUtil.log("失败占位图解析失败 error =" + error) } - retryholderOnComplete(imageKnifeData: ImageKnifeData) { + retryholderOnComplete = (imageKnifeData: ImageKnifeData)=>{ this.retryholderData = imageKnifeData; if (this.loadRetryReady) { this.retryholderFunc.asyncSuccess(imageKnifeData) } } - retryholderOnError(error) { + retryholderOnError = (error)=>{ LogUtil.log("重试占位图解析失败 error =" + error) } diff --git a/imageknife/src/main/ets/components/imageknife/holder/ErrorHolderManager.ets b/imageknife/src/main/ets/components/imageknife/holder/ErrorHolderManager.ets index a195e7a..b7639c5 100644 --- a/imageknife/src/main/ets/components/imageknife/holder/ErrorHolderManager.ets +++ b/imageknife/src/main/ets/components/imageknife/holder/ErrorHolderManager.ets @@ -18,12 +18,13 @@ import { FileTypeUtil } from '../../imageknife/utils/FileTypeUtil' import { ImageKnifeData, ImageKnifeType } from '../ImageKnifeData' import { ParseImageUtil } from '../utils/ParseImageUtil' import { SupportFormat } from '../utils/FileTypeUtil' -import { SVGParseImpl } from '../utils/svg/SVGParseImpl' +import { SVGParseImpl,Size } from '../utils/svg/SVGParseImpl' import { ParseResClient } from '../resourcemanage/ParseResClient' import {LogUtil} from '../../imageknife/utils/LogUtil' import image from '@ohos.multimedia.image' +import { BusinessError } from '@ohos.base' -export class ErrorHolderManager { +export class ErrorHolderManager { private options: RequestOption; constructor(option: RequestOption) { @@ -31,16 +32,16 @@ export class ErrorHolderManager { } static execute(option: RequestOption) { - let manager = new ErrorHolderManager(option); - return new Promise(manager.process.bind(manager)) - .then(option.errorholderOnComplete.bind(option)).catch(option.errorholderOnError.bind(option)); + let manager:ErrorHolderManager = new ErrorHolderManager(option); + return new Promise(manager.process) + .then(option.errorholderOnComplete).catch(option.errorholderOnError); } - process(onComplete, onError) { + process = (onComplete:(value:ImageKnifeData)=>void|PromiseLike, onError:(reason?:BusinessError|string)=>void)=>{ this.displayErrorholder(onComplete, onError); } - private displayErrorholder(onComplete, onError) { + private displayErrorholder(onComplete:(value:ImageKnifeData)=>void|PromiseLike, onError:(reason?:BusinessError|string)=>void) { LogUtil.log("displayErrorholder") if ((typeof (this.options.errorholderSrc as image.PixelMap).isEditable) == 'boolean') { let imageKnifeData = ImageKnifeData.createImagePixelMap(ImageKnifeType.PIXELMAP, this.options.errorholderSrc as PixelMap) @@ -51,9 +52,9 @@ export class ErrorHolderManager { let res = this.options.errorholderSrc as Resource; if (typeof res.id != 'undefined' && typeof res.id != 'undefined') { let resourceFetch = new ParseResClient(); - let suc = (arraybuffer) => { - let fileTypeUtil = new FileTypeUtil(); - let typeValue = fileTypeUtil.getFileType(arraybuffer); + let suc = (arraybuffer:ArrayBuffer) => { + let fileTypeUtil:FileTypeUtil = new FileTypeUtil(); + let typeValue:string = fileTypeUtil.getFileType(arraybuffer); switch (typeValue) { case SupportFormat.svg: this.svgProcess(onComplete, onError, arraybuffer, typeValue) @@ -78,18 +79,18 @@ export class ErrorHolderManager { } } - private svgProcess(onComplete, onError, arraybuffer, typeValue) { - let svgParseImpl = new SVGParseImpl() - let size = { width: this.options.size.width, height: this.options.size.height } + private svgProcess(onComplete:(value:ImageKnifeData)=>void|PromiseLike, onError:(reason?:BusinessError|string)=>void, arraybuffer:ArrayBuffer, typeValue:string) { + let svgParseImpl:SVGParseImpl = new SVGParseImpl() + let size:Size = { width: this.options.size.width, height: this.options.size.height } svgParseImpl.parseSvg(arraybuffer, size).then((value: PixelMap) => { let imageKnifeData = ImageKnifeData.createImagePixelMap(ImageKnifeType.PIXELMAP, value) onComplete(imageKnifeData) - }).catch(err => { + }).catch((err:BusinessError) => { onError(err) }) } - private mediaImageProcess(onComplete, onError, arraybuffer, typeValue) { + private mediaImageProcess(onComplete:(value:ImageKnifeData)=>void|PromiseLike, onError:(reason?:BusinessError|string)=>void, arraybuffer:ArrayBuffer, typeValue:string) { let parseImageUtil = new ParseImageUtil() let success = (value: PixelMap) => { let imageKnifeData = ImageKnifeData.createImagePixelMap(ImageKnifeType.PIXELMAP, value) diff --git a/imageknife/src/main/ets/components/imageknife/holder/PlaceHolderManager.ets b/imageknife/src/main/ets/components/imageknife/holder/PlaceHolderManager.ets index 434520c..30a0caf 100644 --- a/imageknife/src/main/ets/components/imageknife/holder/PlaceHolderManager.ets +++ b/imageknife/src/main/ets/components/imageknife/holder/PlaceHolderManager.ets @@ -20,12 +20,12 @@ import {ImageKnifeData,ImageKnifeType} from "../ImageKnifeData" import {ParseImageUtil} from '../utils/ParseImageUtil' import {ParseResClient} from '../resourcemanage/ParseResClient' import { SupportFormat } from '../utils/FileTypeUtil' -import { SVGParseImpl } from '../utils/svg/SVGParseImpl' +import { SVGParseImpl,Size} from '../utils/svg/SVGParseImpl' import {LogUtil} from '../../imageknife/utils/LogUtil' import resourceManager from '@ohos.resourceManager'; import image from "@ohos.multimedia.image" - -export class PlaceHolderManager { +import { BusinessError } from '@ohos.base' +export class PlaceHolderManager { private options: RequestOption; constructor(option: RequestOption) { @@ -33,16 +33,16 @@ export class PlaceHolderManager { } static execute(option: RequestOption) { - let manager = new PlaceHolderManager(option); - return new Promise(manager.process.bind(manager)) - .then(option.placeholderOnComplete.bind(option)).catch(option.placeholderOnError.bind(option)); + let manager:PlaceHolderManager = new PlaceHolderManager(option); + return new Promise(manager.process) + .then(option.placeholderOnComplete).catch(option.placeholderOnError); } - process(onComplete, onError) { + process = (onComplete:(value:ImageKnifeData)=>void|PromiseLike, onError:(reason?:BusinessError|string)=>void)=>{ this.displayPlaceholder(onComplete, onError); } - private displayPlaceholder(onComplete, onError) { + private displayPlaceholder(onComplete:(value:ImageKnifeData)=>void|PromiseLike, onError:(reason?:BusinessError|string)=>void){ LogUtil.log("displayPlaceholder") if ((typeof (this.options.placeholderSrc as image.PixelMap).isEditable) == 'boolean') { let imageKnifeData = ImageKnifeData.createImagePixelMap(ImageKnifeType.PIXELMAP, this.options.placeholderSrc as PixelMap) @@ -53,7 +53,7 @@ export class PlaceHolderManager { let res = this.options.placeholderSrc as Resource; if (typeof res.id != 'undefined' && typeof res.id != 'undefined') { let resourceFetch = new ParseResClient(); - let suc = (arraybuffer) => { + let suc = (arraybuffer:ArrayBuffer) => { let fileTypeUtil = new FileTypeUtil(); let typeValue = fileTypeUtil.getFileType(arraybuffer); switch (typeValue) { @@ -82,19 +82,19 @@ export class PlaceHolderManager { - private svgProcess(onComplete, onError, arraybuffer, typeValue) { - let svgParseImpl = new SVGParseImpl() - let size = { width: this.options.size.width, height: this.options.size.height } + private svgProcess(onComplete:(value:ImageKnifeData)=>void|PromiseLike, onError:(reason?:BusinessError|string)=>void, arraybuffer:ArrayBuffer, typeValue:string) { + let svgParseImpl:SVGParseImpl = new SVGParseImpl() + let size:Size = { width: this.options.size.width, height: this.options.size.height } svgParseImpl.parseSvg(arraybuffer, size).then((value: PixelMap) => { let imageKnifeData = ImageKnifeData.createImagePixelMap(ImageKnifeType.PIXELMAP, value) onComplete(imageKnifeData) - }).catch(err => { + }).catch((err:BusinessError) => { onError(err) }) } - private mediaImageProcess(onComplete, onError, arraybuffer, typeValue) { - let parseImageUtil = new ParseImageUtil() + private mediaImageProcess(onComplete:(value:ImageKnifeData)=>void|PromiseLike, onError:(reason?:BusinessError|string)=>void, arraybuffer:ArrayBuffer, typeValue:string) { + let parseImageUtil:ParseImageUtil = new ParseImageUtil() let success = (value: PixelMap) => { let imageKnifeData = ImageKnifeData.createImagePixelMap(ImageKnifeType.PIXELMAP, value) onComplete(imageKnifeData) diff --git a/imageknife/src/main/ets/components/imageknife/holder/RetryHolderManager.ets b/imageknife/src/main/ets/components/imageknife/holder/RetryHolderManager.ets index 93ee6ea..6a3b98a 100644 --- a/imageknife/src/main/ets/components/imageknife/holder/RetryHolderManager.ets +++ b/imageknife/src/main/ets/components/imageknife/holder/RetryHolderManager.ets @@ -20,12 +20,12 @@ import {ImageKnifeData,ImageKnifeType} from "../ImageKnifeData" import {ParseImageUtil} from '../utils/ParseImageUtil' import {ParseResClient} from '../resourcemanage/ParseResClient' import { SupportFormat } from '../utils/FileTypeUtil' -import { SVGParseImpl } from '../utils/svg/SVGParseImpl' +import { SVGParseImpl,Size } from '../utils/svg/SVGParseImpl' import {LogUtil} from '../../imageknife/utils/LogUtil' import resourceManager from '@ohos.resourceManager'; import image from "@ohos.multimedia.image" - -export class RetryHolderManager { +import { BusinessError } from '@ohos.base' +export class RetryHolderManager { private options: RequestOption; constructor(option: RequestOption) { @@ -33,16 +33,16 @@ export class RetryHolderManager { } static execute(option: RequestOption) { - let manager = new RetryHolderManager(option); - return new Promise(manager.process.bind(manager)) - .then(option.retryholderOnComplete.bind(option)).catch(option.retryholderOnError.bind(option)); + let manager:RetryHolderManager = new RetryHolderManager(option); + return new Promise(manager.process) + .then(option.retryholderOnComplete).catch(option.retryholderOnError); } - process(onComplete, onError) { + process = (onComplete:(value:ImageKnifeData)=>void|PromiseLike, onError:(reason?:BusinessError|string)=>void)=>{ this.displayRetryholder(onComplete, onError); } - private displayRetryholder(onComplete, onError) { + private displayRetryholder(onComplete:(value:ImageKnifeData)=>void|PromiseLike, onError:(reason?:BusinessError|string)=>void){ LogUtil.log("displayRetryholder") if ((typeof (this.options.retryholderSrc as image.PixelMap).isEditable) == 'boolean') { let imageKnifeData = ImageKnifeData.createImagePixelMap(ImageKnifeType.PIXELMAP, this.options.placeholderSrc as PixelMap) @@ -53,7 +53,7 @@ export class RetryHolderManager { let res = this.options.retryholderSrc as Resource; if (typeof res.id != 'undefined' && typeof res.id != 'undefined') { let resourceFetch = new ParseResClient(); - let suc = (arraybuffer) => { + let suc = (arraybuffer:ArrayBuffer) => { let fileTypeUtil = new FileTypeUtil(); let typeValue = fileTypeUtil.getFileType(arraybuffer); switch (typeValue) { @@ -82,18 +82,18 @@ export class RetryHolderManager { - private svgProcess(onComplete, onError, arraybuffer, typeValue) { + private svgProcess(onComplete:(value:ImageKnifeData)=>void|PromiseLike, onError:(reason?:BusinessError|string)=>void, arraybuffer:ArrayBuffer, typeValue:string) { let svgParseImpl = new SVGParseImpl() - let size = { width: this.options.size.width, height: this.options.size.height } + let size:Size = { width: this.options.size.width, height: this.options.size.height } svgParseImpl.parseSvg(arraybuffer, size).then((value: PixelMap) => { let imageKnifeData = ImageKnifeData.createImagePixelMap(ImageKnifeType.PIXELMAP, value) onComplete(imageKnifeData) - }).catch(err => { + }).catch( (err:BusinessError) => { onError(err) }) } - private mediaImageProcess(onComplete, onError, arraybuffer, typeValue) { + private mediaImageProcess(onComplete:(value:ImageKnifeData)=>void|PromiseLike, onError:(reason?:BusinessError|string)=>void, arraybuffer:ArrayBuffer, typeValue:string) { let parseImageUtil = new ParseImageUtil() let success = (value: PixelMap) => { let imageKnifeData = ImageKnifeData.createImagePixelMap(ImageKnifeType.PIXELMAP, value) diff --git a/imageknife/src/main/ets/components/imageknife/interface/IAllCacheInfoCallback.ets b/imageknife/src/main/ets/components/imageknife/interface/IAllCacheInfoCallback.ets index 267daeb..4e6c7d0 100644 --- a/imageknife/src/main/ets/components/imageknife/interface/IAllCacheInfoCallback.ets +++ b/imageknife/src/main/ets/components/imageknife/interface/IAllCacheInfoCallback.ets @@ -26,7 +26,7 @@ export interface DataCacheInfo{ path: string, key: string } -export class AllCacheInfo { +export interface AllCacheInfo { memoryCacheInfo: MemoryCacheInfo resourceCacheInfo: ResourceCacheInfo dataCacheInfo: DataCacheInfo diff --git a/imageknife/src/main/ets/components/imageknife/interface/IParseImage.ets b/imageknife/src/main/ets/components/imageknife/interface/IParseImage.ets index 96024a4..28a9769 100644 --- a/imageknife/src/main/ets/components/imageknife/interface/IParseImage.ets +++ b/imageknife/src/main/ets/components/imageknife/interface/IParseImage.ets @@ -12,8 +12,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - -export interface IParseImage { - parseImage(imageinfo:ArrayBuffer, onCompleteFunction, onErrorFunction); - parseImageThumbnail(scale:number, imageinfo:ArrayBuffer, onCompleteFunction, onErrorFunction); +import { BusinessError } from '@ohos.base' +export interface IParseImage { + parseImage:(imageinfo:ArrayBuffer, onCompleteFunction:(value:T)=>void | PromiseLike, onErrorFunction:(reason?:BusinessError|string)=>void)=>void; + parseImageThumbnail:(scale:number, imageinfo:ArrayBuffer, onCompleteFunction:(value:T)=>void | PromiseLike, onErrorFunction:(reason?:BusinessError|string)=>void)=>void; } \ No newline at end of file diff --git a/imageknife/src/main/ets/components/imageknife/utils/FileTypeUtil.ets b/imageknife/src/main/ets/components/imageknife/utils/FileTypeUtil.ets index d4ced98..ac87e6f 100644 --- a/imageknife/src/main/ets/components/imageknife/utils/FileTypeUtil.ets +++ b/imageknife/src/main/ets/components/imageknife/utils/FileTypeUtil.ets @@ -37,7 +37,7 @@ export class FileTypeUtil { - getFileType(arraybuffer: ArrayBuffer) { + getFileType(arraybuffer: ArrayBuffer):string { let fileType = undefined; if (arraybuffer == null || arraybuffer == undefined || arraybuffer.byteLength <= this.READ_MIN_LENGTH) { return undefined; diff --git a/imageknife/src/main/ets/components/imageknife/utils/ParseImageUtil.ets b/imageknife/src/main/ets/components/imageknife/utils/ParseImageUtil.ets index 02d6f52..5c6953e 100644 --- a/imageknife/src/main/ets/components/imageknife/utils/ParseImageUtil.ets +++ b/imageknife/src/main/ets/components/imageknife/utils/ParseImageUtil.ets @@ -15,15 +15,15 @@ import type {IParseImage} from '../interface/IParseImage' import image from '@ohos.multimedia.image'; - -export class ParseImageUtil implements IParseImage { - parseImage(imageinfo: ArrayBuffer, onCompleteFunction, onErrorFunction) { +import { BusinessError } from '@ohos.base' +export class ParseImageUtil implements IParseImage { + parseImage(imageinfo: ArrayBuffer, onCompleteFunction:(value:PixelMap)=>void | PromiseLike, onErrorFunction:(reason?:BusinessError|string)=>void) { this.parseImageThumbnail(1, imageinfo, onCompleteFunction, onErrorFunction) } // scale(0,1) - parseImageThumbnail(scale: number, imageinfo: ArrayBuffer, onCompleteFunction, onErrorFunction) { - let imageSource = image.createImageSource(imageinfo as any); // 步骤一:文件转为pixelMap 然后变换 给Image组件 + parseImageThumbnail(scale: number, imageinfo: ArrayBuffer, onCompleteFunction:(value:PixelMap)=>void | PromiseLike, onErrorFunction:(reason?:BusinessError|string)=>void) { + let imageSource:image.ImageSource = image.createImageSource(imageinfo); // 步骤一:文件转为pixelMap 然后变换 给Image组件 imageSource.getImageInfo((err, value) => { if (err) { onErrorFunction(err); @@ -36,7 +36,7 @@ export class ParseImageUtil implements IParseImage { 'width': wValue }; - let opts = { + let opts:image.DecodingOptions = { editable: true, desiredSize: defaultSize }; diff --git a/imageknife/src/main/ets/components/imageknife/utils/svg/SVGParseImpl.ets b/imageknife/src/main/ets/components/imageknife/utils/svg/SVGParseImpl.ets index 391177c..6d57f64 100644 --- a/imageknife/src/main/ets/components/imageknife/utils/svg/SVGParseImpl.ets +++ b/imageknife/src/main/ets/components/imageknife/utils/svg/SVGParseImpl.ets @@ -14,8 +14,11 @@ */ import type {IParseSvg} from'./IParseSvg' import {SVGImageView} from '@ohos/svg' +export interface Size{ + width:number,height:number +} export class SVGParseImpl implements IParseSvg{ - parseSvg(imageinfo: ArrayBuffer,size?:{width:number,height:number}): Promise{ + parseSvg(imageinfo: ArrayBuffer,size?:Size): Promise{ let model = new SVGImageView.SVGImageViewModel(); return model.getSVGPixelMap(new Uint8Array(imageinfo),size); }