Fabric: `pointScaleFactor` is now part of LayoutContext and LayoutMetrics
Summary: @public ... and we initalize this in Surface. We need this for requesting images with proper size/pixel-density, setup proper parameters for rasterizing CALayer's and rounding layout metric values. Then we have to figure out how to wire this up with YGConfig. Reviewed By: fkgozali Differential Revision: D8475639 fbshipit-source-id: cec7af581b94efb4595dcf3f232252ce87a1fde3
This commit is contained in:
parent
62a458bcea
commit
a3f9ff4f93
|
@ -17,6 +17,7 @@
|
|||
#import <React/RCTSurfaceRegistry.h>
|
||||
#import <React/RCTSurfaceView.h>
|
||||
#import <React/RCTSurfaceView+Internal.h>
|
||||
#import <React/RCTUtils.h>
|
||||
#import <fabric/core/LayoutContext.h>
|
||||
#import <fabric/core/LayoutConstraints.h>
|
||||
|
||||
|
@ -106,6 +107,7 @@ using namespace facebook::react;
|
|||
surface:(RCTFabricSurface *)surface
|
||||
{
|
||||
LayoutContext layoutContext;
|
||||
layoutContext.pointScaleFactor = RCTScreenScale();
|
||||
LayoutConstraints layoutConstraints = {};
|
||||
layoutConstraints.minimumSize = RCTSizeFromCGSize(minimumSize);
|
||||
layoutConstraints.maximumSize = RCTSizeFromCGSize(maximumSize);
|
||||
|
@ -120,6 +122,7 @@ using namespace facebook::react;
|
|||
surface:(RCTFabricSurface *)surface
|
||||
{
|
||||
LayoutContext layoutContext;
|
||||
layoutContext.pointScaleFactor = RCTScreenScale();
|
||||
LayoutConstraints layoutConstraints = {};
|
||||
layoutConstraints.minimumSize = RCTSizeFromCGSize(minimumSize);
|
||||
layoutConstraints.maximumSize = RCTSizeFromCGSize(maximumSize);
|
||||
|
|
|
@ -59,7 +59,6 @@
|
|||
moduleName:(NSString *)moduleName
|
||||
initialProperties:(NSDictionary *)initialProperties
|
||||
{
|
||||
|
||||
if (self = [super init]) {
|
||||
_surfacePresenter = surfacePresenter;
|
||||
_moduleName = moduleName;
|
||||
|
|
|
@ -21,6 +21,14 @@ struct LayoutContext {
|
|||
* Compound absolute position of the node relative to the root node.
|
||||
*/
|
||||
Point absolutePosition {0, 0};
|
||||
|
||||
/*
|
||||
* Reflects the scale factor needed to convert from the logical coordinate
|
||||
* space into the device coordinate space of the physical screen.
|
||||
* Some layout systems *might* use this to round layout metric values
|
||||
* to `pixel value`.
|
||||
*/
|
||||
Float pointScaleFactor = {1.0};
|
||||
};
|
||||
|
||||
} // namespace react
|
||||
|
|
|
@ -22,6 +22,7 @@ struct LayoutMetrics {
|
|||
EdgeInsets borderWidth {0};
|
||||
DisplayType displayType {DisplayType::Flex};
|
||||
LayoutDirection layoutDirection {LayoutDirection::Undefined};
|
||||
Float pointScaleFactor {1.0};
|
||||
|
||||
Rect getContentFrame() const {
|
||||
return Rect {
|
||||
|
|
|
@ -126,6 +126,7 @@ void YogaLayoutableShadowNode::layoutChildren(LayoutContext layoutContext) {
|
|||
auto nonConstYogaLayoutableChild = std::const_pointer_cast<YogaLayoutableShadowNode>(yogaLayoutableChild);
|
||||
|
||||
LayoutMetrics childLayoutMetrics = layoutMetricsFromYogaNode(nonConstYogaLayoutableChild->yogaNode_);
|
||||
childLayoutMetrics.pointScaleFactor = layoutContext.pointScaleFactor;
|
||||
nonConstYogaLayoutableChild->setLayoutMetrics(childLayoutMetrics);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue