phaserjs / phaserjs/phaser

GetColor32() shouldn't output negative values

Open Beginner friendly
#7,305 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
JavaScript
Stars
40.3k
Forks
7.2k
PR merge metrics
No merged PRs in 30d

Description

Version

  • Phaser Version: 4.1.0

Description

Phaser.Display.Color.GetColor32() can output negative numbers (for 127 < alpha ≤ 255), but Phaser.Display.Color.ColorToRGBA() and Phaser.Display.Color.IntegerToRGB() treat input ≤ 0xffffff as 24-bit, ignoring alpha.

Example Test Code

const alpha = 128;
const color32 = Phaser.Display.Color.GetColor32(0, 0, 0, alpha);
const rgb = Phaser.Display.Color.IntegerToRGB(color32);
const rgba = Phaser.Display.Color.ColorToRGBA(color32);

console.assert(rgb.a === alpha, `rgb.a should be ${alpha} not ${rgb.a}`);
// "Assertion failed: rgb.a should be 128 not 255"

console.assert(rgba.a === alpha, `rgba.a should be ${alpha} not ${rgba.a}`);
// "Assertion failed: rgba.a should be 128 not 255"

Additional Information

Can be "fixed" with GetColor32() >>> 0.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by locating the implementations of Phaser.Display.Color.GetColor32(), ColorToRGBA(), and IntegerToRGB(), then reproduce the supplied alpha-128 example. Trace how the signed color32 value is classified and verify that the completed change preserves alpha through both conversion functions; add or run focused tests for alpha values above 127.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript
Domain
computer-graphics, game-dev
Issue type
Bug
Difficulty
2/5
Estimated time
1-3 hours
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
68/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.