You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@weex.apache.org by cx...@apache.org on 2018/06/19 09:41:28 UTC
[41/50] [abbrv] incubator-weex git commit: [WEEX-442][Core] Fix
setViewport
[WEEX-442][Core] Fix setViewport
Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/578c3571
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/578c3571
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/578c3571
Branch: refs/heads/release
Commit: 578c35716166b12df30ac8f3039036cd922ce4af
Parents: 44fd78c
Author: miomin <mi...@foxmail.com>
Authored: Thu Jun 14 19:38:26 2018 +0800
Committer: miomin <mi...@foxmail.com>
Committed: Thu Jun 14 19:38:26 2018 +0800
----------------------------------------------------------------------
.../java/com/taobao/weex/WXSDKInstance.java | 1 -
.../java/com/taobao/weex/bridge/WXBridge.java | 8 -----
.../com/taobao/weex/bridge/WXBridgeManager.java | 4 ---
.../java/com/taobao/weex/common/IWXBridge.java | 2 --
.../com/taobao/weex/ui/module/WXMetaModule.java | 1 -
.../bridge/impl/weexcore_impl_android.cpp | 8 -----
.../jniprebuild/jniheader/WXBridge_jni.h | 10 ------
weex_core/Source/base/ViewUtils.h | 4 +--
weex_core/Source/core/bridge/js_bridge.cpp | 4 +++
.../core/render/manager/render_manager.cpp | 34 ++++++++++++++++++++
.../Source/core/render/manager/render_manager.h | 19 ++++++++++-
.../Source/core/render/node/render_list.cpp | 13 ++++----
.../Source/core/render/node/render_mask.cpp | 5 +--
.../Source/core/render/node/render_object.cpp | 11 +------
.../Source/core/render/node/render_object.h | 4 +--
.../Source/core/render/page/render_page.cpp | 3 +-
weex_core/Source/core/render/page/render_page.h | 7 ----
17 files changed, 71 insertions(+), 67 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/578c3571/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java b/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java
index d7d8581..9f59e30 100644
--- a/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java
+++ b/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java
@@ -318,7 +318,6 @@ public class WXSDKInstance implements IWXActivityStateListener,View.OnLayoutChan
public void setInstanceViewPortWidth(int instanceViewPortWidth) {
this.mInstanceViewPortWidth = instanceViewPortWidth;
- WXSDKManager.getInstance().getWXBridgeManager().setViewPortWidth(getInstanceId(), instanceViewPortWidth);
}
public int getInstanceViewPortWidth(){
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/578c3571/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridge.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridge.java b/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridge.java
index cc2d1a9..4059d97 100644
--- a/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridge.java
+++ b/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridge.java
@@ -94,9 +94,6 @@ public class WXBridge implements IWXBridge {
private native void nativeRegisterCoreEnv(String key, String value);
- private native void nativeSetViewPortWidth(String instanceId, float value);
-
-
/**
* update global config,
* @param config params
@@ -565,11 +562,6 @@ public class WXBridge implements IWXBridge {
nativeRegisterCoreEnv(key, value);
}
- @Override
- public void setViewPortWidth(String instanceId, float value) {
- nativeSetViewPortWidth(instanceId, value);
- }
-
public void reportNativeInitStatus(String statusCode, String errorMsg) {
if (WXErrorCode.WX_JS_FRAMEWORK_INIT_SINGLE_PROCESS_SUCCESS.getErrorCode().equals(statusCode)
|| WXErrorCode.WX_JS_FRAMEWORK_INIT_FAILED.getErrorCode().equals(statusCode)) {
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/578c3571/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java b/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java
index 5d20f14..9726098 100644
--- a/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java
+++ b/android/sdk/src/main/java/com/taobao/weex/bridge/WXBridgeManager.java
@@ -2672,10 +2672,6 @@ public class WXBridgeManager implements Callback, BactchExecutor {
return mWXBridge.getRenderFinishTime(instanceId);
}
- public void setViewPortWidth(String instanceId, float value) {
- mWXBridge.setViewPortWidth(instanceId, value);
- }
-
public void setMargin(String instanceId, String ref, CSSShorthand.EDGE edge, float value) {
mWXBridge.setMargin(instanceId, ref, edge, value);
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/578c3571/android/sdk/src/main/java/com/taobao/weex/common/IWXBridge.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/common/IWXBridge.java b/android/sdk/src/main/java/com/taobao/weex/common/IWXBridge.java
index 25821e3..0207d86 100644
--- a/android/sdk/src/main/java/com/taobao/weex/common/IWXBridge.java
+++ b/android/sdk/src/main/java/com/taobao/weex/common/IWXBridge.java
@@ -186,7 +186,5 @@ public interface IWXBridge extends IWXObject {
void registerCoreEnv(String key, String value);
- void setViewPortWidth(String instanceId, float value);
-
void reportNativeInitStatus(String statusCode, String errorMsg);
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/578c3571/android/sdk/src/main/java/com/taobao/weex/ui/module/WXMetaModule.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/module/WXMetaModule.java b/android/sdk/src/main/java/com/taobao/weex/ui/module/WXMetaModule.java
index 93a01c7..c85fb5e 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/module/WXMetaModule.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/module/WXMetaModule.java
@@ -65,7 +65,6 @@ public class WXMetaModule extends WXModule {
} else {
int width = jsObj.getInteger(WIDTH);
if (width > 0) {
- // todo 问题:js -> java -> native,应该在native就拦截下请求,并修改ViewPortWidth
mWXSDKInstance.setInstanceViewPortWidth(width);
}
WXLogUtils.d("[WXMetaModule] setViewport success[width]=" + width);
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/578c3571/weex_core/Source/android/bridge/impl/weexcore_impl_android.cpp
----------------------------------------------------------------------
diff --git a/weex_core/Source/android/bridge/impl/weexcore_impl_android.cpp b/weex_core/Source/android/bridge/impl/weexcore_impl_android.cpp
index e731026..94a3ac6 100644
--- a/weex_core/Source/android/bridge/impl/weexcore_impl_android.cpp
+++ b/weex_core/Source/android/bridge/impl/weexcore_impl_android.cpp
@@ -289,14 +289,6 @@ static void RegisterCoreEnv(JNIEnv *env, jobject jcaller, jstring key, jstring v
WXCoreEnvironment::getInstance()->AddOption(jString2StrFast(env, key), jString2StrFast(env, value));
}
-static void SetViewPortWidth(JNIEnv *env, jobject jcaller, jstring instanceId, jfloat value) {
- const char *cInstanceId = env->GetStringUTFChars(instanceId, JNI_FALSE);
- WeexCoreManager::getInstance()->getPlatformBridge()->setViewPortWidth(
- cInstanceId,value
- );
-}
-
-
static jint InitFramework(JNIEnv *env, jobject object, jstring script, jobject params) {
jThis = env->NewGlobalRef(object);
jclass tempClass = env->FindClass(
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/578c3571/weex_core/Source/android/jniprebuild/jniheader/WXBridge_jni.h
----------------------------------------------------------------------
diff --git a/weex_core/Source/android/jniprebuild/jniheader/WXBridge_jni.h b/weex_core/Source/android/jniprebuild/jniheader/WXBridge_jni.h
index 424b1f2..3af71be 100644
--- a/weex_core/Source/android/jniprebuild/jniheader/WXBridge_jni.h
+++ b/weex_core/Source/android/jniprebuild/jniheader/WXBridge_jni.h
@@ -134,10 +134,6 @@ static void RegisterCoreEnv(JNIEnv* env, jobject jcaller,
jstring key,
jstring value);
-static void SetViewPortWidth(JNIEnv* env, jobject jcaller,
- jstring instanceId,
- jfloat value);
-
static void UpdateGlobalConfig(JNIEnv* env, jobject jcaller,
jstring config);
@@ -305,12 +301,6 @@ static const JNINativeMethod kMethodsWXBridge[] = {
"Ljava/lang/String;"
")"
"V", reinterpret_cast<void*>(RegisterCoreEnv) },
- { "nativeSetViewPortWidth",
-"("
-"Ljava/lang/String;"
-"F"
-")"
-"V", reinterpret_cast<void*>(SetViewPortWidth) },
{ "nativeUpdateGlobalConfig",
"("
"Ljava/lang/String;"
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/578c3571/weex_core/Source/base/ViewUtils.h
----------------------------------------------------------------------
diff --git a/weex_core/Source/base/ViewUtils.h b/weex_core/Source/base/ViewUtils.h
index f73aeca..d6cbf4e 100644
--- a/weex_core/Source/base/ViewUtils.h
+++ b/weex_core/Source/base/ViewUtils.h
@@ -64,7 +64,7 @@ namespace WeexCore {
float realPx = (src * WXCoreEnvironment::getInstance()->DeviceWidth() /
viewport);
- float result = realPx > 0.005 && realPx < 1 ? 1 : rint(realPx);
+ float result = realPx > 0.005 && realPx < 1 ? 1.0f : realPx;
return result;
}
@@ -120,7 +120,7 @@ namespace WeexCore {
return NAN;
float realPx = (pxValue * customViewport / WXCoreEnvironment::getInstance()->DeviceWidth());
- float result = realPx > 0.005 && realPx < 1 ? 1 : rint(realPx);
+ float result = realPx > 0.005 && realPx < 1 ? 1.0f : realPx;
return result;
}
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/578c3571/weex_core/Source/core/bridge/js_bridge.cpp
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/bridge/js_bridge.cpp b/weex_core/Source/core/bridge/js_bridge.cpp
index 17608d8..1163f05 100644
--- a/weex_core/Source/core/bridge/js_bridge.cpp
+++ b/weex_core/Source/core/bridge/js_bridge.cpp
@@ -47,6 +47,10 @@ namespace WeexCore {
void *JSBridge::onCallNativeModule(const char *pageId, const char *module, const char *method,
const char *arguments, int argumentsLength, const char *options,
int optionsLength) {
+
+ RenderManager::GetInstance()->CallNativeModule(pageId, module, method, arguments, argumentsLength,
+ options, optionsLength);
+
return WeexCoreManager::getInstance()->getPlatformBridge()->callNativeModule(
pageId, module, method, arguments,
argumentsLength, options,
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/578c3571/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 0eebc82..699c29f 100644
--- a/weex_core/Source/core/render/manager/render_manager.cpp
+++ b/weex_core/Source/core/render/manager/render_manager.cpp
@@ -19,7 +19,10 @@
#include <utility>
#include <vector>
+#include <wson_parser.h>
+#include "base/ViewUtils.h"
+#include "core/css/constants_name.h"
#include "base/TimeUtils.h"
#include "core/layout/measure_func_adapter.h"
#include "core/parser/dom_wson.h"
@@ -183,6 +186,37 @@ bool RenderManager::CreateFinish(const std::string &page_id) {
return page->CreateFinish();
}
+bool RenderManager::CallNativeModule(const char *pageId, const char *module, const char *method,
+ const char *arguments, int argumentsLength,
+ const char *options, int optionsLength) {
+ if (strcmp(module, "meta") == 0) {
+ CallMetaModule(method, arguments);
+ }
+}
+
+bool RenderManager::CallMetaModule(const char *method, const char *arguments) {
+
+ if (strcmp(method, "setViewport") == 0) {
+ wson_parser parser(arguments);
+ if (parser.isArray(parser.nextType())) {
+ int size = parser.nextArraySize();
+ for (int i = 0; i < size; i++) {
+ uint8_t value_type = parser.nextType();
+ if (parser.isMap(value_type)) {
+ int map_size = parser.nextMapSize();
+ for (int j = 0; j < map_size; j++) {
+ std::string key = parser.nextMapKeyUTF8();
+ std::string value = parser.nextStringUTF8(parser.nextType());
+ if (strcmp(key.c_str(), WIDTH) == 0) {
+ RenderManager::GetInstance()->set_viewport_width(getFloat(value.c_str()));
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
RenderPage *RenderManager::GetPage(const std::string &page_id) {
std::map<std::string, RenderPage *>::iterator iter =
this->pages_.find(page_id);
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/578c3571/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 9abe2da..e7e0f44 100644
--- a/weex_core/Source/core/render/manager/render_manager.h
+++ b/weex_core/Source/core/render/manager/render_manager.h
@@ -22,13 +22,17 @@
#include <map>
#include <string>
+#include "core/css/constants_value.h"
+
namespace WeexCore {
class RenderPage;
class RenderManager {
private:
- RenderManager() {}
+ RenderManager() {
+ this->viewport_width_ = kDefaultViewPortWidth;
+ }
~RenderManager() {}
@@ -75,6 +79,12 @@ class RenderManager {
bool CreateFinish(const std::string &page_id);
+ bool CallNativeModule(const char *pageId, const char *module, const char *method,
+ const char *arguments, int argumentsLength, const char *options,
+ int optionsLength);
+
+ bool CallMetaModule(const char *method, const char *arguments);
+
RenderPage *GetPage(const std::string &page_id);
bool ClosePage(const std::string &page_id);
@@ -86,9 +96,16 @@ class RenderManager {
return g_pInstance;
}
+ inline float viewport_width() const { return this->viewport_width_; }
+
+ inline void set_viewport_width(float viewport_width) {
+ this->viewport_width_ = viewport_width;
+ }
+
private:
static RenderManager *g_pInstance;
std::map<std::string, RenderPage *> pages_;
+ float viewport_width_ = -1;
};
} // namespace WeexCore
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/578c3571/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
index 84df8ec..bce9384 100644
--- a/weex_core/Source/core/render/node/render_list.cpp
+++ b/weex_core/Source/core/render/node/render_list.cpp
@@ -18,6 +18,7 @@
*/
#include <cmath>
#include <utility>
+#include <core/render/manager/render_manager.h>
#include "base/ViewUtils.h"
#include "core/css/constants_name.h"
@@ -112,8 +113,8 @@ void RenderList::PreCalculateCellWidth() {
this->available_width_ =
TakeStyleWidth() -
- getWebPxByWidth(getPaddingLeft(), GetRenderPage()->viewport_width()) -
- getWebPxByWidth(getPaddingRight(), GetRenderPage()->viewport_width());
+ getWebPxByWidth(getPaddingLeft(), RenderManager::GetInstance()->viewport_width()) -
+ getWebPxByWidth(getPaddingRight(), RenderManager::GetInstance()->viewport_width());
if (AUTO_VALUE == this->column_count_ &&
AUTO_VALUE == this->column_width_) {
@@ -216,19 +217,19 @@ std::string RenderList::CalculateSpanOffset() {
float RenderList::TakeStyleWidth() {
float width =
- getWebPxByWidth(getLayoutWidth(), GetRenderPage()->viewport_width());
+ getWebPxByWidth(getLayoutWidth(), RenderManager::GetInstance()->viewport_width());
if (isnan(width) || width <= 0) {
if (getParent() != nullptr) {
width = getWebPxByWidth(getParent()->getLayoutWidth(),
- GetRenderPage()->viewport_width());
+ RenderManager::GetInstance()->viewport_width());
}
if (isnan(width) || width <= 0) {
width = getWebPxByWidth(RenderObject::getStyleWidth(),
- GetRenderPage()->viewport_width());
+ RenderManager::GetInstance()->viewport_width());
}
}
if (isnan(width) || width <= 0) {
- width = GetViewPortWidth();
+ width = RenderManager::GetInstance()->viewport_width();
}
return width;
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/578c3571/weex_core/Source/core/render/node/render_mask.cpp
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/node/render_mask.cpp b/weex_core/Source/core/render/node/render_mask.cpp
index df925a2..8c80d0b 100644
--- a/weex_core/Source/core/render/node/render_mask.cpp
+++ b/weex_core/Source/core/render/node/render_mask.cpp
@@ -20,6 +20,7 @@
#include <utility>
#include "base/ViewUtils.h"
+#include "core/render/manager/render_manager.h"
#include "core/config/core_environment.h"
#include "core/css/constants_name.h"
#include "core/render/node/render_mask.h"
@@ -54,9 +55,9 @@ std::map<std::string, std::string> *RenderMask::GetDefaultStyle() {
style->insert(std::pair<std::string, std::string>(POSITION, "absolute"));
style->insert(std::pair<std::string, std::string>(
- WIDTH, to_string(getWebPxByWidth(width, GetViewPortWidth()))));
+ WIDTH, to_string(getWebPxByWidth(width, RenderManager::GetInstance()->viewport_width()))));
style->insert(std::pair<std::string, std::string>(
- HEIGHT, to_string(getWebPxByWidth(height, GetViewPortWidth()))));
+ HEIGHT, to_string(getWebPxByWidth(height, RenderManager::GetInstance()->viewport_width()))));
style->insert(std::pair<std::string, std::string>(TOP, "0"));
return style;
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/578c3571/weex_core/Source/core/render/node/render_object.cpp
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/node/render_object.cpp b/weex_core/Source/core/render/node/render_object.cpp
index fe0d25f..97f9287 100644
--- a/weex_core/Source/core/render/node/render_object.cpp
+++ b/weex_core/Source/core/render/node/render_object.cpp
@@ -305,15 +305,6 @@ const std::string RenderObject::GetAttr(const std::string &key) {
}
}
-float RenderObject::GetViewPortWidth() {
- if (this->viewport_width_ >= 0) return this->viewport_width_;
-
- RenderPage *page = GetRenderPage();
- if (page == nullptr) return kDefaultViewPortWidth;
-
- return page->viewport_width();
-}
-
int RenderObject::AddRenderObject(int index, RenderObject *child) {
if (child == nullptr || index < -1) {
return index;
@@ -356,7 +347,7 @@ bool RenderObject::UpdateStyleInternal(const std::string key,
functor(fallback);
ret = true;
} else {
- float fvalue = getFloatByViewport(value, GetViewPortWidth());
+ float fvalue = getFloatByViewport(value, RenderManager::GetInstance()->viewport_width());
if (!isnan(fvalue)) {
functor(fvalue);
ret = true;
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/578c3571/weex_core/Source/core/render/node/render_object.h
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/node/render_object.h b/weex_core/Source/core/render/node/render_object.h
index 1a6352c..95e0c1a 100644
--- a/weex_core/Source/core/render/node/render_object.h
+++ b/weex_core/Source/core/render/node/render_object.h
@@ -31,8 +31,7 @@
#define convert_render_object_to_long(render) ((jlong)((intptr_t)render))
-#define convert_long_to_render_object(ptr) \
- ((RenderObject *)((intptr_t)ptr))
+#define convert_long_to_render_object(ptr) ((RenderObject *)((intptr_t)ptr))
namespace WeexCore {
@@ -151,7 +150,6 @@ class RenderObject : public IRenderObject {
std::map<std::string, std::string> *styles_;
std::map<std::string, std::string> *attributes_;
std::set<std::string> *events_;
- float viewport_width_ = -1;
bool is_root_render_;
bool is_sticky_ = false;
};
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/578c3571/weex_core/Source/core/render/page/render_page.cpp
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/page/render_page.cpp b/weex_core/Source/core/render/page/render_page.cpp
index 7e9bee5..c5be5e2 100644
--- a/weex_core/Source/core/render/page/render_page.cpp
+++ b/weex_core/Source/core/render/page/render_page.cpp
@@ -16,9 +16,9 @@
* specific language governing permissions and limitations
* under the License.
*/
-#include "core/render/page/render_page.h"
#include "base/TimeUtils.h"
#include "base/ViewUtils.h"
+#include "core/render/page/render_page.h"
#include "core/config/core_environment.h"
#include "core/css/constants_value.h"
#include "core/layout/layout.h"
@@ -49,7 +49,6 @@ RenderPage::RenderPage(std::string page_id) {
this->page_id_ = page_id;
this->render_performance_ = new RenderPerformance();
- this->viewport_width_ = kDefaultViewPortWidth;
this->render_page_size_.first =
WXCoreEnvironment::getInstance()->DeviceWidth();
this->render_page_size_.second = NAN;
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/578c3571/weex_core/Source/core/render/page/render_page.h
----------------------------------------------------------------------
diff --git a/weex_core/Source/core/render/page/render_page.h b/weex_core/Source/core/render/page/render_page.h
index 9310e16..4fe91c1 100644
--- a/weex_core/Source/core/render/page/render_page.h
+++ b/weex_core/Source/core/render/page/render_page.h
@@ -143,12 +143,6 @@ public:
inline std::string page_id() { return this->page_id_; }
- inline float viewport_width() const { return this->viewport_width_; }
-
- inline void set_viewport_width(float viewport_width) {
- this->viewport_width_ = viewport_width;
- }
-
inline bool is_dirty() { return this->is_dirty_.load(); }
inline void set_is_dirty(bool dirty) { this->is_dirty_.store(dirty); }
@@ -167,7 +161,6 @@ public:
std::atomic_bool has_fore_layout_action_{false};
private:
- float viewport_width_;
RenderObject *render_root_ = nullptr;
std::string page_id_;
std::pair<float, float> render_page_size_;