• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2012 Google Inc.
3  * Licensed to The Android Open Source Project.
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17 package com.android.mail.bitmap;
18 
19 import android.content.res.Resources;
20 import android.content.res.TypedArray;
21 
22 import com.android.mail.R;
23 
24 public interface ColorPicker {
25     /**
26      * Returns the color to use for the given email address.
27      * This method should return the same output for the same input.
28      * @param email The normalized email address.
29      * @return The color value in the format {@code 0xAARRGGBB}.
30      */
pickColor(final String email)31     public int pickColor(final String email);
32 
33     /**
34      * A simple implementation of a {@link ColorPicker}.
35      */
36     public class PaletteColorPicker implements ColorPicker {
37         /**
38          * The palette of colors, inflated from {@code R.array.letter_tile_colors}.
39          */
40         private static TypedArray sColors;
41 
42         /**
43          * Cached value of {@code sColors.length()}.
44          */
45         private static int sColorCount;
46 
47         /**
48          * Default color returned if the one chosen from {@code R.array.letter_tile_colors} is
49          * a {@link android.content.res.ColorStateList}.
50          */
51         private static int sDefaultColor;
52 
PaletteColorPicker(Resources res)53         public PaletteColorPicker(Resources res) {
54             if (sColors == null) {
55                 sColors = res.obtainTypedArray(R.array.letter_tile_colors);
56                 sColorCount = sColors.length();
57                 sDefaultColor = res.getColor(R.color.letter_tile_default_color);
58             }
59         }
60 
61         @Override
pickColor(final String email)62         public int pickColor(final String email) {
63             final int color = Math.abs(email.hashCode()) % sColorCount;
64             return sColors.getColor(color, sDefaultColor);
65         }
66     }
67 }
68