Android Open Source - AnkiStats Relative Color Gradient






From Project

Back to project page AnkiStats.

License

The source code is released under:

GNU General Public License

If you think the Android project AnkiStats listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/**
 * /*  w ww.j  av  a 2  s.c  om*/
 */
package com.wildplot.android.rendering;


import java.util.Vector;

import com.wildplot.android.rendering.graphics.wrapper.Color;

/**
 * @author Michael Goldbach
 *
 */
public class RelativeColorGradient {
  public static Color[] makeGradient(Vector<Color> colorVector, int numberOfColorsInGradient) {
    if(colorVector == null) {
      colorVector = new Vector<Color>();
    }
    
    if(colorVector.size() < 2) {
      colorVector.add(new Color(255,255,255));
      if(colorVector.size() < 2) {
        colorVector.add(0, new Color(0,0,0));
      }
    }
    numberOfColorsInGradient -= colorVector.size();
    
    while(numberOfColorsInGradient >= 0) {
      Color firstColor = colorVector.get(0);
      Color secondColor = colorVector.get(1);
      int index = 1;
      double highestDelta = 0;
      
      //determine the color with the biggest difference to the color before in the vector
      for(int i = 1; i<colorVector.size(); i++) {
        secondColor = colorVector.get(i);
        double delta  = delta(firstColor.getRed(), secondColor.getRed());
        delta  += delta(firstColor.getGreen(), secondColor.getGreen());
        delta  += delta(firstColor.getBlue(), secondColor.getBlue());
        delta = Math.pow(delta, 1.0/3.0);
        if(delta > highestDelta) {
          highestDelta = delta;
          index = i;
        }
        firstColor = secondColor;
      }
      
      //add new Color between those two colors, new color is middled between those two
      firstColor  = colorVector.get(index-1);
      secondColor  = colorVector.get(index);
      int newRed    = firstColor.getRed() - (firstColor.getRed() - secondColor.getRed())/2;
      int newGreen   = firstColor.getGreen() - (firstColor.getGreen() - secondColor.getGreen())/2;
      int newBlue   = firstColor.getBlue() - (firstColor.getBlue() - secondColor.getBlue())/2;
      
      colorVector.add(index, new Color(newRed, newGreen, newBlue));
      numberOfColorsInGradient--;
    }
    
    
    return colorVector.toArray(new Color[colorVector.size()]);
  }
  private static double delta(int first, int second) {
    return Math.pow(Math.abs(first -second), 3);
  }
  
  
  
}




Java Source Code List

com.wildplot.android.ankistats.AnkiDb.java
com.wildplot.android.ankistats.AnkiStatsActivity.java
com.wildplot.android.ankistats.AnkiStatsApplication.java
com.wildplot.android.ankistats.AnswerButton.java
com.wildplot.android.ankistats.ApplicationTest.java
com.wildplot.android.ankistats.CardsTypes.java
com.wildplot.android.ankistats.CollectionData.java
com.wildplot.android.ankistats.Forecast.java
com.wildplot.android.ankistats.HourlyBreakdown.java
com.wildplot.android.ankistats.Intervals.java
com.wildplot.android.ankistats.ReviewCount.java
com.wildplot.android.ankistats.Utils.java
com.wildplot.android.ankistats.WeeklyBreakdown.java
com.wildplot.android.parsing.Atom.java
com.wildplot.android.parsing.ExpressionFormatException.java
com.wildplot.android.parsing.Expression.java
com.wildplot.android.parsing.Factor.java
com.wildplot.android.parsing.Pow.java
com.wildplot.android.parsing.Term.java
com.wildplot.android.parsing.TopLevelParser.java
com.wildplot.android.parsing.TreeElement.java
com.wildplot.android.parsing.AtomTypes.FunctionXAtom.java
com.wildplot.android.parsing.AtomTypes.FunctionXYAtom.java
com.wildplot.android.parsing.AtomTypes.MathFunctionAtom.java
com.wildplot.android.parsing.AtomTypes.NumberAtom.java
com.wildplot.android.parsing.AtomTypes.VariableAtom.java
com.wildplot.android.parsing.AtomTypes.XVariableAtom.java
com.wildplot.android.parsing.AtomTypes.YVariableAtom.java
com.wildplot.android.rendering.AdvancedPlotSheet.java
com.wildplot.android.rendering.BarGraph.java
com.wildplot.android.rendering.DrawableContainer.java
com.wildplot.android.rendering.FunctionDrawer.java
com.wildplot.android.rendering.FunctionDrawer_y.java
com.wildplot.android.rendering.Integral.java
com.wildplot.android.rendering.LegendDrawable.java
com.wildplot.android.rendering.LinesPoints.java
com.wildplot.android.rendering.Lines.java
com.wildplot.android.rendering.MultiScreenPart.java
com.wildplot.android.rendering.PieChart.java
com.wildplot.android.rendering.PlotSheet.java
com.wildplot.android.rendering.PointDrawer2D.java
com.wildplot.android.rendering.RelativeColorGradient.java
com.wildplot.android.rendering.ReliefDrawer.java
com.wildplot.android.rendering.XAxisBarGraph.java
com.wildplot.android.rendering.XAxisHistoGram.java
com.wildplot.android.rendering.XAxis.java
com.wildplot.android.rendering.XGrid.java
com.wildplot.android.rendering.YAxisBarGraph.java
com.wildplot.android.rendering.YAxisHistoGram.java
com.wildplot.android.rendering.YAxis.java
com.wildplot.android.rendering.YGrid.java
com.wildplot.android.rendering.graphics.wrapper.BasicStroke.java
com.wildplot.android.rendering.graphics.wrapper.BufferedImage.java
com.wildplot.android.rendering.graphics.wrapper.Color.java
com.wildplot.android.rendering.graphics.wrapper.FontMetrics.java
com.wildplot.android.rendering.graphics.wrapper.Graphics2D.java
com.wildplot.android.rendering.graphics.wrapper.Graphics.java
com.wildplot.android.rendering.graphics.wrapper.Rectangle.java
com.wildplot.android.rendering.graphics.wrapper.Stroke.java
com.wildplot.android.rendering.interfaces.Drawable.java
com.wildplot.android.rendering.interfaces.Function2D.java
com.wildplot.android.rendering.interfaces.Function3D.java
com.wildplot.android.rendering.interfaces.Legendable.java
com.wildplot.android.rendering.interfaces.StepFunction2D.java