[WEEX-442][Core] Remove unless include
Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/19406510 Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/19406510 Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/19406510 Branch: refs/heads/release Commit: 1940651026839f875ac66d101ae30caaae6fc8d6 Parents: 3dcab42 Author: miomin <[email protected]> Authored: Fri Jun 8 11:47:46 2018 +0800 Committer: YorkShen <[email protected]> Committed: Tue Jun 12 12:44:03 2018 +0800 ---------------------------------------------------------------------- weex_core/Source/CMakeLists.txt | 7 + .../native_render_object_utils_impl_android.cpp | 1 + .../Source/core/render/action/render_action.h | 9 +- .../render/action/render_action_add_element.cpp | 24 +- .../render/action/render_action_add_element.h | 22 +- .../render/action/render_action_add_event.cpp | 11 +- .../render/action/render_action_add_event.h | 9 +- .../render_action_appendtree_createfinish.cpp | 11 +- .../render_action_appendtree_createfinish.h | 6 +- .../render/action/render_action_createbody.cpp | 19 +- .../render/action/render_action_createbody.h | 17 +- .../action/render_action_createfinish.cpp | 7 +- .../render/action/render_action_createfinish.h | 6 +- .../core/render/action/render_action_layout.cpp | 15 +- .../core/render/action/render_action_layout.h | 16 +- .../action/render_action_move_element.cpp | 13 +- .../render/action/render_action_move_element.h | 8 +- .../action/render_action_remove_element.cpp | 11 +- .../action/render_action_remove_element.h | 6 +- .../action/render_action_remove_event.cpp | 15 +- .../render/action/render_action_remove_event.h | 9 +- .../render/action/render_action_update_attr.cpp | 8 +- .../render/action/render_action_update_attr.h | 9 +- .../action/render_action_update_style.cpp | 14 +- .../render/action/render_action_update_style.h | 15 +- .../core/render/manager/render_manager.cpp | 23 +- .../Source/core/render/manager/render_manager.h | 12 +- .../core/render/node/factory/i_render_factory.h | 2 +- .../core/render/node/factory/i_render_object.h | 13 +- .../render/node/factory/render_appbar_factory.h | 4 +- .../render/node/factory/render_cell_factory.h | 4 +- .../core/render/node/factory/render_creator.cpp | 37 +- .../node/factory/render_indicator_factory.h | 36 -- .../render/node/factory/render_input_factory.h | 36 -- .../render/node/factory/render_list_factory.h | 4 +- .../render/node/factory/render_mask_factory.h | 4 +- .../node/factory/render_scroller_factory.h | 4 +- .../render/node/factory/render_switch_factory.h | 36 -- .../render/node/factory/render_text_factory.h | 4 +- .../node/factory/render_textarea_factory.h | 36 -- .../core/render/node/factory/render_type.h | 4 - .../render/node/factory/simple_render_factory.h | 4 +- .../Source/core/render/node/render_appbar.cpp | 85 +++++ .../Source/core/render/node/render_appbar.h | 62 +--- weex_core/Source/core/render/node/render_cell.h | 2 +- .../Source/core/render/node/render_indicator.h | 30 -- .../Source/core/render/node/render_input.h | 30 -- .../Source/core/render/node/render_list.cpp | 319 +++++++++++++++++ weex_core/Source/core/render/node/render_list.h | 319 ++--------------- .../Source/core/render/node/render_mask.cpp | 54 +++ weex_core/Source/core/render/node/render_mask.h | 28 +- .../Source/core/render/node/render_object.cpp | 323 ++++++++++++++++- .../Source/core/render/node/render_object.h | 348 ++----------------- .../Source/core/render/node/render_scroller.cpp | 51 +++ .../Source/core/render/node/render_scroller.h | 34 +- .../Source/core/render/node/render_switch.h | 30 -- .../Source/core/render/node/render_text.cpp | 34 ++ weex_core/Source/core/render/node/render_text.h | 16 +- .../Source/core/render/node/render_textarea.h | 30 -- .../Source/core/render/page/render_page.cpp | 124 ++++--- weex_core/Source/core/render/page/render_page.h | 58 ++-- 61 files changed, 1278 insertions(+), 1250 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/CMakeLists.txt ---------------------------------------------------------------------- diff --git a/weex_core/Source/CMakeLists.txt b/weex_core/Source/CMakeLists.txt index d0ef00c..6cb9c18 100644 --- a/weex_core/Source/CMakeLists.txt +++ b/weex_core/Source/CMakeLists.txt @@ -19,8 +19,15 @@ set(COMMON_SRCS ./core/render/manager/render_manager.cpp ./core/render/page/render_page.cpp + ./core/render/node/render_object.cpp ./core/render/node/factory/render_creator.cpp + ./core/render/node/render_appbar.cpp + ./core/render/node/render_list.cpp + ./core/render/node/render_mask.cpp + ./core/render/node/render_scroller.cpp + ./core/render/node/render_text.cpp + ./core/render/action/render_action_add_event.cpp ./core/render/action/render_action_remove_event.cpp ./core/render/action/render_action_add_element.cpp http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/android/bridge/impl/native_render_object_utils_impl_android.cpp ---------------------------------------------------------------------- diff --git a/weex_core/Source/android/bridge/impl/native_render_object_utils_impl_android.cpp b/weex_core/Source/android/bridge/impl/native_render_object_utils_impl_android.cpp index dbf28a8..9fc1a39 100644 --- a/weex_core/Source/android/bridge/impl/native_render_object_utils_impl_android.cpp +++ b/weex_core/Source/android/bridge/impl/native_render_object_utils_impl_android.cpp @@ -29,6 +29,7 @@ #include <android/log.h> #include <core/render/node/render_list.h> #include <android/base/log_utils.h> +#include <core/config/core_environment.h> using namespace WeexCore; http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/action/render_action.h ---------------------------------------------------------------------- diff --git a/weex_core/Source/core/render/action/render_action.h b/weex_core/Source/core/render/action/render_action.h index 4cee828..e5e3cbc 100644 --- a/weex_core/Source/core/render/action/render_action.h +++ b/weex_core/Source/core/render/action/render_action.h @@ -19,16 +19,9 @@ #ifndef WEEXV8_RENDERACTION_H #define WEEXV8_RENDERACTION_H -#include <core/layout/layout.h> -#include <core/render/node/render_object.h> -#include <core/render/manager/render_manager.h> -#include <core/render/page/render_page.h> -#include <string> -#include <base/TimeUtils.h> - namespace WeexCore { - class render_action { + class RenderAction { public: virtual void ExecuteAction() = 0; }; http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/action/render_action_add_element.cpp ---------------------------------------------------------------------- diff --git a/weex_core/Source/core/render/action/render_action_add_element.cpp b/weex_core/Source/core/render/action/render_action_add_element.cpp index 8a69fe5..66dcbfb 100644 --- a/weex_core/Source/core/render/action/render_action_add_element.cpp +++ b/weex_core/Source/core/render/action/render_action_add_element.cpp @@ -16,13 +16,17 @@ * specific language governing permissions and limitations * under the License. */ -#include <core/manager/weex_core_manager.h> -#include "render_action_add_element.h" + +#include "core/render/node/render_object.h" +#include "core/manager/weex_core_manager.h" +#include "core/render/action/render_action_add_element.h" namespace WeexCore { - RenderActionAddElement::RenderActionAddElement(const std::string &pageId, const RenderObject *render, - const RenderObject *parent, int index, bool willLayout) { + RenderActionAddElement::RenderActionAddElement(const std::string &pageId, + const RenderObject *render, + const RenderObject *parent, int index, + bool willLayout) { this->mAttributes = render->Attributes(); this->mStyles = render->Styles(); this->mEvents = render->Events(); @@ -38,8 +42,14 @@ namespace WeexCore { } void RenderActionAddElement::ExecuteAction() { - WeexCoreManager::getInstance()->getPlatformBridge()->callAddElement(mPageId.c_str(), mComponentType.c_str(), mRef.c_str(), - mIndex, mParentRef.c_str(), mStyles, mAttributes, - mEvents, mMargins, mPaddings, mBorders, mWillLayout); + WeexCoreManager::getInstance()->getPlatformBridge()->callAddElement(mPageId.c_str(), + mComponentType.c_str(), + mRef.c_str(), + mIndex, mParentRef.c_str(), + mStyles, + mAttributes, + mEvents, mMargins, + mPaddings, mBorders, + mWillLayout); } } http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/action/render_action_add_element.h ---------------------------------------------------------------------- diff --git a/weex_core/Source/core/render/action/render_action_add_element.h b/weex_core/Source/core/render/action/render_action_add_element.h index 07968fc..2b9f553 100644 --- a/weex_core/Source/core/render/action/render_action_add_element.h +++ b/weex_core/Source/core/render/action/render_action_add_element.h @@ -19,22 +19,30 @@ #ifndef WEEX_PROJECT_ADDELEMENTACTION_H #define WEEX_PROJECT_ADDELEMENTACTION_H -#include "render_action.h" +#include <string> +#include <map> +#include <set> + +#include "core/render/action/render_action.h" +#include "core/layout/style.h" namespace WeexCore { - class RenderActionAddElement : public render_action { + class RenderObject; + + class RenderActionAddElement : public RenderAction { public: - explicit RenderActionAddElement(const std::string &pageId, const RenderObject *render, const RenderObject *parent, - int index, bool willLayout= true); + explicit RenderActionAddElement(const std::string &pageId, const RenderObject *render, + const RenderObject *parent, + int index, bool willLayout = true); void ExecuteAction(); public: - StylesMap *mStyles; - AttributesMap *mAttributes; - EventsSet *mEvents; + std::map<std::string, std::string> *mStyles; + std::map<std::string, std::string> *mAttributes; + std::set<std::string> *mEvents; WXCoreMargin mMargins; WXCorePadding mPaddings; WXCoreBorderWidth mBorders; http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/action/render_action_add_event.cpp ---------------------------------------------------------------------- diff --git a/weex_core/Source/core/render/action/render_action_add_event.cpp b/weex_core/Source/core/render/action/render_action_add_event.cpp index 0d210d0..8005daa 100644 --- a/weex_core/Source/core/render/action/render_action_add_event.cpp +++ b/weex_core/Source/core/render/action/render_action_add_event.cpp @@ -16,19 +16,22 @@ * specific language governing permissions and limitations * under the License. */ -#include <core/manager/weex_core_manager.h> -#include "render_action_add_event.h" + +#include "core/manager/weex_core_manager.h" +#include "core/render/action/render_action_add_event.h" namespace WeexCore { - RenderActionAddEvent::RenderActionAddEvent(const std::string &pageId, const std::string &ref, const std::string &event) { + RenderActionAddEvent::RenderActionAddEvent(const std::string &pageId, const std::string &ref, + const std::string &event) { this->mPageId = pageId; this->mRef = ref; this->mEvent = event; } void RenderActionAddEvent::ExecuteAction() { - WeexCoreManager::getInstance()->getPlatformBridge()->callAddEvent(mPageId.c_str(), mRef.c_str(), mEvent.c_str()); + WeexCoreManager::getInstance()->getPlatformBridge()->callAddEvent(mPageId.c_str(), mRef.c_str(), + mEvent.c_str()); } } http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/action/render_action_add_event.h ---------------------------------------------------------------------- diff --git a/weex_core/Source/core/render/action/render_action_add_event.h b/weex_core/Source/core/render/action/render_action_add_event.h index 0de206b..88ad40f 100644 --- a/weex_core/Source/core/render/action/render_action_add_event.h +++ b/weex_core/Source/core/render/action/render_action_add_event.h @@ -19,14 +19,17 @@ #ifndef WEEX_PROJECT_ADDEVENTACTION_H #define WEEX_PROJECT_ADDEVENTACTION_H -#include "render_action.h" +#include <string> + +#include "core/render/action/render_action.h" namespace WeexCore { - class RenderActionAddEvent : public render_action { + class RenderActionAddEvent : public RenderAction { public: - explicit RenderActionAddEvent(const std::string &pageId, const std::string &ref, const std::string &event); + explicit RenderActionAddEvent(const std::string &pageId, const std::string &ref, + const std::string &event); void ExecuteAction(); http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/action/render_action_appendtree_createfinish.cpp ---------------------------------------------------------------------- diff --git a/weex_core/Source/core/render/action/render_action_appendtree_createfinish.cpp b/weex_core/Source/core/render/action/render_action_appendtree_createfinish.cpp index e7b3999..045f0b6 100644 --- a/weex_core/Source/core/render/action/render_action_appendtree_createfinish.cpp +++ b/weex_core/Source/core/render/action/render_action_appendtree_createfinish.cpp @@ -16,17 +16,20 @@ * specific language governing permissions and limitations * under the License. */ -#include "render_action_appendtree_createfinish.h" -#include <core/manager/weex_core_manager.h> + +#include "core/manager/weex_core_manager.h" +#include "core/render/action/render_action_appendtree_createfinish.h" namespace WeexCore { - RenderActionAppendTreeCreateFinish::RenderActionAppendTreeCreateFinish(const std::string &pageId, const std::string &ref) { + RenderActionAppendTreeCreateFinish::RenderActionAppendTreeCreateFinish(const std::string &pageId, + const std::string &ref) { this->mPageId = pageId; this->mRef = ref; } void RenderActionAppendTreeCreateFinish::ExecuteAction() { - WeexCoreManager::getInstance()->getPlatformBridge()->callAppendTreeCreateFinish(mPageId.c_str(), mRef.c_str()); + WeexCoreManager::getInstance()->getPlatformBridge()->callAppendTreeCreateFinish(mPageId.c_str(), + mRef.c_str()); } } http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/action/render_action_appendtree_createfinish.h ---------------------------------------------------------------------- diff --git a/weex_core/Source/core/render/action/render_action_appendtree_createfinish.h b/weex_core/Source/core/render/action/render_action_appendtree_createfinish.h index cdc968c..04cae26 100644 --- a/weex_core/Source/core/render/action/render_action_appendtree_createfinish.h +++ b/weex_core/Source/core/render/action/render_action_appendtree_createfinish.h @@ -19,11 +19,13 @@ #ifndef WEEX_CORE_RENDER_ACTION_APPENDTREE_CREATEFINISH_H #define WEEX_CORE_RENDER_ACTION_APPENDTREE_CREATEFINISH_H -#include "render_action.h" +#include <string> + +#include "core/render/action/render_action.h" namespace WeexCore { - class RenderActionAppendTreeCreateFinish : public render_action { + class RenderActionAppendTreeCreateFinish : public RenderAction { public: explicit RenderActionAppendTreeCreateFinish(const std::string &pageId, const std::string &ref); http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/action/render_action_createbody.cpp ---------------------------------------------------------------------- diff --git a/weex_core/Source/core/render/action/render_action_createbody.cpp b/weex_core/Source/core/render/action/render_action_createbody.cpp index 289cb31..2efd6f0 100644 --- a/weex_core/Source/core/render/action/render_action_createbody.cpp +++ b/weex_core/Source/core/render/action/render_action_createbody.cpp @@ -16,12 +16,15 @@ * specific language governing permissions and limitations * under the License. */ -#include <core/manager/weex_core_manager.h> -#include "render_action_createbody.h" + +#include "core/render/node/render_object.h" +#include "core/manager/weex_core_manager.h" +#include "core/render/action/render_action_createbody.h" namespace WeexCore { - RenderActionCreateBody::RenderActionCreateBody(const std::string &pageId, const RenderObject *render) { + RenderActionCreateBody::RenderActionCreateBody(const std::string &pageId, + const RenderObject *render) { this->mAttributes = render->Attributes(); this->mStyles = render->Styles(); this->mEvents = render->Events(); @@ -34,8 +37,12 @@ namespace WeexCore { } void RenderActionCreateBody::ExecuteAction() { - WeexCoreManager::getInstance()->getPlatformBridge()->callCreateBody(mPageId.c_str(), mComponentType.c_str(), mRef.c_str(), - mStyles, mAttributes, mEvents, - mMargins, mPaddings, mBorders); + WeexCoreManager::getInstance()->getPlatformBridge()->callCreateBody(mPageId.c_str(), + mComponentType.c_str(), + mRef.c_str(), + mStyles, mAttributes, + mEvents, + mMargins, mPaddings, + mBorders); } } http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/action/render_action_createbody.h ---------------------------------------------------------------------- diff --git a/weex_core/Source/core/render/action/render_action_createbody.h b/weex_core/Source/core/render/action/render_action_createbody.h index 90b9827..623b5a0 100644 --- a/weex_core/Source/core/render/action/render_action_createbody.h +++ b/weex_core/Source/core/render/action/render_action_createbody.h @@ -19,10 +19,17 @@ #ifndef WEEX_PROJECT_CREATEBODYACTION_H #define WEEX_PROJECT_CREATEBODYACTION_H -#include "render_action.h" +#include <string> +#include <map> +#include <set> + +#include "core/render/action/render_action.h" namespace WeexCore { - class RenderActionCreateBody : public render_action { + + class RenderObject; + + class RenderActionCreateBody : public RenderAction { public: explicit RenderActionCreateBody(const std::string &pageId, const RenderObject *render); @@ -30,9 +37,9 @@ namespace WeexCore { void ExecuteAction(); public: - StylesMap *mStyles; - AttributesMap *mAttributes; - EventsSet *mEvents; + std::map<std::string, std::string> *mStyles; + std::map<std::string, std::string> *mAttributes; + std::set<std::string> *mEvents; WXCoreMargin mMargins; WXCorePadding mPaddings; WXCoreBorderWidth mBorders; http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/action/render_action_createfinish.cpp ---------------------------------------------------------------------- diff --git a/weex_core/Source/core/render/action/render_action_createfinish.cpp b/weex_core/Source/core/render/action/render_action_createfinish.cpp index 9c2b9fe..13559c1 100644 --- a/weex_core/Source/core/render/action/render_action_createfinish.cpp +++ b/weex_core/Source/core/render/action/render_action_createfinish.cpp @@ -16,8 +16,9 @@ * specific language governing permissions and limitations * under the License. */ -#include <core/manager/weex_core_manager.h> -#include "render_action_createfinish.h" + +#include "core/manager/weex_core_manager.h" +#include "core/render/action/render_action_createfinish.h" namespace WeexCore { @@ -26,6 +27,6 @@ namespace WeexCore { } void RenderActionCreateFinish::ExecuteAction() { - WeexCoreManager::getInstance()->getPlatformBridge()->callCreateFinish(mPageId.c_str()); + WeexCoreManager::getInstance()->getPlatformBridge()->callCreateFinish(mPageId.c_str()); } } http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/action/render_action_createfinish.h ---------------------------------------------------------------------- diff --git a/weex_core/Source/core/render/action/render_action_createfinish.h b/weex_core/Source/core/render/action/render_action_createfinish.h index 0b3407e..9beb99a 100644 --- a/weex_core/Source/core/render/action/render_action_createfinish.h +++ b/weex_core/Source/core/render/action/render_action_createfinish.h @@ -19,11 +19,13 @@ #ifndef WEEX_PROJECT_CREATEFINISHACTION_H #define WEEX_PROJECT_CREATEFINISHACTION_H -#include "render_action.h" +#include <string> + +#include "core/render/action/render_action.h" namespace WeexCore { - class RenderActionCreateFinish : public render_action { + class RenderActionCreateFinish : public RenderAction { public: explicit RenderActionCreateFinish(const std::string &pageId); http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/action/render_action_layout.cpp ---------------------------------------------------------------------- diff --git a/weex_core/Source/core/render/action/render_action_layout.cpp b/weex_core/Source/core/render/action/render_action_layout.cpp index 67b34b9..366c6ba 100644 --- a/weex_core/Source/core/render/action/render_action_layout.cpp +++ b/weex_core/Source/core/render/action/render_action_layout.cpp @@ -16,12 +16,15 @@ * specific language governing permissions and limitations * under the License. */ -#include <core/manager/weex_core_manager.h> -#include "render_action_layout.h" + +#include "core/render/node/render_object.h" +#include "core/manager/weex_core_manager.h" +#include "core/render/action/render_action_layout.h" namespace WeexCore { - RenderActionLayout::RenderActionLayout(const std::string &pageId, const RenderObject *render,int index) { + RenderActionLayout::RenderActionLayout(const std::string &pageId, const RenderObject *render, + int index) { this->mPageId = pageId; this->mRef = render->Ref(); this->index = index; @@ -29,9 +32,9 @@ namespace WeexCore { } void RenderActionLayout::ExecuteAction() { - WeexCoreManager::getInstance()->getPlatformBridge()->callLayout(mPageId.c_str(), mRef.c_str(), - mTop, mBottom, mLeft, mRight, - mHeight, mWidth, index); + WeexCoreManager::getInstance()->getPlatformBridge()->callLayout(mPageId.c_str(), mRef.c_str(), + mTop, mBottom, mLeft, mRight, + mHeight, mWidth, index); } void RenderActionLayout::GetLayoutInfo(const WXCoreLayoutNode *node) { http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/action/render_action_layout.h ---------------------------------------------------------------------- diff --git a/weex_core/Source/core/render/action/render_action_layout.h b/weex_core/Source/core/render/action/render_action_layout.h index 868e476..18eeb5b 100644 --- a/weex_core/Source/core/render/action/render_action_layout.h +++ b/weex_core/Source/core/render/action/render_action_layout.h @@ -19,21 +19,29 @@ #ifndef WEEX_PROJECT_RELAYOUTRENDERACTION_H #define WEEX_PROJECT_RELAYOUTRENDERACTION_H -#include "render_action.h" +#include <string> +#include <set> + +#include "core/render/action/render_action.h" namespace WeexCore { - class RenderActionLayout : public render_action { + class RenderObject; + + class WXCoreLayoutNode; + + class RenderActionLayout : public RenderAction { public: - explicit RenderActionLayout(const std::string &pageId, const RenderObject *render, const int index); + explicit RenderActionLayout(const std::string &pageId, const RenderObject *render, + const int index); void ExecuteAction(); void GetLayoutInfo(const WXCoreLayoutNode *node); public: - EventsSet *mEvents; + std::set<std::string> *mEvents; std::string mPageId; std::string mRef; float mWidth; http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/action/render_action_move_element.cpp ---------------------------------------------------------------------- diff --git a/weex_core/Source/core/render/action/render_action_move_element.cpp b/weex_core/Source/core/render/action/render_action_move_element.cpp index 5c80218..ca2b88e 100644 --- a/weex_core/Source/core/render/action/render_action_move_element.cpp +++ b/weex_core/Source/core/render/action/render_action_move_element.cpp @@ -16,12 +16,14 @@ * specific language governing permissions and limitations * under the License. */ -#include <core/manager/weex_core_manager.h> -#include "render_action_move_element.h" + +#include "core/manager/weex_core_manager.h" +#include "core/render/action/render_action_move_element.h" namespace WeexCore { - RenderActionMoveElement::RenderActionMoveElement(const std::string &pageId, const std::string &ref, + RenderActionMoveElement::RenderActionMoveElement(const std::string &pageId, + const std::string &ref, const std::string &parentRef, int index) { this->mPageId = pageId; this->mRef = ref; @@ -30,6 +32,9 @@ namespace WeexCore { } void RenderActionMoveElement::ExecuteAction() { - WeexCoreManager::getInstance()->getPlatformBridge()->callMoveElement(mPageId.c_str(), mRef.c_str(), mParentRef.c_str(), mIndex); + WeexCoreManager::getInstance()->getPlatformBridge()->callMoveElement(mPageId.c_str(), + mRef.c_str(), + mParentRef.c_str(), + mIndex); } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/action/render_action_move_element.h ---------------------------------------------------------------------- diff --git a/weex_core/Source/core/render/action/render_action_move_element.h b/weex_core/Source/core/render/action/render_action_move_element.h index 56db80b..cc0fced 100644 --- a/weex_core/Source/core/render/action/render_action_move_element.h +++ b/weex_core/Source/core/render/action/render_action_move_element.h @@ -19,15 +19,17 @@ #ifndef WEEX_PROJECT_RENDERACTIONMOVEELEMENT_H #define WEEX_PROJECT_RENDERACTIONMOVEELEMENT_H -#include "render_action.h" +#include <string> + +#include "core/render/action/render_action.h" namespace WeexCore { - class RenderActionMoveElement : public render_action { + class RenderActionMoveElement : public RenderAction { public: explicit RenderActionMoveElement(const std::string &pageId, const std::string &ref, - const std::string &parentRef, int index); + const std::string &parentRef, int index); void ExecuteAction(); http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/action/render_action_remove_element.cpp ---------------------------------------------------------------------- diff --git a/weex_core/Source/core/render/action/render_action_remove_element.cpp b/weex_core/Source/core/render/action/render_action_remove_element.cpp index 3557438..ba17af5 100644 --- a/weex_core/Source/core/render/action/render_action_remove_element.cpp +++ b/weex_core/Source/core/render/action/render_action_remove_element.cpp @@ -16,17 +16,20 @@ * specific language governing permissions and limitations * under the License. */ -#include <core/manager/weex_core_manager.h> -#include "render_action_remove_element.h" + +#include "core/manager/weex_core_manager.h" +#include "core/render/action/render_action_remove_element.h" namespace WeexCore { - RenderActionRemoveElement::RenderActionRemoveElement(const std::string &pageId, const std::string &ref) { + RenderActionRemoveElement::RenderActionRemoveElement(const std::string &pageId, + const std::string &ref) { this->mPageId = pageId; this->mRef = ref; } void RenderActionRemoveElement::ExecuteAction() { - WeexCoreManager::getInstance()->getPlatformBridge()->callRemoveElement(mPageId.c_str(), mRef.c_str()); + WeexCoreManager::getInstance()->getPlatformBridge()->callRemoveElement(mPageId.c_str(), + mRef.c_str()); } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/action/render_action_remove_element.h ---------------------------------------------------------------------- diff --git a/weex_core/Source/core/render/action/render_action_remove_element.h b/weex_core/Source/core/render/action/render_action_remove_element.h index d4342f1..b8d50b3 100644 --- a/weex_core/Source/core/render/action/render_action_remove_element.h +++ b/weex_core/Source/core/render/action/render_action_remove_element.h @@ -19,11 +19,13 @@ #ifndef WEEX_PROJECT_RENDERACTIONREMOVEELEMENT_H #define WEEX_PROJECT_RENDERACTIONREMOVEELEMENT_H -#include "render_action.h" +#include <string> + +#include "core/render/action/render_action.h" namespace WeexCore { - class RenderActionRemoveElement : public render_action { + class RenderActionRemoveElement : public RenderAction { public: explicit RenderActionRemoveElement(const std::string &pageId, const std::string &ref); http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/action/render_action_remove_event.cpp ---------------------------------------------------------------------- diff --git a/weex_core/Source/core/render/action/render_action_remove_event.cpp b/weex_core/Source/core/render/action/render_action_remove_event.cpp index 5588112..06e21d4 100644 --- a/weex_core/Source/core/render/action/render_action_remove_event.cpp +++ b/weex_core/Source/core/render/action/render_action_remove_event.cpp @@ -16,20 +16,23 @@ * specific language governing permissions and limitations * under the License. */ -#include "render_action_remove_event.h" -#include <core/manager/weex_core_manager.h> + +#include "core/manager/weex_core_manager.h" +#include "core/render/action/render_action_remove_event.h" namespace WeexCore { - RenderActionRemoveEvent::RenderActionRemoveEvent(const std::string &pageId, const std::string &ref, const std::string &event) { + RenderActionRemoveEvent::RenderActionRemoveEvent(const std::string &pageId, + const std::string &ref, + const std::string &event) { this->mPageId = pageId; this->mRef = ref; this->mEvent = event; } void RenderActionRemoveEvent::ExecuteAction() { - WeexCoreManager::getInstance()->getPlatformBridge()->callRemoveEvent(mPageId.c_str(), mRef.c_str(), mEvent.c_str()); - //Bridge_Impl_Android::getInstance()->callRemoveEvent(mPageId.c_str(), mRef.c_str(), mEvent.c_str()); + WeexCoreManager::getInstance()->getPlatformBridge()->callRemoveEvent(mPageId.c_str(), + mRef.c_str(), + mEvent.c_str()); } - } http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/action/render_action_remove_event.h ---------------------------------------------------------------------- diff --git a/weex_core/Source/core/render/action/render_action_remove_event.h b/weex_core/Source/core/render/action/render_action_remove_event.h index 47ffe78..a772a6a 100644 --- a/weex_core/Source/core/render/action/render_action_remove_event.h +++ b/weex_core/Source/core/render/action/render_action_remove_event.h @@ -19,14 +19,17 @@ #ifndef WEEX_PROJECT_REMOVEEVENTACTION_H #define WEEX_PROJECT_REMOVEEVENTACTION_H -#include "render_action.h" +#include <string> + +#include "core/render/action/render_action.h" namespace WeexCore { - class RenderActionRemoveEvent : public render_action { + class RenderActionRemoveEvent : public RenderAction { public: - explicit RenderActionRemoveEvent(const std::string &pageId, const std::string &ref, const std::string &event); + explicit RenderActionRemoveEvent(const std::string &pageId, const std::string &ref, + const std::string &event); void ExecuteAction(); http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/action/render_action_update_attr.cpp ---------------------------------------------------------------------- diff --git a/weex_core/Source/core/render/action/render_action_update_attr.cpp b/weex_core/Source/core/render/action/render_action_update_attr.cpp index c662c1d..7aa6d3f 100644 --- a/weex_core/Source/core/render/action/render_action_update_attr.cpp +++ b/weex_core/Source/core/render/action/render_action_update_attr.cpp @@ -16,8 +16,9 @@ * specific language governing permissions and limitations * under the License. */ -#include <core/manager/weex_core_manager.h> -#include "render_action_update_attr.h" + +#include "core/manager/weex_core_manager.h" +#include "core/render/action/render_action_update_attr.h" namespace WeexCore { @@ -29,6 +30,7 @@ namespace WeexCore { } void RenderActionUpdateAttr::ExecuteAction() { - WeexCoreManager::getInstance()->getPlatformBridge()->callUpdateAttr(mPageId.c_str(), mRef.c_str(), mAttrs); + WeexCoreManager::getInstance()->getPlatformBridge()->callUpdateAttr(mPageId.c_str(), + mRef.c_str(), mAttrs); } } http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/action/render_action_update_attr.h ---------------------------------------------------------------------- diff --git a/weex_core/Source/core/render/action/render_action_update_attr.h b/weex_core/Source/core/render/action/render_action_update_attr.h index c9eeec1..3e74c01 100644 --- a/weex_core/Source/core/render/action/render_action_update_attr.h +++ b/weex_core/Source/core/render/action/render_action_update_attr.h @@ -19,15 +19,18 @@ #ifndef WEEX_PROJECT_UPDATEATTRACTION_H #define WEEX_PROJECT_UPDATEATTRACTION_H -#include "render_action.h" +#include <string> +#include <vector> + +#include "core/render/action/render_action.h" namespace WeexCore { - class RenderActionUpdateAttr : public render_action { + class RenderActionUpdateAttr : public RenderAction { public: explicit RenderActionUpdateAttr(const std::string &pageId, const std::string &ref, - std::vector<std::pair<std::string, std::string>> *mAttrs); + std::vector<std::pair<std::string, std::string>> *mAttrs); void ExecuteAction(); http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/action/render_action_update_style.cpp ---------------------------------------------------------------------- diff --git a/weex_core/Source/core/render/action/render_action_update_style.cpp b/weex_core/Source/core/render/action/render_action_update_style.cpp index e694db5..9b2f6a2 100644 --- a/weex_core/Source/core/render/action/render_action_update_style.cpp +++ b/weex_core/Source/core/render/action/render_action_update_style.cpp @@ -16,12 +16,14 @@ * specific language governing permissions and limitations * under the License. */ -#include <core/manager/weex_core_manager.h> -#include "render_action_update_style.h" + +#include "core/manager/weex_core_manager.h" +#include "core/render/action/render_action_update_style.h" namespace WeexCore { - RenderActionUpdateStyle::RenderActionUpdateStyle(const std::string &pageId, const std::string &ref, + RenderActionUpdateStyle::RenderActionUpdateStyle(const std::string &pageId, + const std::string &ref, std::vector<std::pair<std::string, std::string>> *style, std::vector<std::pair<std::string, std::string>> *margin, std::vector<std::pair<std::string, std::string>> *padding, @@ -35,7 +37,9 @@ namespace WeexCore { } void RenderActionUpdateStyle::ExecuteAction() { - WeexCoreManager::getInstance()->getPlatformBridge()->callUpdateStyle(mPageId.c_str(), mRef.c_str(), mStyle, mMargin, - mPadding, mBorder); + WeexCoreManager::getInstance()->getPlatformBridge()->callUpdateStyle(mPageId.c_str(), + mRef.c_str(), mStyle, + mMargin, + mPadding, mBorder); } } http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/action/render_action_update_style.h ---------------------------------------------------------------------- diff --git a/weex_core/Source/core/render/action/render_action_update_style.h b/weex_core/Source/core/render/action/render_action_update_style.h index e9d9f53..e2d6aa4 100644 --- a/weex_core/Source/core/render/action/render_action_update_style.h +++ b/weex_core/Source/core/render/action/render_action_update_style.h @@ -19,19 +19,22 @@ #ifndef WEEX_PROJECT_UPDATESTYLEACTION_H #define WEEX_PROJECT_UPDATESTYLEACTION_H -#include "render_action.h" +#include <string> +#include <vector> + +#include "core/render/action/render_action.h" namespace WeexCore { - class RenderActionUpdateStyle : public render_action { + class RenderActionUpdateStyle : public RenderAction { public: explicit RenderActionUpdateStyle(const std::string &pageId, const std::string &ref, - std::vector<std::pair<std::string, std::string>> *style, - std::vector<std::pair<std::string, std::string>> *margin, - std::vector<std::pair<std::string, std::string>> *padding, - std::vector<std::pair<std::string, std::string>> *border); + std::vector<std::pair<std::string, std::string>> *style, + std::vector<std::pair<std::string, std::string>> *margin, + std::vector<std::pair<std::string, std::string>> *padding, + std::vector<std::pair<std::string, std::string>> *border); void ExecuteAction(); http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/manager/render_manager.cpp ---------------------------------------------------------------------- diff --git a/weex_core/Source/core/render/manager/render_manager.cpp b/weex_core/Source/core/render/manager/render_manager.cpp index d271b14..c25987d 100644 --- a/weex_core/Source/core/render/manager/render_manager.cpp +++ b/weex_core/Source/core/render/manager/render_manager.cpp @@ -16,17 +16,18 @@ * specific language governing permissions and limitations * under the License. */ -#include <core/render/manager/render_manager.h> -#include <core/render/page/render_page.h> -#include <core/render/node/render_object.h> -#include <base/TimeUtils.h> -#include <core/parser/dom_wson.h> +#include "core/render/manager/render_manager.h" +#include "core/render/page/render_page.h" +#include "core/render/node/render_object.h" +#include "base/TimeUtils.h" +#include "core/parser/dom_wson.h" +#include "core/layout/measure_func_adapter.h" namespace WeexCore { RenderManager *RenderManager::m_pInstance = nullptr; - bool RenderManager::CreatePage(std::string pageId, const char* data) { + bool RenderManager::CreatePage(std::string pageId, const char *data) { #if RENDER_LOG wson_parser parser(data); @@ -45,7 +46,7 @@ namespace WeexCore { } bool RenderManager::AddRenderObject(const std::string &pageId, const std::string &parentRef, - int index, const char* data) { + int index, const char *data) { RenderPage *page = GetPage(pageId); if (page == nullptr) @@ -99,7 +100,7 @@ namespace WeexCore { } bool RenderManager::UpdateAttr(const std::string &pageId, const std::string &ref, - const char* data) { + const char *data) { RenderPage *page = this->GetPage(pageId); if (page == nullptr) return false; @@ -111,7 +112,7 @@ namespace WeexCore { #endif long long startTime = getCurrentTime(); - std::vector<std::pair<std::string, std::string>> *attrs = Wson2Pairs(data); + std::vector <std::pair<std::string, std::string>> *attrs = Wson2Pairs(data); page->ParseJsonTime(getCurrentTime() - startTime); page->updateDirty(true); @@ -119,7 +120,7 @@ namespace WeexCore { } bool RenderManager::UpdateStyle(const std::string &pageId, const std::string &ref, - const char* data) { + const char *data) { RenderPage *page = this->GetPage(pageId); if (page == nullptr) return false; @@ -131,7 +132,7 @@ namespace WeexCore { #endif long long startTime = getCurrentTime(); - std::vector<std::pair<std::string, std::string>> *styles = Wson2Pairs(data); + std::vector <std::pair<std::string, std::string>> *styles = Wson2Pairs(data); page->ParseJsonTime(getCurrentTime() - startTime); page->updateDirty(true); http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/manager/render_manager.h ---------------------------------------------------------------------- diff --git a/weex_core/Source/core/render/manager/render_manager.h b/weex_core/Source/core/render/manager/render_manager.h index 446001b..3ff9463 100644 --- a/weex_core/Source/core/render/manager/render_manager.h +++ b/weex_core/Source/core/render/manager/render_manager.h @@ -21,8 +21,6 @@ #include <map> #include <string> -#include <stdbool.h> -#include <core/layout/measure_func_adapter.h> namespace WeexCore { @@ -52,20 +50,20 @@ namespace WeexCore { void Batch(const std::string &pageId); // create root node - bool CreatePage(std::string pageId, const char* data); + bool CreatePage(std::string pageId, const char *data); /** use auto constructor is bad idea, it cann't transfer binary, use char* is better */ bool AddRenderObject(const std::string &pageId, const std::string &parentRef, int index, - const char* data); + const char *data); bool RemoveRenderObject(const std::string &pageId, const std::string &ref); bool MoveRenderObject(const std::string &pageId, const std::string &ref, - const std::string &parentRef, int index); + const std::string &parentRef, int index); - bool UpdateAttr(const std::string &pageId, const std::string &ref, const char* data); + bool UpdateAttr(const std::string &pageId, const std::string &ref, const char *data); - bool UpdateStyle(const std::string &pageId, const std::string &ref, const char* data); + bool UpdateStyle(const std::string &pageId, const std::string &ref, const char *data); bool AddEvent(const std::string &pageId, const std::string &ref, const std::string &event); http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/node/factory/i_render_factory.h ---------------------------------------------------------------------- diff --git a/weex_core/Source/core/render/node/factory/i_render_factory.h b/weex_core/Source/core/render/node/factory/i_render_factory.h index ea8cda6..f0e4451 100644 --- a/weex_core/Source/core/render/node/factory/i_render_factory.h +++ b/weex_core/Source/core/render/node/factory/i_render_factory.h @@ -19,7 +19,7 @@ #ifndef WEEX_PROJECT_IRENDERFACTORY_H #define WEEX_PROJECT_IRENDERFACTORY_H -#include "i_render_object.h" +#include "core/render/node/factory/i_render_object.h" namespace WeexCore { class IRenderFactory { http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/node/factory/i_render_object.h ---------------------------------------------------------------------- diff --git a/weex_core/Source/core/render/node/factory/i_render_object.h b/weex_core/Source/core/render/node/factory/i_render_object.h index 6d13569..da2df7f 100644 --- a/weex_core/Source/core/render/node/factory/i_render_object.h +++ b/weex_core/Source/core/render/node/factory/i_render_object.h @@ -20,7 +20,8 @@ #define WEEX_PROJECT_IRENDEROBJECT_H #include <string> -#include <core/layout/layout.h> + +#include "core/layout/layout.h" namespace WeexCore { @@ -50,11 +51,11 @@ namespace WeexCore { return mType; } - void copyFrom(IRenderObject* src){ - WXCoreLayoutNode::copyFrom(src); - SetRef(src->Ref()); - SetPageId(src->PageId()); - SetType(src->Type()); + inline void copyFrom(IRenderObject *src) { + WXCoreLayoutNode::copyFrom(src); + SetRef(src->Ref()); + SetPageId(src->PageId()); + SetType(src->Type()); } private: http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/node/factory/render_appbar_factory.h ---------------------------------------------------------------------- diff --git a/weex_core/Source/core/render/node/factory/render_appbar_factory.h b/weex_core/Source/core/render/node/factory/render_appbar_factory.h index ab88c69..f8308d2 100644 --- a/weex_core/Source/core/render/node/factory/render_appbar_factory.h +++ b/weex_core/Source/core/render/node/factory/render_appbar_factory.h @@ -19,8 +19,8 @@ #ifndef WEEX_PROJECT_RENDERAPPBARFACTORY_H #define WEEX_PROJECT_RENDERAPPBARFACTORY_H -#include <core/render/node/render_appbar.h> -#include "i_render_factory.h" +#include "core/render/node/render_appbar.h" +#include "core/render/node/factory/i_render_factory.h" namespace WeexCore { http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/node/factory/render_cell_factory.h ---------------------------------------------------------------------- diff --git a/weex_core/Source/core/render/node/factory/render_cell_factory.h b/weex_core/Source/core/render/node/factory/render_cell_factory.h index 516df0b..7873cd3 100644 --- a/weex_core/Source/core/render/node/factory/render_cell_factory.h +++ b/weex_core/Source/core/render/node/factory/render_cell_factory.h @@ -19,8 +19,8 @@ #ifndef WEEX_PROJECT_RENDERCELLFACTORY_H #define WEEX_PROJECT_RENDERCELLFACTORY_H -#include <core/render/node/render_cell.h> -#include "i_render_factory.h" +#include "core/render/node/render_cell.h" +#include "core/render/node/factory/i_render_factory.h" namespace WeexCore { http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/node/factory/render_creator.cpp ---------------------------------------------------------------------- diff --git a/weex_core/Source/core/render/node/factory/render_creator.cpp b/weex_core/Source/core/render/node/factory/render_creator.cpp index 7318d40..5c3acfb 100644 --- a/weex_core/Source/core/render/node/factory/render_creator.cpp +++ b/weex_core/Source/core/render/node/factory/render_creator.cpp @@ -16,21 +16,16 @@ * specific language governing permissions and limitations * under the License. */ -#include "render_creator.h" -#include "i_render_object.h" -#include "i_render_factory.h" -#include "render_text_factory.h" -#include "simple_render_factory.h" -#include "render_cell_factory.h" -#include "render_type.h" -#include "render_indicator_factory.h" -#include "render_input_factory.h" -#include "render_list_factory.h" -#include "render_mask_factory.h" -#include "render_scroller_factory.h" -#include "render_switch_factory.h" -#include "render_textarea_factory.h" -#include "render_appbar_factory.h" +#include "core/render/node/factory/render_creator.h" +#include "core/render/node/factory/i_render_object.h" +#include "core/render/node/factory/i_render_factory.h" +#include "core/render/node/factory/render_text_factory.h" +#include "core/render/node/factory/simple_render_factory.h" +#include "core/render/node/factory/render_list_factory.h" +#include "core/render/node/factory/render_mask_factory.h" +#include "core/render/node/factory/render_scroller_factory.h" +#include "core/render/node/factory/render_appbar_factory.h" +#include "core/render/node/factory/render_type.h" namespace WeexCore { @@ -40,24 +35,12 @@ namespace WeexCore { IRenderFactory *factory; if (type == kRenderText) { factory = new RenderTextFactory(); - } else if (type == kRenderCell - || type == kRenderHeader - || type == kRenderCellSlot) { - factory = new RenderCellFactory(); - } else if (type == kRenderIndicator) { - factory = new RenderIndicatorFactory(); - } else if (type == kRenderInput) { - factory = new RenderInputFactory(); } else if (type == kRenderList || type == kRenderWaterfall || type == kRenderRecycleList) { factory = new RenderListFactory(); } else if (type == kRenderMask) { factory = new RenderMaskFactory(); } else if (type == kRenderScroller) { factory = new RenderScrollerFactory(); - } else if (type == kRenderSwitch) { - factory = new RenderSwitchFactory(); - } else if (type == kRenderTextArea) { - factory = new RenderTextAreaFactory(); } else if (type == kRenderAppBar) { factory = new RenderAppBarFactory(); } else { http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/node/factory/render_indicator_factory.h ---------------------------------------------------------------------- diff --git a/weex_core/Source/core/render/node/factory/render_indicator_factory.h b/weex_core/Source/core/render/node/factory/render_indicator_factory.h deleted file mode 100644 index 7688acf..0000000 --- a/weex_core/Source/core/render/node/factory/render_indicator_factory.h +++ /dev/null @@ -1,36 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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. - */ -#ifndef WEEX_PROJECT_RENDERINDICATORFACTORY_H -#define WEEX_PROJECT_RENDERINDICATORFACTORY_H - -#include <core/render/node/render_indicator.h> -#include "i_render_factory.h" - -namespace WeexCore { - - class RenderIndicatorFactory : public IRenderFactory { - public: - IRenderObject *CreateRender() { - return new RenderIndicator(); - } - }; - -} - -#endif //WEEX_PROJECT_RENDERINDICATORFACTORY_H http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/node/factory/render_input_factory.h ---------------------------------------------------------------------- diff --git a/weex_core/Source/core/render/node/factory/render_input_factory.h b/weex_core/Source/core/render/node/factory/render_input_factory.h deleted file mode 100644 index 7e4fe6e..0000000 --- a/weex_core/Source/core/render/node/factory/render_input_factory.h +++ /dev/null @@ -1,36 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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. - */ -#ifndef WEEX_PROJECT_RENDERINPUTFACTORY_H -#define WEEX_PROJECT_RENDERINPUTFACTORY_H - -#include <core/render/node/render_input.h> -#include "i_render_factory.h" - -namespace WeexCore { - - class RenderInputFactory : public IRenderFactory { - public: - IRenderObject *CreateRender() { - return new RenderInput(); - } - }; - -} - -#endif //WEEX_PROJECT_RENDERINPUTFACTORY_H http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/node/factory/render_list_factory.h ---------------------------------------------------------------------- diff --git a/weex_core/Source/core/render/node/factory/render_list_factory.h b/weex_core/Source/core/render/node/factory/render_list_factory.h index a1d0254..3964e6a 100644 --- a/weex_core/Source/core/render/node/factory/render_list_factory.h +++ b/weex_core/Source/core/render/node/factory/render_list_factory.h @@ -19,8 +19,8 @@ #ifndef WEEX_PROJECT_RENDERLISTFACTORY_H #define WEEX_PROJECT_RENDERLISTFACTORY_H -#include <core/render/node/render_list.h> -#include "i_render_factory.h" +#include "core/render/node/render_list.h" +#include "core/render/node/factory/i_render_factory.h" namespace WeexCore { http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/node/factory/render_mask_factory.h ---------------------------------------------------------------------- diff --git a/weex_core/Source/core/render/node/factory/render_mask_factory.h b/weex_core/Source/core/render/node/factory/render_mask_factory.h index c250b86..92a210e 100644 --- a/weex_core/Source/core/render/node/factory/render_mask_factory.h +++ b/weex_core/Source/core/render/node/factory/render_mask_factory.h @@ -19,8 +19,8 @@ #ifndef WEEX_PROJECT_RENDERMASKFACTORY_H #define WEEX_PROJECT_RENDERMASKFACTORY_H -#include <core/render/node/render_mask.h> -#include "i_render_factory.h" +#include "core/render/node/render_mask.h" +#include "core/render/node/factory/i_render_factory.h" namespace WeexCore { http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/node/factory/render_scroller_factory.h ---------------------------------------------------------------------- diff --git a/weex_core/Source/core/render/node/factory/render_scroller_factory.h b/weex_core/Source/core/render/node/factory/render_scroller_factory.h index 0f0f46a..7795bed 100644 --- a/weex_core/Source/core/render/node/factory/render_scroller_factory.h +++ b/weex_core/Source/core/render/node/factory/render_scroller_factory.h @@ -19,8 +19,8 @@ #ifndef WEEX_PROJECT_RENDERSCROLLERFACTORY_H #define WEEX_PROJECT_RENDERSCROLLERFACTORY_H -#include <core/render/node/render_scroller.h> -#include "i_render_factory.h" +#include "core/render/node/render_scroller.h" +#include "core/render/node/factory/i_render_factory.h" namespace WeexCore { http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/node/factory/render_switch_factory.h ---------------------------------------------------------------------- diff --git a/weex_core/Source/core/render/node/factory/render_switch_factory.h b/weex_core/Source/core/render/node/factory/render_switch_factory.h deleted file mode 100644 index 558c87d..0000000 --- a/weex_core/Source/core/render/node/factory/render_switch_factory.h +++ /dev/null @@ -1,36 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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. - */ -#ifndef WEEX_PROJECT_RENDERSWITCHFACTORY_H -#define WEEX_PROJECT_RENDERSWITCHFACTORY_H - -#include <core/render/node/render_switch.h> -#include "i_render_factory.h" - -namespace WeexCore { - - class RenderSwitchFactory : public IRenderFactory { - public: - IRenderObject *CreateRender() { - return new RenderSwitch(); - } - }; - -} - -#endif //WEEX_PROJECT_RENDERSWITCHFACTORY_H http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/node/factory/render_text_factory.h ---------------------------------------------------------------------- diff --git a/weex_core/Source/core/render/node/factory/render_text_factory.h b/weex_core/Source/core/render/node/factory/render_text_factory.h index edf8ab9..025de76 100644 --- a/weex_core/Source/core/render/node/factory/render_text_factory.h +++ b/weex_core/Source/core/render/node/factory/render_text_factory.h @@ -19,8 +19,8 @@ #ifndef WEEX_PROJECT_RENDERTEXTFACTORY_H #define WEEX_PROJECT_RENDERTEXTFACTORY_H -#include <core/render/node/render_text.h> -#include "i_render_factory.h" +#include "core/render/node/render_text.h" +#include "core/render/node/factory/i_render_factory.h" namespace WeexCore { http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/node/factory/render_textarea_factory.h ---------------------------------------------------------------------- diff --git a/weex_core/Source/core/render/node/factory/render_textarea_factory.h b/weex_core/Source/core/render/node/factory/render_textarea_factory.h deleted file mode 100644 index 4d42975..0000000 --- a/weex_core/Source/core/render/node/factory/render_textarea_factory.h +++ /dev/null @@ -1,36 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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. - */ -#ifndef WEEX_PROJECT_RENDERTEXTAREAFACTORY_H -#define WEEX_PROJECT_RENDERTEXTAREAFACTORY_H - -#include <core/render/node/render_textarea.h> -#include "i_render_factory.h" - -namespace WeexCore { - - class RenderTextAreaFactory : public IRenderFactory { - public: - IRenderObject *CreateRender() { - return new RenderTextArea(); - } - }; - -} - -#endif //WEEX_PROJECT_RENDERTEXTAREAFACTORY_H http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/node/factory/render_type.h ---------------------------------------------------------------------- diff --git a/weex_core/Source/core/render/node/factory/render_type.h b/weex_core/Source/core/render/node/factory/render_type.h index aab8245..46c98ae 100644 --- a/weex_core/Source/core/render/node/factory/render_type.h +++ b/weex_core/Source/core/render/node/factory/render_type.h @@ -24,16 +24,12 @@ namespace WeexCore { constexpr char kRenderCell[] = "cell"; constexpr char kRenderCellSlot[] = "cell-slot"; - constexpr char kRenderIndicator[] = "indicator"; - constexpr char kRenderInput[] = "input"; constexpr char kRenderList[] = "list"; constexpr char kHList[] = "hlist"; constexpr char kRenderRecycleList[] = "recycle-list"; constexpr char kRenderMask[] = "mask"; constexpr char kRenderScroller[] = "scroller"; - constexpr char kRenderSwitch[] = "switch"; constexpr char kRenderText[] = "text"; - constexpr char kRenderTextArea[] = "textarea"; constexpr char kRenderHeader[] = "header"; constexpr char kRenderFooter[] = "footer"; constexpr char kRenderWaterfall[] = "waterfall"; http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/node/factory/simple_render_factory.h ---------------------------------------------------------------------- diff --git a/weex_core/Source/core/render/node/factory/simple_render_factory.h b/weex_core/Source/core/render/node/factory/simple_render_factory.h index 3adef52..ee1ffca 100644 --- a/weex_core/Source/core/render/node/factory/simple_render_factory.h +++ b/weex_core/Source/core/render/node/factory/simple_render_factory.h @@ -19,8 +19,8 @@ #ifndef WEEX_PROJECT_RENDERCOMMONFACTORY_H #define WEEX_PROJECT_RENDERCOMMONFACTORY_H -#include <core/render/node/render_object.h> -#include "i_render_factory.h" +#include "core/render/node/render_object.h" +#include "core/render/node/factory/i_render_factory.h" namespace WeexCore { http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/node/render_appbar.cpp ---------------------------------------------------------------------- diff --git a/weex_core/Source/core/render/node/render_appbar.cpp b/weex_core/Source/core/render/node/render_appbar.cpp new file mode 100644 index 0000000..9a6a766 --- /dev/null +++ b/weex_core/Source/core/render/node/render_appbar.cpp @@ -0,0 +1,85 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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/config/core_environment.h" +#include "base/ViewUtils.h" +#include "core/css/constants_name.h" +#include "core/render/node/render_appbar.h" + +namespace WeexCore { + + std::map<std::string, std::string> *RenderAppBar::GetDefaultStyle() { + defaultNavWidth = getFloat( + WXCoreEnvironment::getInstance()->GetOption("defaultNavWidth").c_str()); + + defaultOverflowWidth = getFloat( + WXCoreEnvironment::getInstance()->GetOption("defaultOverflowWidth").c_str()); + + std::string appbar_color = WXCoreEnvironment::getInstance()->GetOption("appbar_color"); + std::string appbar_background_color = WXCoreEnvironment::getInstance()->GetOption( + "appbar_background_color"); + + std::map<std::string, std::string> *style = new std::map<std::string, std::string>(); + style->insert(std::pair<std::string, std::string>(PADDING_LEFT, "0")); + style->insert(std::pair<std::string, std::string>(PADDING_RIGHT, "0")); + + if (!appbar_color.empty() && appbar_color != "" && !StyleExist(COLOR)) + style->insert(std::pair<std::string, std::string>(COLOR, appbar_color)); + if (!appbar_background_color.empty() && appbar_background_color != "" && + !StyleExist(BACKGROUND_COLOR)) + style->insert(std::pair<std::string, std::string>(BACKGROUND_COLOR, appbar_background_color)); + return style; + } + + bool RenderAppBar::StyleExist(const std::string &key) { + std::string value = GetStyle(key); + return !value.empty() && value != ""; + } + + StyleType RenderAppBar::ApplyStyle(const std::string &key, const std::string &value, + const bool updating) { + if (key == PADDING) { + UpdateStyleInternal(key, + value, + 0, + [=](float foo) { + setPadding(kPaddingLeft, foo + defaultNavWidth), + setPadding(kPaddingRight, foo + defaultOverflowWidth), + setPadding(kPaddingTop, foo), + setPadding(kPaddingBottom, foo); + }); + return kTypePadding; + } else if (key == PADDING_LEFT) { + UpdateStyleInternal(key, + value, + 0, + [=](float foo) { setPadding(kPaddingLeft, foo + defaultNavWidth); }); + return kTypePadding; + } else if (key == PADDING_RIGHT) { + UpdateStyleInternal(key, + value, + 0, + [=](float foo) { + setPadding(kPaddingRight, foo + defaultOverflowWidth); + }); + return kTypePadding; + } else { + return RenderObject::ApplyStyle(key, value, updating); + } + } +} http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/node/render_appbar.h ---------------------------------------------------------------------- diff --git a/weex_core/Source/core/render/node/render_appbar.h b/weex_core/Source/core/render/node/render_appbar.h index d0c85d3..7259bbb 100644 --- a/weex_core/Source/core/render/node/render_appbar.h +++ b/weex_core/Source/core/render/node/render_appbar.h @@ -19,72 +19,28 @@ #ifndef WEEX_PROJECT_RENDERAPPBAR_H #define WEEX_PROJECT_RENDERAPPBAR_H -#include <core/render/node/render_object.h> #include <string> -//#include <android/base/string/string_utils.h> + +#include "core/render/node/render_object.h" namespace WeexCore { class RenderAppBar : public RenderObject { private: - float defaultNavWidth; - float defaultOverflowWidth; - std::map<std::string, std::string> *GetDefaultStyle() { - defaultNavWidth = getFloat(WXCoreEnvironment::getInstance()->GetOption("defaultNavWidth").c_str()); + std::map<std::string, std::string> *GetDefaultStyle(); - defaultOverflowWidth = getFloat(WXCoreEnvironment::getInstance()->GetOption("defaultOverflowWidth").c_str()); + bool StyleExist(const std::string &key); - std::string appbar_color = WXCoreEnvironment::getInstance()->GetOption("appbar_color"); - std::string appbar_background_color = WXCoreEnvironment::getInstance()->GetOption( - "appbar_background_color"); - - std::map<std::string, std::string> *style = new std::map<std::string, std::string>(); - style->insert(std::pair<std::string, std::string>(PADDING_LEFT, "0")); - style->insert(std::pair<std::string, std::string>(PADDING_RIGHT, "0")); + public: - if (!appbar_color.empty() && appbar_color != "" && !StyleExist(COLOR)) - style->insert(std::pair<std::string, std::string>(COLOR, appbar_color)); - if (!appbar_background_color.empty() && appbar_background_color != "" && !StyleExist(BACKGROUND_COLOR)) - style->insert(std::pair<std::string, std::string>(BACKGROUND_COLOR, appbar_background_color)); - return style; - } + StyleType ApplyStyle(const std::string &key, const std::string &value, const bool updating); - inline bool StyleExist(const std::string &key) { - std::string value = GetStyle(key); - return !value.empty() && value != ""; - } + private: - public: + float defaultNavWidth; + float defaultOverflowWidth; - StyleType ApplyStyle(const std::string &key, const std::string &value, const bool updating) { - if (key == PADDING) { - UpdateStyle(key, - value, - 0, - [=](float foo) { - setPadding(kPaddingLeft, foo + defaultNavWidth), - setPadding(kPaddingRight, foo + defaultOverflowWidth), - setPadding(kPaddingTop, foo), - setPadding(kPaddingBottom, foo); - }); - return kTypePadding; - } else if (key == PADDING_LEFT) { - UpdateStyle(key, - value, - 0, - [=](float foo) { setPadding(kPaddingLeft, foo + defaultNavWidth); }); - return kTypePadding; - } else if (key == PADDING_RIGHT) { - UpdateStyle(key, - value, - 0, - [=](float foo) { setPadding(kPaddingRight, foo + defaultOverflowWidth); }); - return kTypePadding; - } else { - return RenderObject::ApplyStyle(key, value, updating); - } - } }; } http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/node/render_cell.h ---------------------------------------------------------------------- diff --git a/weex_core/Source/core/render/node/render_cell.h b/weex_core/Source/core/render/node/render_cell.h index d7e9adc..9a2ced6 100644 --- a/weex_core/Source/core/render/node/render_cell.h +++ b/weex_core/Source/core/render/node/render_cell.h @@ -19,7 +19,7 @@ #ifndef WEEX_PROJECT_RENDERCELL_H #define WEEX_PROJECT_RENDERCELL_H -#include <core/render/node/render_object.h> +#include "core/render/node/render_object.h" namespace WeexCore { class RenderCell : public RenderObject { http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/node/render_indicator.h ---------------------------------------------------------------------- diff --git a/weex_core/Source/core/render/node/render_indicator.h b/weex_core/Source/core/render/node/render_indicator.h deleted file mode 100644 index 9c3bd00..0000000 --- a/weex_core/Source/core/render/node/render_indicator.h +++ /dev/null @@ -1,30 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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. - */ -#ifndef WEEX_PROJECT_RENDERINDICATOR_H -#define WEEX_PROJECT_RENDERINDICATOR_H - -#include <core/render/node/render_object.h> - -namespace WeexCore { - class RenderIndicator : public RenderObject { - - }; -} - -#endif //WEEX_PROJECT_RENDERINDICATOR_H http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/node/render_input.h ---------------------------------------------------------------------- diff --git a/weex_core/Source/core/render/node/render_input.h b/weex_core/Source/core/render/node/render_input.h deleted file mode 100644 index ce4a007..0000000 --- a/weex_core/Source/core/render/node/render_input.h +++ /dev/null @@ -1,30 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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. - */ -#ifndef WEEX_PROJECT_BASICRENDEREDITTEXT_H -#define WEEX_PROJECT_BASICRENDEREDITTEXT_H - -#include <core/render/node/render_object.h> - -namespace WeexCore { - class RenderInput : public RenderObject { - - }; -} - -#endif //WEEX_PROJECT_BASICRENDEREDITTEXT_H http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/19406510/weex_core/Source/core/render/node/render_list.cpp ---------------------------------------------------------------------- diff --git a/weex_core/Source/core/render/node/render_list.cpp b/weex_core/Source/core/render/node/render_list.cpp new file mode 100644 index 0000000..8c5042c --- /dev/null +++ b/weex_core/Source/core/render/node/render_list.cpp @@ -0,0 +1,319 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 <cmath> + +#include "core/render/node/render_list.h" +#include "core/css/constants_name.h" +#include "base/ViewUtils.h" +#include "core/render/node/factory/render_type.h" +#include "core/render/node/render_object.h" +#include "core/render/page/render_page.h" + +namespace WeexCore { + + RenderList::~RenderList() { + if (cellSlotsCopys.size() > 0) { + for (auto it = cellSlotsCopys.begin(); it != cellSlotsCopys.end(); ++it) { + RenderObject *child = *it; + if (child) { + delete child; + child = nullptr; + } + } + cellSlotsCopys.clear(); + } + + if (cellSlots.size() > 0) { + for (auto it = cellSlots.begin(); it != cellSlots.end(); ++it) { + RenderObject *child = *it; + if (child) { + delete child; + child = nullptr; + } + } + cellSlots.clear(); + } + } + + void RenderList::addCellSlotCopyTrack(RenderObject *cellSlot) { + cellSlot->setParent(this, cellSlot); + cellSlotsCopys.push_back(cellSlot); + } + + std::map<std::string, std::string> *RenderList::GetDefaultStyle() { + std::map<std::string, std::string> *style = new std::map<std::string, std::string>(); + + bool isVertical = true; + RenderObject *parent = (RenderObject *) getParent(); + + if (parent != nullptr && !parent->Type().empty()) { + if (parent->Type() == kHList) { + isVertical = false; + } else if (getOrientation() == HORIZONTAL_VALUE) { + isVertical = false; + } + } + + std::string prop = isVertical ? HEIGHT : WIDTH; + + if (prop == HEIGHT && isnan(getStyleHeight()) && !mIsSetFlex) { + mIsSetFlex = true; + style->insert(std::pair<std::string, std::string>(FLEX, "1")); + } else if (prop == WIDTH && isnan(getStyleWidth()) && !mIsSetFlex) { + mIsSetFlex = true; + style->insert(std::pair<std::string, std::string>(FLEX, "1")); + } + + return style; + } + + void RenderList::setFlex(const float flex) { + mIsSetFlex = true; + WXCoreLayoutNode::setFlex(flex); + } + + std::map<std::string, std::string> *RenderList::GetDefaultAttr() { + if (!mIsPreCalculateCellWidth) { + preCalculateCellWidth(); + } + return nullptr; + } + + void RenderList::preCalculateCellWidth() { + std::map<std::string, std::string> *attrs = new std::map<std::string, std::string>(); + if (Attributes() != nullptr) { + mColumnCount = getColumnCount(); + mColumnWidth = getColumnWidth(); + mColumnGap = getColumnGap(); + + mLeftGap = getLeftGap(); + mRightGap = getRightGap(); + + mAvailableWidth = + getStyleWidth() - getWebPxByWidth(getPaddingLeft(), GetRenderPage()->ViewPortWidth()) - + getWebPxByWidth(getPaddingRight(), GetRenderPage()->ViewPortWidth()); + + if (AUTO_VALUE == mColumnCount && AUTO_VALUE == mColumnWidth) { + mColumnCount = COLUMN_COUNT_NORMAL; + mColumnWidth = (mAvailableWidth - ((mColumnCount - 1) * mColumnGap)) / mColumnCount; + mColumnWidth = mColumnWidth > 0 ? mColumnWidth : 0; + } else if (AUTO_VALUE == mColumnWidth && AUTO_VALUE != mColumnCount) { + mColumnWidth = + (mAvailableWidth - mLeftGap - mRightGap - ((mColumnCount - 1) * mColumnGap)) / + mColumnCount; + mColumnWidth = mColumnWidth > 0 ? mColumnWidth : 0; + } else if (AUTO_VALUE != mColumnWidth && AUTO_VALUE == mColumnCount) { + mColumnCount = (int) round( + (mAvailableWidth + mColumnGap) / (mColumnWidth + mColumnGap) - 0.5f); + mColumnCount = mColumnCount > 0 ? mColumnCount : 1; + if (mColumnCount <= 0) { + mColumnCount = COLUMN_COUNT_NORMAL; + } + mColumnWidth = + ((mAvailableWidth + mColumnGap - mLeftGap - mRightGap) / mColumnCount) - mColumnGap; + + } else if (AUTO_VALUE != mColumnWidth && AUTO_VALUE != mColumnCount) { + int columnCount = (int) round( + (mAvailableWidth + mColumnGap - mLeftGap - mRightGap) / (mColumnWidth + mColumnGap) - + 0.5f); + mColumnCount = columnCount > mColumnCount ? mColumnCount : columnCount; + if (mColumnCount <= 0) { + mColumnCount = COLUMN_COUNT_NORMAL; + } + mColumnWidth = + ((mAvailableWidth + mColumnGap - mLeftGap - mRightGap) / mColumnCount) - mColumnGap; + } + + std::string spanOffsets = calcSpanOffset(); + + mIsPreCalculateCellWidth = true; + if (getColumnCount() > 0 || getColumnWidth() > 0 || mColumnCount > COLUMN_COUNT_NORMAL) { + attrs->insert(std::pair<std::string, std::string>(COLUMN_COUNT, to_string(mColumnCount))); + attrs->insert(std::pair<std::string, std::string>(COLUMN_GAP, to_string(mColumnGap))); + attrs->insert(std::pair<std::string, std::string>(COLUMN_WIDTH, to_string(mColumnWidth))); + } + if (spanOffsets.length() > 0) { + attrs->insert(std::pair<std::string, std::string>(SPAN_OFFSETS, to_string(spanOffsets))); + } + + for (auto iter = attrs->cbegin(); iter != attrs->cend(); iter++) { + RenderObject::UpdateAttr(iter->first, iter->second); + } + } + + RenderPage *page = GetRenderPage(); + + if (page != nullptr) + page->SendUpdateAttrAction(this, attrs); + + if (attrs != nullptr) { + attrs->clear(); + delete attrs; + attrs = nullptr; + } + } + + std::string RenderList::calcSpanOffset() { + std::string spanOffsets; + if (mLeftGap > 0 || mRightGap > 0) { + spanOffsets.append("["); + for (int i = 0; i < mColumnCount; i++) { + float spanOffset = mLeftGap + i * ((mColumnWidth + mColumnGap) - + (mAvailableWidth + mColumnGap) / mColumnCount); + spanOffsets.append(to_string(spanOffset)); + if (i != mColumnCount - 1) { + spanOffsets.append(","); + } + } + spanOffsets.append("]"); + } + return spanOffsets; + } + + float RenderList::getStyleWidth() { + float width = getWebPxByWidth(getLayoutWidth(), GetRenderPage()->ViewPortWidth()); + if (isnan(width) || width <= 0) { + if (getParent() != nullptr) { + width = getWebPxByWidth(getParent()->getLayoutWidth(), GetRenderPage()->ViewPortWidth()); + } + if (isnan(width) || width <= 0) { + width = getWebPxByWidth(RenderObject::getStyleWidth(), GetRenderPage()->ViewPortWidth()); + } + } + if (isnan(width) || width <= 0) { + width = GetViewPortWidth(); + } + return width; + } + + int RenderList::AddRenderObject(int index, RenderObject *child) { + if (Type() == kRenderRecycleList + && (child->Type() == kRenderCellSlot || child->Type() == kRenderCell || + child->Type() == kRenderHeader)) { + child->setParent(this, child); + cellSlots.insert(cellSlots.end(), child); + index = -1; + } else { + index = RenderObject::AddRenderObject(index, child); + } + + if (!mIsPreCalculateCellWidth) { + preCalculateCellWidth(); + } + + if (mColumnWidth != 0 && !isnan(mColumnWidth)) { + AddRenderObjectWidth(child, false); + } + return index; + } + + void RenderList::AddRenderObjectWidth(RenderObject *child, const bool updating) { + if (Type() == kRenderWaterfall || Type() == kRenderRecycleList) { + if (child->Type() == kRenderHeader || child->Type() == kRenderFooter) { + child->ApplyStyle(WIDTH, to_string(mAvailableWidth), updating); + } else if (child->IsSticky()) { + child->ApplyStyle(WIDTH, to_string(mAvailableWidth), updating); + } else if (child->Type() == kRenderCell || child->Type() == kRenderCellSlot) { + child->ApplyStyle(WIDTH, to_string(mColumnWidth), updating); + } + } + } + + void RenderList::UpdateAttr(std::string key, std::string value) { + RenderObject::UpdateAttr(key, value); + + if (!GetAttr(COLUMN_COUNT).empty() || !GetAttr(COLUMN_GAP).empty() || + !GetAttr(COLUMN_WIDTH).empty()) { + preCalculateCellWidth(); + + if (mColumnWidth == 0 && isnan(mColumnWidth)) { + return; + } + + int count = getChildCount(); + for (Index i = 0; i < count; i++) { + RenderObject *child = GetChild(i); + AddRenderObjectWidth(this, true); + } + } + } + + float RenderList::getColumnCount() { + std::string columnCount = GetAttr(COLUMN_COUNT); + + if (columnCount.empty() || columnCount == AUTO) { + return AUTO_VALUE; + } + + float columnCountValue = getFloat(columnCount.c_str()); + return (columnCountValue > 0 && !isnan(columnCountValue)) ? columnCountValue : AUTO_VALUE; + } + + float RenderList::getColumnGap() { + std::string columnGap = GetAttr(COLUMN_GAP); + + if (columnGap.empty() || columnGap == NORMAL) { + return COLUMN_GAP_NORMAL; + } + + float columnGapValue = getFloat(columnGap.c_str()); + return (columnGapValue > 0 && !isnan(columnGapValue)) ? columnGapValue : AUTO_VALUE; + } + + float RenderList::getColumnWidth() { + std::string columnWidth = GetAttr(COLUMN_WIDTH); + + if (columnWidth.empty() || columnWidth == AUTO) { + return AUTO_VALUE; + } + + float columnWidthValue = getFloat(columnWidth.c_str()); + return (columnWidthValue > 0 && !isnan(columnWidthValue)) ? columnWidthValue : 0; + } + + float RenderList::getLeftGap() { + std::string leftGap = GetAttr(LEFT_GAP); + + if (leftGap.empty() || leftGap == AUTO) { + return 0; + } + + float leftGapValue = getFloat(leftGap.c_str()); + return (leftGapValue > 0 && !isnan(leftGapValue)) ? leftGapValue : 0; + } + + float RenderList::getRightGap() { + std::string rightGap = GetAttr(RIGHT_GAP); + + if (rightGap.empty() || rightGap == AUTO) { + return 0; + } + + float rightGapValue = getFloat(rightGap.c_str()); + return (rightGapValue > 0 && !isnan(rightGapValue)) ? rightGapValue : 0; + } + + int RenderList::getOrientation() { + std::string direction = GetAttr(SCROLL_DIRECTION); + if (HORIZONTAL == direction) { + return HORIZONTAL_VALUE; + } + return VERTICAL_VALUE; + } +}
