move layout files

Signed-off-by: Tianer Zhou <zhoutianer@huawei.com>
Change-Id: Idb7742dab1aa03b636c81ebe9a24f22fd4331043
This commit is contained in:
Tianer Zhou 2024-05-24 15:25:32 +08:00
parent 2059218514
commit afcb7ce874
25 changed files with 109 additions and 89 deletions

View File

@ -168,6 +168,7 @@ frameworks/core/components_ng/pattern/ui_extension/ @lushi1202 @keerecles @Zhan
frameworks/core/components_ng/pattern/video/ @sunbees
frameworks/core/components_ng/pattern/view_context/ @hehongyang9
frameworks/core/components_ng/pattern/waterflow/ @zcdqs
frameworks/core/components_ng/pattern/waterflow/layout/sliding_window/ @zhoutianer
frameworks/core/components_ng/pattern/web/ @LongLie
frameworks/core/components_ng/pattern/window_scene/ @liuchao92
frameworks/core/components_ng/pattern/xcomponent/ @sunbees

View File

@ -526,19 +526,20 @@ build_component_ng("pattern_ng") {
"view_context/view_context_model_ng.cpp",
"waterflow/layout/sliding_window/water_flow_layout_info_sw.cpp",
"waterflow/layout/sliding_window/water_flow_layout_sw.cpp",
"waterflow/layout/top_down/water_flow_layout_algorithm.cpp",
"waterflow/layout/top_down/water_flow_layout_info.cpp",
"waterflow/layout/top_down/water_flow_segmented_layout.cpp",
"waterflow/layout/water_flow_layout_info_base.cpp",
"waterflow/layout/water_flow_layout_utils.cpp",
"waterflow/water_flow_accessibility_property.cpp",
"waterflow/water_flow_content_modifier.cpp",
"waterflow/water_flow_item_model_ng.cpp",
"waterflow/water_flow_item_node.cpp",
"waterflow/water_flow_layout_algorithm.cpp",
"waterflow/water_flow_layout_info.cpp",
"waterflow/water_flow_layout_property.cpp",
"waterflow/water_flow_layout_utils.cpp",
"waterflow/water_flow_model_ng.cpp",
"waterflow/water_flow_paint_method.cpp",
"waterflow/water_flow_pattern.cpp",
"waterflow/water_flow_sections.cpp",
"waterflow/water_flow_segmented_layout.cpp",
]
external_deps = []

View File

