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