11ac2d39b032d6b2da616ba7e03cb0e93aafc4bd2Jakub Gielzak/* 21ac2d39b032d6b2da616ba7e03cb0e93aafc4bd2Jakub Gielzak * Copyright 2017, The Android Open Source Project 31ac2d39b032d6b2da616ba7e03cb0e93aafc4bd2Jakub Gielzak * 41ac2d39b032d6b2da616ba7e03cb0e93aafc4bd2Jakub Gielzak * Licensed under the Apache License, Version 2.0 (the "License"); 51ac2d39b032d6b2da616ba7e03cb0e93aafc4bd2Jakub Gielzak * you may not use this file except in compliance with the License. 61ac2d39b032d6b2da616ba7e03cb0e93aafc4bd2Jakub Gielzak * You may obtain a copy of the License at 71ac2d39b032d6b2da616ba7e03cb0e93aafc4bd2Jakub Gielzak * 81ac2d39b032d6b2da616ba7e03cb0e93aafc4bd2Jakub Gielzak * http://www.apache.org/licenses/LICENSE-2.0 91ac2d39b032d6b2da616ba7e03cb0e93aafc4bd2Jakub Gielzak * 101ac2d39b032d6b2da616ba7e03cb0e93aafc4bd2Jakub Gielzak * Unless required by applicable law or agreed to in writing, software 111ac2d39b032d6b2da616ba7e03cb0e93aafc4bd2Jakub Gielzak * distributed under the License is distributed on an "AS IS" BASIS, 121ac2d39b032d6b2da616ba7e03cb0e93aafc4bd2Jakub Gielzak * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 131ac2d39b032d6b2da616ba7e03cb0e93aafc4bd2Jakub Gielzak * See the License for the specific language governing permissions and 141ac2d39b032d6b2da616ba7e03cb0e93aafc4bd2Jakub Gielzak * limitations under the License. 151ac2d39b032d6b2da616ba7e03cb0e93aafc4bd2Jakub Gielzak */ 161ac2d39b032d6b2da616ba7e03cb0e93aafc4bd2Jakub Gielzakpackage com.android.managedprovisioning.preprovisioning.anim; 171ac2d39b032d6b2da616ba7e03cb0e93aafc4bd2Jakub Gielzak 181ac2d39b032d6b2da616ba7e03cb0e93aafc4bd2Jakub Gielzakimport android.graphics.Color; 191ac2d39b032d6b2da616ba7e03cb0e93aafc4bd2Jakub Gielzak 201ac2d39b032d6b2da616ba7e03cb0e93aafc4bd2Jakub Gielzakpublic class ColorMatcher { 211ac2d39b032d6b2da616ba7e03cb0e93aafc4bd2Jakub Gielzak private static final int MAX_VALUE = 0xff; 221ac2d39b032d6b2da616ba7e03cb0e93aafc4bd2Jakub Gielzak private static final int BUCKET_SIZE = 32; 231ac2d39b032d6b2da616ba7e03cb0e93aafc4bd2Jakub Gielzak 241ac2d39b032d6b2da616ba7e03cb0e93aafc4bd2Jakub Gielzak public int findClosestColor(int targetColor) { 251ac2d39b032d6b2da616ba7e03cb0e93aafc4bd2Jakub Gielzak int r = bucketize(Color.red(targetColor)); 261ac2d39b032d6b2da616ba7e03cb0e93aafc4bd2Jakub Gielzak int g = bucketize(Color.green(targetColor)); 271ac2d39b032d6b2da616ba7e03cb0e93aafc4bd2Jakub Gielzak int b = bucketize(Color.blue(targetColor)); 281ac2d39b032d6b2da616ba7e03cb0e93aafc4bd2Jakub Gielzak 291ac2d39b032d6b2da616ba7e03cb0e93aafc4bd2Jakub Gielzak return Color.argb(MAX_VALUE, r, g, b); 301ac2d39b032d6b2da616ba7e03cb0e93aafc4bd2Jakub Gielzak } 311ac2d39b032d6b2da616ba7e03cb0e93aafc4bd2Jakub Gielzak 321ac2d39b032d6b2da616ba7e03cb0e93aafc4bd2Jakub Gielzak private int bucketize(int value) { 331ac2d39b032d6b2da616ba7e03cb0e93aafc4bd2Jakub Gielzak int result = (int) Math.round(((double) value / BUCKET_SIZE)) * BUCKET_SIZE; 341ac2d39b032d6b2da616ba7e03cb0e93aafc4bd2Jakub Gielzak return Math.min(MAX_VALUE, result); 351ac2d39b032d6b2da616ba7e03cb0e93aafc4bd2Jakub Gielzak } 361ac2d39b032d6b2da616ba7e03cb0e93aafc4bd2Jakub Gielzak}