1 /*
2 * Copyright (c) 2021-2022 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 #include "core/components_v2/inspector/divider_composed_element.h"
17
18 #include "base/log/dump_log.h"
19 #include "core/components_v2/inspector/utils.h"
20
21 namespace OHOS::Ace::V2 {
22
23 namespace {
24
25 const std::unordered_map<std::string, std::function<std::string(const DividerComposedElement&)>> CREATE_JSON_MAP {
__anonb2e5b0a30202(const DividerComposedElement& inspector) 26 { "vertical", [](const DividerComposedElement& inspector) { return inspector.GetDividerVertical(); } },
__anonb2e5b0a30302(const DividerComposedElement& inspector) 27 { "color", [](const DividerComposedElement& inspector) { return inspector.GetDividerColor(); } },
__anonb2e5b0a30402(const DividerComposedElement& inspector) 28 { "strokeWidth", [](const DividerComposedElement& inspector) { return inspector.GetStrokeWidth(); } },
__anonb2e5b0a30502(const DividerComposedElement& inspector) 29 { "lineCap", [](const DividerComposedElement& inspector) { return inspector.GetDividerLineCap(); } },
30 };
31
32 }
33
Dump()34 void DividerComposedElement::Dump()
35 {
36 InspectorComposedElement::Dump();
37 DumpLog::GetInstance().AddDesc(
38 std::string("vertical: ").append(GetDividerVertical().c_str()));
39 DumpLog::GetInstance().AddDesc(
40 std::string("color: ").append(GetDividerColor().c_str()));
41 DumpLog::GetInstance().AddDesc(
42 std::string("strokeWidth: ").append(GetStrokeWidth().c_str()));
43 DumpLog::GetInstance().AddDesc(
44 std::string("lineCap: ").append(GetDividerLineCap().c_str()));
45 }
46
ToJsonObject() const47 std::unique_ptr<JsonValue> DividerComposedElement::ToJsonObject() const
48 {
49 auto resultJson = InspectorComposedElement::ToJsonObject();
50 for (const auto& value : CREATE_JSON_MAP) {
51 resultJson->Put(value.first.c_str(), value.second(*this).c_str());
52 }
53 return resultJson;
54 }
55
GetDividerVertical() const56 std::string DividerComposedElement::GetDividerVertical() const
57 {
58 auto renderDivider = GetRenderDivider();
59 auto vertical = renderDivider ? renderDivider->GetIsVertical() : false;
60 return ConvertBoolToString(vertical);
61 }
62
GetDividerColor() const63 std::string DividerComposedElement::GetDividerColor() const
64 {
65 auto renderDivider = GetRenderDivider();
66 auto color = renderDivider ? renderDivider->GetDividerColor() : Color::BLACK;
67 return ConvertColorToString(color);
68 }
69
GetStrokeWidth() const70 std::string DividerComposedElement::GetStrokeWidth() const
71 {
72 auto renderDivider = GetRenderDivider();
73 auto strokeWidth = renderDivider ? renderDivider->GetStrokeWidth() : Dimension(1.0);
74 return std::to_string(strokeWidth.Value());
75 }
76
GetDividerLineCap() const77 std::string DividerComposedElement::GetDividerLineCap() const
78 {
79 auto renderDivider = GetRenderDivider();
80 auto lineCap = renderDivider ? renderDivider->GetLineCap() : LineCap::BUTT;
81 return ConvertLineCapToString(lineCap);
82 }
83
GetRenderDivider() const84 RefPtr<RenderDivider> DividerComposedElement::GetRenderDivider() const
85 {
86 auto node = GetInspectorNode(DividerElement::TypeId());
87 if (node) {
88 return AceType::DynamicCast<RenderDivider>(node);
89 }
90 return nullptr;
91 }
92
ConvertLineCapToString(LineCap cap) const93 std::string DividerComposedElement::ConvertLineCapToString(LineCap cap) const
94 {
95 std::string result = "";
96 switch (cap) {
97 case LineCap::BUTT:
98 result = "LineCapStyle.Butt";
99 break;
100 case LineCap::ROUND:
101 result = "LineCapStyle.Round";
102 break;
103 case LineCap::SQUARE:
104 result = "LineCapStyle.Square";
105 break;
106 default:
107 break;
108 }
109 return result;
110 }
111
112 } // namespace OHOS::Ace::V2