macOS Gestures

From Free Pascal wiki
Jump to navigationJump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
macOSlogo.png

This article applies to macOS only.

See also: Multiplatform Programming Guide

Overview

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.

Usage Example

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;

Author

Yuri Plashenkov

License

This package is licensed under the MIT license.

Download

The Gestures unit may be downloaded from GitHub.

External links