1 /* 2 * Copyright (c) 2022-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 FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERN_TEXT_FIELD_TEXT_FIELD_PAINT_PROPERTY_H 17 #define FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERN_TEXT_FIELD_TEXT_FIELD_PAINT_PROPERTY_H 18 19 #include "base/geometry/dimension.h" 20 #include "core/components/common/properties/color.h" 21 #include "core/components_ng/pattern/text_field/text_field_model.h" 22 #include "core/components_ng/property/border_property.h" 23 #include "core/components_ng/property/measure_property.h" 24 #include "core/components_ng/property/property.h" 25 #include "core/components_ng/render/paint_property.h" 26 27 namespace OHOS::Ace::NG { 28 class InspectorFilter; 29 30 class TextFieldPaintProperty : public PaintProperty { 31 DECLARE_ACE_TYPE(TextFieldPaintProperty, PaintProperty) 32 public: 33 TextFieldPaintProperty() = default; 34 ~TextFieldPaintProperty() override = default; 35 Clone()36 RefPtr<PaintProperty> Clone() const override 37 { 38 auto value = MakeRefPtr<TextFieldPaintProperty>(); 39 value->PaintProperty::UpdatePaintProperty(DynamicCast<PaintProperty>(this)); 40 value->propInputStyle_ = CloneInputStyle(); 41 value->propCursorColor_ = CloneCursorColor(); 42 value->propCursorWidth_ = CloneCursorWidth(); 43 value->propSelectedBackgroundColor_ = CloneSelectedBackgroundColor(); 44 value->propBackgroundColor_ = CloneBackgroundColor(); 45 return value; 46 } 47 Reset()48 void Reset() override 49 { 50 PaintProperty::Reset(); 51 ResetCursorColor(); 52 ResetCursorWidth(); 53 ResetSelectedBackgroundColor(); 54 ResetInputStyle(); 55 ResetBackgroundColor(); 56 ResetPressBgColor(); 57 ResetHoverBgColor(); 58 ResetTextColorFlagByUser(); 59 ResetBorderRadiusFlagByUser(); 60 ResetBorderColorFlagByUser(); 61 ResetBorderWidthFlagByUser(); 62 ResetBorderStyleFlagByUser(); 63 ResetPaddingByUser(); 64 ResetMarginByUser(); 65 } 66 ResetUserProperties()67 void ResetUserProperties() 68 { 69 ResetBackgroundColor(); 70 ResetTextColorFlagByUser(); 71 ResetBorderRadiusFlagByUser(); 72 ResetBorderColorFlagByUser(); 73 ResetBorderWidthFlagByUser(); 74 ResetBorderStyleFlagByUser(); 75 ResetPaddingByUser(); 76 ResetMarginByUser(); 77 } 78 79 void ToJsonValue(std::unique_ptr<JsonValue>& json, const InspectorFilter& filter) const override; 80 81 void FromJson(const std::unique_ptr<JsonValue>& json) override; 82 83 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(CursorColor, Color, PROPERTY_UPDATE_RENDER); 84 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(CursorWidth, Dimension, PROPERTY_UPDATE_RENDER); 85 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(SelectedBackgroundColor, Color, PROPERTY_UPDATE_RENDER); 86 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(InputStyle, InputStyle, PROPERTY_UPDATE_RENDER); 87 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(BackgroundColor, Color, PROPERTY_UPDATE_RENDER); 88 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(PressBgColor, Color, PROPERTY_UPDATE_RENDER); 89 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(HoverBgColor, Color, PROPERTY_UPDATE_RENDER); 90 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(FirstHandleInfo, HandleInfoNG, PROPERTY_UPDATE_RENDER); 91 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(SecondHandleInfo, HandleInfoNG, PROPERTY_UPDATE_RENDER); 92 // 用于记录开发者设置的值 93 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(TextColorFlagByUser, Color, PROPERTY_UPDATE_RENDER); 94 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(BorderRadiusFlagByUser, BorderRadiusProperty, PROPERTY_UPDATE_RENDER); 95 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(BorderColorFlagByUser, BorderColorProperty, PROPERTY_UPDATE_RENDER); 96 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(BorderWidthFlagByUser, BorderWidthProperty, PROPERTY_UPDATE_RENDER); 97 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(BorderStyleFlagByUser, BorderStyleProperty, PROPERTY_UPDATE_RENDER); 98 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(PaddingByUser, PaddingProperty, PROPERTY_UPDATE_RENDER); 99 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(MarginByUser, MarginProperty, PROPERTY_UPDATE_RENDER); 100 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(PreviewTextStart, int32_t, PROPERTY_UPDATE_RENDER); 101 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(PreviewTextEnd, int32_t, PROPERTY_UPDATE_RENDER); 102 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(PreviewTextStyle, std::string, PROPERTY_UPDATE_RENDER); 103 104 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(InnerBorderWidth, Dimension, PROPERTY_UPDATE_RENDER); 105 ACE_DEFINE_PROPERTY_ITEM_WITHOUT_GROUP(InnerBorderColor, Color, PROPERTY_UPDATE_RENDER); 106 107 private: 108 ACE_DISALLOW_COPY_AND_MOVE(TextFieldPaintProperty); 109 }; 110 } // namespace OHOS::Ace::NG 111 112 #endif // FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERN_TEXT_FIELD_TEXT_FIELD_PROPERTY_H 113