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

Side by Side Diff: content/browser/android/composited_touch_handle_drawable.cc

Issue 481683003: Support for Adaptive Handle Orientation (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Initial patchset Created 5 years, 9 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "content/browser/android/composited_touch_handle_drawable.h" 5 #include "content/browser/android/composited_touch_handle_drawable.h"
6 6
7 #include "base/lazy_instance.h" 7 #include "base/lazy_instance.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/trace_event/trace_event.h" 9 #include "base/trace_event/trace_event.h"
10 #include "cc/layers/ui_resource_layer.h" 10 #include "cc/layers/ui_resource_layer.h"
11 #include "jni/HandleViewResources_jni.h" 11 #include "jni/HandleViewResources_jni.h"
12 #include "ui/gfx/android/java_bitmap.h" 12 #include "ui/gfx/android/java_bitmap.h"
13 #include "ui/gfx/skbitmap_operations.h"
13 14
14 namespace content { 15 namespace content {
15 16
16 namespace { 17 namespace {
17 18
18 static SkBitmap CreateSkBitmapFromJavaBitmap( 19 static SkBitmap CreateSkBitmapFromJavaBitmap(
19 base::android::ScopedJavaLocalRef<jobject> jbitmap) { 20 base::android::ScopedJavaLocalRef<jobject> jbitmap) {
20 return jbitmap.is_null() 21 return jbitmap.is_null()
21 ? SkBitmap() 22 ? SkBitmap()
22 : CreateSkBitmapFromJavaBitmap(gfx::JavaBitmap(jbitmap.obj())); 23 : CreateSkBitmapFromJavaBitmap(gfx::JavaBitmap(jbitmap.obj()));
(...skipping 14 matching lines...) Expand all
37 JNIEnv* env = base::android::AttachCurrentThread(); 38 JNIEnv* env = base::android::AttachCurrentThread();
38 if (!context) 39 if (!context)
39 context = base::android::GetApplicationContext(); 40 context = base::android::GetApplicationContext();
40 41
41 left_bitmap_ = CreateSkBitmapFromJavaBitmap( 42 left_bitmap_ = CreateSkBitmapFromJavaBitmap(
42 Java_HandleViewResources_getLeftHandleBitmap(env, context)); 43 Java_HandleViewResources_getLeftHandleBitmap(env, context));
43 right_bitmap_ = CreateSkBitmapFromJavaBitmap( 44 right_bitmap_ = CreateSkBitmapFromJavaBitmap(
44 Java_HandleViewResources_getRightHandleBitmap(env, context)); 45 Java_HandleViewResources_getRightHandleBitmap(env, context));
45 center_bitmap_ = CreateSkBitmapFromJavaBitmap( 46 center_bitmap_ = CreateSkBitmapFromJavaBitmap(
46 Java_HandleViewResources_getCenterHandleBitmap(env, context)); 47 Java_HandleViewResources_getCenterHandleBitmap(env, context));
48 left_inverted_bitmap_ = SkBitmapOperations::Rotate(
49 right_bitmap_, SkBitmapOperations::ROTATION_180_CW);
50 right_inverted_bitmap_ = SkBitmapOperations::Rotate(
51 left_bitmap_, SkBitmapOperations::ROTATION_180_CW);
52 center_inverted_bitmap_ = SkBitmapOperations::Rotate(
53 center_bitmap_, SkBitmapOperations::ROTATION_180_CW);
47 54
48 left_bitmap_.setImmutable(); 55 left_bitmap_.setImmutable();
49 right_bitmap_.setImmutable(); 56 right_bitmap_.setImmutable();
50 center_bitmap_.setImmutable(); 57 center_bitmap_.setImmutable();
58 left_inverted_bitmap_.setImmutable();
59 right_inverted_bitmap_.setImmutable();
60 center_inverted_bitmap_.setImmutable();
51 } 61 }
52 62
53 const SkBitmap& GetBitmap(ui::TouchHandleOrientation orientation) { 63 const SkBitmap& GetBitmap(ui::TouchHandleOrientation orientation) {
54 DCHECK(loaded_); 64 DCHECK(loaded_);
55 switch (orientation) { 65 switch (orientation) {
56 case ui::TouchHandleOrientation::LEFT: 66 case ui::TouchHandleOrientation::LEFT:
57 return left_bitmap_; 67 return left_bitmap_;
58 case ui::TouchHandleOrientation::RIGHT: 68 case ui::TouchHandleOrientation::RIGHT:
59 return right_bitmap_; 69 return right_bitmap_;
60 case ui::TouchHandleOrientation::CENTER: 70 case ui::TouchHandleOrientation::CENTER:
61 return center_bitmap_; 71 return center_bitmap_;
72 case ui::TouchHandleOrientation::LEFT_INVERTED:
73 return left_inverted_bitmap_;
74 case ui::TouchHandleOrientation::RIGHT_INVERTED:
75 return right_inverted_bitmap_;
76 case ui::TouchHandleOrientation::LEFT_FLIPPED:
77 return right_bitmap_;
78 case ui::TouchHandleOrientation::RIGHT_FLIPPED:
79 return left_bitmap_;
80 case ui::TouchHandleOrientation::LEFT_FLIPPED_INVERTED:
81 return right_inverted_bitmap_;
82 case ui::TouchHandleOrientation::RIGHT_FLIPPED_INVERTED:
83 return left_inverted_bitmap_;
84 case ui::TouchHandleOrientation::CENTER_INVERTED:
85 return center_inverted_bitmap_;
62 case ui::TouchHandleOrientation::UNDEFINED: 86 case ui::TouchHandleOrientation::UNDEFINED:
63 NOTREACHED() << "Invalid touch handle orientation."; 87 NOTREACHED() << "Invalid touch handle orientation.";
64 }; 88 };
65 return center_bitmap_; 89 return center_bitmap_;
66 } 90 }
67 91
68 private: 92 private:
69 SkBitmap left_bitmap_; 93 SkBitmap left_bitmap_;
70 SkBitmap right_bitmap_; 94 SkBitmap right_bitmap_;
71 SkBitmap center_bitmap_; 95 SkBitmap center_bitmap_;
96 SkBitmap left_inverted_bitmap_;
97 SkBitmap right_inverted_bitmap_;
98 SkBitmap center_inverted_bitmap_;
72 bool loaded_; 99 bool loaded_;
73 100
74 DISALLOW_COPY_AND_ASSIGN(HandleResources); 101 DISALLOW_COPY_AND_ASSIGN(HandleResources);
75 }; 102 };
76 103
77 base::LazyInstance<HandleResources>::Leaky g_selection_resources; 104 base::LazyInstance<HandleResources>::Leaky g_selection_resources;
78 105
79 } // namespace 106 } // namespace
80 107
81 CompositedTouchHandleDrawable::CompositedTouchHandleDrawable( 108 CompositedTouchHandleDrawable::CompositedTouchHandleDrawable(
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
113 switch (orientation_) { 140 switch (orientation_) {
114 case ui::TouchHandleOrientation::LEFT: 141 case ui::TouchHandleOrientation::LEFT:
115 focal_offset_from_origin_ = gfx::Vector2dF(bitmap.width() * 0.75f, 0); 142 focal_offset_from_origin_ = gfx::Vector2dF(bitmap.width() * 0.75f, 0);
116 break; 143 break;
117 case ui::TouchHandleOrientation::RIGHT: 144 case ui::TouchHandleOrientation::RIGHT:
118 focal_offset_from_origin_ = gfx::Vector2dF(bitmap.width() * 0.25f, 0); 145 focal_offset_from_origin_ = gfx::Vector2dF(bitmap.width() * 0.25f, 0);
119 break; 146 break;
120 case ui::TouchHandleOrientation::CENTER: 147 case ui::TouchHandleOrientation::CENTER:
121 focal_offset_from_origin_ = gfx::Vector2dF(bitmap.width() * 0.5f, 0); 148 focal_offset_from_origin_ = gfx::Vector2dF(bitmap.width() * 0.5f, 0);
122 break; 149 break;
150 case ui::TouchHandleOrientation::LEFT_INVERTED:
151 focal_offset_from_origin_ =
152 gfx::Vector2dF(bitmap.width() * 0.75f, bitmap.height());
153 break;
154 case ui::TouchHandleOrientation::RIGHT_INVERTED:
155 focal_offset_from_origin_ =
156 gfx::Vector2dF(bitmap.width() * 0.25f, bitmap.height());
157 break;
158 case ui::TouchHandleOrientation::LEFT_FLIPPED:
159 focal_offset_from_origin_ = gfx::Vector2dF(bitmap.width() * 0.25f, 0);
160 break;
161 case ui::TouchHandleOrientation::RIGHT_FLIPPED:
162 focal_offset_from_origin_ = gfx::Vector2dF(bitmap.width() * 0.75f, 0);
163 break;
164 case ui::TouchHandleOrientation::LEFT_FLIPPED_INVERTED:
165 focal_offset_from_origin_ =
166 gfx::Vector2dF(bitmap.width() * 0.25f, bitmap.height());
167 break;
168 case ui::TouchHandleOrientation::RIGHT_FLIPPED_INVERTED:
169 focal_offset_from_origin_ =
170 gfx::Vector2dF(bitmap.width() * 0.75f, bitmap.height());
171 break;
172 case ui::TouchHandleOrientation::CENTER_INVERTED:
173 focal_offset_from_origin_ =
174 gfx::Vector2dF(bitmap.width() * 0.5f, bitmap.height());
175 break;
123 case ui::TouchHandleOrientation::UNDEFINED: 176 case ui::TouchHandleOrientation::UNDEFINED:
124 NOTREACHED() << "Invalid touch handle orientation."; 177 NOTREACHED() << "Invalid touch handle orientation.";
125 break; 178 break;
126 }; 179 };
127 180
128 UpdateLayerPosition(); 181 UpdateLayerPosition();
129 } 182 }
130 183
131 void CompositedTouchHandleDrawable::SetAlpha(float alpha) { 184 void CompositedTouchHandleDrawable::SetAlpha(float alpha) {
132 DCHECK(layer_->parent()); 185 DCHECK(layer_->parent());
(...skipping 24 matching lines...) Expand all
157 void CompositedTouchHandleDrawable::UpdateLayerPosition() { 210 void CompositedTouchHandleDrawable::UpdateLayerPosition() {
158 layer_->SetPosition(focal_position_ - focal_offset_from_origin_); 211 layer_->SetPosition(focal_position_ - focal_offset_from_origin_);
159 } 212 }
160 213
161 // static 214 // static
162 bool CompositedTouchHandleDrawable::RegisterHandleViewResources(JNIEnv* env) { 215 bool CompositedTouchHandleDrawable::RegisterHandleViewResources(JNIEnv* env) {
163 return RegisterNativesImpl(env); 216 return RegisterNativesImpl(env);
164 } 217 }
165 218
166 } // namespace content 219 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698