619 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			ObjectPascal
		
	
	
	
	
	
			
		
		
	
	
			619 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			ObjectPascal
		
	
	
	
	
	
{
 | 
						|
     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 Adjust;
 | 
						|
 | 
						|
interface
 | 
						|
 | 
						|
uses
 | 
						|
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 | 
						|
  StdCtrls, ExtCtrls, ComCtrls, ControlPoint, Render, Buttons, Menus, cmap;
 | 
						|
 | 
						|
const
 | 
						|
  WM_UPDATE_PARAMS = WM_APP + 5439;
 | 
						|
 | 
						|
type
 | 
						|
  TAdjustForm = class(TForm)
 | 
						|
    QualityPopup: TPopupMenu;
 | 
						|
    mnuLowQuality: TMenuItem;
 | 
						|
    mnuMediumQuality: TMenuItem;
 | 
						|
    mnuHighQuality: TMenuItem;
 | 
						|
    ColorDialog: TColorDialog;
 | 
						|
    PrevPnl: TPanel;
 | 
						|
    PreviewImage: TImage;
 | 
						|
    GroupBox1: TGroupBox;
 | 
						|
    Label8: TLabel;
 | 
						|
    scrollGamma: TScrollBar;
 | 
						|
    txtGamma: TEdit;
 | 
						|
    Label9: TLabel;
 | 
						|
    scrollBrightness: TScrollBar;
 | 
						|
    txtBrightness: TEdit;
 | 
						|
    Label10: TLabel;
 | 
						|
    scrollVibrancy: TScrollBar;
 | 
						|
    txtVibrancy: TEdit;
 | 
						|
    lblContrast: TLabel;
 | 
						|
    GroupBox2: TGroupBox;
 | 
						|
    Label5: TLabel;
 | 
						|
    scrollZoom: TScrollBar;
 | 
						|
    txtZoom: TEdit;
 | 
						|
    Label6: TLabel;
 | 
						|
    scrollCenterX: TScrollBar;
 | 
						|
    txtCenterX: TEdit;
 | 
						|
    scrollCenterY: TScrollBar;
 | 
						|
    txtCenterY: TEdit;
 | 
						|
    Label1: TLabel;
 | 
						|
    ColorPanel: TPanel;
 | 
						|
    procedure FormCreate(Sender: TObject);
 | 
						|
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
 | 
						|
    procedure FormDestroy(Sender: TObject);
 | 
						|
    procedure DrawPreview;
 | 
						|
    procedure btnOKClick(Sender: TObject);
 | 
						|
    procedure btnCancelClick(Sender: TObject);
 | 
						|
    procedure btnCanelClick(Sender: TObject);
 | 
						|
    procedure FormShow(Sender: TObject);
 | 
						|
    procedure mnuLowQualityClick(Sender: TObject);
 | 
						|
    procedure mnuMediumQualityClick(Sender: TObject);
 | 
						|
    procedure mnuHighQualityClick(Sender: TObject);
 | 
						|
    procedure txtZoomKeyPress(Sender: TObject; var Key: Char);
 | 
						|
    procedure txtZoomExit(Sender: TObject);
 | 
						|
    procedure txtCenterXKeyPress(Sender: TObject; var Key: Char);
 | 
						|
    procedure txtCenterXExit(Sender: TObject);
 | 
						|
    procedure txtCenterYKeyPress(Sender: TObject; var Key: Char);
 | 
						|
    procedure txtCenterYExit(Sender: TObject);
 | 
						|
    procedure txtGammaKeyPress(Sender: TObject; var Key: Char);
 | 
						|
    procedure txtGammaExit(Sender: TObject);
 | 
						|
    procedure txtBrightnessKeyPress(Sender: TObject; var Key: Char);
 | 
						|
    procedure txtBrightnessExit(Sender: TObject);
 | 
						|
    procedure txtVibrancyKeyPress(Sender: TObject; var Key: Char);
 | 
						|
    procedure txtVibrancyExit(Sender: TObject);
 | 
						|
    procedure scrollZoomScroll(Sender: TObject; ScrollCode: TScrollCode;
 | 
						|
      var ScrollPos: Integer);
 | 
						|
    procedure scrollCenterXScroll(Sender: TObject; ScrollCode: TScrollCode;
 | 
						|
      var ScrollPos: Integer);
 | 
						|
    procedure scrollCenterYScroll(Sender: TObject; ScrollCode: TScrollCode;
 | 
						|
      var ScrollPos: Integer);
 | 
						|
    procedure scrollGammaScroll(Sender: TObject; ScrollCode: TScrollCode;
 | 
						|
      var ScrollPos: Integer);
 | 
						|
    procedure scrollBrightnessScroll(Sender: TObject;
 | 
						|
      ScrollCode: TScrollCode; var ScrollPos: Integer);
 | 
						|
    procedure scrollVibrancyScroll(Sender: TObject;
 | 
						|
      ScrollCode: TScrollCode; var ScrollPos: Integer);
 | 
						|
    procedure scrollVibrancyChange(Sender: TObject);
 | 
						|
    procedure scrollGammaChange(Sender: TObject);
 | 
						|
    procedure scrollBrightnessChange(Sender: TObject);
 | 
						|
    procedure scrollZoomChange(Sender: TObject);
 | 
						|
    procedure scrollCenterXChange(Sender: TObject);
 | 
						|
    procedure scrollCenterYChange(Sender: TObject);
 | 
						|
    procedure ColorPanelClick(Sender: TObject);
 | 
						|
    procedure scrollContrastScroll(Sender: TObject;
 | 
						|
      ScrollCode: TScrollCode; var ScrollPos: Integer);
 | 
						|
  private
 | 
						|
    Resetting: boolean;
 | 
						|
    Render: TRenderer;
 | 
						|
    bm: TBitmap;
 | 
						|
  public
 | 
						|
    PreviewDensity: double;
 | 
						|
    cp: TControlPoint;
 | 
						|
//    cmap: TColorMap;
 | 
						|
//    Sample_Density, Zoom: double;
 | 
						|
//    Center: array[0..1] of double;
 | 
						|
    procedure UpdateDisplay;
 | 
						|
    procedure UpdateFlame;
 | 
						|
  end;
 | 
						|
 | 
						|
var
 | 
						|
  AdjustForm: TAdjustForm;
 | 
						|
 | 
						|
implementation
 | 
						|
 | 
						|
uses Main, Global, Registry, Mutate, Editor;
 | 
						|
 | 
						|
{$R *.DFM}
 | 
						|
 | 
						|
procedure TAdjustForm.UpdateDisplay;
 | 
						|
var
 | 
						|
  pw, ph: integer;
 | 
						|
  r: double;
 | 
						|
begin
 | 
						|
  pw := PrevPnl.Width - 2;
 | 
						|
  ph := PrevPnl.Height - 2;
 | 
						|
  cp.copy(MainCp);
 | 
						|
  if cp.width > cp.height then
 | 
						|
  begin
 | 
						|
    PreviewImage.Width := pw;
 | 
						|
    r := cp.width / PreviewImage.Width;
 | 
						|
    PreviewImage.height := round(cp.height / r);
 | 
						|
    PreviewImage.Left := 1;
 | 
						|
    PreviewImage.Top := (ph - PreviewImage.Height) div 2;
 | 
						|
  end
 | 
						|
  else
 | 
						|
  begin
 | 
						|
    PreviewImage.Height := ph;
 | 
						|
    r := cp.height / PreviewImage.height;
 | 
						|
    PreviewImage.Width := round(cp.Width / r);
 | 
						|
    PreviewImage.Top := 1;
 | 
						|
    PreviewImage.Left := (pw - PreviewImage.Width) div 2;
 | 
						|
  end;
 | 
						|
  cp.cmap := MainCp.cmap;
 | 
						|
  AdjustScale(cp, PreviewImage.Width, PreviewImage.Height);
 | 
						|
//  zoom := MainForm.zoom;
 | 
						|
//  cp.zoom := zoom;
 | 
						|
  Resetting := True; // So the preview doesn't get drawn with these changes..
 | 
						|
  scrollGamma.Position := trunc(cp.Gamma * 100);
 | 
						|
  scrollBrightness.Position := trunc(cp.Brightness * 100);
 | 
						|
  scrollVibrancy.Position := trunc(cp.vibrancy * 100);
 | 
						|
  scrollZoom.Position := trunc(cp.zoom * 100);
 | 
						|
  if (abs(cp.Center[0]) < 1000) and (abs(cp.Center[1]) < 1000) then begin
 | 
						|
    scrollCenterX.Position := trunc(cp.Center[0] * 100);
 | 
						|
    scrollCenterY.Position := trunc(cp.Center[1] * 100);
 | 
						|
  end else begin
 | 
						|
    scrollCenterX.Position := 0;
 | 
						|
    scrollCenterY.Position := 0;
 | 
						|
  end;
 | 
						|
  ColorPanel.color := cp.background[2] shl 16 +
 | 
						|
    cp.background[1] shl 8 + cp.background[0];
 | 
						|
  Resetting := False;
 | 
						|
  DrawPreview;
 | 
						|
end;
 | 
						|
 | 
						|
procedure TAdjustForm.UpdateFlame;
 | 
						|
begin
 | 
						|
  MainForm.StopThread;
 | 
						|
  MainForm.UpdateUndo;
 | 
						|
  MainCp.Copy(cp);
 | 
						|
//  MainCp.cmap := cmap;
 | 
						|
//  MainForm.zoom := zoom;
 | 
						|
//  MainForm.Center[0] := Center[0];
 | 
						|
//  MainForm.Center[1] := Center[1];
 | 
						|
  if EditForm.Visible then EditForm.UpdateDisplay;
 | 
						|
  if MutateForm.Visible then MutateForm.UpdateDisplay;
 | 
						|
  MainForm.RedrawTimer.enabled := true;
 | 
						|
end;
 | 
						|
 | 
						|
procedure TAdjustForm.DrawPreview;
 | 
						|
begin
 | 
						|
  if not Resetting then begin
 | 
						|
    Render.Stop;
 | 
						|
//    AdjustScale(cp, PreviewImage.Width, PreviewImage.Height);
 | 
						|
    cp.sample_density := PreviewDensity;
 | 
						|
    cp.spatial_oversample := defOversample;
 | 
						|
    cp.spatial_filter_radius := defFilterRadius;
 | 
						|
//    cp.Zoom := Zoom;
 | 
						|
//    cp.center[0] := Center[0];
 | 
						|
//    cp.center[1] := Center[1];
 | 
						|
    Render.Compatibility := compatibility;
 | 
						|
    Render.SetCP(cp);
 | 
						|
    Render.Render;
 | 
						|
    BM.Assign(Render.GetImage);
 | 
						|
    PreviewImage.Picture.Graphic := bm;
 | 
						|
  end;
 | 
						|
end;
 | 
						|
 | 
						|
procedure TAdjustForm.FormCreate(Sender: TObject);
 | 
						|
begin
 | 
						|
  bm := TbitMap.Create;
 | 
						|
  cp := TControlPoint.Create;
 | 
						|
  Render := TRenderer.Create;
 | 
						|
  case AdjustPrevQual of
 | 
						|
    0: begin
 | 
						|
        mnuLowQuality.Checked := true;
 | 
						|
        PreviewDensity := prevLowQuality;
 | 
						|
      end;
 | 
						|
    1: begin
 | 
						|
        mnuMediumQuality.Checked := true;
 | 
						|
        PreviewDensity := prevMediumQuality;
 | 
						|
      end;
 | 
						|
    2: begin
 | 
						|
        mnuHighQuality.Checked := true;
 | 
						|
        PreviewDensity := prevHighQuality;
 | 
						|
      end;
 | 
						|
  end;
 | 
						|
end;
 | 
						|
 | 
						|
procedure TAdjustForm.FormClose(Sender: TObject; var Action: TCloseAction);
 | 
						|
var
 | 
						|
  Registry: TRegistry;
 | 
						|
begin
 | 
						|
  Render.Stop;
 | 
						|
  { Write position to registry }
 | 
						|
  Registry := TRegistry.Create;
 | 
						|
  try
 | 
						|
    Registry.RootKey := HKEY_CURRENT_USER;
 | 
						|
    if Registry.OpenKey('\Software\' + APP_NAME + '\Forms\Adjust', True) then
 | 
						|
    begin
 | 
						|
      Registry.WriteInteger('Top', AdjustForm.Top);
 | 
						|
      Registry.WriteInteger('Left', AdjustForm.Left);
 | 
						|
    end;
 | 
						|
  finally
 | 
						|
    Registry.Free;
 | 
						|
  end;
 | 
						|
//  bStop := True;
 | 
						|
end;
 | 
						|
 | 
						|
procedure TAdjustForm.FormDestroy(Sender: TObject);
 | 
						|
begin
 | 
						|
  bm.free;
 | 
						|
  cp.free;
 | 
						|
  Render.free;
 | 
						|
end;
 | 
						|
 | 
						|
procedure TAdjustForm.btnOKClick(Sender: TObject);
 | 
						|
begin
 | 
						|
  ModalResult := mrOK;
 | 
						|
end;
 | 
						|
 | 
						|
procedure TAdjustForm.btnCancelClick(Sender: TObject);
 | 
						|
begin
 | 
						|
  ModalResult := mrCancel;
 | 
						|
end;
 | 
						|
 | 
						|
procedure TAdjustForm.btnCanelClick(Sender: TObject);
 | 
						|
begin
 | 
						|
  ModalResult := mrCancel;
 | 
						|
end;
 | 
						|
 | 
						|
procedure TAdjustForm.FormShow(Sender: TObject);
 | 
						|
var
 | 
						|
  Registry: TRegistry;
 | 
						|
begin
 | 
						|
  if LimitVibrancy then scrollVibrancy.Max := 100 else scrollVibrancy.Max := 300;
 | 
						|
  { Read posution from registry }
 | 
						|
  Registry := TRegistry.Create;
 | 
						|
  try
 | 
						|
    Registry.RootKey := HKEY_CURRENT_USER;
 | 
						|
    if Registry.OpenKey('Software\' + APP_NAME + '\Forms\Adjust', False) then
 | 
						|
    begin
 | 
						|
      if Registry.ValueExists('Left') then
 | 
						|
        AdjustForm.Left := Registry.ReadInteger('Left');
 | 
						|
      if Registry.ValueExists('Top') then
 | 
						|
        AdjustForm.Top := Registry.ReadInteger('Top');
 | 
						|
    end;
 | 
						|
    Registry.CloseKey;
 | 
						|
  finally
 | 
						|
    Registry.Free;
 | 
						|
  end;
 | 
						|
end;
 | 
						|
 | 
						|
procedure TAdjustForm.mnuLowQualityClick(Sender: TObject);
 | 
						|
begin
 | 
						|
  mnuLowQuality.Checked := True;
 | 
						|
  PreviewDensity := prevLowQuality;
 | 
						|
  AdjustPrevQual := 0;
 | 
						|
  DrawPreview;
 | 
						|
end;
 | 
						|
 | 
						|
procedure TAdjustForm.mnuMediumQualityClick(Sender: TObject);
 | 
						|
begin
 | 
						|
  mnuMediumQuality.Checked := True;
 | 
						|
  PreviewDensity := prevMediumQuality;
 | 
						|
  AdjustPrevQual := 1;
 | 
						|
  DrawPreview;
 | 
						|
end;
 | 
						|
 | 
						|
procedure TAdjustForm.mnuHighQualityClick(Sender: TObject);
 | 
						|
begin
 | 
						|
  mnuHighQuality.Checked := True;
 | 
						|
  PreviewDensity := prevHighQuality;
 | 
						|
  AdjustPrevQual := 2;
 | 
						|
  DrawPreview;
 | 
						|
end;
 | 
						|
 | 
						|
procedure TAdjustForm.txtZoomKeyPress(Sender: TObject; var Key: Char);
 | 
						|
var v: integer;
 | 
						|
begin
 | 
						|
  if key = #13 then
 | 
						|
  begin
 | 
						|
    key := #0;
 | 
						|
    try
 | 
						|
      v := Trunc(StrToFloat(txtZoom.Text) * 100);
 | 
						|
      if v > scrollZoom.Max then v := scrollZoom.Max;
 | 
						|
      if v < scrollZoom.Min then v := scrollZoom.Min;
 | 
						|
      if v <> ScrollZoom.Position then begin
 | 
						|
        ScrollZoom.Position := v;
 | 
						|
        UpdateFlame;
 | 
						|
      end;
 | 
						|
    except on EConvertError do
 | 
						|
    end;
 | 
						|
  end;
 | 
						|
end;
 | 
						|
 | 
						|
procedure TAdjustForm.txtZoomExit(Sender: TObject);
 | 
						|
var
 | 
						|
  v: integer;
 | 
						|
begin
 | 
						|
  try
 | 
						|
    v := Trunc(StrToFloat(txtZoom.Text) * 100);
 | 
						|
    if v > scrollZoom.Max then v := scrollZoom.Max;
 | 
						|
    if v < scrollZoom.Min then v := scrollZoom.Min;
 | 
						|
    if v <> ScrollZoom.Position then begin
 | 
						|
      ScrollZoom.Position := v;
 | 
						|
      UpdateFlame;
 | 
						|
    end;
 | 
						|
  except on EConvertError do
 | 
						|
      txtZoom.Text := FloatToStr(cp.zoom)
 | 
						|
  end;
 | 
						|
end;
 | 
						|
 | 
						|
procedure TAdjustForm.txtCenterXKeyPress(Sender: TObject; var Key: Char);
 | 
						|
var
 | 
						|
  v: integer;
 | 
						|
begin
 | 
						|
  if key = #13 then
 | 
						|
  begin
 | 
						|
    key := #0;
 | 
						|
    try
 | 
						|
      v := Trunc(StrToFloat(txtCenterX.Text) * 100);
 | 
						|
      if v > scrollCenterX.Max then v := scrollCenterX.Max;
 | 
						|
      if v < scrollCenterX.Min then v := scrollCenterX.Min;
 | 
						|
      ScrollCenterX.Position := v;
 | 
						|
    except on EConvertError do
 | 
						|
    end;
 | 
						|
  end;
 | 
						|
end;
 | 
						|
 | 
						|
procedure TAdjustForm.txtCenterXExit(Sender: TObject);
 | 
						|
var
 | 
						|
  v: integer;
 | 
						|
begin
 | 
						|
  try
 | 
						|
    v := Trunc(StrToFloat(txtCenterX.Text) * 100);
 | 
						|
    if v > scrollCenterX.Max then v := scrollCenterX.Max;
 | 
						|
    if v < scrollCenterX.Min then v := scrollCenterX.Min;
 | 
						|
    ScrollCenterX.Position := v;
 | 
						|
    UpdateFlame;
 | 
						|
  except on EConvertError do
 | 
						|
      txtCenterX.Text := FloatToStr(cp.center[0]);
 | 
						|
  end;
 | 
						|
end;
 | 
						|
 | 
						|
procedure TAdjustForm.txtCenterYKeyPress(Sender: TObject; var Key: Char);
 | 
						|
var
 | 
						|
  v: integer;
 | 
						|
begin
 | 
						|
  if key = #13 then
 | 
						|
  begin
 | 
						|
    key := #0;
 | 
						|
    try
 | 
						|
      v := Trunc(StrToFloat(txtCenterY.Text) * 100);
 | 
						|
      if v > ScrollCenterY.Max then v := ScrollCenterY.Max;
 | 
						|
      if v < ScrollCenterY.Min then v := ScrollCenterY.Min;
 | 
						|
      ScrollCenterY.Position := v;
 | 
						|
      UpdateFlame;
 | 
						|
    except on EConvertError do
 | 
						|
    end;
 | 
						|
  end;
 | 
						|
end;
 | 
						|
 | 
						|
procedure TAdjustForm.txtCenterYExit(Sender: TObject);
 | 
						|
var
 | 
						|
  v: integer;
 | 
						|
begin
 | 
						|
  try
 | 
						|
    v := Trunc(StrToFloat(txtCenterY.Text) * 100);
 | 
						|
    if v > ScrollCenterY.Max then v := ScrollCenterY.Max;
 | 
						|
    if v < ScrollCenterY.Min then v := ScrollCenterY.Min;
 | 
						|
    ScrollCenterY.Position := v;
 | 
						|
    UpdateFlame;
 | 
						|
  except on EConvertError do
 | 
						|
      txtCenterY.Text := FloatToStr(cp.center[1]);
 | 
						|
  end;
 | 
						|
end;
 | 
						|
 | 
						|
procedure TAdjustForm.txtGammaExit(Sender: TObject);
 | 
						|
var
 | 
						|
  v: integer;
 | 
						|
begin
 | 
						|
  try
 | 
						|
    v := Trunc(StrToFloat(txtGamma.Text) * 100);
 | 
						|
    if v > scrollGamma.Max then v := scrollGamma.Max;
 | 
						|
    if v < scrollGamma.Min then v := scrollGamma.Min;
 | 
						|
    ScrollGamma.Position := v;
 | 
						|
    UpdateFlame;
 | 
						|
  except on EConvertError do
 | 
						|
      txtGamma.Text := FloatToStr(cp.gamma);
 | 
						|
  end;
 | 
						|
end;
 | 
						|
 | 
						|
procedure TAdjustForm.txtGammaKeyPress(Sender: TObject; var Key: Char);
 | 
						|
var
 | 
						|
  v: integer;
 | 
						|
begin
 | 
						|
  if key = #13 then
 | 
						|
  begin
 | 
						|
    key := #0;
 | 
						|
    try
 | 
						|
      v := Trunc(StrToFloat(txtGamma.Text) * 100);
 | 
						|
      if v > scrollGamma.Max then v := scrollGamma.Max;
 | 
						|
      if v < scrollGamma.Min then v := scrollGamma.Min;
 | 
						|
      ScrollGamma.Position := v;
 | 
						|
      UpdateFlame;
 | 
						|
    except on EConvertError do
 | 
						|
    end;
 | 
						|
  end;
 | 
						|
end;
 | 
						|
 | 
						|
procedure TAdjustForm.txtBrightnessExit(Sender: TObject);
 | 
						|
var
 | 
						|
  v: integer;
 | 
						|
begin
 | 
						|
  try
 | 
						|
    v := Trunc(StrToFloat(txtBrightness.Text) * 100);
 | 
						|
    if v > scrollBrightness.Max then v := scrollBrightness.Max;
 | 
						|
    if v < scrollBrightness.Min then v := scrollBrightness.Min;
 | 
						|
    ScrollBrightness.Position := v;
 | 
						|
    UpdateFlame;
 | 
						|
  except on EConvertError do
 | 
						|
      txtBrightness.Text := FloatToStr(cp.brightness);
 | 
						|
  end;
 | 
						|
end;
 | 
						|
 | 
						|
procedure TAdjustForm.txtBrightnessKeyPress(Sender: TObject;
 | 
						|
  var Key: Char);
 | 
						|
var
 | 
						|
  v: integer;
 | 
						|
begin
 | 
						|
  if key = #13 then
 | 
						|
  begin
 | 
						|
    key := #0;
 | 
						|
    try
 | 
						|
      v := Trunc(StrToFloat(txtBrightness.Text) * 100);
 | 
						|
      if v > scrollBrightness.Max then v := scrollBrightness.Max;
 | 
						|
      if v < scrollBrightness.Min then v := scrollBrightness.Min;
 | 
						|
      ScrollBrightness.Position := v;
 | 
						|
      UpdateFlame;
 | 
						|
    except on EConvertError do
 | 
						|
    end;
 | 
						|
  end;
 | 
						|
end;
 | 
						|
 | 
						|
procedure TAdjustForm.txtVibrancyKeyPress(Sender: TObject; var Key: Char);
 | 
						|
var
 | 
						|
  v: integer;
 | 
						|
begin
 | 
						|
  if key = #13 then
 | 
						|
  begin
 | 
						|
    key := #0;
 | 
						|
    try
 | 
						|
      v := Trunc(StrToFloat(txtVibrancy.Text) * 100);
 | 
						|
      if v > scrollVibrancy.Max then v := scrollVibrancy.Max;
 | 
						|
      if v < scrollVibrancy.Min then v := scrollVibrancy.Min;
 | 
						|
      ScrollVibrancy.Position := v;
 | 
						|
      UpdateFlame;
 | 
						|
    except on EConvertError do
 | 
						|
    end;
 | 
						|
  end;
 | 
						|
end;
 | 
						|
 | 
						|
procedure TAdjustForm.txtVibrancyExit(Sender: TObject);
 | 
						|
var
 | 
						|
  v: integer;
 | 
						|
begin
 | 
						|
  try
 | 
						|
    v := Trunc(StrToFloat(txtVibrancy.Text) * 100);
 | 
						|
    if v > scrollVibrancy.Max then v := scrollVibrancy.Max;
 | 
						|
    if v < scrollVibrancy.Min then v := scrollVibrancy.Min;
 | 
						|
    ScrollVibrancy.Position := v;
 | 
						|
    UpdateFlame;
 | 
						|
  except on EConvertError do
 | 
						|
      txtVibrancy.Text := FloatToStr(cp.Vibrancy);
 | 
						|
  end;
 | 
						|
end;
 | 
						|
 | 
						|
procedure TAdjustForm.scrollZoomScroll(Sender: TObject;
 | 
						|
  ScrollCode: TScrollCode; var ScrollPos: Integer);
 | 
						|
begin
 | 
						|
  if ScrollCode = scEndScroll then UpdateFlame;
 | 
						|
end;
 | 
						|
 | 
						|
procedure TAdjustForm.scrollCenterXScroll(Sender: TObject;
 | 
						|
  ScrollCode: TScrollCode; var ScrollPos: Integer);
 | 
						|
begin
 | 
						|
  if ScrollCode = scEndScroll then UpdateFlame;
 | 
						|
end;
 | 
						|
 | 
						|
procedure TAdjustForm.scrollCenterYScroll(Sender: TObject;
 | 
						|
  ScrollCode: TScrollCode; var ScrollPos: Integer);
 | 
						|
begin
 | 
						|
  if ScrollCode = scEndScroll then UpdateFlame;
 | 
						|
end;
 | 
						|
 | 
						|
procedure TAdjustForm.scrollGammaScroll(Sender: TObject;
 | 
						|
  ScrollCode: TScrollCode; var ScrollPos: Integer);
 | 
						|
begin
 | 
						|
  if ScrollCode = scEndScroll then UpdateFlame;
 | 
						|
end;
 | 
						|
 | 
						|
procedure TAdjustForm.scrollBrightnessScroll(Sender: TObject;
 | 
						|
  ScrollCode: TScrollCode; var ScrollPos: Integer);
 | 
						|
begin
 | 
						|
  if ScrollCode = scEndScroll then UpdateFlame;
 | 
						|
end;
 | 
						|
 | 
						|
procedure TAdjustForm.scrollVibrancyScroll(Sender: TObject;
 | 
						|
  ScrollCode: TScrollCode; var ScrollPos: Integer);
 | 
						|
begin
 | 
						|
  if ScrollCode = scEndScroll then UpdateFlame;
 | 
						|
end;
 | 
						|
 | 
						|
procedure TAdjustForm.scrollVibrancyChange(Sender: TObject);
 | 
						|
begin
 | 
						|
  cp.Vibrancy := ScrollVibrancy.Position / 100;
 | 
						|
  txtVibrancy.text := FloatToStr(cp.Vibrancy);
 | 
						|
  DrawPreview;
 | 
						|
end;
 | 
						|
 | 
						|
procedure TAdjustForm.scrollGammaChange(Sender: TObject);
 | 
						|
begin
 | 
						|
  cp.Gamma := scrollGamma.Position / 100;
 | 
						|
  txtGamma.text := FloatToStr(cp.Gamma);
 | 
						|
  DrawPreview;
 | 
						|
end;
 | 
						|
 | 
						|
procedure TAdjustForm.scrollBrightnessChange(Sender: TObject);
 | 
						|
begin
 | 
						|
  cp.Brightness := ScrollBrightness.Position / 100;
 | 
						|
  txtBrightness.text := FloatToStr(cp.Brightness);
 | 
						|
  DrawPreview;
 | 
						|
end;
 | 
						|
 | 
						|
procedure TAdjustForm.scrollZoomChange(Sender: TObject);
 | 
						|
begin
 | 
						|
  cp.zoom := scrollZoom.Position / 100;
 | 
						|
  txtZoom.text := FloatToStr(cp.zoom);
 | 
						|
  DrawPreview;
 | 
						|
end;
 | 
						|
 | 
						|
procedure TAdjustForm.scrollCenterXChange(Sender: TObject);
 | 
						|
begin
 | 
						|
  cp.center[0] := scrollCenterX.Position / 100;
 | 
						|
  txtCenterX.text := FloatToStr(cp.center[0]);
 | 
						|
  DrawPreview;
 | 
						|
end;
 | 
						|
 | 
						|
procedure TAdjustForm.scrollCenterYChange(Sender: TObject);
 | 
						|
begin
 | 
						|
  cp.center[1] := scrollCenterY.Position / 100;
 | 
						|
  txtCentery.text := FloatToStr(cp.center[1]);
 | 
						|
  DrawPreview;
 | 
						|
end;
 | 
						|
 | 
						|
procedure TAdjustForm.ColorPanelClick(Sender: TObject);
 | 
						|
var
 | 
						|
  col: Longint;
 | 
						|
begin
 | 
						|
  ColorDialog.Color := COlorPanel.Color;
 | 
						|
  if ColorDialog.Execute then
 | 
						|
  begin
 | 
						|
    ColorPanel.Color := ColorDialog.Color;
 | 
						|
    col := ColorToRGB(ColorDialog.Color);
 | 
						|
    cp.background[0] := col and 255;
 | 
						|
    cp.background[1] := col shr 8 and 255;
 | 
						|
    cp.background[2] := col shr 16 and 255;
 | 
						|
    DrawPreview;
 | 
						|
    UpdateFlame;
 | 
						|
  end;
 | 
						|
end;
 | 
						|
 | 
						|
procedure TAdjustForm.scrollContrastScroll(Sender: TObject;
 | 
						|
  ScrollCode: TScrollCode; var ScrollPos: Integer);
 | 
						|
begin
 | 
						|
  if ScrollCode = scEndScroll then UpdateFlame;
 | 
						|
end;
 | 
						|
 | 
						|
end.
 | 
						|
 |