Author Topic: Better zoom management  (Read 1528 times)

Broken Stylus

  • Beta Group
  • Hero Member
  • *
  • Posts: 772
Better zoom management
« on: September 21, 2019, 07:47:04 AM »
In 1.9, zooming now does not blur the text any longer. That is a nice improvement but I think the zooming feature should need a complete overhaul.
Because the text is now crisp, I noticed that I could actually work at a new scale. But it's also obvious that the Graph view wasn't meant to stay at such scales.
We can see today that it's far from being perfect: states and transitions don't scale the same as names and descriptions; the outlines of states and transitions can be thicker in some places, drawing ugly black lines double or triple the size of what they should be; the clicking on states and transitions is approximative; and because of the way this feature is updated, it's easy to generate a visual bug where the text of states or descriptions is bigger than it should be: for example, zoom out and go in Preferences > Debugging, click 'Show state labels in game view' and observe the consequence in graph view.

I think all of this would stop if the zooming system was revisited, not working any longer from ad hoc scaling, but from preset values for different scales; thus affecting state/transition size AND font size at the same time.

To figure out the default width of a state, I used the FSM description text area on the left. On Mac, the width of a basic state is as long as -------------. That's about 13 dashes.
Totally zoomed out, a default state is ---- wide.

At 7 or 8 dashes wide, if the text were crisp, it would be possible to work at such a scale without any problem.

100% is the obvious default scale.

A little floating zoom widget should be visible too. Or at least be displayed next to the minimap button in the top bar and it would deploy a list of scales, or perhaps a vertical slider with whole values that would correspond to zoom levels.
The slider would display the zoom scale next to the handle (whatever textual description, int or float is used to identify each zoom level), and a big plus and big minus button would constrain the slider: one button above the slider, another below.

Using the wheel would jump form one preset to the other, all lerping smoothly, but still fast enough. I suppose this could be an option too, this smooth effect.

Ultra ace: using the mouse wheel in graph view to zoom in and out would reveal the vertical slider next to where the cursor is, and this little floating popup would vanish quickly after the last input or simply if the slider is not used this way.
Also, zooming with the wheel would display the zoom level somewhere, either in a corner of the GV or next to the cursor. If a slider popup appears, the value would be displayed either above the slider or next to the handle's position.

This is a piece of UX that will require some testing before validation but I think that would be a neat addition.