170 lines
4.2 KiB
Plaintext
170 lines
4.2 KiB
Plaintext
unit Unit1;
|
||
|
||
interface
|
||
|
||
{$WARN UNIT_PLATFORM OFF}
|
||
|
||
uses
|
||
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
||
Dialogs, Math, hyieutils, hyiedefs, StdCtrls, ieview, imageenview, imageenproc, iexBitmaps,
|
||
FileCtrl, StrUtils, ExtCtrls, Buttons, imageenio, ComCtrls;
|
||
|
||
type
|
||
TMainForm = class(TForm)
|
||
ImageEnView1: TImageEnView;
|
||
Panel1: TPanel;
|
||
FileListBox1: TFileListBox;
|
||
Label1: TLabel;
|
||
TrackBar1: TTrackBar;
|
||
Panel2: TPanel;
|
||
ImageEnView2: TImageEnView;
|
||
SpeedButton1: TSpeedButton;
|
||
Memo3: TMemo;
|
||
Label2: TLabel;
|
||
Label3: TLabel;
|
||
Label4: TLabel;
|
||
Label5: TLabel;
|
||
Label6: TLabel;
|
||
Label7: TLabel;
|
||
LabelCamHead: TLabel;
|
||
LabelCamPitch: TLabel;
|
||
RadioGroupQuality: TRadioGroup;
|
||
lblGetMore: TLabel;
|
||
procedure ImageEnView1MouseDown(Sender: TObject; Button: TMouseButton;
|
||
Shift: TShiftState; X, Y: Integer);
|
||
procedure ImageEnView1MouseMove(Sender: TObject; Shift: TShiftState; X,
|
||
Y: Integer);
|
||
procedure FileListBox1Change(Sender: TObject);
|
||
procedure TrackBar1Change(Sender: TObject);
|
||
procedure FormResize(Sender: TObject);
|
||
procedure SpeedButton1Click(Sender: TObject);
|
||
procedure FormActivate(Sender: TObject);
|
||
procedure lblGetMoreClick(Sender: TObject);
|
||
procedure RadioGroupQualityClick(Sender: TObject);
|
||
private
|
||
{ Private declarations }
|
||
m_downx: integer;
|
||
m_downy: integer;
|
||
public
|
||
{ Public declarations }
|
||
end;
|
||
|
||
var
|
||
MainForm: TMainForm;
|
||
|
||
implementation
|
||
|
||
uses
|
||
ShellAPI;
|
||
|
||
|
||
{$R *.dfm}
|
||
{$R WindowsTheme.res}
|
||
|
||
procedure TMainForm.FormActivate(Sender: TObject);
|
||
begin
|
||
FileListBox1.Selected[0] := true;
|
||
FileListBox1Change(self);
|
||
end;
|
||
|
||
|
||
procedure TMainForm.FileListBox1Change(Sender: TObject);
|
||
begin
|
||
if trim(filelistbox1.FileName) = '' then
|
||
exit;
|
||
|
||
ImageEnView2.IO.LoadFromFile(filelistbox1.FileName);
|
||
|
||
ImageEnView1.LegacyBitmap := false;
|
||
ImageEnView1.IEBitmap.VirtualBitmapProvider := TIEEquirectangularRenderer.Create(ImageEnView2);
|
||
ImageEnView1.Update();
|
||
|
||
// Are all the demo images available?
|
||
lblGetMore.Visible := filelistbox1.Items.Count < 5;
|
||
end;
|
||
|
||
|
||
procedure TMainForm.ImageEnView1MouseDown(Sender: TObject;
|
||
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
|
||
begin
|
||
m_downx := X;
|
||
m_downy := Y;
|
||
end;
|
||
|
||
|
||
procedure TMainForm.ImageEnView1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
|
||
begin
|
||
if ssLeft in Shift then
|
||
begin
|
||
with (ImageEnView1.IEBitmap.VirtualBitmapProvider as TIEEquirectangularRenderer) do
|
||
begin
|
||
CamHeading := CamHeading - (- X/5 + m_downx/5);
|
||
CamPitch := CamPitch + 0.5 * (- Y/5 + m_downy/5);
|
||
CamPitch := dmin(180, dmax(0, CamPitch));
|
||
|
||
LabelCamHead.Caption := FloatToStr(CamHeading) + '<27>';
|
||
LabelCamPitch.Caption := FloatToStr(CamPitch) + '<27>'
|
||
end;
|
||
m_downx := X;
|
||
m_downy := Y;
|
||
ImageEnView1.Update();
|
||
end;
|
||
end;
|
||
|
||
|
||
procedure TMainForm.TrackBar1Change(Sender: TObject);
|
||
begin
|
||
with (ImageEnView1.IEBitmap.VirtualBitmapProvider as TIEEquirectangularRenderer) do
|
||
CamFov := trackbar1.Position;
|
||
ImageEnView1.Update;
|
||
end;
|
||
|
||
|
||
procedure TMainForm.FormResize(Sender: TObject);
|
||
begin
|
||
ImageEnView1.IEBitmap.Resize(ImageEnView1.Width, ImageEnView1.Height);
|
||
ImageEnView1.Update;
|
||
end;
|
||
|
||
procedure TMainForm.lblGetMoreClick(Sender: TObject);
|
||
begin
|
||
ShellExecute(Handle, 'open', PChar('http://www.imageen.com/files/Other/PhotoSpherePix.zip'), nil, nil, SW_MAXIMIZE);
|
||
end;
|
||
|
||
|
||
// test fps
|
||
procedure TMainForm.SpeedButton1Click(Sender: TObject);
|
||
var
|
||
t1, t2: dword;
|
||
c: integer;
|
||
begin
|
||
c := 0;
|
||
t1 := GetTickCount();
|
||
while SpeedButton1.Down do
|
||
begin
|
||
with (ImageEnView1.IEBitmap.VirtualBitmapProvider as TIEEquirectangularRenderer) do
|
||
begin
|
||
CamHeading := CamHeading + 0.5;
|
||
LabelCamHead.Caption := FloatToStr(CamHeading);
|
||
end;
|
||
ImageEnView1.Update;
|
||
Application.ProcessMessages();
|
||
t2 := GetTickCount() + 1;
|
||
inc(c);
|
||
Memo3.Lines.Add( Format('%3.1f FPS', [c / ((t2 - t1) / 1000)]) );
|
||
end;
|
||
end;
|
||
|
||
|
||
procedure TMainForm.RadioGroupQualityClick(Sender: TObject);
|
||
begin
|
||
with (ImageEnView1.IEBitmap.VirtualBitmapProvider as TIEEquirectangularRenderer) do
|
||
case RadioGroupQuality.ItemIndex of
|
||
0: Quality := ierqLow;
|
||
1: Quality := ierqHigh;
|
||
end;
|
||
ImageEnView1.Update();
|
||
end;
|
||
|
||
end.
|