C# use YogaSize throughout the measure call chain

Summary:
Java still has the same problem (see #296)

Also there is no need to have double in the method signature as we only use float internally, which could confuse some.
Closes https://github.com/facebook/yoga/pull/300

Reviewed By: splhack

Differential Revision: D4365993

Pulled By: emilsjolander

fbshipit-source-id: 681f8b1725e63eddcfb9a6c756f2ae215a44425a
This commit is contained in:
Lukas Woehrl
2016-12-24 02:40:25 -08:00
committed by Facebook Github Bot
parent ab595d1875
commit cd78291de5
4 changed files with 6 additions and 22 deletions

View File

@@ -9,7 +9,7 @@
namespace Facebook.Yoga namespace Facebook.Yoga
{ {
public delegate long MeasureFunction( public delegate YogaSize MeasureFunction(
YogaNode node, YogaNode node,
float width, float width,
YogaMeasureMode widthMode, YogaMeasureMode widthMode,

View File

@@ -11,24 +11,9 @@ namespace Facebook.Yoga
{ {
public class MeasureOutput public class MeasureOutput
{ {
public static long Make(double width, double height) public static YogaSize Make(float width, float height)
{ {
return Make((int) width, (int) height); return new YogaSize { width = width, height = height};
}
public static long Make(int width, int height)
{
return (long)(((ulong) width) << 32 | ((uint) height));
}
public static int GetWidth(long measureOutput)
{
return (int) (0xFFFFFFFF & (measureOutput >> 32));
}
public static int GetHeight(long measureOutput)
{
return (int) (0xFFFFFFFF & measureOutput);
} }
} }
} }

View File

@@ -532,8 +532,7 @@ namespace Facebook.Yoga
throw new InvalidOperationException("Measure function is not defined."); throw new InvalidOperationException("Measure function is not defined.");
} }
long output = _measureFunction(this, width, widthMode, height, heightMode); return _measureFunction(this, width, widthMode, height, heightMode);
return new YogaSize { width = MeasureOutput.GetWidth(output), height = MeasureOutput.GetHeight(output) };
} }
public string Print(YogaPrintOptions options = public string Print(YogaPrintOptions options =

View File

@@ -169,8 +169,8 @@ namespace Facebook.Yoga
return MeasureOutput.Make(123.4f, 81.7f); return MeasureOutput.Make(123.4f, 81.7f);
}); });
node.CalculateLayout(); node.CalculateLayout();
Assert.AreEqual(123, node.LayoutWidth); Assert.AreEqual(123.4f, node.LayoutWidth);
Assert.AreEqual(81, node.LayoutHeight); Assert.AreEqual(81.7f, node.LayoutHeight);
} }
[Test] [Test]