Add utility function for string to rgba color conversion.
This commit is contained in:
parent
747ed18d20
commit
b9fe936047
@ -44,7 +44,7 @@ import { ArrayBufferToUtf8String, ArrayBufferToAsciiString, AsciiStringToArrayBu
|
||||
import { SetExternalLibLocation, GetExternalLibPath, LoadExternalLibrary } from './io/externallibs.js';
|
||||
import { GetFileName, GetFileExtension, RequestUrl, ReadFile, TransformFileHostUrls, IsUrl, FileSource, FileFormat } from './io/fileutils.js';
|
||||
import { TextWriter } from './io/textwriter.js';
|
||||
import { RGBColor, RGBAColor, ColorComponentFromFloat, ColorComponentToFloat, RGBColorFromFloatComponents, SRGBToLinear, LinearToSRGB, IntegerToHexString, RGBColorToHexString, RGBAColorToHexString, HexStringToRGBColor, ArrayToRGBColor, RGBColorIsEqual } from './model/color.js';
|
||||
import { RGBColor, RGBAColor, ColorComponentFromFloat, ColorComponentToFloat, RGBColorFromFloatComponents, SRGBToLinear, LinearToSRGB, IntegerToHexString, RGBColorToHexString, RGBAColorToHexString, HexStringToRGBColor, HexStringToRGBAColor, ArrayToRGBColor, RGBColorIsEqual } from './model/color.js';
|
||||
import { GeneratorParams, Generator, GeneratorHelper, GenerateCuboid, GenerateCone, GenerateCylinder, GenerateSphere, GeneratePlatonicSolid } from './model/generator.js';
|
||||
import { TextureMap, MaterialBase, FaceMaterial, PhongMaterial, PhysicalMaterial, TextureMapIsEqual, TextureIsEqual, MaterialType } from './model/material.js';
|
||||
import { Mesh } from './model/mesh.js';
|
||||
@ -213,6 +213,7 @@ export {
|
||||
RGBColorToHexString,
|
||||
RGBAColorToHexString,
|
||||
HexStringToRGBColor,
|
||||
HexStringToRGBAColor,
|
||||
ArrayToRGBColor,
|
||||
RGBColorIsEqual,
|
||||
GeneratorParams,
|
||||
|
||||
@ -157,6 +157,22 @@ export function HexStringToRGBColor (hexString)
|
||||
return new RGBColor (r, g, b);
|
||||
}
|
||||
|
||||
export function HexStringToRGBAColor (hexString)
|
||||
{
|
||||
if (hexString.length !== 6 && hexString.length !== 8) {
|
||||
return null;
|
||||
}
|
||||
|
||||
let r = parseInt (hexString.substring (0, 2), 16);
|
||||
let g = parseInt (hexString.substring (2, 4), 16);
|
||||
let b = parseInt (hexString.substring (4, 6), 16);
|
||||
let a = 255;
|
||||
if (hexString.length === 8) {
|
||||
a = parseInt (hexString.substring (6, 8), 16);
|
||||
}
|
||||
return new RGBAColor (r, g, b, a);
|
||||
}
|
||||
|
||||
export function ArrayToRGBColor (arr)
|
||||
{
|
||||
return new RGBColor (arr[0], arr[1], arr[2]);
|
||||
|
||||
@ -229,12 +229,25 @@ describe ('Color Conversion', function () {
|
||||
assert.ok (!OV.RGBColorIsEqual (new OV.RGBColor (10, 20, 30), new OV.RGBColor (10, 20, 31)));
|
||||
});
|
||||
|
||||
it ('Color hex string conversion', function () {
|
||||
it ('RGB Color hex string conversion', function () {
|
||||
let color = new OV.RGBColor (10, 20, 30);
|
||||
let hexString = '0a141e';
|
||||
assert.strictEqual (OV.RGBColorToHexString (color), hexString);
|
||||
assert.deepStrictEqual (OV.HexStringToRGBColor (hexString), color);
|
||||
});
|
||||
|
||||
it ('RGBA Color hex string conversion', function () {
|
||||
let color = new OV.RGBAColor (10, 20, 30, 40);
|
||||
let hexString = '0a141e28';
|
||||
assert.strictEqual (OV.RGBAColorToHexString (color), hexString);
|
||||
assert.deepStrictEqual (OV.HexStringToRGBAColor (hexString), color);
|
||||
|
||||
let color2 = new OV.RGBAColor (10, 20, 30, 255);
|
||||
let hexString2 = '0a141e';
|
||||
let hexString2a = '0a141eff';
|
||||
assert.strictEqual (OV.RGBAColorToHexString (color2), hexString2a);
|
||||
assert.deepStrictEqual (OV.HexStringToRGBAColor (hexString2), color2);
|
||||
});
|
||||
});
|
||||
|
||||
describe ('Node Hierarchy', function () {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user