1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5
6#ifndef WebFloatPoint3D_h
7#define WebFloatPoint3D_h
8
9#include "WebCommon.h"
10
11#if INSIDE_BLINK
12#include "platform/geometry/FloatPoint3D.h"
13#else
14#include <ui/gfx/geometry/point3_f.h>
15#endif
16
17namespace blink {
18
19struct WebFloatPoint3D {
20    float x;
21    float y;
22    float z;
23
24    WebFloatPoint3D()
25        : x(0.0f)
26        , y(0.0f)
27        , z(0.0f)
28    {
29    }
30
31    WebFloatPoint3D(float x, float y, float z)
32        : x(x)
33        , y(y)
34        , z(z)
35    {
36    }
37
38#if INSIDE_BLINK
39    WebFloatPoint3D(const FloatPoint3D& p)
40        : x(p.x())
41        , y(p.y())
42        , z(p.z())
43    {
44    }
45
46    WebFloatPoint3D& operator=(const FloatPoint3D& p)
47    {
48        x = p.x();
49        y = p.y();
50        z = p.z();
51        return *this;
52    }
53
54    operator FloatPoint3D() const
55    {
56        return FloatPoint3D(x, y, z);
57    }
58#else
59    WebFloatPoint3D(const gfx::Point3F& p)
60        : x(p.x())
61        , y(p.y())
62        , z(p.z())
63    {
64    }
65
66    WebFloatPoint3D& operator=(const gfx::Point3F& p)
67    {
68        x = p.x();
69        y = p.y();
70        return *this;
71    }
72
73    operator gfx::Point3F() const
74    {
75        return gfx::Point3F(x, y, z);
76    }
77
78#endif
79};
80
81inline bool operator==(const WebFloatPoint3D& a, const WebFloatPoint3D& b)
82{
83    return a.x == b.x && a.y == b.y && a.z == b.z;
84}
85
86inline bool operator!=(const WebFloatPoint3D& a, const WebFloatPoint3D& b)
87{
88    return !(a == b);
89}
90
91} // namespace blink
92
93#endif
94