Blame lazarus/live-ink/unit1.pas

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