ImageKnife3.x分支合并master
This commit is contained in:
parent
4fcbc2b497
commit
e048685386
|
@ -1,97 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (C) 2021 Huawei Device Co., Ltd.
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the 'License');
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http:// www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an 'AS IS' BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
import { collections } from '@kit.ArkTS'
|
|
||||||
import { AsyncLock } from '../imageknife/utils/base/AsyncLock';
|
|
||||||
import { DiskCacheEntry } from './DiskCacheEntry';
|
|
||||||
|
|
||||||
@Sendable
|
|
||||||
export class CustomSendableMap {
|
|
||||||
map: collections.Map<string, DiskCacheEntry> = new collections.Map<string, DiskCacheEntry>()
|
|
||||||
|
|
||||||
// 获取键对应的值
|
|
||||||
get(key: string): DiskCacheEntry | undefined{
|
|
||||||
if (key == null) {
|
|
||||||
throw new Error('key is null,checking the parameter');
|
|
||||||
}
|
|
||||||
return this.map.get(key)
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 是否含有key的缓存
|
|
||||||
*/
|
|
||||||
hasKey(key: string):boolean {
|
|
||||||
if (key == null) {
|
|
||||||
throw new Error('key is null,checking the parameter');
|
|
||||||
}
|
|
||||||
return this.map.has(key)
|
|
||||||
}
|
|
||||||
|
|
||||||
// 添加键值对
|
|
||||||
async put(key: string, value: DiskCacheEntry): Promise<DiskCacheEntry | undefined>{
|
|
||||||
if (key == null || value == null) {
|
|
||||||
throw new Error('key or value is invalid,checking the parameter');
|
|
||||||
}
|
|
||||||
const lock = new AsyncLock();
|
|
||||||
await lock.acquire()
|
|
||||||
try {
|
|
||||||
let pre = this.map.get(key) as DiskCacheEntry | undefined;
|
|
||||||
if (this.hasKey(key)) {
|
|
||||||
this.map.delete(key)
|
|
||||||
}
|
|
||||||
this.map.set(key, value);
|
|
||||||
return pre;
|
|
||||||
} catch (e) {
|
|
||||||
throw new Error('put value error');
|
|
||||||
} finally {
|
|
||||||
lock.release();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 去除键值,(去除键数据中的键名及对应的值)
|
|
||||||
remove(key: string): boolean {
|
|
||||||
if (key == null) {
|
|
||||||
throw new Error('key is null,checking the parameter');
|
|
||||||
}
|
|
||||||
return this.map.delete(key)
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取最先存储的数据的key
|
|
||||||
*/
|
|
||||||
getFirstKey(): string{ // keys()可以遍历后需要优化put()方法,暂时仅获取index=0的key
|
|
||||||
return this.map.keys().next().value
|
|
||||||
}
|
|
||||||
|
|
||||||
// 判断键值元素是否为空
|
|
||||||
isEmpty(): boolean{
|
|
||||||
return this.map.size == 0;
|
|
||||||
}
|
|
||||||
// 获取键值元素大小
|
|
||||||
size(): number{
|
|
||||||
return this.map.size;
|
|
||||||
}
|
|
||||||
// 遍历Map,执行处理函数. 回调函数 function(key,value,index){..}
|
|
||||||
each(fn: (value: DiskCacheEntry, key: string, map: collections.Map<string, DiskCacheEntry>) => void) {
|
|
||||||
this.map.forEach(fn)
|
|
||||||
}
|
|
||||||
// 清除键值对
|
|
||||||
clear() {
|
|
||||||
this.map.clear()
|
|
||||||
}
|
|
||||||
// 遍历key
|
|
||||||
keys(): IterableIterator<string>{
|
|
||||||
return this.map.keys()
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,26 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (C) 2024 Huawei Device Co., Ltd.
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
export class PixelEntry {
|
|
||||||
a: number = 0;
|
|
||||||
b: number = 0;
|
|
||||||
r: number = 0;
|
|
||||||
g: number = 0;
|
|
||||||
f: number = 0;
|
|
||||||
pixel: number = 0;
|
|
||||||
|
|
||||||
public toString(): string {
|
|
||||||
return "PixelEntry a:" + this.a + ";b:" + this.b + ";r:" + this.r + ";g:" + this.g + ";f:" + this.f;
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue