> This resolves a gif parsing bug where an unwanted opaque rectangle could > appear under these conditions: > > 1. The disposal method for frames is 1 (meaning "do not dispose", aka > "DISPOSAL_SAVE") > 2. The transparent pixel is non-zero > 3. There's more than one such consecutive frame > > Previously: the GifImageDecoder would leave the saved_image pixels as zero > when they were supposed to be transparent. This works great if the > transparent pixel index is zero, but it flood fills the background of your > frame with the zeroeth color otherwise. > > I wrote four PRs that share the GifComparison class in this PR. Once any of > them clear code review the other PRs will be much simpler: > > 1. [8357034](https://github.com/openjdk/jdk/pull/25264) > 2. [8356137](https://github.com/openjdk/jdk/pull/25044) (this one) > 3. [8356320](https://github.com/openjdk/jdk/pull/25076) > 4. [8351913](https://github.com/openjdk/jdk/pull/24271)
Jeremy Wood has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains 39 additional commits since the last revision: - 8354646: rewrapping line breaks so text is < 80 chars This is in response to: https://github.com/openjdk/jdk/pull/25044#issuecomment-3051978321 - Merge branch 'master' into JDK-8356137 - 8356137: adding copyright - 8356137: remove test file now that we use GifBuilder - 8356137: Use new GifBuilder for 8356137 test case This is in response to: https://github.com/openjdk/jdk/pull/25044#pullrequestreview-2871107750 - 8356137: Adding GifBuilder to dynamically create test file This can be used by multiple gif tests in this directory. This is in response to: https://github.com/openjdk/jdk/pull/25044#pullrequestreview-2871107750 - 8356137: trivial javadoc update - 8356137: only inspect last frame of gif This makes the main() method much less useful, so I removed it too. (I originally used this class to explore a folder of hundreds of gifs to look for discrepancies. But the discrepancies were rarely only on the last frame.) This is in response to: https://github.com/openjdk/jdk/pull/25044#discussion_r2109298270 - 8356137: remove the redundant transparency check This is in response to: https://github.com/openjdk/jdk/pull/25044#discussion_r2109318427 - 8356137: flood fill saved_image at initialization This is in response to: https://github.com/openjdk/jdk/pull/25044#issuecomment-2912699099 - ... and 29 more: https://git.openjdk.org/jdk/compare/2c88ffdc...e143c8cf ------------- Changes: - all: https://git.openjdk.org/jdk/pull/25044/files - new: https://git.openjdk.org/jdk/pull/25044/files/392a9e5f..e143c8cf Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=25044&range=09 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=25044&range=08-09 Stats: 135422 lines in 2651 files changed: 81061 ins; 33367 del; 20994 mod Patch: https://git.openjdk.org/jdk/pull/25044.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/25044/head:pull/25044 PR: https://git.openjdk.org/jdk/pull/25044