63 lines
1.2 KiB
TypeScript
63 lines
1.2 KiB
TypeScript
import { HTMLColor } from "./HTMLColor";
|
|
|
|
|
|
export class ColorStop
|
|
{
|
|
color:HTMLColor;
|
|
stop:number;
|
|
|
|
static create( color:HTMLColor, stop:number )
|
|
{
|
|
let cs = new ColorStop();
|
|
cs.color = color;
|
|
cs.stop = stop;
|
|
return cs;
|
|
}
|
|
|
|
getLengthCSS()
|
|
{
|
|
return `${this.color.toString()} ${this.stop}%`;
|
|
}
|
|
|
|
getDegreesCSS()
|
|
{
|
|
return `${this.color.toString()} ${this.stop}deg`;
|
|
}
|
|
|
|
|
|
static createFrom( colors:HTMLColor[], scale = 1 )
|
|
{
|
|
let colorStops:ColorStop[] = [];
|
|
|
|
let normalizer = 100 / ( colors.length -1 );
|
|
|
|
for ( let i = 0; i < colors.length; i++ )
|
|
{
|
|
let colorStop = new ColorStop();
|
|
colorStop.color = colors[ i ];
|
|
colorStop.stop = i * normalizer * scale;
|
|
|
|
colorStops.push( colorStop );
|
|
}
|
|
|
|
return colorStops;
|
|
}
|
|
|
|
static createEqualSpread( factor:number, ...colors:HTMLColor[] )
|
|
{
|
|
let normalizer = factor / ( colors.length - 1 );
|
|
|
|
let colorStops:ColorStop[] = [];
|
|
|
|
for ( let i = 0; i < colors.length; i++ )
|
|
{
|
|
let colorStop = new ColorStop();
|
|
colorStop.color = colors[ i ];
|
|
colorStop.stop = i * normalizer;
|
|
|
|
colorStops.push( colorStop );
|
|
}
|
|
|
|
return colorStops;
|
|
}
|
|
} |