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

Unified Diff: remoting/android/java/src/org/chromium/chromoting/InputFeedbackRadiusMapper.java

Issue 2297073002: [Remoting Android] Move feedback type to radius logic out of DesktopView (Closed)
Patch Set: Merge ToT Created 4 years, 4 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
« no previous file with comments | « remoting/android/java/src/org/chromium/chromoting/GlDesktopView.java ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: remoting/android/java/src/org/chromium/chromoting/InputFeedbackRadiusMapper.java
diff --git a/remoting/android/java/src/org/chromium/chromoting/InputFeedbackRadiusMapper.java b/remoting/android/java/src/org/chromium/chromoting/InputFeedbackRadiusMapper.java
new file mode 100644
index 0000000000000000000000000000000000000000..b4908a89aea8c965c741fa1679de6abddcdd4645
--- /dev/null
+++ b/remoting/android/java/src/org/chromium/chromoting/InputFeedbackRadiusMapper.java
@@ -0,0 +1,54 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.chromoting;
+
+import android.view.View;
+
+/**
+ * Helper class for mapping a feedback type to the max radius of the feedback animation circle.
+ */
+public final class InputFeedbackRadiusMapper {
+ private final int mTinyFeedbackPixelRadius;
+ private final int mSmallFeedbackPixelRadius;
+ private final int mLargeFeedbackPixelRadius;
+
+ public InputFeedbackRadiusMapper(View view) {
+ mTinyFeedbackPixelRadius = view.getResources()
+ .getDimensionPixelSize(R.dimen.feedback_animation_radius_tiny);
+
+ mSmallFeedbackPixelRadius = view.getResources()
+ .getDimensionPixelSize(R.dimen.feedback_animation_radius_small);
+
+ mLargeFeedbackPixelRadius = view.getResources()
+ .getDimensionPixelSize(R.dimen.feedback_animation_radius_large);
+ }
+
+ /**
+ * @param feedbackToShow the feedback type to be mapped to the radius of the feedback circle.
+ * @param scaleFactor Current scale factor of the desktop canvas.
+ * @return the radius of the given feedback type. It may be 0, in which case nothing needs to
+ * be shown.
+ */
+ public float getFeedbackRadius(DesktopView.InputFeedbackType feedbackToShow,
+ float scaleFactor) {
+ switch (feedbackToShow) {
+ case NONE:
+ return 0.0f;
+ case SHORT_TOUCH_ANIMATION:
+ return mSmallFeedbackPixelRadius / scaleFactor;
+ case LONG_TOUCH_ANIMATION:
+ return mLargeFeedbackPixelRadius / scaleFactor;
+ case LONG_TRACKPAD_ANIMATION:
+ // The size of the longpress trackpad animation is supposed to be close to the
+ // size of the cursor so it doesn't need to be normalized and should be scaled
+ // with the canvas.
+ return mTinyFeedbackPixelRadius;
+ default:
+ // Unreachable, but required by Google Java style and findbugs.
+ assert false : "Unreached";
+ return 0.0f;
+ }
+ }
+}
« no previous file with comments | « remoting/android/java/src/org/chromium/chromoting/GlDesktopView.java ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698