summaryrefslogtreecommitdiffstats
path: root/content/browser/android/edge_effect.h
diff options
context:
space:
mode:
authorjdduke@chromium.org <jdduke@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-08-15 23:38:24 +0000
committerjdduke@chromium.org <jdduke@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-08-15 23:38:24 +0000
commit611f300744675e72623d2814e6df70f051e4f185 (patch)
tree018ab2fad4698371d81381146def0a25f6a7fb05 /content/browser/android/edge_effect.h
parentd781d7cec694108e53c3ce069f5c500e6cb6326c (diff)
downloadchromium_src-611f300744675e72623d2814e6df70f051e4f185.zip
chromium_src-611f300744675e72623d2814e6df70f051e4f185.tar.gz
chromium_src-611f300744675e72623d2814e6df70f051e4f185.tar.bz2
[Android] Implementation of overscroll effect for Android L
Add an overscroll effect implementation that mimics that of Android L. The primary differences are the use of a single rasterized arc layer and the inclusion of motion orthogonal to overscroll in computing the effect offset. BUG=389744 Review URL: https://codereview.chromium.org/367173003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@290052 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/browser/android/edge_effect.h')
-rw-r--r--content/browser/android/edge_effect.h66
1 files changed, 24 insertions, 42 deletions
diff --git a/content/browser/android/edge_effect.h b/content/browser/android/edge_effect.h
index a8f944c..ced6a32 100644
--- a/content/browser/android/edge_effect.h
+++ b/content/browser/android/edge_effect.h
@@ -5,10 +5,8 @@
#ifndef CONTENT_BROWSER_ANDROID_EDGE_EFFECT_H_
#define CONTENT_BROWSER_ANDROID_EDGE_EFFECT_H_
-#include "base/basictypes.h"
#include "base/memory/scoped_ptr.h"
-#include "base/time/time.h"
-#include "ui/gfx/size_f.h"
+#include "content/browser/android/edge_effect_base.h"
namespace cc {
class Layer;
@@ -20,57 +18,41 @@ class SystemUIResourceManager;
namespace content {
-/* |EdgeEffect| mirrors its Android counterpart, EdgeEffect.java.
- * The primary difference is ownership; the Android version manages render
- * resources directly, while this version simply applies the effect to
- * existing resources. Conscious tradeoffs were made to align this as closely
- * as possible with the original Android java version.
- * All coordinates and dimensions are in device pixels.
- */
-class EdgeEffect {
+// |EdgeEffect| mirrors its Android counterpart, EdgeEffect.java.
+// Conscious tradeoffs were made to align this as closely as possible with the
+// the original Android java version.
+// All coordinates and dimensions are in device pixels.
+class EdgeEffect : public EdgeEffectBase {
public:
- enum Edge {
- EDGE_TOP = 0,
- EDGE_LEFT,
- EDGE_BOTTOM,
- EDGE_RIGHT,
- EDGE_COUNT
- };
+ explicit EdgeEffect(ui::SystemUIResourceManager* resource_manager,
+ float device_scale_factor);
+ virtual ~EdgeEffect();
- explicit EdgeEffect(ui::SystemUIResourceManager* resource_manager);
- ~EdgeEffect();
+ virtual void Pull(base::TimeTicks current_time,
+ float delta_distance,
+ float displacement) OVERRIDE;
+ virtual void Absorb(base::TimeTicks current_time, float velocity) OVERRIDE;
+ virtual bool Update(base::TimeTicks current_time) OVERRIDE;
+ virtual void Release(base::TimeTicks current_time) OVERRIDE;
- void Pull(base::TimeTicks current_time, float delta_distance);
- void Absorb(base::TimeTicks current_time, float velocity);
- bool Update(base::TimeTicks current_time);
- void Release(base::TimeTicks current_time);
+ virtual void Finish() OVERRIDE;
+ virtual bool IsFinished() const OVERRIDE;
- void Finish();
- bool IsFinished() const;
-
- void ApplyToLayers(gfx::SizeF window_size,
- Edge edge,
- float edge_height,
- float glow_height,
- float offset);
-
- void SetParent(cc::Layer* parent);
+ virtual void ApplyToLayers(const gfx::SizeF& size,
+ const gfx::Transform& transform) OVERRIDE;
+ virtual void SetParent(cc::Layer* parent) OVERRIDE;
+ // Thread-safe trigger to load resources.
static void PreloadResources(ui::SystemUIResourceManager* resource_manager);
private:
- enum State {
- STATE_IDLE = 0,
- STATE_PULL,
- STATE_ABSORB,
- STATE_RECEDE,
- STATE_PULL_DECAY
- };
-
class EffectLayer;
scoped_ptr<EffectLayer> edge_;
scoped_ptr<EffectLayer> glow_;
+ float base_edge_height_;
+ float base_glow_height_;
+
float edge_alpha_;
float edge_scale_y_;
float glow_alpha_;