The Gestures unit provides convenient Free Pascal classes for handling macOS gestures.
Currently only the magnification gesture is implemented, but others can be implemented easily in a similar way.
Let's assume your scalable control has a Scale property and you want to allow an end user to scale it by using the typical trackpad gesture. Here is the code:
uses Gestures; type TForm_Main = class(TForm) private Gesture: TMagnificationGesture; InitialScale: Double; end; procedure TForm_Main.FormCreate(Sender: TObject); begin Gesture := TMagnificationGesture.Create(Self); Gesture.Control := MyScalableControl; Gesture.OnGesture := @MagnificationGestureGesture; end; procedure TForm_Main.MagnificationGestureGesture(Sender: TMagnificationGesture; State: TGestureState; Magnification: Double); begin case State of gsBegan: InitialScale := MyScalableControl.Scale; gsChanged: if Magnification > 0 then MyScalableControl.Scale := InitialScale * (1 + Magnification) else MyScalableControl.Scale := InitialScale / (1 - Magnification); end; end;
This package is licensed under the MIT license.
The Gestures unit may be downloaded from GitHub.