Blame lazarus/live-ink/unit1.pas

36ad6f
unit Unit1;
36ad6f
36ad6f
{$mode objfpc}{$H+}
36ad6f
36ad6f
interface
36ad6f
36ad6f
uses
36ad6f
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls;
36ad6f
36ad6f
type
36ad6f
36ad6f
  { TForm1 }
36ad6f
36ad6f
  TForm1 = class(TForm)
36ad6f
    Timer1: TTimer;
36ad6f
    procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
36ad6f
    procedure FormPaint(Sender: TObject);
36ad6f
    procedure Timer1Timer(Sender: TObject);
36ad6f
  private
36ad6f
    { private declarations }
36ad6f
  public
36ad6f
    { public declarations }
36ad6f
  end;
36ad6f
36ad6f
const
36ad6f
  maxLen = 50;
36ad6f
36ad6f
var
36ad6f
  Form1: TForm1;
36ad6f
  pos: integer = 0;
36ad6f
  len: integer = 0;
36ad6f
  px: array[0..maxLen] of integer;
36ad6f
  py: array[0..maxLen] of integer;
36ad6f
36ad6f
implementation
36ad6f
36ad6f
{$R *.lfm}
36ad6f
36ad6f
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
36ad6f
  Y: Integer);
36ad6f
begin
36ad6f
  pos := pos + 1;
36ad6f
  len := len + 1;
36ad6f
  if pos >= maxLen then pos := 0;
36ad6f
  if len > maxLen then len := maxLen;
36ad6f
36ad6f
  px[pos] := x;
36ad6f
  py[pos] := y;
36ad6f
end;
36ad6f
36ad6f
procedure TForm1.Timer1Timer(Sender: TObject);
36ad6f
begin
36ad6f
  Refresh;
36ad6f
  len := len - 1;
36ad6f
  if len < 0 then len := 0;
36ad6f
end;
36ad6f
36ad6f
procedure TForm1.FormPaint(Sender: TObject);
36ad6f
var
36ad6f
  i, p: Integer;
36ad6f
begin
36ad6f
  Canvas.MoveTo(px[pos], py[pos]);
36ad6f
  for i := 0 to len-1 do begin
36ad6f
    p := (maxLen + pos - i) mod maxLen;
36ad6f
    Canvas.Pen.Width := len - i;
36ad6f
    Canvas.LineTo(px[p], py[p]);
36ad6f
  end;
36ad6f
end;
36ad6f
36ad6f
end.
36ad6f