1/* 2 * Copyright (C) 2025 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16export interface BrightnessBlenderParam { 17 cubicRate: number; 18 quadraticRate: number; 19 linearRate: number; 20 degree: number; 21 saturation: number; 22 positiveCoefficient: [number, number, number]; 23 negativeCoefficient: [number, number, number]; 24 fraction: number; 25} 26namespace uiEffect { 27 loadLibrary('uiEffect_ani') 28 export type Blender = BrightnessBlender | HdrBrightnessBlender; 29 export enum TileMode { 30 CLAMP, 31 REPEAT, 32 MIRROR, 33 DECAL 34 } 35 export interface BrightnessBlender { 36 cubicRate: number; 37 quadraticRate: number; 38 linearRate: number; 39 degree: number; 40 saturation: number; 41 positiveCoefficient: [number, number, number]; 42 negativeCoefficient: [number, number, number]; 43 fraction: number; 44 } 45 export interface HdrBrightnessBlender extends BrightnessBlender {} 46 export class BrightnessBlenderInternal implements BrightnessBlender { 47 private brightnessBlenderNativeObj: long = 0; 48 constructor(context: long) { 49 this.brightnessBlenderNativeObj = context; 50 } 51 cubicRate: number; 52 quadraticRate: number; 53 linearRate: number; 54 degree: number; 55 saturation: number; 56 positiveCoefficient: [number, number, number]; 57 negativeCoefficient: [number, number, number]; 58 fraction: number; 59 } 60 export class HdrBrightnessBlenderInternal extends BrightnessBlenderInternal implements HdrBrightnessBlender { 61 constructor(context: long) { 62 super(context); 63 } 64 } 65 export interface VisualEffect { 66 backgroundColorBlender(blender: BrightnessBlender): VisualEffect; 67 } 68 export class VisualEffectInternal implements VisualEffect { 69 private visualEffectNativeObj: long = 0; 70 constructor(context: long) { 71 this.visualEffectNativeObj = context; 72 } 73 public native backgroundColorBlenderNative(blender: BrightnessBlender): VisualEffect; 74 public backgroundColorBlender(blender: BrightnessBlender): VisualEffect { 75 return this.backgroundColorBlenderNative(blender); 76 } 77 } 78 export interface Filter { 79 pixelStretch(stretchSizes: Array<number>, tileMode: TileMode): Filter; 80 blur(blurRadius: number): Filter; 81 } 82 export class FilterInternal implements Filter { 83 private filterNativeObj: long = 0; 84 constructor(context: long) { 85 this.filterNativeObj = context; 86 } 87 public native pixelStretchNative(stretchSizes: Array<number>, tileMode: TileMode): Filter; 88 public native blurNative(blurRadius: number): Filter; 89 public pixelStretch(stretchSizes: Array<number>, tileMode: TileMode): Filter { 90 return this.pixelStretchNative(stretchSizes, tileMode); 91 } 92 public blur(blurRadius: number): Filter { 93 return this.blurNative(blurRadius); 94 } 95 } 96 export native function createEffect(): VisualEffect; 97 export native function createBrightnessBlender(param: BrightnessBlenderParam): BrightnessBlender; 98 export native function createHdrBrightnessBlender(param: BrightnessBlenderParam): HdrBrightnessBlender; 99 export native function createFilter(): Filter; 100} 101 102export default uiEffect;