Skip to content

Commit de40350

Browse files
authored
Merge pull request #403 from griffpatch/feature/Support-ARGB-for-pen
Fix for Support ARGB for pen #393
2 parents eb3b7bf + 0dcaa46 commit de40350

File tree

4 files changed

+16
-11
lines changed

4 files changed

+16
-11
lines changed

src/blocks/scratch3_pen.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -258,6 +258,9 @@ Scratch3PenBlocks.prototype.setPenColorToColor = function (args, util) {
258258
penState.penAttributes.color4f[0] = rgb.r / 255.0;
259259
penState.penAttributes.color4f[1] = rgb.g / 255.0;
260260
penState.penAttributes.color4f[2] = rgb.b / 255.0;
261+
if (rgb.hasOwnProperty('a')) { // Will there always be an 'a'?
262+
penState.penAttributes.color4f[3] = rgb.a / 255.0;
263+
}
261264
};
262265

263266
/**

src/util/color.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,11 @@ Color.decimalToHex = function (decimal) {
4040
* @return {RGBObject} rgb - {r: red [0,255], g: green [0,255], b: blue [0,255]}.
4141
*/
4242
Color.decimalToRgb = function (decimal) {
43+
var a = (decimal >> 24) & 0xFF;
4344
var r = (decimal >> 16) & 0xFF;
4445
var g = (decimal >> 8) & 0xFF;
4546
var b = decimal & 0xFF;
46-
return {r: r, g: g, b: b};
47+
return {r: r, g: g, b: b, a: a > 0 ? a : 255};
4748
};
4849

4950
/**

test/unit/util_cast.js

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -99,13 +99,14 @@ test('toRbgColorObject', function (t) {
9999
t.deepEqual(cast.toRgbColorObject('#ffffff'), {r: 255, g: 255, b: 255});
100100

101101
// Decimal (minimal, see "color" util tests)
102-
t.deepEqual(cast.toRgbColorObject(0), {r: 0, g: 0, b: 0});
103-
t.deepEqual(cast.toRgbColorObject(1), {r: 0, g: 0, b: 1});
104-
t.deepEqual(cast.toRgbColorObject(16777215), {r: 255, g: 255, b: 255});
102+
t.deepEqual(cast.toRgbColorObject(0), {a: 255, r: 0, g: 0, b: 0});
103+
t.deepEqual(cast.toRgbColorObject(1), {a: 255, r: 0, g: 0, b: 1});
104+
t.deepEqual(cast.toRgbColorObject(16777215), {a: 255, r: 255, g: 255, b: 255});
105+
t.deepEqual(cast.toRgbColorObject('0x80010203'), {a: 128, r: 1, g: 2, b: 3});
105106

106107
// Malformed
107-
t.deepEqual(cast.toRgbColorObject('ffffff'), {r: 0, g: 0, b: 0});
108-
t.deepEqual(cast.toRgbColorObject('foobar'), {r: 0, g: 0, b: 0});
108+
t.deepEqual(cast.toRgbColorObject('ffffff'), {a: 255, r: 0, g: 0, b: 0});
109+
t.deepEqual(cast.toRgbColorObject('foobar'), {a: 255, r: 0, g: 0, b: 0});
109110
t.end();
110111
});
111112

test/unit/util_color.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -47,11 +47,11 @@ test('decimalToHex', function (t) {
4747
});
4848

4949
test('decimalToRgb', function (t) {
50-
t.deepEqual(color.decimalToRgb(0), {r: 0, g: 0, b: 0});
51-
t.deepEqual(color.decimalToRgb(1), {r: 0, g: 0, b: 1});
52-
t.deepEqual(color.decimalToRgb(16777215), {r: 255, g: 255, b: 255});
53-
t.deepEqual(color.decimalToRgb(-16777215), {r: 0, g: 0, b: 1});
54-
t.deepEqual(color.decimalToRgb(99999999), {r: 245, g: 224, b: 255});
50+
t.deepEqual(color.decimalToRgb(0), {a: 255, r: 0, g: 0, b: 0});
51+
t.deepEqual(color.decimalToRgb(1), {a: 255, r: 0, g: 0, b: 1});
52+
t.deepEqual(color.decimalToRgb(16777215), {a: 255, r: 255, g: 255, b: 255});
53+
t.deepEqual(color.decimalToRgb(-16777215), {a: 255, r: 0, g: 0, b: 1});
54+
t.deepEqual(color.decimalToRgb(99999999), {a: 5, r: 245, g: 224, b: 255});
5555
t.end();
5656
});
5757

0 commit comments

Comments
 (0)