{
     Apophysis Copyright (C) 2001-2004 Mark Townsend

     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
     the Free Software Foundation; either version 2 of the License, or
     (at your option) any later version.

     This program is distributed in the hope that it will be useful,
     but WITHOUT ANY WARRANTY; without even the implied warranty of
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     GNU General Public License for more details.

     You should have received a copy of the GNU General Public License
     along with this program; if not, write to the Free Software
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
}
unit Sheep;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls, Global, ControlPoint, Render;

type
  TSheepDialog = class(TForm)
    Button1: TButton;
    Button2: TButton;
    PrevPnl: TPanel;
    PreviewImage: TImage;
    txtNick: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    txtURL: TEdit;
    Label3: TLabel;
    txtPassword: TEdit;
    ScrollBar: TScrollBar;
    lblLicense: TLabel;
    lblLink: TLabel;
    procedure FormShow(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure ScrollBarChange(Sender: TObject);
    procedure lblLinkClick(Sender: TObject);
  private
    Render: TRenderer;
    bm: TBitmap;

    procedure DrawPreview;
    { Private declarations }
  public
    cp: TControlPoint;
    { Public declarations }
  end;

var
  SheepDialog: TSheepDialog;

implementation

uses Main, cmap, ShellAPI;

{$R *.DFM}

procedure TSheepDialog.DrawPreview;
begin
  Render.Stop;
  cp.Width := PreviewImage.Width;
  cp.Height := PreviewImage.Height;
  cp.sample_density := 10;
  cp.spatial_oversample := 2;
  cp.spatial_filter_radius := 0.4;
  cp.Zoom := 0;
  cp.center[0] := 0;
  cp.center[1] := 0;
  cp.pixels_per_unit := 60;
  cp.gamma := 4;
  cp.brightness := 4;
  cp.vibrancy := 1;
  GetCMap(cp.cmapindex, cp.hue_rotation, cp.cmap);
  Render.Compatibility := compatibility;
  Render.SetCP(cp);
  Render.Render;
  BM.Assign(Render.GetImage);
  PreviewImage.Picture.Graphic := bm;
end;

procedure TSheepDialog.FormShow(Sender: TObject);
var
  i: integer;
begin
  scrollbar.position := 0;
  txtNick.text := MainCp.nick;
  txtURL.text := MainCp.URL;
  txtPassword.text := SheepPW;
  cp.copy(MainCp);
  for i := 0 to 2 do cp.background[i] := 0;
  DrawPreview;
end;

procedure TSheepDialog.FormCreate(Sender: TObject);
begin
  bm := TbitMap.Create;
  cp := TControlPoint.Create;
  Render := TRenderer.Create;
end;

procedure TSheepDialog.FormDestroy(Sender: TObject);
begin
  bm.free;
  cp.free;
  Render.free;
end;

procedure TSheepDialog.Button1Click(Sender: TObject);
begin
  SheepNick := txtNick.Text;
  SheepURL := txtURL.Text;
  SheepPW := txtPassword.Text;
end;

procedure TSheepDialog.ScrollBarChange(Sender: TObject);
begin
  cp.hue_rotation := ScrollBar.Position / 100;
  DrawPreview;
end;

procedure TSheepDialog.lblLinkClick(Sender: TObject);
begin
  ShellExecute(ValidParentForm(Self).Handle, 'open', PChar('http://creativecommons.org/licenses/by-sa/1.0/'),
    nil, nil, SW_SHOWNORMAL);
end;

end.