Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(221)

Unified Diff: chrome/browser/android/vr_shell/ui_elements/ui_element.h

Issue 2856023003: Make UiElement a class (Closed)
Patch Set: rebase Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/android/vr_shell/ui_elements/ui_element.h
diff --git a/chrome/browser/android/vr_shell/ui_elements/ui_element.h b/chrome/browser/android/vr_shell/ui_elements/ui_element.h
index e46ebf276bd43e241b93d1d1ecfb2610007d0bab..da5d829c4cab8cf7bf62d7f299cf9c309f05d8e4 100644
--- a/chrome/browser/android/vr_shell/ui_elements/ui_element.h
+++ b/chrome/browser/android/vr_shell/ui_elements/ui_element.h
@@ -48,8 +48,10 @@ enum Fill {
SELF = 4,
};
+// TODO(vollick): use gfx::Transform crbug.com/718004
struct Transform {
Transform();
+ explicit Transform(const Transform& other);
void MakeIdentity();
void Rotate(const vr::Quatf& quat);
@@ -86,8 +88,8 @@ class WorldRectangle {
Transform transform_;
};
-// TODO(mthiesse): Make this a class - we derive classes from this struct.
-struct UiElement : public WorldRectangle {
+class UiElement : public WorldRectangle {
+ public:
UiElement();
virtual ~UiElement();
@@ -110,70 +112,179 @@ struct UiElement : public WorldRectangle {
virtual void OnButtonDown();
virtual void OnButtonUp();
- // Valid IDs are non-negative.
- int id = -1;
+ int id() const { return id_; }
+ void set_id(int id) { id_ = id; }
// If a non-negative parent ID is specified, applicable transformations
// are applied relative to the parent, rather than absolutely.
- int parent_id = -1;
+ int parent_id() const { return parent_id_; }
+ void set_parent_id(int id) { parent_id_ = id; }
// If true, this object will be visible.
- bool visible = true;
+ bool visible() const { return visible_; }
+ void set_visible(bool visible) { visible_ = visible; }
// If false, the reticle will not hit the element, even if visible.
- bool hit_testable = true;
+ bool hit_testable() const { return hit_testable_; }
+ void set_hit_testable(bool hit_testable) { hit_testable_ = hit_testable; }
// If true, transformations will be applied relative to the field of view,
// rather than the world.
- bool lock_to_fov = false;
+ bool lock_to_fov() const { return lock_to_fov_; }
+ void set_lock_to_fov(bool lock) { lock_to_fov_ = lock; }
+
+ // The computed lock to the FoV, incorporating lock of parent objects.
+ bool computed_lock_to_fov() const { return computed_lock_to_fov_; }
+ void set_computed_lock_to_fov(bool computed_lock) {
+ computed_lock_to_fov_ = computed_lock;
+ }
// The size of the object. This does not affect children.
- gfx::Vector3dF size = {1.0f, 1.0f, 1.0f};
+ gfx::Vector3dF size() const { return size_; }
+ void set_size(const gfx::Vector3dF& size) { size_ = size; }
// The scale of the object, and its children.
- gfx::Vector3dF scale = {1.0f, 1.0f, 1.0f};
+ gfx::Vector3dF scale() const { return scale_; }
+ void set_scale(const gfx::Vector3dF& scale) { scale_ = scale; }
// The rotation of the object, and its children.
- vr::RotationAxisAngle rotation = {1.0f, 0.0f, 0.0f, 0.0f};
+ vr::RotationAxisAngle rotation() const { return rotation_; }
+ void set_rotation(const vr::RotationAxisAngle& rotation) {
+ rotation_ = rotation;
+ }
// The translation of the object, and its children. Translation is applied
// after rotation and scaling.
- gfx::Vector3dF translation = {0.0f, 0.0f, 0.0f};
+ gfx::Vector3dF translation() const { return translation_; }
+ void set_translation(const gfx::Vector3dF& translation) {
+ translation_ = translation;
+ }
// The opacity of the object (between 0.0 and 1.0).
- float opacity = 1.0f;
+ float opacity() const { return opacity_; }
+ void set_opacity(float opacity) { opacity_ = opacity; }
// The computed opacity, incorporating opacity of parent objects.
- float computed_opacity;
+ float computed_opacity() const { return computed_opacity_; }
+ void set_computed_opacity(float computed_opacity) {
+ computed_opacity_ = computed_opacity;
+ }
+
+ // If anchoring is specified, the translation will be relative to the
+ // specified edge(s) of the parent, rather than the center. A parent object
+ // must be specified when using anchoring.
+ XAnchoring x_anchoring() const { return x_anchoring_; }
+ void set_x_anchoring(XAnchoring x_anchoring) { x_anchoring_ = x_anchoring; }
+
+ YAnchoring y_anchoring() const { return y_anchoring_; }
+ void set_y_anchoring(YAnchoring y_anchoring) { y_anchoring_ = y_anchoring; }
+
+ // Animations that affect the properties of the object over time.
+ std::vector<std::unique_ptr<Animation>>& animations() { return animations_; }
+ const std::vector<std::unique_ptr<Animation>>& animations() const {
+ return animations_;
+ }
+
+ Fill fill() const { return fill_; }
+ void set_fill(Fill fill) { fill_ = fill; }
+
+ vr::Colorf edge_color() const { return edge_color_; }
+ void set_edge_color(const vr::Colorf& edge_color) {
+ edge_color_ = edge_color;
+ }
+
+ vr::Colorf center_color() const { return center_color_; }
+ void set_center_color(const vr::Colorf& center_color) {
+ center_color_ = center_color;
+ }
+
+ int gridline_count() const { return gridline_count_; }
+ void set_gridline_count(int gridline_count) {
+ gridline_count_ = gridline_count;
+ }
+
+ int draw_phase() const { return draw_phase_; }
+ void set_draw_phase(int draw_phase) { draw_phase_ = draw_phase; }
+
+ // This transform can be used by children to derive position of its parent.
+ Transform& inheritable_transform() { return inheritable_transform_; }
+ const Transform& inheritable_transform() const {
+ return inheritable_transform_;
+ }
+ void set_inheritable_transform(const Transform& transform) {
+ inheritable_transform_ = transform;
+ }
+
+ // A flag usable during transformation calculates to avoid duplicate work.
+ bool dirty() const { return dirty_; }
+ void set_dirty(bool dirty) { dirty_ = dirty; }
+
+ private:
+ // Valid IDs are non-negative.
+ int id_ = -1;
+
+ // If a non-negative parent ID is specified, applicable transformations
+ // are applied relative to the parent, rather than absolutely.
+ int parent_id_ = -1;
+
+ // If true, this object will be visible.
+ bool visible_ = true;
+
+ // If false, the reticle will not hit the element, even if visible.
+ bool hit_testable_ = true;
+
+ // If true, transformations will be applied relative to the field of view,
+ // rather than the world.
+ bool lock_to_fov_ = false;
// The computed lock to the FoV, incorporating lock of parent objects.
- bool computed_lock_to_fov;
+ bool computed_lock_to_fov_;
+
+ // The size of the object. This does not affect children.
+ gfx::Vector3dF size_ = {1.0f, 1.0f, 1.0f};
+
+ // The scale of the object, and its children.
+ gfx::Vector3dF scale_ = {1.0f, 1.0f, 1.0f};
+
+ // The rotation of the object, and its children.
+ vr::RotationAxisAngle rotation_ = {1.0f, 0.0f, 0.0f, 0.0f};
+
+ // The translation of the object, and its children. Translation is applied
+ // after rotation and scaling.
+ gfx::Vector3dF translation_ = {0.0f, 0.0f, 0.0f};
+
+ // The opacity of the object (between 0.0 and 1.0).
+ float opacity_ = 1.0f;
+
+ // The computed opacity, incorporating opacity of parent objects.
+ float computed_opacity_;
// If anchoring is specified, the translation will be relative to the
// specified edge(s) of the parent, rather than the center. A parent object
// must be specified when using anchoring.
- XAnchoring x_anchoring = XAnchoring::XNONE;
- YAnchoring y_anchoring = YAnchoring::YNONE;
+ XAnchoring x_anchoring_ = XAnchoring::XNONE;
+ YAnchoring y_anchoring_ = YAnchoring::YNONE;
// Animations that affect the properties of the object over time.
- std::vector<std::unique_ptr<Animation>> animations;
+ std::vector<std::unique_ptr<Animation>> animations_;
- Fill fill = Fill::NONE;
+ Fill fill_ = Fill::NONE;
- vr::Colorf edge_color = {1.0f, 1.0f, 1.0f, 1.0f};
- vr::Colorf center_color = {1.0f, 1.0f, 1.0f, 1.0f};
+ vr::Colorf edge_color_ = {1.0f, 1.0f, 1.0f, 1.0f};
+ vr::Colorf center_color_ = {1.0f, 1.0f, 1.0f, 1.0f};
- int gridline_count = 1;
+ int gridline_count_ = 1;
- int draw_phase = 1;
+ int draw_phase_ = 1;
// This transform can be used by children to derive position of its parent.
- Transform inheritable_transform;
+ Transform inheritable_transform_;
// A flag usable during transformation calculates to avoid duplicate work.
- bool dirty;
+ bool dirty_;
+
+ Transform transform_;
- private:
DISALLOW_COPY_AND_ASSIGN(UiElement);
};

Powered by Google App Engine
This is Rietveld 408576698