package com.metservice.kanban.charts;
/**
* Helper tool to generate aesthetically pleasing colours.
* @author Janella Espinas, Chris Cooper
*/
public class HueRebalancer {
private final double[] evenlySpreadHsbHues;
private final int numberOfSegments;
public HueRebalancer(double... evenlySpreadHsbHues) {
this.evenlySpreadHsbHues = evenlySpreadHsbHues;
this.numberOfSegments = evenlySpreadHsbHues.length - 1;
}
public double balance(double unbalancedHue) {
unbalancedHue %= 1.0;
int segmentNumber = (int) (unbalancedHue * numberOfSegments);
double positionWithinSegment = unbalancedHue * numberOfSegments - segmentNumber;
double segmentStart = evenlySpreadHsbHues[segmentNumber];
double segmentLength = evenlySpreadHsbHues[segmentNumber + 1] - segmentStart;
return segmentStart + segmentLength * positionWithinSegment;
}
}