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