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.