BSOne.SFC/EM.Lib/ImageEn_SRC/Demos/InputOutput/IPTC/umain.pas

105 lines
2.5 KiB
Plaintext

unit umain;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Grids, ieview, ImageEnView, FileCtrl, StdCtrls, ImageEnIO, ComCtrls,
ExtCtrls, hyieutils, iexBitmaps, hyiedefs, iesettings, iexLayers,
iexRulers;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
Panel2: TPanel;
ImageEnView1: TImageEnView;
ProgressBar1: TProgressBar;
DriveComboBox1: TDriveComboBox;
DirectoryListBox1: TDirectoryListBox;
FileListBox1: TFileListBox;
btnSaveChanges: TButton;
btnClearIPTC: TButton;
procedure FormCreate(Sender: TObject);
procedure FileListBox1Change(Sender: TObject);
procedure ImageEnView1Progress(Sender: TObject; per: Integer);
procedure btnSaveChangesClick(Sender: TObject);
procedure btnClearIPTCClick(Sender: TObject);
procedure ImageEnView1FinishWork(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
{$R WindowsTheme.res}
uses
iexMetaHelpers;
// Initialize properties grid
procedure TForm1.FormCreate(Sender: TObject);
begin
StringGrid1.NewGridForIPTC;
end;
// Load a file
procedure TForm1.FileListBox1Change(Sender: TObject);
begin
if IsKnownFormat(FileListBox1.FileName) then
begin
// we need only a thumbnail (fast load)
ImageEnView1.io.Params.Width := ImageEnView1.Width;
ImageEnView1.io.Params.Height := ImageEnView1.Height;
ImageEnView1.io.Params.JPEG_Scale := ioJPEG_AUTOCALC;
ImageEnView1.io.LoadFromFile(FileListBox1.FileName);
// read IPTC
StringGrid1.ReadGridFromIPTC(ImageEnView1.io.Params);
end;
end;
// Show progress
procedure TForm1.ImageEnView1Progress(Sender: TObject; per: Integer);
begin
ProgressBar1.Position := per;
end;
// Reset progress
procedure TForm1.ImageEnView1FinishWork(Sender: TObject);
begin
ProgressBar1.Position := 0;
end;
// Save changes
procedure TForm1.btnSaveChangesClick(Sender: TObject);
var
bIPTCChanged: Boolean;
begin
bIPTCChanged := StringGrid1.WriteGridToIPTC( ImageEnView1.IO.Params );
if bIPTCChanged then
case ImageEnView1.io.Params.FileType of
ioJPEG:
// inject iptc in jpeg
ImageEnView1.io.InjectJpegIPTC(FileListBox1.FileName);
ioTIFF:
// save iptc in TIFF
ImageEnView1.io.SaveToFile(FileListBox1.FileName);
end;
end;
// Clear grid
procedure TForm1.btnClearIPTCClick(Sender: TObject);
begin
ImageEnView1.io.Params.IPTC_Info.Clear;
StringGrid1.ClearGridFields;
end;
end.