BSOne.SFC/EM.Lib/ImageEn_SRC/Demos/Display/VMR_DVD/umain.pas

216 lines
5.4 KiB
Plaintext

unit umain;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ieview, imageenview, ExtCtrls, ieopensavedlg, Menus, ComCtrls,
iemview, ieds;
type
TForm1 = class(TForm)
Panel1: TPanel;
Label1: TLabel;
Panel2: TPanel;
ImageEnView1: TImageEnView;
OpenImageEnDialog1: TOpenImageEnDialog;
MainMenu1: TMainMenu;
File1: TMenuItem;
Saveframe1: TMenuItem;
N1: TMenuItem;
Exit1: TMenuItem;
Getframe1: TMenuItem;
Stop1: TMenuItem;
Play1: TMenuItem;
Pause1: TMenuItem;
Stop2: TMenuItem;
Label2: TLabel;
TrackBar1: TTrackBar;
ImageEnMView1: TImageEnMView;
Label3: TLabel;
Timer1: TTimer;
Label4: TLabel;
ComboBox1: TComboBox;
ComboBox2: TComboBox;
Label5: TLabel;
Label6: TLabel;
Edit1: TEdit;
UpDown1: TUpDown;
Label7: TLabel;
ComboBox3: TComboBox;
procedure Saveframe1Click(Sender: TObject);
procedure Getframe1Click(Sender: TObject);
procedure Play1Click(Sender: TObject);
procedure Pause1Click(Sender: TObject);
procedure Stop2Click(Sender: TObject);
procedure TrackBar1Change(Sender: TObject);
procedure ImageEnMView1ImageSelect(Sender: TObject; idx: Integer);
procedure ImageEnView1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure ImageEnView1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Timer1Timer(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
procedure ComboBox2Change(Sender: TObject);
procedure UpDown1Click(Sender: TObject; Button: TUDBtnType);
procedure ComboBox3Change(Sender: TObject);
private
{ Private declarations }
lastTitle:integer;
lastChapter:integer;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
{$R WindowsTheme.res}
// File | Save frame
procedure TForm1.Saveframe1Click(Sender: TObject);
begin
with ImageEnView1.IO do
SaveToFile( ExecuteSaveDialog );
end;
// Get frame
procedure TForm1.Getframe1Click(Sender: TObject);
begin
with ImageEnView1.IO.DShowParams do
begin
GetSample( ImageEnView1.IEBitmap );
ImageEnView1.Update;
ImageEnMView1.AppendImage( ImageEnView1.IEBitmap );
end;
end;
// Play
procedure TForm1.Play1Click(Sender: TObject);
var
w,h:integer;
begin
with ImageEnView1.IO.DShowParams do
begin
if not Connected then
begin
DVDInputPath:='Default';
//DVDInputPath:='C:\dvd2\VIDEO_TS';
RenderVideo:=true;
RenderAudio:=true;
Connect;
//SaveGraph('c:\test.grf');
// Set bitmap size
GetVideoRenderNativeSize(w,h);
ImageEnView1.Proc.ImageResize(w,h);
end;
lastTitle:=-1;
lastChapter:=-1;
Run;
end;
end;
// Pause
procedure TForm1.Pause1Click(Sender: TObject);
begin
ImageEnView1.IO.DShowParams.Pause;
end;
// Stop
procedure TForm1.Stop2Click(Sender: TObject);
begin
ImageEnView1.IO.DShowParams.Stop;
ImageEnView1.IO.DShowParams.Disconnect;
ImageEnView1.Update; // this will show the background image
end;
// Zoom
procedure TForm1.TrackBar1Change(Sender: TObject);
begin
ImageEnView1.Zoom:=TrackBar1.Position;
Label2.Caption:='Zoom ('+FloatToStr(ImageEnView1.Zoom)+'%)';
end;
// Select image on thumbnails view
procedure TForm1.ImageEnMView1ImageSelect(Sender: TObject; idx: Integer);
begin
ImageEnMView1.CopyToIEBitmap( idx, ImageEnView1.IEBitmap );
ImageEnView1.Update;
end;
procedure TForm1.ImageEnView1MouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
begin
ImageEnView1.IO.DShowParams.DVDSelectAt(x,y);
end;
procedure TForm1.ImageEnView1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
ImageEnView1.IO.DShowParams.DVDActivateButton;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
i:integer;
begin
// show current time, title and chapter
with ImageEnView1.IO.DShowParams do
begin
Label3.Caption:='Time: '+DVDGetProperty('Time');
if lastTitle<>StrToIntDef(DVDGetProperty('Title'),-1) then
begin
ComboBox1.Clear;
for i:=1 to StrToIntDef(DVDGetProperty('NumOfTitles'),0) do
ComboBox1.Items.Add(IntToStr(i));
lastTitle:=StrToIntDef(DVDGetProperty('Title'),-1);
ComboBox1.ItemIndex:=lastTitle-1;
lastChapter:=-1;
end;
if lastChapter<>StrToIntDef(DVDGetProperty('Chapter'),-1) then
begin
ComboBox2.Clear;
for i:=1 to StrToIntDef(DVDGetProperty('NumOfChapters',inttostr(lastTitle)),0) do
ComboBox2.Items.Add(IntToStr(i));
lastChapter:=StrToIntDef(DVDGetProperty('Chapter'),-1);
ComboBox2.ItemIndex:=lastChapter-1;
end;
end;
end;
// Change title
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
lastTitle:=ComboBox1.ItemIndex;
ImageEnView1.IO.DShowParams.DVDPlayAt(lastTitle,1);
end;
// Change chapter
procedure TForm1.ComboBox2Change(Sender: TObject);
begin
lastChapter:=ComboBox2.ItemIndex;
ImageEnView1.IO.DShowParams.DVDPlayAt(lastTitle,lastChapter);
end;
// change speed
procedure TForm1.UpDown1Click(Sender: TObject; Button: TUDBtnType);
begin
ImageEnView1.IO.DShowParams.DVDPlayAdvanced( UpDown1.Position>=0, abs(UpDown1.Position/10) );
Edit1.Text:=FloatToStr(UpDown1.Position/10);
end;
// select menu
procedure TForm1.ComboBox3Change(Sender: TObject);
begin
ImageEnView1.IO.DShowParams.DVDShowMenu(TIEDVDMenu(ComboBox3.ItemIndex));
end;
end.