content: package com.alium.orin.util;
  
  import android.graphics.Bitmap;
  import android.graphics.Color;
  import android.support.annotation.ColorInt;
  import android.support.annotation.Nullable;
  import android.support.v4.graphics.ColorUtils;
  import android.support.v7.graphics.Palette;
  
  import com.kabouzeid.appthemehelper.util.ColorUtil;
  
  import java.util.Collections;
  import java.util.Comparator;
  
  /**
   * @author Karim Abou Zeid (kabouzeid)
   */
  public class PhonographColorUtil {
  
      @Nullable
      public static Palette generatePalette(Bitmap bitmap) {
          if (bitmap == null) return null;
          return Palette.from(bitmap).generate();
      }
  
      @ColorInt
      public static int getColor(@Nullable Palette palette, int fallback) {
          if (palette != null) {
              if (palette.getVibrantSwatch() != null) {
                  return palette.getVibrantSwatch().getRgb();
              } else if (palette.getMutedSwatch() != null) {
                  return palette.getMutedSwatch().getRgb();
              } else if (palette.getDarkVibrantSwatch() != null) {
                  return palette.getDarkVibrantSwatch().getRgb();
              } else if (palette.getDarkMutedSwatch() != null) {
                  return palette.getDarkMutedSwatch().getRgb();
              } else if (palette.getLightVibrantSwatch() != null) {
                  return palette.getLightVibrantSwatch().getRgb();
              } else if (palette.getLightMutedSwatch() != null) {
                  return palette.getLightMutedSwatch().getRgb();
              } else if (!palette.getSwatches().isEmpty()) {
                  return Collections.max(palette.getSwatches(), SwatchComparator.getInstance()).getRgb();
              }
          }
          return fallback;
      }
  
      private static class SwatchComparator implements Comparator<Palette.Swatch> {
          private static SwatchComparator sInstance;
  
          static SwatchComparator getInstance() {
              if (sInstance == null) {
                  sInstance = new SwatchComparator();
              }
              return sInstance;
          }
  
          @Override
          public int compare(Palette.Swatch lhs, Palette.Swatch rhs) {
              return lhs.getPopulation() - rhs.getPopulation();
          }
      }
  
      @ColorInt
      public static int shiftBackgroundColorForLightText(@ColorInt int backgroundColor) {
          while (ColorUtil.isColorLight(backgroundColor)) {
              backgroundColor = ColorUtil.darkenColor(backgroundColor);
          }
          return backgroundColor;
      }
  
      @ColorInt
      public static int shiftBackgroundColorForDarkText(@ColorInt int backgroundColor) {
          while (!ColorUtil.isColorLight(backgroundColor)) {
              backgroundColor = ColorUtil.lightenColor(backgroundColor);
          }
          return backgroundColor;
      }
  
      public static int CIRCLE_TRANSPARENCY = 200;
  
      public static int setTransparency(int color, int transparancy) {
          return ColorUtils.setAlphaComponent(color, transparancy);
      }
  }
  