Make selection rectangle correspond to zoom window when respecting ratio #1033
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fix #1025
I also put the ratio-respecting
SelectionRect
in its own component. This is a separate commit if you want to read the algorithmic changes first.As discussed, I could not reuse directly the code in
moveCameraTo
as it relies on the camera FOV which does not change when drawing rectangles. Instead, I made new utilities to clamp a rectangle in an area.Given a starting and an end point of a rectangle, the utility will compute the new center of the rectangle so that the rectangle with its actual height/width stays inside the area (the vis in our case). For the selection rectangle, I then compute the shift between the new center and the old one and apply it to the starting and end point. As this is a simple shift, it conserves the ratio of the rectangle.
I could refactor the code in
moveCameraTo
to make use of the new utilities but I wasn't sure it was worth it.