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

Side by Side Diff: ui/android/java/src/org/chromium/ui/resources/system/SystemResourceLoader.java

Issue 1419843002: Hold a reference to any kind of context in WindowAndroid. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Move weak context/activity ref from ActivityWA to WA (WindowAndroid) and remove Context ref in Reso… Created 5 years, 1 month 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 package org.chromium.ui.resources.system; 5 package org.chromium.ui.resources.system;
6 6
7 import android.content.Context;
8 import android.content.res.Resources; 7 import android.content.res.Resources;
9 import android.graphics.Bitmap; 8 import android.graphics.Bitmap;
10 import android.graphics.Canvas; 9 import android.graphics.Canvas;
11 import android.graphics.Paint; 10 import android.graphics.Paint;
12 import android.graphics.Paint.Style; 11 import android.graphics.Paint.Style;
13 import android.graphics.RectF; 12 import android.graphics.RectF;
14 13
15 import org.chromium.ui.gfx.DeviceDisplayInfo;
16 import org.chromium.ui.resources.Resource; 14 import org.chromium.ui.resources.Resource;
17 import org.chromium.ui.resources.SystemUIResourceType; 15 import org.chromium.ui.resources.SystemUIResourceType;
18 import org.chromium.ui.resources.async.AsyncPreloadResourceLoader; 16 import org.chromium.ui.resources.async.AsyncPreloadResourceLoader;
19 import org.chromium.ui.resources.statics.StaticResource; 17 import org.chromium.ui.resources.statics.StaticResource;
20 18
21 /** 19 /**
22 * Handles loading system specific resources like overscroll and edge glows. 20 * Handles loading system specific resources like overscroll and edge glows.
23 */ 21 */
24 public class SystemResourceLoader extends AsyncPreloadResourceLoader { 22 public class SystemResourceLoader extends AsyncPreloadResourceLoader {
25 private static final float SIN_PI_OVER_6 = 0.5f; 23 private static final float SIN_PI_OVER_6 = 0.5f;
26 private static final float COS_PI_OVER_6 = 0.866f; 24 private static final float COS_PI_OVER_6 = 0.866f;
27 25
28 /** 26 /**
29 * Creates an instance of a {@link SystemResourceLoader}. 27 * Creates an instance of a {@link SystemResourceLoader}.
30 * @param resourceType The resource type this loader is responsible for load ing. 28 * @param resourceType The resource type this loader is responsible for load ing.
31 * @param callback The {@link ResourceLoaderCallback} to notify when a { @link Resource} is 29 * @param callback The {@link ResourceLoaderCallback} to notify when a { @link Resource} is
32 * done loading. 30 * done loading.
33 * @param resources A {@link Resources} instance to load assets from. 31 * @param minScreenSideLength The length of the smallest side of the scre en.
Ted C 2015/11/11 00:19:45 I would suffix this with either Dp or Px depending
gsennton 2015/11/13 20:00:05 Done.
34 */ 32 */
35 public SystemResourceLoader(int resourceType, ResourceLoaderCallback callbac k, 33 public SystemResourceLoader(
36 final Context context) { 34 int resourceType, ResourceLoaderCallback callback, final int minScre enSideLength) {
37 super(resourceType, callback, new ResourceCreator() { 35 super(resourceType, callback, new ResourceCreator() {
38 @Override 36 @Override
39 public Resource create(int resId) { 37 public Resource create(int resId) {
40 return createResource(context, resId); 38 return createResource(minScreenSideLength, resId);
41 } 39 }
42 }); 40 });
43 } 41 }
44 42
45 private static Resource createResource(Context context, int resId) { 43 private static Resource createResource(int minScreenSideLength, int resId) {
46 switch (resId) { 44 switch (resId) {
47 case SystemUIResourceType.OVERSCROLL_EDGE: 45 case SystemUIResourceType.OVERSCROLL_EDGE:
48 return StaticResource.create(Resources.getSystem(), 46 return StaticResource.create(Resources.getSystem(),
49 getResourceId("android:drawable/overscroll_edge"), 128, 12); 47 getResourceId("android:drawable/overscroll_edge"), 128, 12);
50 case SystemUIResourceType.OVERSCROLL_GLOW: 48 case SystemUIResourceType.OVERSCROLL_GLOW:
51 return StaticResource.create(Resources.getSystem(), 49 return StaticResource.create(Resources.getSystem(),
52 getResourceId("android:drawable/overscroll_glow"), 128, 64); 50 getResourceId("android:drawable/overscroll_glow"), 128, 64);
53 case SystemUIResourceType.OVERSCROLL_GLOW_L: 51 case SystemUIResourceType.OVERSCROLL_GLOW_L:
54 return createOverscrollGlowLBitmap(context); 52 return createOverscrollGlowLBitmap(minScreenSideLength);
55 53
56 default: 54 default:
57 assert false; 55 assert false;
58 } 56 }
59 return null; 57 return null;
60 } 58 }
61 59
62 private static Resource createOverscrollGlowLBitmap(Context context) { 60 private static Resource createOverscrollGlowLBitmap(int minScreenSideLength) {
63 DeviceDisplayInfo displayInfo = DeviceDisplayInfo.create(context); 61 float arcWidth = minScreenSideLength * 0.5f / SIN_PI_OVER_6;
64 int screenWidth = displayInfo.getPhysicalDisplayWidth() != 0
65 ? displayInfo.getPhysicalDisplayWidth() : displayInfo.getDisplay Width();
66 int screenHeight = displayInfo.getPhysicalDisplayHeight() != 0
67 ? displayInfo.getPhysicalDisplayHeight() : displayInfo.getDispla yHeight();
68
69 float arcWidth = Math.min(screenWidth, screenHeight) * 0.5f / SIN_PI_OVE R_6;
70 float y = COS_PI_OVER_6 * arcWidth; 62 float y = COS_PI_OVER_6 * arcWidth;
71 float height = arcWidth - y; 63 float height = arcWidth - y;
72 64
73 float arcRectX = -arcWidth / 2.f; 65 float arcRectX = -arcWidth / 2.f;
74 float arcRectY = -arcWidth - y; 66 float arcRectY = -arcWidth - y;
75 float arcRectWidth = arcWidth * 2.f; 67 float arcRectWidth = arcWidth * 2.f;
76 float arcRectHeight = arcWidth * 2.f; 68 float arcRectHeight = arcWidth * 2.f;
77 RectF arcRect = new RectF( 69 RectF arcRect = new RectF(
78 arcRectX, arcRectY, arcRectX + arcRectWidth, arcRectY + arcRectH eight); 70 arcRectX, arcRectY, arcRectX + arcRectWidth, arcRectY + arcRectH eight);
79 71
80 Paint arcPaint = new Paint(); 72 Paint arcPaint = new Paint();
81 arcPaint.setAntiAlias(true); 73 arcPaint.setAntiAlias(true);
82 arcPaint.setAlpha(0xBB); 74 arcPaint.setAlpha(0xBB);
83 arcPaint.setStyle(Style.FILL); 75 arcPaint.setStyle(Style.FILL);
84 76
85 Bitmap bitmap = Bitmap.createBitmap((int) arcWidth, (int) height, Bitmap .Config.ALPHA_8); 77 Bitmap bitmap = Bitmap.createBitmap((int) arcWidth, (int) height, Bitmap .Config.ALPHA_8);
86 Canvas canvas = new Canvas(bitmap); 78 Canvas canvas = new Canvas(bitmap);
87 canvas.drawArc(arcRect, 45, 90, true, arcPaint); 79 canvas.drawArc(arcRect, 45, 90, true, arcPaint);
88 80
89 return new StaticResource(bitmap); 81 return new StaticResource(bitmap);
90 } 82 }
91 83
92 private static int getResourceId(String name) { 84 private static int getResourceId(String name) {
93 Resources systemResources = Resources.getSystem(); 85 Resources systemResources = Resources.getSystem();
94 return systemResources.getIdentifier(name, null, null); 86 return systemResources.getIdentifier(name, null, null);
95 } 87 }
96 } 88 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698