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}