1 /* 2 * Copyright (c) 2023-2023 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 16 #ifndef BRIGHTNESS_CALCULATION_MANAGER_H 17 #define BRIGHTNESS_CALCULATION_MANAGER_H 18 19 #include <memory> 20 #include <mutex> 21 #include <vector> 22 23 #include "calculation_curve.h" 24 25 namespace OHOS { 26 namespace DisplayPowerMgr { 27 28 class BrightnessCalculationManager { 29 public: 30 BrightnessCalculationManager() = default; 31 virtual ~BrightnessCalculationManager() = default;; 32 BrightnessCalculationManager(const BrightnessCalculationManager&) = delete; 33 BrightnessCalculationManager& operator=(const BrightnessCalculationManager&) = delete; 34 BrightnessCalculationManager(BrightnessCalculationManager&&) = delete; 35 BrightnessCalculationManager& operator=(BrightnessCalculationManager&&) = delete; 36 void InitParameters(); 37 float GetInterpolatedValue(float lux); 38 void UpdateCurrentUserId(int userId); 39 void UpdateBrightnessOffset(float posBrightness, float lux); 40 void SetGameModeEnable(bool isGameCurveEnable); 41 void SetCameraModeEnable(bool isCameraCurveEnable); 42 void ResetOffsetFromHumanFactor(bool isOffsetResetEnable, int minOffsetBrightness, int maxOffsetBrightness); 43 44 private: 45 void UpdateParaFromReboot(); 46 void UpdateCurveAmbientLux(float lux); 47 float GetInterpolatedBrightenssLevel(float positionBrightness, float lux); 48 void UpdateDefaultBrightness(float lux); 49 float GetCurrentBrightness(float lux); 50 51 bool IsDefaultBrightnessMode(float positionBrightness); 52 float GetAmbientOffsetLux(); 53 float GetBrightenOffsetNoValidBrightenLux(float lux); 54 55 float GetOffsetLevel(float brightnessStartOrig, float brightnessEndOrig, 56 float brightnessStartNew, float delta); 57 float GetDefaultBrightenOffsetBrightenRaio(float brightnessStartOrig, float brightnessEndOrig, 58 float brightnessStartNew, float deltaStart); 59 float GetDefaultDarkenOffsetBrightenRatio(float brightnessStartOrig, float brightnessEndOrig, 60 float brightnessStartNew, float deltaStart); 61 float GetDefaultDarkenOffsetDarkenRatio(float brightnessStartOrig, float brightnessEndOrig, 62 float brightnessStartNew, float deltaStart); 63 float GetDefaultBrightenOffsetDarkenRatio(float brightnessStartOrig, float brightnessEndOrig, 64 float brightnessStartNew); 65 void ResetDefaultBrightnessOffset(); 66 67 BrightnessCalculationCurve mBrightnessCalculationCurve{}; 68 uint32_t mDisplayId{0}; 69 int mCurrentUserId{0}; 70 bool mIsCameraCurveEnable{false}; 71 bool mIsGameCurveEnable{false}; 72 float mDefaultBrightness{false}; 73 float mDelta{0.0f}; 74 float mOffsetLux{0.0f}; 75 float mPosBrightness{0.0f}; 76 bool mIsReboot{false}; 77 float mOffsetBrightnessLast{0.0f}; 78 float mLastLuxDefaultBrightness{0.0f}; 79 float mStartLuxDefaultBrightness{0.0f}; 80 float mCurveLux{0.0f}; 81 float mDefaultBrightnessFromLux{0.0f}; 82 float offsetBrightenAlphaRight{0.0f}; 83 float offsetDarkenAlphaLeft{0.0f}; 84 float offsetBrightenAlphaLeft{0.0f}; 85 float offsetBrightenRatioLeft{0.0f}; 86 }; 87 88 } // namespace DisplayPowerMgr 89 } // namespace OHOS 90 91 #endif // BRIGHTNESS_CALCULATION_MANAGER_H 92