anvaka / panzoom

Universal pan and zoom library (DOM, SVG, Custom)
https://anvaka.github.io/panzoom/demo/attach-via-script.html
MIT License
1.79k stars 287 forks source link

allow zoom in just one direction as an option #287

Open rleddy opened 2 years ago

rleddy commented 2 years ago

Created an option preserveAspectRatio, which is a Boolean.

By default this is true. When true, it runs original code.

If it is false, then scaleFactors may be set as an option. These are { x : <number>, y : <number> }. If either its x or y is zero, then the scale of the transform is always one in the chosen direction. Otherwise, the x or y value is a multiplier of scale, which is also broken up into scaleX and scaleY.

Did this by branching code on preserveAspectRatio which internally is being tracked by linkAspect, a Boolean value.

In this commit, only the SVG version is affected. Scaling still means object size changes. The aim is to watch them grow apart as a priority. { There may be cases when the object size (thickness in particular) may stay the same. This is not addressed. }

Needed this for a time line. The application needs to have boxes drawn from start times to stop times (short/long spans).