Skip to content

bug: Fix 9-slice textures with asymmetric borders.#13921

Merged
alice-i-cecile merged 4 commits intobevyengine:mainfrom
shanecelis:fix-9-slice-on-main
Jun 19, 2024
Merged

bug: Fix 9-slice textures with asymmetric borders.#13921
alice-i-cecile merged 4 commits intobevyengine:mainfrom
shanecelis:fix-9-slice-on-main

Conversation

@shanecelis
Copy link
Contributor

Objective

Fix a 9-slice asymmetric border issue that QueenOfSquiggles found. Here's the behavior before:

the-bug

Solution

Here's the behavior with the fix.

the-fix

Testing

I used QueenOfSquiggles repo to exercise the code. I manually went through a number of variations of the border and caught a few other issues after the first pass. I added some code to create random borders and though they often looked funny there weren't any gaps like before.

Unit Tests

I did add some tests to slicer.rs mostly as an exploratory programming exercise. So they currently act as a limited, incomplete, "golden-file"-ish approach. Perhaps they're not worth keeping.

In order to write the tests, I did add a PartialEq derive for TextureSlice.

I only tested these changes on macOS.


Changelog

Make 9-slice textures work with asymmetric borders.

@alice-i-cecile alice-i-cecile added this to the 0.14 milestone Jun 19, 2024
Copy link
Member

@alice-i-cecile alice-i-cecile left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good fix, great writeup. I'm happy with the tests: I want to to start making progress on testing rendering and UI, and for the most part this sort of thing is about as good as it gets.

@alice-i-cecile alice-i-cecile added C-Bug An unexpected or incorrect behavior A-UI Graphical user interfaces, styles, layouts, and widgets S-Needs-Review Needs reviewer attention (from anyone!) to move forward labels Jun 19, 2024
@alice-i-cecile alice-i-cecile added this pull request to the merge queue Jun 19, 2024
@alice-i-cecile alice-i-cecile added S-Ready-For-Final-Review This PR has been approved by the community. It's ready for a maintainer to consider merging it and removed S-Needs-Review Needs reviewer attention (from anyone!) to move forward labels Jun 19, 2024
Merged via the queue into bevyengine:main with commit 6df0e9b Jun 19, 2024
mockersf pushed a commit that referenced this pull request Jun 21, 2024
# Objective

Fix a 9-slice asymmetric border issue that
[QueenOfSquiggles](https://blobfox.coffee/@queenofsquiggles/112639035165575222)
found. Here's the behavior before:

<img width="340" alt="the-bug"
src="https://github.com/bevyengine/bevy/assets/54390/81ff1847-b2ea-4578-9fd0-af6ee96c5438">

## Solution

Here's the behavior with the fix.

<img width="327" alt="the-fix"
src="https://github.com/bevyengine/bevy/assets/54390/33a4e3f0-b6a8-448e-9654-1197218ea11d">


## Testing

I used QueenOfSquiggles
[repo](https://github.com/QueenOfSquiggles/my-bevy-learning-project) to
exercise the code. I manually went through a number of variations of the
border and caught a few other issues after the first pass. I added some
code to create random borders and though they often looked funny there
weren't any gaps like before.

### Unit Tests

I did add some tests to `slicer.rs` mostly as an exploratory programming
exercise. So they currently act as a limited, incomplete,
"golden-file"-ish approach. Perhaps they're not worth keeping.

In order to write the tests, I did add a `PartialEq` derive for
`TextureSlice`.

I only tested these changes on macOS.

---

## Changelog

Make 9-slice textures work with asymmetric borders.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-UI Graphical user interfaces, styles, layouts, and widgets C-Bug An unexpected or incorrect behavior S-Ready-For-Final-Review This PR has been approved by the community. It's ready for a maintainer to consider merging it

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants