• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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;