BSOne.SFC/EM.Lib/ImageEn_SRC/Demos/ImageEditing/SoftShadow/umain.pas

110 lines
2.6 KiB
Plaintext

unit umain;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Menus, StdCtrls, ieview, imageenview, ExtCtrls, ComCtrls, hyieutils, iexBitmaps,
hyiedefs, iesettings, iexLayers, iexRulers;
type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
File1: TMenuItem;
Open1: TMenuItem;
Save1: TMenuItem;
N1: TMenuItem;
Exit1: TMenuItem;
Panel1: TPanel;
ImageEnView1: TImageEnView;
Label1: TLabel;
Button1: TButton;
Edit1: TEdit;
UpDown1: TUpDown;
Label2: TLabel;
Edit2: TEdit;
UpDown2: TUpDown;
Label3: TLabel;
Edit3: TEdit;
UpDown3: TUpDown;
Edit4: TMenuItem;
Background1: TMenuItem;
ColorDialog1: TColorDialog;
procedure Button1Click(Sender: TObject);
procedure Open1Click(Sender: TObject);
procedure Save1Click(Sender: TObject);
procedure Background1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses imageenproc;
{$R *.DFM}
{$R WindowsTheme.res}
// Apply
procedure TForm1.Button1Click(Sender: TObject);
begin
ImageEnView1.Proc.Undo; // get original image
ImageEnView1.Proc.AddSoftShadow(StrToFloat(Edit1.text),
StrToIntDef(Edit2.Text, 0),
StrToIntDef(Edit3.text, 0), true, clBlack);
end;
// File Open
procedure TForm1.Open1Click(Sender: TObject);
begin
with ImageEnView1.IO do
LoadFromFile(ExecuteOpenDialog('', '', false, 1, ''));
ImageEnView1.Proc.SaveUndo(ieuImage); // save image in undo list (to allow multiple changes of shadow parameters)
// Make zoom 90% of fit so shadow is visible
ImageEnView1.Fit();
ImageEnView1.Zoom := ImageEnView1.Zoom * 0.90;
end;
// File Save
procedure TForm1.Save1Click(Sender: TObject);
var
filename, ext: string;
begin
filename := ImageEnView1.Io.ExecuteSaveDialog('', '', false, 0, '');
if filename <> '' then
begin
ext := lowercase(ExtractFileExt(filename));
if not ((ext = '.png') or (ext = '.tga')) then
begin
// alpha channel not supported by jpeg, bmp, etc...we need to merge alpha
ImageEnView1.Proc.SaveUndo(ieuImage); // save all
ImageEnView1.RemoveAlphaChannel(true); // remove alpha channel
ImageEnView1.IO.SaveToFile(filename);
ImageEnView1.Proc.Undo; // reget alpha channel
end
else
// alpha channel supported, just save
ImageEnView1.IO.SaveToFile(filename);
end;
end;
// change background
procedure TForm1.Background1Click(Sender: TObject);
begin
ColorDialog1.Color := ImageEnView1.Background;
if ColorDialog1.Execute then
ImageEnView1.Background := ColorDialog1.Color;
end;
end.