Commit 61067e7c authored by Max Rebuschatis's avatar Max Rebuschatis Committed by Commit Bot

Use mojo classes from ui/gfx/geometry in XRRay mojo type

Bug: 845293
Change-Id: Ic41d3ac4a1925d6e6c175d00b8ded71f85a6fedc
Reviewed-on: https://chromium-review.googlesource.com/1089646
Commit-Queue: Max Rebuschatis <lincolnfrog@chromium.org>
Reviewed-by: default avatarDaniel Cheng <dcheng@chromium.org>
Reviewed-by: default avatarBill Orr <billorr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#583008}
parent 12f2dc6e
......@@ -305,9 +305,8 @@ bool ARCoreImpl::TransformRayToScreenSpace(const mojom::XRRayPtr& ray,
gfx::Transform proj_view_transform = projection_transform * view_transform;
// Transform the ray into screen space.
gfx::Point3F screen_point_3d{ray->origin[0] + ray->direction[0],
ray->origin[1] + ray->direction[1],
ray->origin[2] + ray->direction[2]};
gfx::Point3F screen_point_3d = ray->origin + ray->direction;
proj_view_transform.TransformPoint(&screen_point_3d);
if (screen_point_3d.x() < -1 || screen_point_3d.x() > 1 ||
screen_point_3d.y() < -1 || screen_point_3d.y() > 1) {
......
......@@ -137,10 +137,8 @@ struct VRPose {
};
struct XRRay {
// TODO(https://crbug.com/845293): use Point3F and Vector3F from
// ui/gfx/geometry and inline directly in requestHitTest().
array<float, 3> origin;
array<float, 3> direction;
gfx.mojom.Point3F origin;
gfx.mojom.Vector3dF direction;
};
struct XRHitResult {
......
......@@ -296,16 +296,17 @@ ScriptPromise XRSession::requestHitTest(ScriptState* script_state,
// TODO(https://crbug.com/843376): Reject the promise if device doesn't
// support the hit-test API.
device::mojom::blink::XRRayPtr ray = device::mojom::blink::XRRay::New();
ray->origin.resize(3);
ray->origin[0] = origin.View()->Data()[0];
ray->origin[1] = origin.View()->Data()[1];
ray->origin[2] = origin.View()->Data()[2];
ray->direction.resize(3);
ray->direction[0] = direction.View()->Data()[0];
ray->direction[1] = direction.View()->Data()[1];
ray->direction[2] = direction.View()->Data()[2];
ray->origin = gfx::mojom::blink::Point3F::New();
ray->origin->x = origin.View()->Data()[0];
ray->origin->y = origin.View()->Data()[1];
ray->origin->z = origin.View()->Data()[2];
ray->direction = gfx::mojom::blink::Vector3dF::New();
ray->direction->x = direction.View()->Data()[0];
ray->direction->y = direction.View()->Data()[1];
ray->direction->z = direction.View()->Data()[2];
ScriptPromiseResolver* resolver = ScriptPromiseResolver::Create(script_state);
ScriptPromise promise = resolver->Promise();
......
......@@ -21,6 +21,12 @@ struct PointF {
float y;
};
struct Point3F {
float x;
float y;
float z;
};
struct Size {
int32 width;
int32 height;
......@@ -69,6 +75,12 @@ struct Vector2dF {
float y;
};
struct Vector3dF {
float x;
float y;
float z;
};
struct ScrollOffset {
float x;
float y;
......
......@@ -6,6 +6,7 @@ mojom = "//ui/gfx/geometry/mojo/geometry.mojom"
public_headers = [
"//ui/gfx/geometry/point.h",
"//ui/gfx/geometry/point_f.h",
"//ui/gfx/geometry/point3_f.h",
"//ui/gfx/geometry/size.h",
"//ui/gfx/geometry/rect.h",
"//ui/gfx/geometry/rect_f.h",
......@@ -14,6 +15,7 @@ public_headers = [
"//ui/gfx/geometry/insets.h",
"//ui/gfx/geometry/vector2d.h",
"//ui/gfx/geometry/vector2d_f.h",
"//ui/gfx/geometry/vector3d_f.h",
]
traits_headers = [ "//ui/gfx/geometry/mojo/geometry_struct_traits.h" ]
deps = [
......@@ -22,6 +24,7 @@ deps = [
type_mappings = [
"gfx.mojom.Point=gfx::Point",
"gfx.mojom.PointF=gfx::PointF",
"gfx.mojom.Point3F=gfx::Point3F",
"gfx.mojom.Size=gfx::Size",
"gfx.mojom.SizeF=gfx::SizeF",
"gfx.mojom.Rect=gfx::Rect",
......@@ -30,5 +33,6 @@ type_mappings = [
"gfx.mojom.InsetsF=gfx::InsetsF",
"gfx.mojom.Vector2d=gfx::Vector2d",
"gfx.mojom.Vector2dF=gfx::Vector2dF",
"gfx.mojom.Vector3dF=gfx::Vector3dF",
"gfx.mojom.ScrollOffset=gfx::ScrollOffset",
]
......@@ -9,6 +9,7 @@
#include "ui/gfx/geometry/insets_f.h"
#include "ui/gfx/geometry/mojo/geometry.mojom-shared.h"
#include "ui/gfx/geometry/point.h"
#include "ui/gfx/geometry/point3_f.h"
#include "ui/gfx/geometry/point_f.h"
#include "ui/gfx/geometry/rect.h"
#include "ui/gfx/geometry/rect_f.h"
......@@ -17,6 +18,7 @@
#include "ui/gfx/geometry/size_f.h"
#include "ui/gfx/geometry/vector2d.h"
#include "ui/gfx/geometry/vector2d_f.h"
#include "ui/gfx/geometry/vector3d_f.h"
namespace mojo {
......@@ -64,6 +66,17 @@ struct StructTraits<gfx::mojom::PointFDataView, gfx::PointF> {
}
};
template <>
struct StructTraits<gfx::mojom::Point3FDataView, gfx::Point3F> {
static float x(const gfx::Point3F& p) { return p.x(); }
static float y(const gfx::Point3F& p) { return p.y(); }
static float z(const gfx::Point3F& p) { return p.z(); }
static bool Read(gfx::mojom::Point3FDataView data, gfx::Point3F* out) {
out->SetPoint(data.x(), data.y(), data.z());
return true;
}
};
template <>
struct StructTraits<gfx::mojom::RectDataView, gfx::Rect> {
static int x(const gfx::Rect& p) { return p.x(); }
......@@ -142,6 +155,19 @@ struct StructTraits<gfx::mojom::Vector2dFDataView, gfx::Vector2dF> {
}
};
template <>
struct StructTraits<gfx::mojom::Vector3dFDataView, gfx::Vector3dF> {
static float x(const gfx::Vector3dF& v) { return v.x(); }
static float y(const gfx::Vector3dF& v) { return v.y(); }
static float z(const gfx::Vector3dF& v) { return v.z(); }
static bool Read(gfx::mojom::Vector3dFDataView data, gfx::Vector3dF* out) {
out->set_x(data.x());
out->set_y(data.y());
out->set_y(data.z());
return true;
}
};
template <>
struct StructTraits<gfx::mojom::ScrollOffsetDataView, gfx::ScrollOffset> {
static float x(const gfx::ScrollOffset& v) { return v.x(); }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment