| 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 #include "chrome/browser/android/vr_shell/ui_elements.h" | 5 #include "chrome/browser/android/vr_shell/ui_elements.h" |
| 6 | 6 |
| 7 #include <limits> | 7 #include <limits> |
| 8 | 8 |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/time/time.h" |
| 10 #include "chrome/browser/android/vr_shell/animation.h" | 11 #include "chrome/browser/android/vr_shell/animation.h" |
| 11 #include "chrome/browser/android/vr_shell/easing.h" | 12 #include "chrome/browser/android/vr_shell/easing.h" |
| 12 | 13 |
| 13 namespace vr_shell { | 14 namespace vr_shell { |
| 14 | 15 |
| 15 namespace { | 16 namespace { |
| 16 | 17 |
| 17 bool GetRayPlaneDistance(const gvr::Vec3f& ray_origin, | 18 bool GetRayPlaneDistance(const gvr::Vec3f& ray_origin, |
| 18 const gvr::Vec3f& ray_vector, | 19 const gvr::Vec3f& ray_vector, |
| 19 const gvr::Vec3f& plane_origin, | 20 const gvr::Vec3f& plane_origin, |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 93 const gvr::Vec3f& ray_vector, | 94 const gvr::Vec3f& ray_vector, |
| 94 float* distance) const { | 95 float* distance) const { |
| 95 return GetRayPlaneDistance(ray_origin, ray_vector, GetCenter(), GetNormal(), | 96 return GetRayPlaneDistance(ray_origin, ray_vector, GetCenter(), GetNormal(), |
| 96 distance); | 97 distance); |
| 97 } | 98 } |
| 98 | 99 |
| 99 ContentRectangle::ContentRectangle() = default; | 100 ContentRectangle::ContentRectangle() = default; |
| 100 | 101 |
| 101 ContentRectangle::~ContentRectangle() = default; | 102 ContentRectangle::~ContentRectangle() = default; |
| 102 | 103 |
| 103 void ContentRectangle::Animate(int64_t time) { | 104 void ContentRectangle::Animate(const base::TimeTicks& time) { |
| 104 for (auto& it : animations) { | 105 for (auto& it : animations) { |
| 105 Animation& animation = *it; | 106 Animation& animation = *it; |
| 106 if (time < animation.start) | 107 if (time < animation.start) |
| 107 continue; | 108 continue; |
| 108 | 109 |
| 109 // If |from| is not specified, start at the current values. | 110 // If |from| is not specified, start at the current values. |
| 110 if (animation.from.size() == 0) { | 111 if (animation.from.size() == 0) { |
| 111 switch (animation.property) { | 112 switch (animation.property) { |
| 112 case Animation::COPYRECT: | 113 case Animation::COPYRECT: |
| 113 animation.from.push_back(copy_rect.x); | 114 animation.from.push_back(copy_rect.x); |
| (...skipping 29 matching lines...) Expand all Loading... |
| 143 CHECK_EQ(animation.from.size(), animation.to.size()); | 144 CHECK_EQ(animation.from.size(), animation.to.size()); |
| 144 | 145 |
| 145 std::vector<float> values(animation.from.size()); | 146 std::vector<float> values(animation.from.size()); |
| 146 for (std::size_t i = 0; i < animation.from.size(); ++i) { | 147 for (std::size_t i = 0; i < animation.from.size(); ++i) { |
| 147 if (animation.to[i] == animation.from[i] || | 148 if (animation.to[i] == animation.from[i] || |
| 148 time >= (animation.start + animation.duration)) { | 149 time >= (animation.start + animation.duration)) { |
| 149 values[i] = animation.to[i]; | 150 values[i] = animation.to[i]; |
| 150 continue; | 151 continue; |
| 151 } | 152 } |
| 152 double value = animation.easing->CalculateValue( | 153 double value = animation.easing->CalculateValue( |
| 153 static_cast<double>(time - animation.start) / animation.duration); | 154 (time - animation.start).InMillisecondsF() / |
| 155 animation.duration.InMillisecondsF()); |
| 154 values[i] = | 156 values[i] = |
| 155 animation.from[i] + (value * (animation.to[i] - animation.from[i])); | 157 animation.from[i] + (value * (animation.to[i] - animation.from[i])); |
| 156 } | 158 } |
| 157 switch (animation.property) { | 159 switch (animation.property) { |
| 158 case Animation::COPYRECT: | 160 case Animation::COPYRECT: |
| 159 CHECK_EQ(animation.from.size(), 4u); | 161 CHECK_EQ(animation.from.size(), 4u); |
| 160 copy_rect.x = values[0]; | 162 copy_rect.x = values[0]; |
| 161 copy_rect.y = values[1]; | 163 copy_rect.y = values[1]; |
| 162 copy_rect.width = values[2]; | 164 copy_rect.width = values[2]; |
| 163 copy_rect.height = values[3]; | 165 copy_rect.height = values[3]; |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 204 | 206 |
| 205 bool ContentRectangle::IsVisible() const { | 207 bool ContentRectangle::IsVisible() const { |
| 206 return visible && computed_opacity > 0.0f; | 208 return visible && computed_opacity > 0.0f; |
| 207 } | 209 } |
| 208 | 210 |
| 209 bool ContentRectangle::IsHitTestable() const { | 211 bool ContentRectangle::IsHitTestable() const { |
| 210 return IsVisible() && hit_testable; | 212 return IsVisible() && hit_testable; |
| 211 } | 213 } |
| 212 | 214 |
| 213 } // namespace vr_shell | 215 } // namespace vr_shell |
| OLD | NEW |