745 lines
25 KiB
Plaintext
745 lines
25 KiB
Plaintext
unit Unit1;
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows, Messages, SysUtils, {$IfNDef VER130} Variants, {$EndIf} Classes, Graphics, Controls, Forms,
|
|
Dialogs, ExtCtrls, Buttons, StdCtrls, ComCtrls, IEView, iexBitmaps,
|
|
ImageENView, ImageEnProc, ImageEnIO, hyiedefs, hyieutils, IEOpenSaveDlg,
|
|
ievect, iesettings, iexLayers, iexRulers, FileCtrl;
|
|
|
|
type
|
|
TForm1 = class(TForm)
|
|
Panel1: TPanel;
|
|
Panel2: TPanel;
|
|
Button3: TButton;
|
|
FontDialog: TFontDialog;
|
|
ProgressBar: TProgressBar;
|
|
StatusBar: TStatusBar;
|
|
ColorDialogText: TColorDialog;
|
|
ColorDialogShadow: TColorDialog;
|
|
SaveImageEnDialog1: TSaveImageEnDialog;
|
|
Panel3: TPanel;
|
|
GroupBox2: TGroupBox;
|
|
GroupBox1: TGroupBox;
|
|
CopyrightEdit: TLabeledEdit;
|
|
CheckBoxAddFrame: TCheckBox;
|
|
ButtonAddCopyright: TButton;
|
|
CheckBoxCopyrightInMargin: TCheckBox;
|
|
Panel5: TPanel;
|
|
Splitter1: TSplitter;
|
|
ButtonSaveAs: TButton;
|
|
Label1: TLabel;
|
|
CheckBoxAddSoftShadow: TCheckBox;
|
|
ColorBoxTextColor: TColorBox;
|
|
CheckBoxUseObjects: TCheckBox;
|
|
ImageEnVect: TImageEnVect;
|
|
Splitter2: TSplitter;
|
|
SelectRadioGroup: TRadioGroup;
|
|
ButtonMerge: TButton;
|
|
CheckBoxAntialiasText: TCheckBox;
|
|
Panel7: TPanel;
|
|
Panel8: TPanel;
|
|
GroupBox3: TGroupBox;
|
|
GroupBox4: TGroupBox;
|
|
Memo1: TMemo;
|
|
FileListBox1: TFileListBox;
|
|
DirectoryListBox1: TDirectoryListBox;
|
|
procedure FormCreate(Sender: TObject);
|
|
procedure FormDestroy(Sender: TObject);
|
|
procedure FormShow(Sender: TObject);
|
|
procedure FormKeyDown(Sender: TObject; var Key: Word;
|
|
Shift: TShiftState);
|
|
procedure Button3Click(Sender: TObject);
|
|
procedure ButtonAddCopyrightClick(Sender: TObject);
|
|
procedure ButtonSaveAsClick(Sender: TObject);
|
|
procedure ImageEnVectProgress(Sender: TObject; per: Integer);
|
|
procedure SelectRadioGroupClick(Sender: TObject);
|
|
procedure ButtonMergeClick(Sender: TObject);
|
|
procedure CheckBoxUseObjectsClick(Sender: TObject);
|
|
procedure ImageEnVectVectorialChanged(Sender: TObject);
|
|
procedure ImageEnVectImageChange(Sender: TObject);
|
|
procedure ImageEnVectClick(Sender: TObject);
|
|
procedure ImageEnVectZoomIn(Sender: TObject; var NewZoom: Double);
|
|
procedure ImageEnVectZoomOut(Sender: TObject; var NewZoom: Double);
|
|
procedure ColorBoxTextColorChange(Sender: TObject);
|
|
procedure FormActivate(Sender: TObject);
|
|
procedure CheckBoxAddSoftShadowClick(Sender: TObject);
|
|
procedure CopyrightEditChange(Sender: TObject);
|
|
procedure FileListBox1Click(Sender: TObject);
|
|
private
|
|
{ Private declarations }
|
|
FFilePath: string;
|
|
procedure UseObjects;
|
|
procedure UseGDI;
|
|
public
|
|
{ Public declarations }
|
|
end;
|
|
|
|
var
|
|
Form1: TForm1;
|
|
|
|
implementation
|
|
|
|
uses
|
|
INIFiles;
|
|
|
|
{$R *.DFM}
|
|
{$R WindowsTheme.res}
|
|
|
|
|
|
// FormCreate
|
|
procedure TForm1.FormCreate(Sender: TObject);
|
|
var
|
|
MyIniFile: TIniFile;
|
|
begin
|
|
MyIniFile := TIniFile.Create(ChangeFileExt(Application.ExeName, '.ini'));
|
|
try
|
|
Left := MyIniFile.ReadInteger('Copyright Form', 'Left', 0);
|
|
Top := MyIniFile.ReadInteger('Copyright Form', 'Top', 0);
|
|
Width := MyIniFile.ReadInteger('Copyright Form', 'Width', 1032);
|
|
Height := MyIniFile.ReadInteger('Copyright Form', 'Height', 746);
|
|
WindowState := TWindowState(MyIniFile.ReadInteger('Copyright Form', 'Window State', 0));
|
|
CopyrightEdit.Text := MyIniFile.ReadString('Copyright Form', 'Copyright', 'Copyright © 2017 William Miller, All Rights Reserved');
|
|
finally MyIniFile.Free;
|
|
end;
|
|
// set ImageEn options
|
|
ImageEnVect.SetChessboardStyle(6, bsSolid);
|
|
// mouse wheel will scroll image of 15 % of component height
|
|
ImageEnVect.MouseWheelParams.Action := iemwVScroll;
|
|
ImageEnVect.MouseWheelParams.Variation := iemwPercentage;
|
|
ImageEnVect.MouseWheelParams.Value := 15;
|
|
// set scrollbar params to match wheel
|
|
ImageEnVect.HScrollBarParams.LineStep := 15;
|
|
ImageEnVect.VScrollBarParams.LineStep := 15;
|
|
ImageEnVect.Blank;
|
|
end;
|
|
|
|
// FormDestroy
|
|
procedure TForm1.FormDestroy(Sender: TObject);
|
|
var
|
|
MyIniFile: TIniFile;
|
|
begin
|
|
MyIniFile := TIniFile.Create(ChangeFileExt(Application.ExeName, '.ini'));
|
|
try
|
|
MyIniFile.WriteInteger('Copyright Form', 'Left', Left);
|
|
MyIniFile.WriteInteger('Copyright Form', 'Top', Top);
|
|
MyIniFile.WriteInteger('Copyright Form', 'Width', Width);
|
|
MyIniFile.WriteInteger('Copyright Form', 'Height', Height);
|
|
MyIniFile.WriteInteger('Copyright Form', 'Window State', Integer(TWindowState(WindowState)));
|
|
MyIniFile.WriteString('Copyright Form', 'Copyright', CopyrightEdit.Text);
|
|
finally MyIniFile.Free;
|
|
end;
|
|
end;
|
|
|
|
// FormShow
|
|
procedure TForm1.FormShow(Sender: TObject);
|
|
begin
|
|
ButtonAddCopyright.Enabled := not ImageEnVect.IsEmpty;
|
|
ButtonMerge.Enabled := ImageEnVect.ObjectsCount > 0;
|
|
ButtonSaveAs.Enabled := not ImageEnVect.IsEmpty;
|
|
end;
|
|
|
|
// FormActivate - show message
|
|
procedure TForm1.FormActivate(Sender: TObject);
|
|
const
|
|
Show_Advice = True;
|
|
begin
|
|
ImageEnVect.MaxSelectionDistance := 32;
|
|
|
|
if Show_Advice then
|
|
ShowMessage('This demoinstrates how to add text and frames to an image using GDI or vectorial objects.' + #10#13 +
|
|
'The demo optionally adds several frames (using FrameRect GDI) around the image and' + #10#13 +
|
|
'optionally places copyright text in the margin of the image or on the image itself.' + #10#13 + #10#13 +
|
|
'"Copyright text" added with oubects may also have shadowed text and may be antialiased.' + #10#13 +
|
|
'If "Use Objects" is checked then the copyright is added using a vectotial text object. The text' + #10#13 +
|
|
'may be resized and placed anywhere on the image. If you merge the text into the image' + #10#13 +
|
|
'it may no longer be edited.');
|
|
end;
|
|
|
|
// FormKeyDown - trap ESC and DEL keys
|
|
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
|
|
Shift: TShiftState);
|
|
begin
|
|
if Key = vk_ESCAPE then
|
|
begin
|
|
Close;
|
|
end;
|
|
if Key = vk_DELETE then
|
|
while ImageENVect.SelObjectsCount > 0 do
|
|
ImageENVect.RemoveObject(ImageENVect.SelObjects[0]);
|
|
end;
|
|
|
|
// Close
|
|
procedure TForm1.Button3Click(Sender: TObject);
|
|
begin
|
|
Close;
|
|
end;
|
|
|
|
// UseObjects
|
|
procedure TForm1.UseObjects;
|
|
var
|
|
rc: TRect;
|
|
ow, oh: integer;
|
|
begin
|
|
Screen.Cursor := crHourglass;
|
|
try
|
|
ow := ImageEnVect.IEBitmap.Width;
|
|
oh := ImageEnVect.IEBitmap.Height;
|
|
StatusBar.Panels[2].Text := IntToStr(ImageEnVect.IEBitmap.Width) + ' x ' +
|
|
IntToStr(ImageEnVect.IEBitmap.Height);
|
|
StatusBar.Panels[1].Text := 'Drawing...';
|
|
StatusBar.Update;
|
|
if CheckBoxAddFrame.Checked then
|
|
begin
|
|
StatusBar.Panels[1].Text := 'Resizing the image...';
|
|
StatusBar.Update;
|
|
ImageEnVect.Proc.ImageResize(ImageEnVect.IEBitmap.Width + 160, ImageEnVect.IEBitmap.Height + 160, iehCenter, ievCenter);
|
|
// draw a rect
|
|
with ImageEnVect do
|
|
begin
|
|
// white rect
|
|
IEBitmap.Canvas.Pen.Width := 10;
|
|
IEBitmap.Canvas.Pen.Color := clWhite;
|
|
IEBitmap.Canvas.Brush.Color := clWhite;
|
|
rc := Rect(80, 80, ow + 80, oh + 80);
|
|
IEBitmap.Canvas.FrameRect(rc);
|
|
// white rect
|
|
IEBitmap.Canvas.Pen.Width := 10;
|
|
IEBitmap.Canvas.Pen.Color := clWhite;
|
|
IEBitmap.Canvas.Brush.Color := clWhite;
|
|
rc := Rect(79, 79, ow + 81, oh + 81);
|
|
IEBitmap.Canvas.FrameRect(rc);
|
|
// white rect
|
|
IEBitmap.Canvas.Pen.Width := 10;
|
|
IEBitmap.Canvas.Pen.Color := clWhite;
|
|
IEBitmap.Canvas.Brush.Color := clWhite;
|
|
rc := Rect(78, 78, ow + 82, oh + 82);
|
|
IEBitmap.Canvas.FrameRect(rc);
|
|
// black rect
|
|
IEBitmap.Canvas.Pen.Width := 10;
|
|
IEBitmap.Canvas.Pen.Color := clBlack;
|
|
IEBitmap.Canvas.Brush.Color := clBlack;
|
|
rc := Rect(77, 77, ow + 83, oh + 83);
|
|
IEBitmap.Canvas.FrameRect(rc);
|
|
// black rect
|
|
IEBitmap.Canvas.Pen.Width := 10;
|
|
IEBitmap.Canvas.Pen.Color := clBlack;
|
|
IEBitmap.Canvas.Brush.Color := clBlack;
|
|
rc := Rect(76, 76, ow + 84, oh + 84);
|
|
IEBitmap.Canvas.FrameRect(rc);
|
|
// black rect
|
|
IEBitmap.Canvas.Pen.Width := 10;
|
|
IEBitmap.Canvas.Pen.Color := clBlack;
|
|
IEBitmap.Canvas.Brush.Color := clBlack;
|
|
rc := Rect(75, 75, ow + 85, oh + 85);
|
|
IEBitmap.Canvas.FrameRect(rc);
|
|
// black rect
|
|
IEBitmap.Canvas.Pen.Width := 10;
|
|
IEBitmap.Canvas.Pen.Color := clBlack;
|
|
IEBitmap.Canvas.Brush.Color := clBlack;
|
|
rc := Rect(74, 74, ow + 86, oh + 86);
|
|
IEBitmap.Canvas.FrameRect(rc);
|
|
// black rect
|
|
IEBitmap.Canvas.Pen.Width := 10;
|
|
IEBitmap.Canvas.Pen.Color := clBlack;
|
|
IEBitmap.Canvas.Brush.Color := clBlack;
|
|
rc := Rect(73, 73, ow + 87, oh + 87);
|
|
IEBitmap.Canvas.FrameRect(rc);
|
|
// black rect
|
|
IEBitmap.Canvas.Pen.Width := 10;
|
|
IEBitmap.Canvas.Pen.Color := clBlack;
|
|
IEBitmap.Canvas.Brush.Color := clBlack;
|
|
rc := Rect(72, 72, ow + 88, oh + 88);
|
|
IEBitmap.Canvas.FrameRect(rc);
|
|
// black rect
|
|
IEBitmap.Canvas.Pen.Width := 10;
|
|
IEBitmap.Canvas.Pen.Color := clBlack;
|
|
IEBitmap.Canvas.Brush.Color := clBlack;
|
|
rc := Rect(71, 71, ow + 89, oh + 89);
|
|
IEBitmap.Canvas.FrameRect(rc);
|
|
// black rect
|
|
IEBitmap.Canvas.Pen.Width := 10;
|
|
IEBitmap.Canvas.Pen.Color := clBlack;
|
|
IEBitmap.Canvas.Brush.Color := clBlack;
|
|
rc := Rect(70, 70, ow + 90, oh + 90);
|
|
IEBitmap.Canvas.FrameRect(rc);
|
|
// white rect
|
|
IEBitmap.Canvas.Pen.Width := 10;
|
|
IEBitmap.Canvas.Pen.Color := clWhite;
|
|
IEBitmap.Canvas.Brush.Color := clWhite;
|
|
rc := Rect(69, 69, ow + 91, oh + 91);
|
|
IEBitmap.Canvas.FrameRect(rc);
|
|
end;
|
|
end;
|
|
ProgressBar.Visible := True;
|
|
if ow > 2000 then
|
|
ImageEnVect.IEBitmap.Canvas.Font.Size := 48
|
|
else
|
|
ImageEnVect.IEBitmap.Canvas.Font.Size := 14;
|
|
StatusBar.Panels[1].Text := 'Adding Copyright...';
|
|
StatusBar.Update;
|
|
if CopyrightEdit.Text = '' then
|
|
CopyrightEdit.Text := 'Copyright © 2017, William Miller';
|
|
ImageEnVect.MouseInteractVt := ImageEnVect.MouseInteractVt + [miObjectSelect];
|
|
ImageEnVect.UseCentralGrip := false;
|
|
// set ObjKind to putText
|
|
ImageEnVect.ObjKind[-1] := iekTEXT;
|
|
SelectRadioGroup.ItemIndex := 2;
|
|
if CheckBoxCopyrightInMargin.Checked then
|
|
begin
|
|
ImageEnVect.ObjLeft[-1] := 80;
|
|
ImageEnVect.ObjHeight[-1] := 32;
|
|
ImageEnVect.ObjWidth[-1] := ow - 160;
|
|
ImageEnVect.ObjTop[-1] := ImageEnVect.IEBitmap.Height - 60;
|
|
ImageEnVect.ObjTextAutoSize[-1] := True;
|
|
end
|
|
else
|
|
begin
|
|
ImageEnVect.ObjLeft[-1] := 110;
|
|
ImageEnVect.ObjTop[-1] := 110;
|
|
ImageEnVect.ObjWidth[-1] := ow - 160;
|
|
ImageEnVect.ObjHeight[-1] := 60;
|
|
ImageEnVect.ObjTextAutoSize[-1] := True;
|
|
end;
|
|
ImageEnVect.ObjText[-1] := CopyrightEdit.Text;
|
|
StatusBar.Panels[1].Text := 'Setting up object...';
|
|
StatusBar.Update;
|
|
// set transparency
|
|
ImageEnVect.ObjTransparency[-1] := 255;
|
|
// set brush colors
|
|
ImageEnVect.ObjPenColor[-1] := ColorBoxTextColor.Selected;
|
|
ImageEnVect.ObjBrushColor[-1] := ColorBoxTextColor.Selected;
|
|
ImageEnVect.ObjBrushStyle[-1] := bsClear;
|
|
ImageEnVect.ObjPenStyle[-1] := psClear;
|
|
StatusBar.Panels[1].Text := 'Setting up Text...';
|
|
StatusBar.Update;
|
|
FontDialog.Font.Name := 'Arial';
|
|
FontDialog.Font.Size := 0;
|
|
FontDialog.Font.Color := ColorBoxTextColor.Selected;
|
|
FontDialog.Font.Style := FontDialog.Font.Style + [fsItalic];
|
|
ImageEnVect.SetObjFont(-1, FontDialog.Font);
|
|
StatusBar.Panels[1].Text := 'Setting object font...';
|
|
StatusBar.Update;
|
|
// add a softshadow
|
|
if CheckBoxAddSoftShadow.Checked then
|
|
begin
|
|
ImageEnVect.ObjGraphicRender := true;
|
|
ImageEnVect.ObjSoftShadow[-1].Enabled := True;
|
|
end;
|
|
// set object witdh to width of bitmap
|
|
ImageEnVect.ObjWidth[-1] := ImageEnVect.IEBitmap.Width - Length(ExtractFilename(FFilePath));
|
|
StatusBar.Panels[1].Text := 'Adding New Object...';
|
|
StatusBar.Update;
|
|
ImageEnVect.AddNewObject;
|
|
ProgressBar.Visible := False;
|
|
ImageEnVect.Update;
|
|
StatusBar.Panels[1].Text := '';
|
|
StatusBar.Panels[2].Text := IntToStr(ImageEnVect.IEBitmap.Width) + ' x ' +
|
|
IntToStr(ImageEnVect.IEBitmap.Height);
|
|
StatusBar.Update;
|
|
StatusBar.Panels[1].Text := '';
|
|
StatusBar.Update;
|
|
finally Screen.Cursor := crDefault;
|
|
end;
|
|
end;
|
|
|
|
// UseGDI
|
|
procedure TForm1.UseGDI;
|
|
var
|
|
fontSize: Integer;
|
|
rc: TRect;
|
|
ow, oh: integer;
|
|
begin
|
|
if (FileExists(FFilePath)) and (not ImageEnVect.IsEmpty) then
|
|
begin
|
|
Screen.Cursor := crHourglass;
|
|
try
|
|
ow := ImageEnVect.IEBitmap.Width;
|
|
oh := ImageEnVect.IEBitmap.Height;
|
|
StatusBar.Panels[2].Text := IntToStr(ImageEnVect.IEBitmap.Width) + ' x ' +
|
|
IntToStr(ImageEnVect.IEBitmap.Height);
|
|
StatusBar.Panels[1].Text := 'Drawing...';
|
|
StatusBar.Update;
|
|
if CheckBoxAddFrame.Checked then
|
|
begin
|
|
StatusBar.Panels[1].Text := 'Resizing the image...';
|
|
StatusBar.Update;
|
|
ImageEnVect.Proc.ImageResize(ImageEnVect.IEBitmap.Width + 160, ImageEnVect.IEBitmap.Height + 160, iehCenter, ievCenter);
|
|
// draw a rect
|
|
with ImageEnVect do
|
|
begin
|
|
// white rect
|
|
IEBitmap.Canvas.Pen.Width := 10;
|
|
IEBitmap.Canvas.Pen.Color := clWhite;
|
|
IEBitmap.Canvas.Brush.Color := clWhite;
|
|
rc := Rect(80, 80, ow + 80, oh + 80);
|
|
IEBitmap.Canvas.FrameRect(rc);
|
|
// white rect
|
|
IEBitmap.Canvas.Pen.Width := 10;
|
|
IEBitmap.Canvas.Pen.Color := clWhite;
|
|
IEBitmap.Canvas.Brush.Color := clWhite;
|
|
rc := Rect(79, 79, ow + 81, oh + 81);
|
|
IEBitmap.Canvas.FrameRect(rc);
|
|
// white rect
|
|
IEBitmap.Canvas.Pen.Width := 10;
|
|
IEBitmap.Canvas.Pen.Color := clWhite;
|
|
IEBitmap.Canvas.Brush.Color := clWhite;
|
|
rc := Rect(78, 78, ow + 82, oh + 82);
|
|
IEBitmap.Canvas.FrameRect(rc);
|
|
// black rect
|
|
IEBitmap.Canvas.Pen.Width := 10;
|
|
IEBitmap.Canvas.Pen.Color := clBlack;
|
|
IEBitmap.Canvas.Brush.Color := clBlack;
|
|
rc := Rect(77, 77, ow + 83, oh + 83);
|
|
IEBitmap.Canvas.FrameRect(rc);
|
|
// black rect
|
|
IEBitmap.Canvas.Pen.Width := 10;
|
|
IEBitmap.Canvas.Pen.Color := clBlack;
|
|
IEBitmap.Canvas.Brush.Color := clBlack;
|
|
rc := Rect(76, 76, ow + 84, oh + 84);
|
|
IEBitmap.Canvas.FrameRect(rc);
|
|
// black rect
|
|
IEBitmap.Canvas.Pen.Width := 10;
|
|
IEBitmap.Canvas.Pen.Color := clBlack;
|
|
IEBitmap.Canvas.Brush.Color := clBlack;
|
|
rc := Rect(75, 75, ow + 85, oh + 85);
|
|
IEBitmap.Canvas.FrameRect(rc);
|
|
// black rect
|
|
IEBitmap.Canvas.Pen.Width := 10;
|
|
IEBitmap.Canvas.Pen.Color := clBlack;
|
|
IEBitmap.Canvas.Brush.Color := clBlack;
|
|
rc := Rect(74, 74, ow + 86, oh + 86);
|
|
IEBitmap.Canvas.FrameRect(rc);
|
|
// black rect
|
|
IEBitmap.Canvas.Pen.Width := 10;
|
|
IEBitmap.Canvas.Pen.Color := clBlack;
|
|
IEBitmap.Canvas.Brush.Color := clBlack;
|
|
rc := Rect(73, 73, ow + 87, oh + 87);
|
|
IEBitmap.Canvas.FrameRect(rc);
|
|
// black rect
|
|
IEBitmap.Canvas.Pen.Width := 10;
|
|
IEBitmap.Canvas.Pen.Color := clBlack;
|
|
IEBitmap.Canvas.Brush.Color := clBlack;
|
|
rc := Rect(72, 72, ow + 88, oh + 88);
|
|
IEBitmap.Canvas.FrameRect(rc);
|
|
// black rect
|
|
IEBitmap.Canvas.Pen.Width := 10;
|
|
IEBitmap.Canvas.Pen.Color := clBlack;
|
|
IEBitmap.Canvas.Brush.Color := clBlack;
|
|
rc := Rect(71, 71, ow + 89, oh + 89);
|
|
IEBitmap.Canvas.FrameRect(rc);
|
|
// black rect
|
|
IEBitmap.Canvas.Pen.Width := 10;
|
|
IEBitmap.Canvas.Pen.Color := clBlack;
|
|
IEBitmap.Canvas.Brush.Color := clBlack;
|
|
rc := Rect(70, 70, ow + 90, oh + 90);
|
|
IEBitmap.Canvas.FrameRect(rc);
|
|
// white rect
|
|
IEBitmap.Canvas.Pen.Width := 10;
|
|
IEBitmap.Canvas.Pen.Color := clWhite;
|
|
IEBitmap.Canvas.Brush.Color := clWhite;
|
|
rc := Rect(69, 69, ow + 91, oh + 91);
|
|
IEBitmap.Canvas.FrameRect(rc);
|
|
end;
|
|
end;
|
|
|
|
|
|
StatusBar.Panels[1].Text := 'Adding Layer...';
|
|
StatusBar.Update;
|
|
ProgressBar.Visible := True;
|
|
|
|
if ow > 2000 then
|
|
fontSize := 48
|
|
else
|
|
fontSize := 24;
|
|
|
|
if CheckBoxCopyrightInMargin.Checked then
|
|
ImageEnVect.LayersAdd( 'Copyright © 2017, William Miller', fontSize, ColorBoxTextColor.Selected, 'Arial', [fsItalic, fsBold],
|
|
70, ImageEnVect.IEBitmap.Height - 60 )
|
|
else
|
|
ImageEnVect.LayersAdd( 'Copyright © 2017, William Miller', fontSize, ColorBoxTextColor.Selected, 'Arial', [fsItalic, fsBold],
|
|
100, 80 );
|
|
|
|
StatusBar.Panels[1].Text := 'Merging Layer 2...';
|
|
StatusBar.Update;
|
|
ImageEnVect.LayersMerge(0, 1);
|
|
ProgressBar.Visible := False;
|
|
ImageEnVect.Update;
|
|
StatusBar.Panels[1].Text := '';
|
|
StatusBar.Panels[2].Text := IntToStr(ImageEnVect.IEBitmap.Width) + ' x ' +
|
|
IntToStr(ImageEnVect.IEBitmap.Height);
|
|
StatusBar.Update;
|
|
StatusBar.Panels[1].Text := '';
|
|
StatusBar.Update;
|
|
finally Screen.Cursor := crDefault;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
// Add Copyright
|
|
procedure TForm1.ButtonAddCopyrightClick(Sender: TObject);
|
|
begin
|
|
if (FileExists(FFilePath)) and (not ImageEnVect.IsEmpty) then
|
|
begin
|
|
FileListBox1Click(nil);
|
|
if CheckBoxUseObjects.Checked then
|
|
UseObjects
|
|
else
|
|
UseGDI;
|
|
ButtonMerge.Enabled := ImageEnVect.ObjectsCount > 0;
|
|
ButtonAddCopyright.Enabled := not ImageEnVect.IsEmpty;
|
|
ButtonSaveAs.Enabled := not ImageEnVect.IsEmpty;
|
|
end;
|
|
end;
|
|
|
|
// SaveAs
|
|
procedure TForm1.ButtonSaveAsClick(Sender: TObject);
|
|
var
|
|
ex: string;
|
|
save: boolean;
|
|
begin
|
|
if SaveImageEnDialog1.Execute then
|
|
begin
|
|
// Get file type from image file
|
|
ex := Lowercase(ExtractFileExt(SaveImageEnDialog1.FileName));
|
|
with ImageENVect.IO do
|
|
begin
|
|
Save := False;
|
|
if (ex = '.gif') then
|
|
save := DoPreviews([ppGIF]);
|
|
if (ex = '.jp2') or (ex = '.jp2000') then
|
|
save := DoPreviews([ppJ2000]);
|
|
if (ex = '.jpg') or (ex = '.jpeg') then
|
|
save := DoPreviews([ppJPEG]);
|
|
if (ex = '.tif') then
|
|
save := DoPreviews([ppTIFF]);
|
|
if (ex = '.bmp') then
|
|
save := DoPreviews([ppBMP]);
|
|
if (ex = '.gif') then
|
|
save := DoPreviews([ppGIF]);
|
|
if (ex = '.pcx') then
|
|
save := DoPreviews([ppPCX]);
|
|
if (ex = '.png') then
|
|
save := DoPreviews([ppPNG]);
|
|
if (ex = '.wmf') then
|
|
begin
|
|
MessageDlg('Can not save to WMF file format.', mtInformation, [mbOK],
|
|
0);
|
|
save := false;
|
|
end;
|
|
if (ex = '.emf') then
|
|
begin
|
|
MessageDlg('Can not save to EMF file format.', mtInformation, [mbOK],
|
|
0);
|
|
save := false;
|
|
end;
|
|
if (ex = '.ico') then
|
|
begin
|
|
MessageDlg('Can not save to Icon file format.', mtInformation, [mbOK],
|
|
0);
|
|
save := false;
|
|
end;
|
|
if (ex = '.cur') then
|
|
begin
|
|
MessageDlg('Can not save to Cursor file format.', mtInformation, [mbOK],
|
|
0);
|
|
save := False;
|
|
end;
|
|
if save then
|
|
begin
|
|
ImageEnVect.IO.SaveToFile(SaveImageEnDialog1.FileName);
|
|
StatusBar.Panels[0].Text := ExtractFileName(SaveImageEnDialog1.FileName);
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
// ImageEnVectProgress
|
|
procedure TForm1.ImageEnVectProgress(Sender: TObject; per: Integer);
|
|
begin
|
|
Progressbar.Position := per;
|
|
if per > 99 then
|
|
Progressbar.Position := 0;
|
|
end;
|
|
|
|
// SelectRadioGroupClick
|
|
procedure TForm1.SelectRadioGroupClick(Sender: TObject);
|
|
begin
|
|
case SelectRadioGroup.Itemindex of
|
|
0:
|
|
begin // Zoom
|
|
ImageEnVect.AutoFit := False;
|
|
ImageEnVect.MouseInteract := [miZoom, miScroll];
|
|
ImageEnVect.MouseInteractVt := [];
|
|
ImageEnVect.Update;
|
|
ImageEnVect.Cursor := 1779;
|
|
SelectRadioGroup.Items[0] := 'Zoom (' + Format('%-4.2f', [ImageEnVect.Zoom]) + '%)';
|
|
end;
|
|
1:
|
|
begin // AutoFit
|
|
ImageEnVect.AutoFit := True;
|
|
ImageEnVect.MouseInteract := [miScroll];
|
|
ImageEnVect.MouseInteractVt := ImageEnVect.MouseInteractVt + [miObjectSelect];
|
|
ImageEnVect.Update;
|
|
ImageEnVect.Cursor := crDefault;
|
|
SelectRadioGroup.Items[0] := 'Zoom (' + Format('%-4.2f', [ImageEnVect.Zoom]) + '%)';
|
|
end;
|
|
2:
|
|
begin // SelectObject
|
|
ImageEnVect.Cursor := 1782; // hand
|
|
ImageEnVect.MouseInteractVt := ImageEnVect.MouseInteractVt + [miObjectSelect];
|
|
end;
|
|
end; // case
|
|
end;
|
|
|
|
// ButtonMergeClick- merge object
|
|
procedure TForm1.ButtonMergeClick(Sender: TObject);
|
|
begin
|
|
Screen.Cursor := crHourglass;
|
|
try
|
|
ImageEnVect.CopyObjectsToBack(CheckBoxAntialiasText.Checked);
|
|
ImageEnVect.RemoveObject(ImageEnVect.SelObjects[-1]);
|
|
finally Screen.Cursor := crDefault;
|
|
end;
|
|
end;
|
|
|
|
// CheckBoxUseObjectsClick
|
|
procedure TForm1.CheckBoxUseObjectsClick(Sender: TObject);
|
|
begin
|
|
ButtonMerge.Enabled := CheckBoxUseObjects.Checked;
|
|
end;
|
|
|
|
// ImageEnVectVectorialChanged
|
|
procedure TForm1.ImageEnVectVectorialChanged(Sender: TObject);
|
|
begin
|
|
ButtonMerge.Enabled := ImageEnVect.ObjectsCount > 0;
|
|
ButtonAddCopyright.Enabled := not ImageEnVect.IsEmpty;
|
|
ButtonSaveAs.Enabled := not ImageEnVect.IsEmpty;
|
|
end;
|
|
|
|
// ImageEnVectImageChange
|
|
procedure TForm1.ImageEnVectImageChange(Sender: TObject);
|
|
begin
|
|
ButtonMerge.Enabled := ImageEnVect.ObjectsCount > 0;
|
|
ButtonAddCopyright.Enabled := not ImageEnVect.IsEmpty;
|
|
ButtonSaveAs.Enabled := not ImageEnVect.IsEmpty;
|
|
end;
|
|
|
|
// ImageEnVectClick
|
|
procedure TForm1.ImageEnVectClick(Sender: TObject);
|
|
begin
|
|
ButtonMerge.Enabled := ImageEnVect.ObjectsCount > 0;
|
|
ButtonAddCopyright.Enabled := not ImageEnVect.IsEmpty;
|
|
ButtonSaveAs.Enabled := not ImageEnVect.IsEmpty;
|
|
end;
|
|
|
|
// ImageEnVectZoomIn
|
|
procedure TForm1.ImageEnVectZoomIn(Sender: TObject; var NewZoom: Double);
|
|
begin
|
|
ImageEnVect.Cursor := crIEZoomIn;
|
|
SelectRadioGroup.Items[0] := 'Zoom (' + Format('%-4.2f', [ImageEnVect.Zoom]) + '%)';
|
|
end;
|
|
|
|
// ImageEnVectZoomOut
|
|
procedure TForm1.ImageEnVectZoomOut(Sender: TObject; var NewZoom: Double);
|
|
begin
|
|
ImageEnVect.Cursor := crIEZoomOut;
|
|
SelectRadioGroup.Items[0] := 'Zoom (' + Format('%-4.2f', [ImageEnVect.Zoom]) + '%)';
|
|
end;
|
|
|
|
// ColorBoxTextColorChange
|
|
procedure TForm1.ColorBoxTextColorChange(Sender: TObject);
|
|
var
|
|
q, obj: integer;
|
|
begin
|
|
obj := -1; // -1 is next object (new object to insert)
|
|
with ImageEnVect do
|
|
for q := -1 to SelObjectsCount - 1 do
|
|
begin
|
|
if q >= 0 then
|
|
obj := SelObjects[q];
|
|
ObjText[obj] := CopyrightEdit.Text;
|
|
SetObjFont(obj, FontDialog.Font);
|
|
ObjPenColor[obj] := ColorBoxTextColor.Selected;
|
|
ObjSoftShadow[obj].Enabled := CheckBoxAddSoftShadow.Checked;
|
|
if CheckBoxAddSoftShadow.Checked and not ObjGraphicRender then
|
|
ObjGraphicRender := true;
|
|
end;
|
|
end;
|
|
|
|
// CheckBoxAddSoftShadowClick
|
|
procedure TForm1.CheckBoxAddSoftShadowClick(Sender: TObject);
|
|
var
|
|
q, obj: integer;
|
|
begin
|
|
obj := -1; // -1 is next object (new object to insert)
|
|
with ImageEnVect do
|
|
for q := -1 to SelObjectsCount - 1 do
|
|
begin
|
|
if q >= 0 then
|
|
obj := SelObjects[q];
|
|
ObjText[obj] := CopyrightEdit.Text;
|
|
SetObjFont(obj, FontDialog.Font);
|
|
ObjPenColor[obj] := ColorBoxTextColor.Selected;
|
|
ObjSoftShadow[obj].Enabled := CheckBoxAddSoftShadow.Checked;
|
|
if CheckBoxAddSoftShadow.Checked and not ObjGraphicRender then
|
|
ObjGraphicRender := true;
|
|
end;
|
|
end;
|
|
|
|
// CopyrightEditChange
|
|
procedure TForm1.CopyrightEditChange(Sender: TObject);
|
|
var
|
|
q, obj: integer;
|
|
begin
|
|
obj := -1; // -1 is next object (new object to insert)
|
|
with ImageEnVect do
|
|
for q := -1 to SelObjectsCount - 1 do
|
|
begin
|
|
if q >= 0 then
|
|
obj := SelObjects[q];
|
|
ObjText[obj] := CopyrightEdit.Text;
|
|
SetObjFont(obj, FontDialog.Font);
|
|
ObjPenColor[obj] := ColorBoxTextColor.Selected;
|
|
ObjSoftShadow[obj].Enabled := CheckBoxAddSoftShadow.Checked;
|
|
if CheckBoxAddSoftShadow.Checked and not ObjGraphicRender then
|
|
ObjGraphicRender := true;
|
|
end;
|
|
end;
|
|
|
|
// Select file
|
|
procedure TForm1.FileListBox1Click(Sender: TObject);
|
|
begin
|
|
if FileListBox1.FileName <> '' then
|
|
begin
|
|
ImageEnVect.ClearAll();
|
|
ImageEnVect.RemoveAllObjects();
|
|
|
|
ButtonAddCopyright.Enabled := not ImageEnVect.IsEmpty;
|
|
ButtonSaveAs.Enabled := not ImageEnVect.IsEmpty;
|
|
FFilePath := FileListBox1.FileName;
|
|
Screen.Cursor := crHourglass;
|
|
Caption := 'Add Copyright - ' + ExtractFilePath(FFilePath);
|
|
StatusBar.Panels[0].Text := ExtractFileName(FFilePath);
|
|
try
|
|
if FileExists(FFilePath) then
|
|
begin
|
|
ProgressBar.Visible := True;
|
|
ImageEnVect.IO.LoadFromFile(FFilePath);
|
|
ImageEnVect.Fit;
|
|
ButtonAddCopyright.Enabled := not ImageEnVect.IsEmpty;
|
|
ButtonSaveAs.Enabled := not ImageEnVect.IsEmpty;
|
|
StatusBar.Panels[2].Text := IntToStr(ImageEnVect.IEBitmap.Width) + ' x ' +
|
|
IntToStr(ImageEnVect.IEBitmap.Height);
|
|
ProgressBar.Visible := False;
|
|
end;
|
|
finally Screen.Cursor := crDefault;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
end.
|