www.pudn.com > DirectShowPlayer.rar > AMPU2.PAS


// Avalon Media Player 
// Copyright © 2001 Pulsar Studio / Lord Trancos. 
 
unit AMPU2; 
 
// -------------------------------------------------------------------- 
 
interface 
 
uses 
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, 
  Dialogs, ExtCtrls, ComCtrls, Common, AMPU1, DX8DS, Menus; 
 
type 
  TForm2 = class(TForm) 
    VideoInfo: TStatusBar; 
    VideoDisplay: TPanel; 
    PopupMenu1: TPopupMenu; 
    Menu1: TMenuItem; 
    N1: TMenuItem; 
    Menu2: TMenuItem; 
    SubMenu1: TMenuItem; 
    SubMenu2: TMenuItem; 
    SubMenu3: TMenuItem; 
    SubMenu4: TMenuItem; 
    SubMenu5: TMenuItem; 
    SubMenu6: TMenuItem; 
    SubMenu7: TMenuItem; 
    N2: TMenuItem; 
    SubMenu8: TMenuItem; 
    Menu3: TMenuItem; 
    N3: TMenuItem; 
    Menu4: TMenuItem; 
    Menu5: TMenuItem; 
    Menu6: TMenuItem; 
    N4: TMenuItem; 
    Menu7: TMenuItem; 
    N5: TMenuItem; 
    Menu8: TMenuItem; 
    N6: TMenuItem; 
    Menu9: TMenuItem; 
    N7: TMenuItem; 
    Menu10: TMenuItem; 
    Menu11: TMenuItem; 
    Menu12: TMenuItem; 
    procedure FormCreate(Sender: TObject); 
    procedure FormResize(Sender: TObject); 
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); 
    procedure Menu1Click(Sender: TObject); 
    procedure FormKeyPress(Sender: TObject; var Key: Char); 
    procedure SubMenuWindowSize(Sender: TObject); 
    procedure SubMenu8Click(Sender: TObject); 
    procedure Menu3Click(Sender: TObject); 
    procedure VideoDisplayMouseDown(Sender: TObject; Button: TMouseButton; 
      Shift: TShiftState; X, Y: Integer); 
    procedure VideoDisplayMouseMove(Sender: TObject; Shift: TShiftState; X, 
      Y: Integer); 
    procedure Menu4Click(Sender: TObject); 
    procedure Menu5Click(Sender: TObject); 
    procedure Menu6Click(Sender: TObject); 
    procedure Menu7Click(Sender: TObject); 
    procedure Menu8Click(Sender: TObject); 
    procedure Menu9Click(Sender: TObject); 
    procedure Menu10Click(Sender: TObject); 
    procedure Menu11Click(Sender: TObject); 
    procedure Menu12Click(Sender: TObject); 
    procedure RunFN(_fn: string); 
    procedure PlaceWindow; 
  private 
    { Private declarations } 
    procedure WMOnMove(var Msg: TMessage); message WM_MOVE; 
  public 
    { Public declarations } 
  end; 
 
var 
  Form2 : TForm2; 
  OrgP  : TPoint; 
  OrgXY : TPoint; 
 
// -------------------------------------------------------------------- 
 
implementation 
 
uses AMPU3; 
 
{$R *.DFM} 
 
// -------------------------------------------------------------------- 
 
procedure TForm2.PlaceWindow; 
 
begin 
  Left := Form1.Left; 
  Top  := Form1.Top + Form1.Height; 
end; 
 
// -------------------------------------------------------------------- 
 
procedure TForm2.WMOnMove(var Msg: TMessage); 
 
begin 
  if (Form1.Visible) then PlaceWindow; 
end; 
 
// -------------------------------------------------------------------- 
 
procedure TForm2.FormResize(Sender: TObject); 
 
begin 
  if (Form1.Visible) then PlaceWindow; 
 
  if dsmpVideoAvail(Player) then 
    with VideoDisplay 
      do Player.VideoWindow.SetWindowPosition(0, 0, Width, Height); 
end; 
// -------------------------------------------------------------------- 
 
procedure TForm2.FormKeyPress(Sender: TObject; var Key: Char); 
 
