diff --git a/src/common/Color.test.ts b/src/common/Color.test.ts index a608908d..2f46d8c1 100644 --- a/src/common/Color.test.ts +++ b/src/common/Color.test.ts @@ -238,10 +238,10 @@ describe('Color', () => { }); it('should convert the rgba() format to an IColor', () => { assert.deepEqual(css.toColor('rgba(0, 0, 0, 0)'), { css: 'rgba(0, 0, 0, 0)', rgba: 0x00000000 }); - assert.deepEqual(css.toColor('rgba(80, 0, 0, 80)'), { css: 'rgba(80, 0, 0, 80)', rgba: 0x50000050 }); - assert.deepEqual(css.toColor('rgba(0, 80, 0, 80)'), { css: 'rgba(0, 80, 0, 80)', rgba: 0x00500050 }); - assert.deepEqual(css.toColor('rgba(0, 0, 80, 80)'), { css: 'rgba(0, 0, 80, 80)', rgba: 0x00005050 }); - assert.deepEqual(css.toColor('rgba(255, 255, 255, 255)'), { css: 'rgba(255, 255, 255, 255)', rgba: 0xffffffff }); + assert.deepEqual(css.toColor('rgba(80, 0, 0, 0.5)'), { css: 'rgba(80, 0, 0, 0.5)', rgba: 0x50000080 }); + assert.deepEqual(css.toColor('rgba(0, 80, 0, 0.5)'), { css: 'rgba(0, 80, 0, 0.5)', rgba: 0x00500080 }); + assert.deepEqual(css.toColor('rgba(0, 0, 80, 0.5)'), { css: 'rgba(0, 0, 80, 0.5)', rgba: 0x00005080 }); + assert.deepEqual(css.toColor('rgba(255, 255, 255, 1)'), { css: 'rgba(255, 255, 255, 1)', rgba: 0xffffffff }); }); }); }); diff --git a/src/common/Color.ts b/src/common/Color.ts index 3f09601f..4b834053 100644 --- a/src/common/Color.ts +++ b/src/common/Color.ts @@ -127,7 +127,7 @@ export namespace css { }; } } - const rgbaMatch = css.match(/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(,\s*(\d{1,3})\s*)?\)/); + const rgbaMatch = css.match(/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(,\s*(0|1|\d?\.(\d+))\s*)?\)/); if (rgbaMatch) { // rgb() or rgba() return { css, @@ -135,7 +135,7 @@ export namespace css { parseInt(rgbaMatch[1]), // r parseInt(rgbaMatch[2]), // g parseInt(rgbaMatch[3]), // b - rgbaMatch[5] === undefined ? 0xFF : parseInt(rgbaMatch[5]) // a? + Math.round((rgbaMatch[5] === undefined ? 1 : parseFloat(rgbaMatch[5])) * 0xFF) // a? ) }; }