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

Side by Side Diff: remoting/android/java/src/org/chromium/chromoting/GlDesktopView.java

Issue 2175353003: [Remoting Android] Define feedback animation size in dp (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Reviewer's Feedback 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 unified diff | Download patch
OLDNEW
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 package org.chromium.chromoting; 5 package org.chromium.chromoting;
6 6
7 import android.graphics.Point; 7 import android.graphics.Point;
8 import android.view.SurfaceHolder; 8 import android.view.SurfaceHolder;
9 import android.view.View;
9 10
10 import org.chromium.chromoting.jni.Client; 11 import org.chromium.chromoting.jni.Client;
11 import org.chromium.chromoting.jni.GlDisplay; 12 import org.chromium.chromoting.jni.GlDisplay;
12 13
13 /** 14 /**
14 * The user interface for viewing and interacting with a specific remote host. U ses OpenGL to draw 15 * The user interface for viewing and interacting with a specific remote host. U ses OpenGL to draw
15 * the desktop and cursor. Should be used entirely on the UI thread. 16 * the desktop and cursor. Should be used entirely on the UI thread.
16 */ 17 */
17 public class GlDesktopView extends AbstractDesktopView implements SurfaceHolder. Callback { 18 public class GlDesktopView extends AbstractDesktopView implements SurfaceHolder. Callback {
18 private final GlDisplay mDisplay; 19 private final GlDisplay mDisplay;
19 20
20 private Object mOnHostSizeChangedListenerKey; 21 private Object mOnHostSizeChangedListenerKey;
21 private Object mOnCanvasRenderedListenerKey; 22 private Object mOnCanvasRenderedListenerKey;
22 23
24 private static float sSmallFeedbackPixelDiameter = -1;
25 private static float sLargeFeedbackPixelDiameter = -1;
26
23 public GlDesktopView(GlDisplay display, Desktop desktop, Client client) { 27 public GlDesktopView(GlDisplay display, Desktop desktop, Client client) {
24 super(desktop, client); 28 super(desktop, client);
25 Preconditions.notNull(display); 29 Preconditions.notNull(display);
26 mDisplay = display; 30 mDisplay = display;
27 31
28 getHolder().addCallback(this); 32 getHolder().addCallback(this);
29 } 33 }
30 34
31 @Override 35 private static float getFeedbackDiameterInPixel(InputFeedbackType feedbackTy pe, View view) {
32 public void showInputFeedback(InputFeedbackType feedbackToShow, Point pos) { 36 // Note that the OpenGL renderer takes diameter as argument so the radiu s we got needs
33 float diameter; 37 // to be multiplied by 2.
34 // TODO(yuweih): diameter (and radius in DesktopView) should be defined in dp so that it is 38 switch (feedbackType) {
35 // DPI independent. 39 case SMALL_ANIMATION:
36 switch (feedbackToShow) { 40 if (sSmallFeedbackPixelDiameter < 0) {
41 sSmallFeedbackPixelDiameter = 2 * view.getResources()
42 .getDimensionPixelSize(R.dimen.feedback_animation_ra dius_small);
43 }
44 return sSmallFeedbackPixelDiameter;
45
37 case LARGE_ANIMATION: 46 case LARGE_ANIMATION:
38 diameter = 320.f; 47 if (sLargeFeedbackPixelDiameter < 0) {
39 break; 48 sLargeFeedbackPixelDiameter = 2 * view.getResources()
40 case SMALL_ANIMATION: 49 .getDimensionPixelSize(R.dimen.feedback_animation_ra dius_large);
41 diameter = 80.f; 50 }
42 break; 51 return sLargeFeedbackPixelDiameter;
52
43 default: 53 default:
44 return; 54 // Unreachable, but required by Google Java style and findbugs.
55 assert false : "Unreached";
56 return 0.0f;
45 } 57 }
46 float scaleFactor = mRenderData.transform.mapRadius(1);
47 mDisplay.showCursorInputFeedback(pos.x, pos.y, diameter / scaleFactor);
48 } 58 }
49 59
50 @Override 60 @Override
61 public void showInputFeedback(InputFeedbackType feedbackType, Point pos) {
62 float scaleFactor = mRenderData.transform.mapRadius(1);
63 mDisplay.showCursorInputFeedback(pos.x, pos.y,
64 getFeedbackDiameterInPixel(feedbackType, this) / scaleFactor);
65 }
66
67 @Override
51 public void transformationChanged() { 68 public void transformationChanged() {
52 if (mRenderData.imageHeight == 0 || mRenderData.imageWidth == 0 69 if (mRenderData.imageHeight == 0 || mRenderData.imageWidth == 0
53 || mRenderData.screenHeight == 0 || mRenderData.screenWidth == 0 ) { 70 || mRenderData.screenHeight == 0 || mRenderData.screenWidth == 0 ) {
54 return; 71 return;
55 } 72 }
56 float[] matrix = new float[9]; 73 float[] matrix = new float[9];
57 mRenderData.transform.getValues(matrix); 74 mRenderData.transform.getValues(matrix);
58 mDisplay.pixelTransformationChanged(matrix); 75 mDisplay.pixelTransformationChanged(matrix);
59 } 76 }
60 77
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
118 @Override 135 @Override
119 public void surfaceDestroyed(SurfaceHolder holder) { 136 public void surfaceDestroyed(SurfaceHolder holder) {
120 // GlDisplay's life time spans to the whole session while GlDesktopView may be created and 137 // GlDisplay's life time spans to the whole session while GlDesktopView may be created and
121 // destroyed for multiple times (say when the phone is rotated). It is i mportant to remove 138 // destroyed for multiple times (say when the phone is rotated). It is i mportant to remove
122 // the listeners when the surface is about to be destroyed. 139 // the listeners when the surface is about to be destroyed.
123 mDisplay.onHostSizeChanged().remove(mOnHostSizeChangedListenerKey); 140 mDisplay.onHostSizeChanged().remove(mOnHostSizeChangedListenerKey);
124 mDisplay.onCanvasRendered().remove(mOnCanvasRenderedListenerKey); 141 mDisplay.onCanvasRendered().remove(mOnCanvasRenderedListenerKey);
125 mDisplay.surfaceDestroyed(); 142 mDisplay.surfaceDestroyed();
126 } 143 }
127 } 144 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698