BSOne.SFC/EM.Lib/ImageEn_SRC/Demos/Other/Copyright/Unit1.pas

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.