begin 
  if ((Key = #27) or (Key = #13)) and (dsmpVideoAvail(Player)) 
    then Player.VideoWindow.put_FullScreenMode(false); 
end; 
 
// -------------------------------------------------------------------- 
 
procedure TForm2.Menu1Click(Sender: TObject); 
 
// FullScreen/Window Mode. 
 
var _fs : LongBool; 
 
begin 
  if dsmpVideoAvail(Player) then 
    begin 
      Player.VideoWindow.get_FullScreenMode(_fs); 
      Player.VideoWindow.put_FullScreenMode(not _fs); 
    end; 
end; 
 
// -------------------------------------------------------------------- 
 
procedure TForm2.SubMenuWindowSize(Sender: TObject); 
 
// Window Size --> XX% 
 
var _p: longint; 
 
begin 
  _P := TMenuItem(Sender).Tag; 
  ClientWidth  := (Player.VideoWidth * _p) div 100; 
  ClientHeight := (Player.VideoHeight * _p) div 100; 
end; 
 
// -------------------------------------------------------------------- 
 
procedure TForm2.SubMenu8Click(Sender: TObject); 
 
// Correct aspect ratio. 
 
begin 
  with Player 
    do ClientHeight := (ClientWidth * VideoHeight) div VideoWidth; 
end; 
 
// -------------------------------------------------------------------- 
 
procedure TForm2.Menu3Click(Sender: TObject); 
 
// Show/Hide main window. 
 
begin 
  Form1.Visible := not Form1.Visible; 
end; 
 
procedure TForm2.Menu12Click(Sender: TObject); 
 
// Show/Hide playlist. 
 
begin 
  Form3.Visible := not Form3.Visible; 
end; 
 
// -------------------------------------------------------------------- 
 
procedure TForm2.Menu4Click(Sender: TObject); 
 
// Play 
 
begin 
  Form1.PlayCurrentFile; 
end; 
 
procedure TForm2.Menu5Click(Sender: TObject); 
 
// Pause 
 
begin 
  Form1.PauseCurrentFile; 
end; 
 
procedure TForm2.Menu6Click(Sender: TObject); 
 
// Stop 
 
begin 
  Form1.StopCurrentFile; 
end; 
 
// -------------------------------------------------------------------- 
 
procedure TForm2.Menu10Click(Sender: TObject); 
 
// Previous 
 
begin 
  Form1.PlayPrevFile; 
end; 
 
procedure TForm2.Menu11Click(Sender: TObject); 
 
// Next 
 
begin 
  Form1.PlayNextFile(true); 
end; 
 
// -------------------------------------------------------------------- 
 
procedure TForm2.Menu8Click(Sender: TObject); 
 
// Open File 
 
begin 
  Form1.OpenFiles; 
end; 
 
// -------------------------------------------------------------------- 
 
procedure TForm2.Menu9Click(Sender: TObject); 
 
// About 
 
begin 
  ShowMessage(About); 
end; 
 
// -------------------------------------------------------------------- 
 
procedure TForm2.Menu7Click(Sender: TObject); 
 
// Exit 
 
begin 
  Close; 
end; 
 
// -------------------------------------------------------------------- 
 
procedure TForm2.VideoDisplayMouseDown(Sender: TObject; 
                 Button: TMouseButton; Shift: TShiftState; 
                 X, Y: Integer); 
begin 
  OrgP  := Point(Left, Top); 
  OrgXY := ClientToScreen(Point(X, Y)); 
end; 
 
// -------------------------------------------------------------------- 
 
procedure TForm2.VideoDisplayMouseMove(Sender: TObject; 
                 Shift: TShiftState; X, Y: Integer); 
 
var _p : TPoint; 
 
begin 
  if (not Form1.Visible) and (Shift = [ssLeft]) then 
    begin 
      _p := ClientToScreen(Point(X, Y)); 
      SetBounds(OrgP.X + (_p.X - OrgXY.X), 
                OrgP.Y + (_p.Y - OrgXY.Y), Width, Height); 
    end; 
end; 
 
// -------------------------------------------------------------------- 
 
procedure TForm2.FormCloseQuery(Sender: TObject; 
                                var CanClose: Boolean); 
 
begin 
  CanClose := false; 
  Form1.Close; 
end; 
 
// -------------------------------------------------------------------- 
 
procedure TForm2.RunFN(_fn: string); 
 
begin 
  if (not fileexists(_fn)) then exit; 
 
  if UpperCase(ExtractFileExt(_fn)) <> UpperCase(EXT_AMP) then 
     begin 
       Form3.ListBox1.Items.Clear; 
       Form3.ListBox1.Items.Add(_fn); 
       CurrentFile := _fn; 
       CurrentIdx := 0; 
       Form3.Listbox1.Repaint; 
       Form1.LoadAndPlay; 
     end else begin 
                Form3.ListBox1.Items.LoadFromFile(_fn); 
                CurrentIdx := -1; 
                Form3.Listbox1.Repaint; 
                Form1.PlayNextFile(false); 
              end; 
end; 
 
// -------------------------------------------------------------------- 
 
procedure TForm2.FormCreate(Sender: TObject); 
 
var _l : longint; 
 
begin 
  // Remove caption 
  _l := GetWindowLong(Handle, GWL_STYLE); 
  _l := _l xor WS_CAPTION; 
  SetWindowLong(Handle, GWL_STYLE, _l); 
 
  // Default size 
  Width  := 320; 
  Height := 240; 
 
  // Check parameters 
  if (paramcount > 0) then 
    begin 
      ShowWindow(Form1.Handle, SW_SHOW); 
      Application.ProcessMessages; 
      RunFN(paramstr(1)); 
    end; 
end; 
 
// -------------------------------------------------------------------- 
 
end.