1 /*
2  * Copyright (c) 2024 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 #ifndef GRAPHICS_EFFECT_GE_SHADER_FILTER_PARAMS_H
16 #define GRAPHICS_EFFECT_GE_SHADER_FILTER_PARAMS_H
17 
18 #include <memory>
19 #include <vector>
20 #include <utility>
21 
22 #include "utils/matrix.h"
23 
24 namespace OHOS {
25 namespace Rosen {
26 namespace Drawing {
27 
28 constexpr char GE_FILTER_AI_BAR[] = "AIBAR";
29 constexpr char GE_FILTER_AI_BAR_LOW[] = "AIBAR_LOW";
30 constexpr char GE_FILTER_AI_BAR_HIGH[] = "AIBAR_HIGH";
31 constexpr char GE_FILTER_AI_BAR_THRESHOLD[] = "AIBAR_THRESHOLD";
32 constexpr char GE_FILTER_AI_BAR_OPACITY[] = "AIBAR_OPACITY";
33 constexpr char GE_FILTER_AI_BAR_SATURATION[] = "AIBAR_SATURATION";
34 struct GEAIBarShaderFilterParams {
35     float aiBarLow;
36     float aiBarHigh;
37     float aiBarThreshold;
38     float aiBarOpacity;
39     float aiBarSaturation;
40 };
41 
42 constexpr char GE_FILTER_WATER_RIPPLE[] = "WATER_RIPPLE";
43 constexpr char GE_FILTER_WATER_RIPPLE_PROGRESS[] = "PROGRESS";
44 constexpr char GE_FILTER_WATER_RIPPLE_WAVE_NUM[] = "WAVE_NUM";
45 constexpr char GE_FILTER_WATER_RIPPLE_RIPPLE_CENTER_X[] = "RIPPLE_CENTER_X";
46 constexpr char GE_FILTER_WATER_RIPPLE_RIPPLE_CENTER_Y[] = "RIPPLE_CENTER_Y";
47 constexpr char GE_FILTER_WATER_RIPPLE_RIPPLE_MODE[] = "RIPPLE_MODE";
48 struct GEWaterRippleFilterParams {
49     float progress = 0.0f;
50     uint32_t waveCount = 2;
51     float rippleCenterX = 0.5f;
52     float rippleCenterY = 0.7f;
53     uint32_t rippleMode = 1;
54 };
55 
56 constexpr char GE_FILTER_GREY[] = "GREY";
57 constexpr char GE_FILTER_GREY_COEF_1[] = "GREY_COEF_1";
58 constexpr char GE_FILTER_GREY_COEF_2[] = "GREY_COEF_2";
59 struct GEGreyShaderFilterParams {
60     float greyCoef1;
61     float greyCoef2;
62 };
63 
64 constexpr char GE_FILTER_KAWASE_BLUR[] = "KAWASE_BLUR";
65 constexpr char GE_FILTER_KAWASE_BLUR_RADIUS[] = "KAWASE_BLUR_RADIUS";
66 struct GEKawaseBlurShaderFilterParams {
67     int radius;
68 };
69 
70 constexpr char GE_FILTER_MESA_BLUR[] = "MESA_BLUR";
71 constexpr char GE_FILTER_MESA_BLUR_RADIUS[] = "MESA_BLUR_RADIUS";
72 constexpr char GE_FILTER_MESA_BLUR_GREY_COEF_1[] = "MESA_BLUR_GREY_COEF_1";
73 constexpr char GE_FILTER_MESA_BLUR_GREY_COEF_2[] = "MESA_BLUR_GREY_COEF_2";
74 constexpr char GE_FILTER_MESA_BLUR_STRETCH_OFFSET_X[] = "OFFSET_X";
75 constexpr char GE_FILTER_MESA_BLUR_STRETCH_OFFSET_Y[] = "OFFSET_Y";
76 constexpr char GE_FILTER_MESA_BLUR_STRETCH_OFFSET_Z[] = "OFFSET_Z";
77 constexpr char GE_FILTER_MESA_BLUR_STRETCH_OFFSET_W[] = "OFFSET_W";
78 constexpr char GE_FILTER_MESA_BLUR_STRETCH_TILE_MODE[] = "TILE_MODE";
79 constexpr char GE_FILTER_MESA_BLUR_STRETCH_WIDTH[] = "WIDTH";
80 constexpr char GE_FILTER_MESA_BLUR_STRETCH_HEIGHT[] = "HEIGHT";
81 struct GEMESABlurShaderFilterParams {
82     int radius;
83     float greyCoef1;
84     float greyCoef2;
85     float offsetX;
86     float offsetY;
87     float offsetZ;
88     float offsetW;
89     int tileMode;
90     float width;
91     float height;
92 };
93 
94 constexpr char GE_FILTER_LINEAR_GRADIENT_BLUR[] = "LINEAR_GRADIENT_BLUR";
95 constexpr char GE_FILTER_LINEAR_GRADIENT_BLUR_DIRECTION[] = "DIRECTION";
96 constexpr char GE_FILTER_LINEAR_GRADIENT_BLUR_IS_OFF_SCREEN[] = "ISOFFSCREEN";
97 constexpr char GE_FILTER_LINEAR_GRADIENT_BLUR_CANVAS_MAT[] = "CANVASMAT";
98 constexpr char GE_FILTER_LINEAR_GRADIENT_BLUR_FRACTION_STOPS[] = "FRACTIONSTOPS";
99 constexpr char GE_FILTER_LINEAR_GRADIENT_BLUR_RADIUS[] = "BLURRADIUS";
100 constexpr char GE_FILTER_LINEAR_GRADIENT_BLUR_GEO_WIDTH[] = "GEOWIDTH";
101 constexpr char GE_FILTER_LINEAR_GRADIENT_BLUR_GEO_HEIGHT[] = "GEOHEIGHT";
102 constexpr char GE_FILTER_LINEAR_GRADIENT_BLUR_TRAN_X[] = "TRANX";
103 constexpr char GE_FILTER_LINEAR_GRADIENT_BLUR_TRAN_Y[] = "TRANY";
104 struct GELinearGradientBlurShaderFilterParams {
105     float blurRadius;
106     std::vector<std::pair<float, float>> fractionStops;
107     int direction;
108     float geoWidth;
109     float geoHeight;
110     Drawing::Matrix mat;
111     float tranX;
112     float tranY;
113     bool isOffscreenCanvas;
114 };
115 
116 constexpr char GE_FILTER_MAGNIFIER[] = "MAGNIFIER";
117 constexpr char GE_FILTER_MAGNIFIER_FACTOR[] = "FACTOR";
118 constexpr char GE_FILTER_MAGNIFIER_WIDTH[] = "WIDTH";
119 constexpr char GE_FILTER_MAGNIFIER_HEIGHT[] = "HEIGHT";
120 constexpr char GE_FILTER_MAGNIFIER_CORNER_RADIUS[] = "CORNERRADIUS";
121 constexpr char GE_FILTER_MAGNIFIER_BORDER_WIDTH[] = "BORDERWIDTH";
122 constexpr char GE_FILTER_MAGNIFIER_SHADOW_OFFSET_X[] = "SHADOWOFFSETX";
123 constexpr char GE_FILTER_MAGNIFIER_SHADOW_OFFSET_Y[] = "SHADOWOFFSETY";
124 constexpr char GE_FILTER_MAGNIFIER_SHADOW_SIZE[] = "SHADOWSIZE";
125 constexpr char GE_FILTER_MAGNIFIER_SHADOW_STRENGTH[] = "SHADOWSTRENGTH";
126 constexpr char GE_FILTER_MAGNIFIER_GRADIENT_MASK_COLOR_1[] = "GRADIENTMASKCOLOR1";
127 constexpr char GE_FILTER_MAGNIFIER_GRADIENT_MASK_COLOR_2[] = "GRADIENTMASKCOLOR2";
128 constexpr char GE_FILTER_MAGNIFIER_OUTER_CONTOUR_COLOR_1[] = "OUTERCONTOURCOLOR1";
129 constexpr char GE_FILTER_MAGNIFIER_OUTER_CONTOUR_COLOR_2[] = "OUTERCONTOURCOLOR2";
130 constexpr char GE_FILTER_MAGNIFIER_ROTATE_DEGREE[] = "ROTATEDEGREE";
131 struct GEMagnifierShaderFilterParams {
132     float factor = 0.f;
133     float width = 0.f;
134     float height = 0.f;
135     float cornerRadius = 0.f;
136     float borderWidth = 0.f;
137 
138     float shadowOffsetX = 0.f;
139     float shadowOffsetY = 0.f;
140     float shadowSize = 0.f;
141     float shadowStrength = 0.f;
142 
143     // rgba
144     uint32_t gradientMaskColor1 = 0x00000000;
145     uint32_t gradientMaskColor2 = 0x00000000;
146     uint32_t outerContourColor1 = 0x00000000;
147     uint32_t outerContourColor2 = 0x00000000;
148 
149     int32_t rotateDegree = 0;
150 };
151 
152 } // namespace Drawing
153 } // namespace Rosen
154 } // namespace OHOS
155 
156 #endif // GRAPHICS_EFFECT_GE_SHADER_FILTER_PARAMS_H
157