167 lines
5.2 KiB
Plaintext
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.
|