50 lines
2.2 KiB
Plaintext
50 lines
2.2 KiB
Plaintext
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
var validators_1 = require("./validators");
|
|
var ColorTypes_1 = require("./ColorTypes");
|
|
function ConvertString(input, return255, alpha255) {
|
|
if (validators_1.isValidStringColor(input)) {
|
|
if (input.startsWith('#')) {
|
|
return HandleConvertHexString(input, return255, alpha255);
|
|
}
|
|
else if (input.startsWith('rgb')) {
|
|
return HandleConvertRgbString(input, return255);
|
|
}
|
|
}
|
|
}
|
|
exports.ConvertString = ConvertString;
|
|
/**
|
|
* **assumes that the input is valid**
|
|
*/
|
|
function HandleConvertHexString(text, return255, alpha255) {
|
|
var color = { red: 0, green: 0, blue: 0, alpha: 0 };
|
|
var raw = text.replace('#', '');
|
|
var length = raw.length;
|
|
var modulo = length % 3;
|
|
color.red =
|
|
length > 4 ? parseInt(raw.substring(0, 2), 16) : parseInt(raw.substring(0, 1).concat(raw.substring(0, 1)), 16);
|
|
color.green =
|
|
length > 4 ? parseInt(raw.substring(2, 4), 16) : parseInt(raw.substring(1, 2).concat(raw.substring(1, 2)), 16);
|
|
color.blue =
|
|
length > 4 ? parseInt(raw.substring(4, 6), 16) : parseInt(raw.substring(2, 3).concat(raw.substring(2, 3)), 16);
|
|
if (modulo) {
|
|
color.alpha =
|
|
length > 4
|
|
? parseInt(raw.substring(length - modulo, length), 16)
|
|
: parseInt(raw.substring(length - modulo, length).concat(raw.substring(length - modulo, length)), 16);
|
|
color.alpha = alpha255 ? color.alpha : color.alpha / 255;
|
|
}
|
|
else {
|
|
color.alpha = 1;
|
|
}
|
|
return new ColorTypes_1.RGBColor(return255 ? color.red : color.red / 255, return255 ? color.green : color.green / 255, return255 ? color.blue : color.blue / 255, color.alpha);
|
|
}
|
|
exports.HandleConvertHexString = HandleConvertHexString;
|
|
/**
|
|
* **assumes that the input is valid**
|
|
*/
|
|
function HandleConvertRgbString(text, return255) {
|
|
var split = text.split(/,|\b /g);
|
|
return new ColorTypes_1.RGBColor(parseInt(split[0].replace(/\D/g, '')) / (return255 ? 1 : 255), parseInt(split[1].replace(/\D/g, '')) / (return255 ? 1 : 255), parseInt(split[2].replace(/\D/g, '')) / (return255 ? 1 : 255), split[3] ? parseFloat(split[3].replace(/[^\.\d]/g, '')) : 1);
|
|
}
|