192 lines
5.4 KiB
Plaintext
192 lines
5.4 KiB
Plaintext
unit umain;
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|
Menus, ieview, imageenview, ComCtrls, ExtCtrls, StdCtrls, hyieutils,
|
|
iexBitmaps, hyiedefs, iesettings, iexRulers, iexLayers;
|
|
|
|
type
|
|
TForm1 = class(TForm)
|
|
ImageEnView1: TImageEnView;
|
|
MainMenu1: TMainMenu;
|
|
FileMenu: TMenuItem;
|
|
miOpen: TMenuItem;
|
|
N1: TMenuItem;
|
|
miExit: TMenuItem;
|
|
StatusBar1: TStatusBar;
|
|
ViewMenu: TMenuItem;
|
|
miCenter: TMenuItem;
|
|
miAlignRuler: TMenuItem;
|
|
UnitsMenu: TMenuItem;
|
|
miPixels: TMenuItem;
|
|
miInches: TMenuItem;
|
|
miCentimeters: TMenuItem;
|
|
N2: TMenuItem;
|
|
miLockGrips: TMenuItem;
|
|
miMillimeters: TMenuItem;
|
|
ToolsMenu: TMenuItem;
|
|
miAddGrips: TMenuItem;
|
|
miNextKind: TMenuItem;
|
|
N3: TMenuItem;
|
|
miInverted: TMenuItem;
|
|
procedure Exit1Click(Sender: TObject);
|
|
procedure miOpenClick(Sender: TObject);
|
|
procedure ImageEnView1ViewChange(Sender: TObject; Change: Integer);
|
|
procedure Center1Click(Sender: TObject);
|
|
procedure OnSelectUnits(Sender: TObject);
|
|
procedure FormCreate(Sender: TObject);
|
|
procedure miAddGripsClick(Sender: TObject);
|
|
procedure miAlignRulerClick(Sender: TObject);
|
|
procedure miInvertedClick(Sender: TObject);
|
|
procedure miLockGripsClick(Sender: TObject);
|
|
procedure miNextKindClick(Sender: TObject);
|
|
procedure ViewMenuClick(Sender: TObject);
|
|
private
|
|
{ Private declarations }
|
|
public
|
|
{ Public declarations }
|
|
end;
|
|
|
|
var
|
|
Form1: TForm1;
|
|
|
|
implementation
|
|
|
|
{$R *.DFM}
|
|
{$R WindowsTheme.res}
|
|
|
|
|
|
procedure TForm1.FormCreate(Sender: TObject);
|
|
begin
|
|
ImageEnView1.RulerParams.Units := ieruPixels;
|
|
ImageEnView1.ShowRulers := [ rdHorizontal, rdVertical ];
|
|
ImageEnView1.RulerParams.ConstrainGrips := True; // Allow grips outside the area of the image?
|
|
end;
|
|
|
|
|
|
// File | Exit
|
|
procedure TForm1.Exit1Click(Sender: TObject);
|
|
begin
|
|
Close;
|
|
end;
|
|
|
|
// File | Open
|
|
procedure TForm1.miOpenClick(Sender: TObject);
|
|
begin
|
|
with ImageEnView1.IO do
|
|
LoadFromFile( ExecuteOpenDialog('','',false,1,'') );
|
|
end;
|
|
|
|
// scroll or zoom
|
|
procedure TForm1.ImageEnView1ViewChange(Sender: TObject; Change: Integer);
|
|
begin
|
|
StatusBar1.Panels[0].Text := ' Zoom: ' + IntToStr( Trunc( ImageEnView1.Zoom )) + '%';
|
|
end;
|
|
|
|
|
|
// View -> Center
|
|
procedure TForm1.Center1Click(Sender: TObject);
|
|
begin
|
|
ImageEnView1.Center := miCenter.Checked;
|
|
end;
|
|
|
|
procedure TForm1.miAddGripsClick(Sender: TObject);
|
|
begin
|
|
// Add three grips at 25%, 50% and 75% of the image width
|
|
ImageEnView1.RulerParams.HorzGripsCount := 3;
|
|
ImageEnView1.RulerParams.GripsPosBase := ierbBitmap; // Units are relative to the bitmap
|
|
ImageEnView1.RulerParams.HorzGripsPos[ 0 ] := MulDiv( ImageEnView1.IEBitmap.Width, 1, 4 );
|
|
ImageEnView1.RulerParams.HorzGripsPos[ 1 ] := MulDiv( ImageEnView1.IEBitmap.Width, 2, 4 );
|
|
ImageEnView1.RulerParams.HorzGripsPos[ 2 ] := MulDiv( ImageEnView1.IEBitmap.Width, 3, 4 );
|
|
|
|
// Add three grips at 25%, 50% and 75% of the image height
|
|
ImageEnView1.RulerParams.VertGripsCount := 3;
|
|
ImageEnView1.RulerParams.GripsPosBase := ierbBitmap; // Units are relative to the bitmap
|
|
ImageEnView1.RulerParams.VertGripsPos[ 0 ] := MulDiv( ImageEnView1.IEBitmap.Height, 1, 4 );
|
|
ImageEnView1.RulerParams.VertGripsPos[ 1 ] := MulDiv( ImageEnView1.IEBitmap.Height, 2, 4 );
|
|
ImageEnView1.RulerParams.VertGripsPos[ 2 ] := MulDiv( ImageEnView1.IEBitmap.Height, 3, 4 );
|
|
end;
|
|
|
|
procedure TForm1.miAlignRulerClick(Sender: TObject);
|
|
begin
|
|
ImageEnView1.RulerParams.AlignToImage := miAlignRuler.Checked;
|
|
end;
|
|
|
|
|
|
procedure TForm1.miInvertedClick(Sender: TObject);
|
|
begin
|
|
ImageEnView1.LockUpdate();
|
|
|
|
if miInverted.Checked then
|
|
begin
|
|
// Move rulers
|
|
ImageEnView1.RulerParams.HorzPos := gdDown;
|
|
ImageEnView1.RulerParams.VertPos := gdRight;
|
|
|
|
// Reverse direction of measurements
|
|
ImageEnView1.RulerParams.HorzInverted := True;
|
|
ImageEnView1.RulerParams.VertInverted := True;
|
|
end
|
|
else
|
|
begin
|
|
// Move rulers
|
|
ImageEnView1.RulerParams.HorzPos := gdUp;
|
|
ImageEnView1.RulerParams.VertPos := gdLeft;
|
|
|
|
// Reverse direction of measurements
|
|
ImageEnView1.RulerParams.HorzInverted := False;
|
|
ImageEnView1.RulerParams.VertInverted := False;
|
|
end;
|
|
|
|
ImageEnView1.UnlockUpdate();
|
|
end;
|
|
|
|
|
|
procedure TForm1.miLockGripsClick(Sender: TObject);
|
|
const
|
|
Lock_Grips_To_Label = True; // snap to integer values, or closest label tick?
|
|
begin
|
|
if miLockGrips.Checked = False then
|
|
ImageEnView1.RulerParams.SnapGrips := iesnNone
|
|
else
|
|
if Lock_Grips_To_Label then
|
|
ImageEnView1.RulerParams.SnapGrips := iesnSnapToLabel
|
|
else
|
|
ImageEnView1.RulerParams.SnapGrips := iesnSnapToWholeNumber;
|
|
end;
|
|
|
|
procedure TForm1.miNextKindClick(Sender: TObject);
|
|
var
|
|
nextKind: TGripKind;
|
|
begin
|
|
nextKind := TGripKind( Ord( ImageEnView1.RulerParams.GripKindDefault ) + 1 );
|
|
if nextKind = gkNone then
|
|
nextKind := gkTriangle;
|
|
ImageEnView1.RulerParams.GripKindDefault := nextKind;
|
|
end;
|
|
|
|
procedure TForm1.OnSelectUnits(Sender: TObject);
|
|
begin
|
|
if Sender = miPixels then
|
|
ImageEnView1.RulerParams.Units := ieruPixels
|
|
else
|
|
if Sender = miInches then
|
|
ImageEnView1.RulerParams.Units := ieruInches
|
|
else
|
|
if Sender = miMillimeters then
|
|
ImageEnView1.RulerParams.Units := ieruMillimeters
|
|
else
|
|
if Sender = miCentimeters then
|
|
ImageEnView1.RulerParams.Units := ieruCentimeters;
|
|
end;
|
|
|
|
procedure TForm1.ViewMenuClick(Sender: TObject);
|
|
begin
|
|
miNextKind.Enabled := ImageEnView1.RulerParams.HorzGripsCount > 0;
|
|
end;
|
|
|
|
|
|
end.
|