BSOne.SFC/EM.Lib/ImageEn_SRC/Demos/InputOutput/CameraRaw/MAIN.PAS

167 lines
5.2 KiB
Plaintext

unit Main;
interface
uses
Windows, SysUtils, Classes, Graphics, Forms, Controls, Menus, StdCtrls, Dialogs, Buttons, Messages, ExtCtrls, ComCtrls, ImgList,
iexActions, ActnList, ieview, imageenview, StdActns, ieopensavedlg, iexBitmaps, hyieutils, hyiedefs, iesettings, iexLayers,
iexRulers;
type
TMainForm = class(TForm)
ActionList1: TActionList;
ImageEnView1: TImageEnView;
ZoomIn: TImageEnViewZoomIn;
ZoomOut: TImageEnViewZoomOut;
ZoomFullSize: TImageEnViewZoomFullSize;
ExitApp: TFileExit;
pnlLeft: TPanel;
btnOpen: TBitBtn;
btnZoomIn: TBitBtn;
BtnZoomOut: TBitBtn;
btnZoomFull: TBitBtn;
btnExit: TBitBtn;
pbrLoading: TProgressBar;
tmrReload: TTimer;
lblOptions: TLabel;
edtCamera: TEdit;
lblGamma: TLabel;
trkGamma: TTrackBar;
cmbSize: TComboBox;
lblSize: TLabel;
lblCamera: TLabel;
edtExtraParams: TEdit;
lblExtraParams: TLabel;
chkFourColorRGB: TCheckBox;
chkQuickInterpolate: TCheckBox;
chkUseAutoWB: TCheckBox;
chkUseCameraWB: TCheckBox;
chkAutoAdjustColors: TCheckBox;
procedure btnOpenClick(Sender: TObject);
procedure ControlChange(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure ImageEnView1FinishWork(Sender: TObject);
procedure ImageEnView1Progress(Sender: TObject; per: Integer);
procedure tmrReloadTimer(Sender: TObject);
private
{ Private declarations }
fFilename: string;
procedure ReloadImage;
public
{ Public declarations }
end;
var
MainForm: TMainForm;
implementation
{$R *.DFM}
{$R WindowsTheme.res}
uses
imageenio, ievision;
const
// Items of cmbSize:
_cmbSize_Thumbnail = 0;
_cmbSize_HalfSize = 1;
_cmbSize_FullSize = 2;
procedure TMainForm.btnOpenClick(Sender: TObject);
begin
fFilename := ImageEnView1.IO.ExecuteOpenDialog( '', '', True, 0, '', '', '', ioRaw );
ReloadImage;
end;
procedure TMainForm.ControlChange(Sender: TObject);
begin
// Reset the timer
tmrReload.Enabled := False;
tmrReload.Enabled := True;
end;
procedure TMainForm.FormCreate(Sender: TObject);
begin
// Common settings for TImageEnView
with ImageEnView1 do
begin
AutoShrink := True; // Make the image fit within the window
BorderStyle := bsNone; // Normally don't require a 3D border
ZoomFilter := rfFastLinear; // Use better quality drawing when the image is not 100%, Use rfFastLinear for best speed or rfLanczos3 for best quality
MouseInteract := [miScroll]; // What action should the mouse do?
LegacyBitmap := False; // Support bigger files and multithreading
end;
end;
procedure TMainForm.FormShow(Sender: TObject);
begin
if IELibAvailable = False then
MessageDlg( 'The IELIB Plug-In DLL could not be found in the application folder. Please copy it from the ImageEn installation folder.', mtInformation, [mbOK], 0);
// Read default properties
edtExtraParams.Text := ImageEnView1.IO.Params.RAW_ExtraParams;
chkFourColorRGB.checked := ImageEnView1.IO.Params.RAW_FourColorRGB;
chkQuickInterpolate.checked := ImageEnView1.IO.Params.RAW_QuickInterpolate;
chkUseAutoWB.checked := ImageEnView1.IO.Params.RAW_UseAutoWB;
chkUseCameraWB.checked := ImageEnView1.IO.Params.RAW_UseCameraWB;
chkAutoAdjustColors.checked := ImageEnView1.IO.Params.RAW_AutoAdjustColors;
trkGamma.Position := Round( ImageEnView1.IO.Params.RAW_Gamma * 100 );
cmbSize.ItemIndex := _cmbSize_FullSize;
edtCamera.Text := '';
end;
procedure TMainForm.ImageEnView1FinishWork(Sender: TObject);
begin
Cursor := crDefault;
Caption := 'ImageEn Digital Camera Raw Demo - www.ImageEn.com';
pbrLoading.Visible := False;
end;
procedure TMainForm.ImageEnView1Progress(Sender: TObject; per: Integer);
begin
Caption := format('Loading - %d%%', [per]);
Cursor := crHourglass;
pbrLoading.Position := per;
pbrLoading.Visible := True;
end;
procedure TMainForm.ReloadImage;
begin
tmrReload.Enabled := False;
if fFilename = '' then
exit;
// Set load properties
ImageEnView1.IO.Params.RAW_ExtraParams := edtExtraParams.Text;
ImageEnView1.IO.Params.RAW_FourColorRGB := chkFourColorRGB.checked;
ImageEnView1.IO.Params.RAW_QuickInterpolate := chkQuickInterpolate.checked;
ImageEnView1.IO.Params.RAW_UseAutoWB := chkUseAutoWB.checked;
ImageEnView1.IO.Params.RAW_UseCameraWB := chkUseCameraWB.checked;
ImageEnView1.IO.Params.RAW_AutoAdjustColors := chkAutoAdjustColors.checked;
ImageEnView1.IO.Params.RAW_Gamma := trkGamma.Position / 100;
ImageEnView1.IO.Params.GetThumbnail := cmbSize.ItemIndex = _cmbSize_Thumbnail; // same as setting Params.RAW_GetExifThumbnail
ImageEnView1.IO.Params.RAW_HalfSize := cmbSize.ItemIndex = _cmbSize_HalfSize;
// Load file
ImageEnView1.IO.LoadFromFileRaw( fFilename );
if ImageEnView1.IO.Aborting then
raise Exception.create( 'A loading error was encountered.' );
ImageEnView1.AutoShrink := True;
edtCamera.Text := ImageEnView1.IO.Params.RAW_Camera;
end;
procedure TMainForm.tmrReloadTimer(Sender: TObject);
begin
ReloadImage;
end;
end.