| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef CHROME_BROWSER_ANDROID_VR_SHELL_UI_ELEMENT_H_ | 5 #ifndef CHROME_BROWSER_ANDROID_VR_SHELL_UI_ELEMENT_H_ |
| 6 #define CHROME_BROWSER_ANDROID_VR_SHELL_UI_ELEMENT_H_ | 6 #define CHROME_BROWSER_ANDROID_VR_SHELL_UI_ELEMENT_H_ |
| 7 | 7 |
| 8 #include <memory> | 8 #include <memory> |
| 9 #include <string> | 9 #include <string> |
| 10 #include <vector> | 10 #include <vector> |
| 11 | 11 |
| 12 #include "base/macros.h" | 12 #include "base/macros.h" |
| 13 #include "device/vr/vr_types.h" | 13 #include "device/vr/vr_types.h" |
| 14 | 14 |
| 15 namespace base { | 15 namespace base { |
| 16 class TimeTicks; | 16 class TimeTicks; |
| 17 } | 17 } |
| 18 | 18 |
| 19 namespace vr_shell { | 19 namespace vr_shell { |
| 20 | 20 |
| 21 class Animation; | 21 class Animation; |
| 22 class VrShellRenderer; |
| 22 | 23 |
| 23 enum XAnchoring { | 24 enum XAnchoring { |
| 24 XNONE = 0, | 25 XNONE = 0, |
| 25 XLEFT, | 26 XLEFT, |
| 26 XRIGHT, | 27 XRIGHT, |
| 27 }; | 28 }; |
| 28 | 29 |
| 29 enum YAnchoring { | 30 enum YAnchoring { |
| 30 YNONE = 0, | 31 YNONE = 0, |
| 31 YTOP, | 32 YTOP, |
| 32 YBOTTOM, | 33 YBOTTOM, |
| 33 }; | 34 }; |
| 34 | 35 |
| 35 enum Fill { | 36 enum Fill { |
| 36 NONE = 0, | 37 NONE = 0, |
| 37 SKIA = 1, | 38 // The element is filled with the content web site. Only one content element |
| 39 // may be added to the |
| 40 // scene. |
| 41 CONTENT = 1, |
| 38 // The element is filled with a radial gradient as specified by the edge and | 42 // The element is filled with a radial gradient as specified by the edge and |
| 39 // center color. | 43 // center color. |
| 40 OPAQUE_GRADIENT = 2, | 44 OPAQUE_GRADIENT = 2, |
| 41 // Same as OPAQUE_GRADIENT but the element is drawn as a grid. | 45 // Same as OPAQUE_GRADIENT but the element is drawn as a grid. |
| 42 GRID_GRADIENT = 3, | 46 GRID_GRADIENT = 3, |
| 43 // The element is filled with the content web site. Only one content element | |
| 44 // may be added to the | |
| 45 // scene. | |
| 46 CONTENT = 4, | |
| 47 }; | 47 }; |
| 48 | 48 |
| 49 struct Transform { | 49 struct Transform { |
| 50 Transform(); | 50 Transform(); |
| 51 | 51 |
| 52 void MakeIdentity(); | 52 void MakeIdentity(); |
| 53 void Rotate(const vr::Quatf& quat); | 53 void Rotate(const vr::Quatf& quat); |
| 54 void Rotate(const vr::RotationAxisAngle& axis_angle); | 54 void Rotate(const vr::RotationAxisAngle& axis_angle); |
| 55 void Translate(const gfx::Vector3dF& translation); | 55 void Translate(const gfx::Vector3dF& translation); |
| 56 void Scale(const gfx::Vector3dF& scale); | 56 void Scale(const gfx::Vector3dF& scale); |
| (...skipping 22 matching lines...) Expand all Loading... |
| 79 // pixel coordinates. Points that fall onto the rectangle will generate X and | 79 // pixel coordinates. Points that fall onto the rectangle will generate X and |
| 80 // Y values on the interval [-0.5, 0.5]. | 80 // Y values on the interval [-0.5, 0.5]. |
| 81 gfx::PointF GetUnitRectangleCoordinates(const gfx::Point3F& world_point); | 81 gfx::PointF GetUnitRectangleCoordinates(const gfx::Point3F& world_point); |
| 82 | 82 |
| 83 private: | 83 private: |
| 84 Transform transform_; | 84 Transform transform_; |
| 85 }; | 85 }; |
| 86 | 86 |
| 87 struct UiElement : public WorldRectangle { | 87 struct UiElement : public WorldRectangle { |
| 88 UiElement(); | 88 UiElement(); |
| 89 ~UiElement(); | 89 virtual ~UiElement(); |
| 90 | 90 |
| 91 void Animate(const base::TimeTicks& time); | 91 void Animate(const base::TimeTicks& time); |
| 92 | 92 |
| 93 // Indicates whether the element should be visually rendered. | 93 // Indicates whether the element should be visually rendered. |
| 94 bool IsVisible() const; | 94 bool IsVisible() const; |
| 95 | 95 |
| 96 // Indicates whether the element should be tested for cursor input. | 96 // Indicates whether the element should be tested for cursor input. |
| 97 bool IsHitTestable() const; | 97 bool IsHitTestable() const; |
| 98 | 98 |
| 99 virtual bool Render(VrShellRenderer* renderer) const; |
| 100 |
| 99 // Valid IDs are non-negative. | 101 // Valid IDs are non-negative. |
| 100 int id = -1; | 102 int id = -1; |
| 101 | 103 |
| 102 // Name string for debugging and testing purposes. | 104 // Name string for debugging and testing purposes. |
| 103 std::string name; | 105 std::string name; |
| 104 | 106 |
| 105 // If a non-negative parent ID is specified, applicable transformations | 107 // If a non-negative parent ID is specified, applicable transformations |
| 106 // are applied relative to the parent, rather than absolutely. | 108 // are applied relative to the parent, rather than absolutely. |
| 107 int parent_id = -1; | 109 int parent_id = -1; |
| 108 | 110 |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 162 // A flag usable during transformation calculates to avoid duplicate work. | 164 // A flag usable during transformation calculates to avoid duplicate work. |
| 163 bool dirty; | 165 bool dirty; |
| 164 | 166 |
| 165 private: | 167 private: |
| 166 DISALLOW_COPY_AND_ASSIGN(UiElement); | 168 DISALLOW_COPY_AND_ASSIGN(UiElement); |
| 167 }; | 169 }; |
| 168 | 170 |
| 169 } // namespace vr_shell | 171 } // namespace vr_shell |
| 170 | 172 |
| 171 #endif // CHROME_BROWSER_ANDROID_VR_SHELL_UI_ELEMENT_H_ | 173 #endif // CHROME_BROWSER_ANDROID_VR_SHELL_UI_ELEMENT_H_ |
| OLD | NEW |