1 /*
2 * Copyright (c) 2020-2021 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 "ui_test_render.h"
17
18 #include "common/screen.h"
19
20 namespace OHOS {
SetUp()21 void UITestRender::SetUp()
22 {
23 if (container_ == nullptr) {
24 container_ = new UIScrollView();
25 container_->Resize(Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight() - BACK_BUTTON_HEIGHT);
26 }
27 }
28
TearDown()29 void UITestRender::TearDown()
30 {
31 DeleteChildren(container_);
32 container_ = nullptr;
33 }
34
GetTestView()35 const UIView* UITestRender::GetTestView()
36 {
37 UIKitRenderTestRender001();
38 UIKitRenderTestRenderMeasure001();
39 return container_;
40 }
41
42 class TestRenderClickListener : public UIView::OnClickListener {
43 public:
OnClick(UIView & view,const ClickEvent & event)44 bool OnClick(UIView& view, const ClickEvent& event) override
45 {
46 static uint8_t r = 20;
47 static uint8_t g = 120;
48 static uint8_t b = 50;
49 view.SetStyle(STYLE_BACKGROUND_COLOR, Color::GetColorFromRGB(r, g, b).full);
50 view.Invalidate();
51
52 r = r + 30; // 30: red add
53 g = g + 30; // 30: green add
54 b = b + 30; // 30: blue add
55 return true;
56 }
57 };
58
CreateTestCaseGroup() const59 UIViewGroup* UITestRender::CreateTestCaseGroup() const
60 {
61 UIViewGroup* group = new UIViewGroup();
62 group->Resize(Screen::GetInstance().GetWidth(), 200); // 200: height
63 return group;
64 }
65
CreateTitleLabel() const66 UILabel* UITestRender::CreateTitleLabel() const
67 {
68 UILabel* label = new UILabel();
69 // 216: label width
70 label->SetPosition(TEXT_DISTANCE_TO_LEFT_SIDE, TEXT_DISTANCE_TO_TOP_SIDE, 216, TITLE_LABEL_DEFAULT_HEIGHT);
71 label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_DEFAULT_SIZE);
72 return label;
73 }
74
UIKitRenderTestRender001()75 void UITestRender::UIKitRenderTestRender001()
76 {
77 if (container_ == nullptr) {
78 return;
79 }
80
81 UIViewGroup* group = CreateTestCaseGroup();
82 group->SetViewId("UIKit_Render_Test_Render_001");
83 group->SetPosition(0, 0);
84
85 UILabel* label = CreateTitleLabel();
86 group->Add(label);
87 label->SetText("UIKit绘制效果:");
88
89 UIView* view = new UIView();
90 view->Resize(200, 50); // 200: width 50: height
91 view->SetPosition(50, 50); // 50: position x 50: position y
92 view->SetStyle(STYLE_BACKGROUND_COLOR, Color::Yellow().full);
93 group->Add(view);
94 view->SetTouchable(true);
95 view->SetOnClickListener(new TestRenderClickListener());
96
97 UIView* view1 = new UIView();
98 view1->Resize(100, 50); // 100: width 50: height
99 view1->SetPosition(50, 120); // 50: position x 120: position y
100 view1->SetStyle(STYLE_BACKGROUND_COLOR, Color::Green().full);
101 view1->SetTouchable(true);
102 view1->SetOnClickListener(new TestRenderClickListener());
103 group->Add(view1);
104 container_->Add(group);
105 }
106
UIKitRenderTestRenderMeasure001()107 void UITestRender::UIKitRenderTestRenderMeasure001()
108 {
109 if (container_ == nullptr) {
110 return;
111 }
112
113 UIViewGroup* group = CreateTestCaseGroup();
114 group->SetViewId("UIKit_Render_Test_RenderMeasure_001");
115 container_->Add(group);
116
117 UILabel* label = CreateTitleLabel();
118 group->Add(label);
119 // 2: half of screen width
120 label->Resize(Screen::GetInstance().GetWidth() / 2, TITLE_LABEL_DEFAULT_HEIGHT);
121 label->SetText("UIKit绘制Measure效果:");
122
123 testLabel_ = new UILabel();
124 group->Add(testLabel_);
125 testLabel_->SetPosition(VIEW_DISTANCE_TO_LEFT_SIDE, VIEW_DISTANCE_TO_TOP_SIDE);
126 testLabel_->Resize(150, 80); // 150: width 80: height
127 testLabel_->SetViewId("label_text");
128 testLabel_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_DEFAULT_SIZE);
129 testLabel_->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);
130 testLabel_->SetText("示例文字,示例文字");
131
132 labelButton_ = new UILabelButton();
133 group->Add(labelButton_);
134 labelButton_->Resize(BUTTON_WIDHT3, BUTTON_HEIGHT3);
135 labelButton_->SetText("更新label");
136 labelButton_->SetViewId(UI_TEST_RENDER_UPDATA_BUTTON_ID_01);
137 labelButton_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_DEFAULT_SIZE);
138 labelButton_->SetStyleForState(STYLE_BORDER_RADIUS, BUTTON_STYLE_BORDER_RADIUS_VALUE, UIButton::RELEASED);
139 labelButton_->SetStyleForState(STYLE_BORDER_RADIUS, BUTTON_STYLE_BORDER_RADIUS_VALUE, UIButton::PRESSED);
140 labelButton_->SetStyleForState(STYLE_BACKGROUND_COLOR, BUTTON_STYLE_BACKGROUND_COLOR_VALUE, UIButton::RELEASED);
141 labelButton_->SetStyleForState(STYLE_BACKGROUND_COLOR, BUTTON_STYLE_BACKGROUND_COLOR_PRESS, UIButton::PRESSED);
142 labelButton_->SetPosition(VIEW_DISTANCE_TO_LEFT_SIDE, VIEW_DISTANCE_TO_TOP_SIDE);
143 labelButton_->SetOnClickListener(this);
144 labelButton_->LayoutBottomToSibling("label_text"); // 10: offset
145
146 group->LayoutBottomToSibling("UIKit_Render_Test_Render_001", 10); // 10: offset
147 }
148
OnClick(UIView & view,const ClickEvent & event)149 bool UITestRender::OnClick(UIView& view, const ClickEvent& event)
150 {
151 if (&view == labelButton_) {
152 testLabel_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 15); // 18: font size
153 }
154 return true;
155 }
156 } // namespace OHOS