From 0dbbfc5910febe2c8d7b9306cb2b8a29bbfc4397 Mon Sep 17 00:00:00 2001 From: Kazuki Sakamoto Date: Thu, 10 Nov 2016 19:13:19 -0800 Subject: [PATCH] Add convenient cast method for MeasureOutput.Make Summary: Same as Java, it allows to use float and double values in Make arguments. Reviewed By: emilsjolander Differential Revision: D4163347 fbshipit-source-id: f373247b3f37e7940a66044000cca2935068decf --- csharp/Facebook.CSSLayout/MeasureFunction.cs | 12 ++++++------ csharp/Facebook.CSSLayout/MeasureOutput.cs | 11 ++++++++--- csharp/tests/Facebook.CSSLayout/CSSNodeTest.cs | 16 ++++++++++++++-- 3 files changed, 28 insertions(+), 11 deletions(-) diff --git a/csharp/Facebook.CSSLayout/MeasureFunction.cs b/csharp/Facebook.CSSLayout/MeasureFunction.cs index b727dfc5..51614e17 100644 --- a/csharp/Facebook.CSSLayout/MeasureFunction.cs +++ b/csharp/Facebook.CSSLayout/MeasureFunction.cs @@ -9,10 +9,10 @@ namespace Facebook.CSSLayout { - public delegate long MeasureFunction( - CSSNode node, - float width, - CSSMeasureMode widthMode, - float height, - CSSMeasureMode heightMode); + public delegate long MeasureFunction( + CSSNode node, + float width, + CSSMeasureMode widthMode, + float height, + CSSMeasureMode heightMode); } diff --git a/csharp/Facebook.CSSLayout/MeasureOutput.cs b/csharp/Facebook.CSSLayout/MeasureOutput.cs index 5fabf348..5ae6b9b0 100644 --- a/csharp/Facebook.CSSLayout/MeasureOutput.cs +++ b/csharp/Facebook.CSSLayout/MeasureOutput.cs @@ -11,19 +11,24 @@ namespace Facebook.CSSLayout { public class MeasureOutput { + public static long Make(double width, double height) + { + return Make((int) width, (int) height); + } + public static long Make(int width, int height) { - return (long)(((ulong) width) << 32 | ((ulong) height)); + return (long)(((ulong) width) << 32 | ((ulong) height)); } public static int GetWidth(long measureOutput) { - return (int) (0xFFFFFFFF & (measureOutput >> 32)); + return (int) (0xFFFFFFFF & (measureOutput >> 32)); } public static int GetHeight(long measureOutput) { - return (int) (0xFFFFFFFF & measureOutput); + return (int) (0xFFFFFFFF & measureOutput); } } } diff --git a/csharp/tests/Facebook.CSSLayout/CSSNodeTest.cs b/csharp/tests/Facebook.CSSLayout/CSSNodeTest.cs index badf4639..5677da91 100644 --- a/csharp/tests/Facebook.CSSLayout/CSSNodeTest.cs +++ b/csharp/tests/Facebook.CSSLayout/CSSNodeTest.cs @@ -157,8 +157,20 @@ namespace Facebook.CSSLayout return MeasureOutput.Make(100, 150); }); node.CalculateLayout(); - Assert.AreEqual(100, (int)node.LayoutWidth); - Assert.AreEqual(150, (int)node.LayoutHeight); + Assert.AreEqual(100, node.LayoutWidth); + Assert.AreEqual(150, node.LayoutHeight); + } + + [Test] + public void TestMeasureFuncWithFloat() + { + CSSNode node = new CSSNode(); + node.SetMeasureFunction((_, width, widthMode, height, heightMode) => { + return MeasureOutput.Make(123.4f, 81.7f); + }); + node.CalculateLayout(); + Assert.AreEqual(123, node.LayoutWidth); + Assert.AreEqual(81, node.LayoutHeight); } [Test]