@ -20,8 +20,8 @@
#include <deque>
#include <vector>
#include "core/components_ng/pattern/waterflow/water_flow_layout_algorithm_base.h"
#include "core/components_ng/pattern/waterflow/water_flow_layout_info_base.h"
#include "core/components_ng/pattern/waterflow/layout/water_flow_layout_algorithm_base.h"
#include "core/components_ng/pattern/waterflow/layout/water_flow_layout_info_base.h"
namespace OHOS::Ace::NG {

View File

@ -22,9 +22,9 @@
#include "core/components/scroll/scroll_controller_base.h"
#include "core/components_ng/base/frame_node.h"
#include "core/components_ng/layout/layout_wrapper.h"
#include "core/components_ng/pattern/waterflow/water_flow_layout_info_base.h"
#include "core/components_ng/pattern/waterflow/layout/water_flow_layout_info_base.h"
#include "core/components_ng/pattern/waterflow/water_flow_layout_property.h"
#include "core/components_ng/pattern/waterflow/water_flow_layout_utils.h"
#include "core/components_ng/pattern/waterflow/layout/water_flow_layout_utils.h"
#include "core/components_ng/property/measure_utils.h"
#include "core/components_ng/property/templates_parser.h"

View File

@ -13,15 +13,14 @@
* limitations under the License.
*/
#include "core/components_ng/pattern/waterflow/water_flow_layout_algorithm.h"
#include "core/components_ng/pattern/waterflow/layout/top_down/water_flow_layout_algorithm.h"
#include "base/geometry/axis.h"
#include "core/components_ng/base/frame_node.h"
#include "core/components_ng/layout/layout_wrapper.h"
#include "core/components_ng/pattern/grid/grid_utils.h"
#include "core/components_ng/pattern/waterflow/water_flow_item_layout_property.h"
#include "core/components_ng/pattern/waterflow/layout/top_down/water_flow_layout_info.h"
#include "core/components_ng/pattern/waterflow/layout/water_flow_layout_utils.h"
#include "core/components_ng/pattern/waterflow/water_flow_layout_property.h"
#include "core/components_ng/pattern/waterflow/water_flow_layout_utils.h"
#include "core/components_ng/property/measure_utils.h"
#include "core/components_ng/property/templates_parser.h"

View File

@ -16,8 +16,8 @@
#ifndef FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERN_WATERFLOW_WATER_FLOW_LAYOUT_ALGORITHM_H
#define FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERN_WATERFLOW_WATER_FLOW_LAYOUT_ALGORITHM_H
#include "core/components_ng/pattern/waterflow/water_flow_layout_algorithm_base.h"
#include "core/components_ng/pattern/waterflow/water_flow_layout_info.h"
#include "core/components_ng/pattern/waterflow/layout/water_flow_layout_algorithm_base.h"
#include "core/components_ng/pattern/waterflow/layout/top_down/water_flow_layout_info.h"
#include "core/components_ng/pattern/waterflow/water_flow_layout_property.h"
namespace OHOS::Ace::NG {

View File

@ -13,11 +13,10 @@
* limitations under the License.
*/
#include "core/components_ng/pattern/waterflow/water_flow_layout_info.h"
#include "core/components_ng/pattern/waterflow/layout/top_down/water_flow_layout_info.h"
#include <algorithm>
#include "core/components_ng/pattern/waterflow/layout/sliding_window/water_flow_layout_info_sw.h"
#include "core/components_ng/property/calc_length.h"
#include "core/components_ng/property/measure_property.h"
#include "core/components_ng/property/measure_utils.h"
@ -25,16 +24,6 @@
constexpr float HALF = 0.5f;
namespace OHOS::Ace::NG {
RefPtr<WaterFlowLayoutInfoBase> WaterFlowLayoutInfoBase::Create(WaterFlowLayoutMode mode)
{
switch (mode) {
case WaterFlowLayoutMode::SLIDING_WINDOW:
return MakeRefPtr<WaterFlowLayoutInfoSW>();
default:
return MakeRefPtr<WaterFlowLayoutInfo>();
}
}
int32_t WaterFlowLayoutInfo::GetCrossIndex(int32_t itemIndex) const
{
if (static_cast<size_t>(itemIndex) < itemInfos_.size()) {
@ -354,25 +343,6 @@ bool WaterFlowLayoutInfo::ReachEnd(float prevOffset) const
return scrollDownToReachEnd || scrollUpToReachEnd;
}
int32_t WaterFlowLayoutInfo::GetSegment(int32_t itemIdx) const
{
if (segmentTails_.empty() || itemIdx < 0) {
return 0;
}
auto cache = segmentCache_.find(itemIdx);
if (cache != segmentCache_.end()) {
return cache->second;
}
auto it = std::lower_bound(segmentTails_.begin(), segmentTails_.end(), itemIdx);
if (it == segmentTails_.end()) {
return static_cast<int32_t>(segmentTails_.size()) - 1;
}
int32_t idx = it - segmentTails_.begin();
segmentCache_[itemIdx] = idx;
return idx;
}
int32_t WaterFlowLayoutInfo::FastSolveStartIndex() const
{
auto it = std::upper_bound(endPosArray_.begin(), endPosArray_.end(), -currentOffset_,

View File

@ -21,9 +21,8 @@
#include <optional>
#include <sstream>
#include "core/components/scroll/scroll_controller_base.h"
#include "core/components_ng/pattern/waterflow/water_flow_layout_algorithm_base.h"
#include "core/components_ng/pattern/waterflow/water_flow_layout_info_base.h"
#include "core/components_ng/pattern/waterflow/layout/water_flow_layout_algorithm_base.h"
#include "core/components_ng/pattern/waterflow/layout/water_flow_layout_info_base.h"
#include "core/components_ng/pattern/waterflow/water_flow_sections.h"
#include "core/components_ng/property/measure_property.h"
@ -114,14 +113,6 @@ public:
float JumpToTargetAlign(const std::pair<float, float>& item) const;
void JumpTo(const std::pair<float, float>& item);
/**
* @brief Get the Segment index of a FlowItem
*
* @param itemIdx
* @return segment index.
*/
int32_t GetSegment(int32_t itemIdx) const;
/**
* @brief Init data structures based on new WaterFlow Sections.
*
@ -207,18 +198,12 @@ public:
*/
std::vector<std::pair<float, int32_t>> endPosArray_;
// Stores the tail item index of each segment.
std::vector<int32_t> segmentTails_;
// margin of each segment
std::vector<PaddingPropertyF> margins_;
// Stores the start position of each segment.
std::vector<float> segmentStartPos_ = { 0.0f };
// K: item index; V: corresponding segment index
mutable std::unordered_map<int32_t, int32_t> segmentCache_;
void PrintWaterFlowItems() const;
};

View File

@ -13,7 +13,7 @@
* limitations under the License.
*/
#include "core/components_ng/pattern/waterflow/water_flow_segmented_layout.h"
#include "core/components_ng/pattern/waterflow/layout/top_down/water_flow_segmented_layout.h"
#include "base/geometry/dimension.h"
#include "base/geometry/ng/offset_t.h"
@ -21,9 +21,9 @@
#include "core/components/scroll/scroll_controller_base.h"
#include "core/components_ng/base/frame_node.h"
#include "core/components_ng/layout/layout_wrapper.h"
#include "core/components_ng/pattern/waterflow/water_flow_layout_info.h"
#include "core/components_ng/pattern/waterflow/layout/top_down/water_flow_layout_info.h"
#include "core/components_ng/pattern/waterflow/water_flow_layout_property.h"
#include "core/components_ng/pattern/waterflow/water_flow_layout_utils.h"
#include "core/components_ng/pattern/waterflow/layout/water_flow_layout_utils.h"
#include "core/components_ng/pattern/waterflow/water_flow_pattern.h"
#include "core/components_ng/pattern/waterflow/water_flow_sections.h"
#include "core/components_ng/property/calc_length.h"

View File

@ -16,9 +16,9 @@
#ifndef FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERN_WATERFLOW_WATER_FLOW_SEGMENTED_LAYOUT_H
#define FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERN_WATERFLOW_WATER_FLOW_SEGMENTED_LAYOUT_H
#include "core/components_ng/layout/layout_algorithm.h"
#include "core/components_ng/pattern/waterflow/water_flow_layout_algorithm.h"
#include "core/components_ng/pattern/waterflow/water_flow_layout_info.h"
#include "core/components_ng/pattern/waterflow/layout/top_down/water_flow_layout_info.h"
#include "core/components_ng/pattern/waterflow/layout/water_flow_layout_algorithm_base.h"
#include "core/components_ng/pattern/waterflow/water_flow_layout_property.h"
namespace OHOS::Ace::NG {
class WaterFlowSegmentedLayout : public WaterFlowLayoutBase {

View File

@ -0,0 +1,50 @@
/*
* Copyright (c) 2024 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "core/components_ng/pattern/waterflow/layout/water_flow_layout_info_base.h"
#include "core/components_ng/pattern/waterflow/layout/sliding_window/water_flow_layout_info_sw.h"
#include "core/components_ng/pattern/waterflow/layout/top_down/water_flow_layout_info.h"
#include "core/components_ng/pattern/waterflow/layout/water_flow_layout_algorithm_base.h"
namespace OHOS::Ace::NG {
RefPtr<WaterFlowLayoutInfoBase> WaterFlowLayoutInfoBase::Create(WaterFlowLayoutMode mode)
{
switch (mode) {
case WaterFlowLayoutMode::SLIDING_WINDOW:
return MakeRefPtr<WaterFlowLayoutInfoSW>();
default:
return MakeRefPtr<WaterFlowLayoutInfo>();
}
}
int32_t WaterFlowLayoutInfoBase::GetSegment(int32_t itemIdx) const
{
if (segmentTails_.empty() || itemIdx < 0) {
return 0;
}
auto cache = segmentCache_.find(itemIdx);
if (cache != segmentCache_.end()) {
return cache->second;
}
auto it = std::lower_bound(segmentTails_.begin(), segmentTails_.end(), itemIdx);
if (it == segmentTails_.end()) {
return static_cast<int32_t>(segmentTails_.size()) - 1;
}
int32_t idx = it - segmentTails_.begin();
segmentCache_[itemIdx] = idx;
return idx;
}
} // namespace OHOS::Ace::NG

View File

@ -120,11 +120,18 @@ public:
virtual void Reset() = 0;
// for compatibility
virtual void InitSegments(const std::vector<WaterFlowSections::Section>& sections, int32_t start) {}
// for compatibility
virtual void UpdateStartIndex() {};
virtual void InitSegments(const std::vector<WaterFlowSections::Section>& sections, int32_t start) {}
/**
* @brief Get the Segment index of a FlowItem
*
* @param itemIdx
* @return segment index.
*/
int32_t GetSegment(int32_t itemIdx) const;
bool itemStart_ = false;
bool itemEnd_ = false; // last item is partially in viewport
bool offsetEnd_ = false; // last item's bottom is in viewport
@ -145,6 +152,11 @@ public:
float storedOffset_ = 0.0f;
float restoreOffset_ = 0.0f;
// Stores the tail item index of each segment.
std::vector<int32_t> segmentTails_;
// K: item index; V: corresponding segment index
mutable std::unordered_map<int32_t, int32_t> segmentCache_;
ACE_DISALLOW_COPY_AND_MOVE(WaterFlowLayoutInfoBase);
};

View File

@ -12,7 +12,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "frameworks/core/components_ng/pattern/waterflow/water_flow_layout_utils.h"
#include "frameworks/core/components_ng/pattern/waterflow/layout/water_flow_layout_utils.h"
#include "base/utils/string_utils.h"
#include "core/components_ng/layout/layout_wrapper.h"

View File

@ -17,7 +17,7 @@
#define FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERN_WATERFLOW_WATER_FLOW_LAYOUT_UTILS_H
#include <string>
#include "core/components_ng/pattern/waterflow/water_flow_layout_info.h"
#include "core/components_ng/pattern/waterflow/layout/top_down/water_flow_layout_info.h"
#include "core/components_ng/pattern/waterflow/water_flow_layout_property.h"
#include "core/components_ng/property/layout_constraint.h"
namespace OHOS::Ace::NG {

View File

@ -22,7 +22,7 @@
#include "core/components/scroll/scroll_controller_base.h"
#include "core/components/scroll_bar/scroll_proxy.h"
#include "core/components_ng/pattern/scrollable/scrollable_properties.h"
#include "core/components_ng/pattern/waterflow/water_flow_layout_algorithm_base.h"
#include "core/components_ng/pattern/waterflow/layout/water_flow_layout_algorithm_base.h"
#include "core/components_ng/pattern/waterflow/water_flow_sections.h"
namespace OHOS::Ace {

View File

@ -18,10 +18,11 @@
#include "base/utils/utils.h"
#include "core/components/scroll/scroll_controller_base.h"
#include "core/components_ng/pattern/waterflow/layout/sliding_window/water_flow_layout_sw.h"
#include "core/components_ng/pattern/waterflow/water_flow_layout_algorithm.h"
#include "core/components_ng/pattern/waterflow/water_flow_layout_info.h"
#include "core/components_ng/pattern/waterflow/layout/top_down/water_flow_layout_algorithm.h"
#include "core/components_ng/pattern/waterflow/layout/top_down/water_flow_layout_info.h"
#include "core/components_ng/pattern/waterflow/layout/top_down/water_flow_segmented_layout.h"
#include "core/components_ng/pattern/waterflow/layout/water_flow_layout_info_base.h"
#include "core/components_ng/pattern/waterflow/water_flow_paint_method.h"
#include "core/components_ng/pattern/waterflow/water_flow_segmented_layout.h"
namespace OHOS::Ace::NG {
SizeF WaterFlowPattern::GetContentSize() const

View File

@ -20,8 +20,8 @@
#include "core/components_ng/pattern/waterflow/water_flow_accessibility_property.h"
#include "core/components_ng/pattern/waterflow/water_flow_content_modifier.h"
#include "core/components_ng/pattern/waterflow/water_flow_event_hub.h"
#include "core/components_ng/pattern/waterflow/water_flow_layout_algorithm_base.h"
#include "core/components_ng/pattern/waterflow/water_flow_layout_info_base.h"
#include "core/components_ng/pattern/waterflow/layout/water_flow_layout_algorithm_base.h"
#include "core/components_ng/pattern/waterflow/layout/water_flow_layout_info_base.h"
#include "core/components_ng/pattern/waterflow/water_flow_layout_property.h"
#include "core/components_ng/pattern/waterflow/water_flow_sections.h"

View File

@ -1051,19 +1051,20 @@ ohos_source_set("ace_components_pattern") {
"$ace_root/frameworks/core/components_ng/pattern/view_context/view_context_model_ng.cpp",
"$ace_root/frameworks/core/components_ng/pattern/waterflow/layout/sliding_window/water_flow_layout_info_sw.cpp",
"$ace_root/frameworks/core/components_ng/pattern/waterflow/layout/sliding_window/water_flow_layout_sw.cpp",
"$ace_root/frameworks/core/components_ng/pattern/waterflow/layout/top_down/water_flow_layout_algorithm.cpp",
"$ace_root/frameworks/core/components_ng/pattern/waterflow/layout/top_down/water_flow_layout_info.cpp",
"$ace_root/frameworks/core/components_ng/pattern/waterflow/layout/top_down/water_flow_segmented_layout.cpp",
"$ace_root/frameworks/core/components_ng/pattern/waterflow/layout/water_flow_layout_info_base.cpp",
"$ace_root/frameworks/core/components_ng/pattern/waterflow/layout/water_flow_layout_utils.cpp",
"$ace_root/frameworks/core/components_ng/pattern/waterflow/water_flow_accessibility_property.cpp",
"$ace_root/frameworks/core/components_ng/pattern/waterflow/water_flow_content_modifier.cpp",
"$ace_root/frameworks/core/components_ng/pattern/waterflow/water_flow_item_model_ng.cpp",
"$ace_root/frameworks/core/components_ng/pattern/waterflow/water_flow_item_node.cpp",
"$ace_root/frameworks/core/components_ng/pattern/waterflow/water_flow_layout_algorithm.cpp",
"$ace_root/frameworks/core/components_ng/pattern/waterflow/water_flow_layout_info.cpp",
"$ace_root/frameworks/core/components_ng/pattern/waterflow/water_flow_layout_property.cpp",
"$ace_root/frameworks/core/components_ng/pattern/waterflow/water_flow_layout_utils.cpp",
"$ace_root/frameworks/core/components_ng/pattern/waterflow/water_flow_model_ng.cpp",
"$ace_root/frameworks/core/components_ng/pattern/waterflow/water_flow_paint_method.cpp",
"$ace_root/frameworks/core/components_ng/pattern/waterflow/water_flow_pattern.cpp",
"$ace_root/frameworks/core/components_ng/pattern/waterflow/water_flow_sections.cpp",
"$ace_root/frameworks/core/components_ng/pattern/waterflow/water_flow_segmented_layout.cpp",
"$ace_root/frameworks/core/components_ng/pattern/xcomponent/xcomponent_controller_ng.cpp",
"$ace_root/frameworks/core/components_ng/pattern/xcomponent/xcomponent_ext_surface_callback_client.cpp",
"$ace_root/frameworks/core/components_ng/pattern/xcomponent/xcomponent_layout_algorithm.cpp",

View File

@ -16,7 +16,7 @@
#ifndef FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_TEST_PATTERN_WATER_FLOW_ITEM_MAPS_H
#define FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_TEST_PATTERN_WATER_FLOW_ITEM_MAPS_H
#include "core/components_ng/pattern/waterflow/water_flow_layout_info.h"
#include "core/components_ng/pattern/waterflow/layout/top_down/water_flow_layout_info.h"
#include "core/components_ng/pattern/waterflow/water_flow_sections.h"
#include "core/components_ng/property/calc_length.h"
#include "core/components_ng/property/measure_property.h"

View File

@ -22,7 +22,7 @@
#include "test/unittest/core/pattern/test_ng.h"
#include "test/unittest/core/pattern/waterflow/water_flow_item_maps.h"
#include "core/components_ng/pattern/waterflow/water_flow_layout_info.h"
#include "core/components_ng/pattern/waterflow/layout/top_down/water_flow_layout_info.h"
#undef private
#undef protected

View File

@ -15,7 +15,7 @@
#include "test/unittest/core/pattern/waterflow/water_flow_item_maps.h"
#include "test/unittest/core/pattern/waterflow/water_flow_test_ng.h"
#include "core/components_ng/pattern/waterflow/water_flow_layout_info.h"
#include "core/components_ng/pattern/waterflow/layout/top_down/water_flow_layout_info.h"
#include "core/components_ng/property/calc_length.h"
#include "test/mock/core/pipeline/mock_pipeline_context.h"

View File

@ -16,7 +16,7 @@
#include "test/unittest/core/pattern/waterflow/water_flow_test_ng.h"
#include "core/components_ng/pattern/waterflow/water_flow_item_pattern.h"
#include "core/components_ng/pattern/waterflow/water_flow_layout_info.h"
#include "core/components_ng/pattern/waterflow/layout/top_down/water_flow_layout_info.h"
#include "core/components_ng/property/calc_length.h"
#include "core/components_ng/property/measure_property.h"
@ -25,7 +25,7 @@
#include "test/mock/core/pipeline/mock_pipeline_context.h"
#include "core/components_ng/pattern/waterflow/water_flow_item_node.h"
#include "core/components_ng/pattern/waterflow/water_flow_segmented_layout.h"
#include "core/components_ng/pattern/waterflow/layout/top_down/water_flow_segmented_layout.h"
namespace OHOS::Ace::NG {
class WaterFlowSegmentTest : public WaterFlowTestNg {

View File

@ -23,7 +23,7 @@
#include "test/mock/core/rosen/mock_canvas.h"
#include "core/components/scroll/scroll_controller_base.h"
#include "core/components_ng/pattern/waterflow/water_flow_layout_info.h"
#include "core/components_ng/pattern/waterflow/layout/top_down/water_flow_layout_info.h"
#include "core/components_ng/property/property.h"
#define protected public

View File

@ -15,7 +15,7 @@
#include "test/unittest/core/pattern/waterflow/water_flow_test_ng.h"
#include "core/components_ng/pattern/waterflow/water_flow_item_model_ng.h"
#include "core/components_ng/pattern/waterflow/water_flow_layout_info.h"
#include "core/components_ng/pattern/waterflow/layout/top_down/water_flow_layout_info.h"
namespace OHOS::Ace::NG {
/**