⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jdevcapture.pas

📁 一个不出名的GBA模拟器
💻 PAS
字号:
//////////////////////////////////////////////////////////////////////
//                                                                  //
// jdevCapture.pas: Video capture setup dialog                      //
//                                                                  //
// The contents of this file are subject to the Bottled Light       //
// Public License Version 1.0 (the "License"); you may not use this //
// file except in compliance with the License. You may obtain a     //
// copy of the License at http://www.bottledlight.com/BLPL/         //
//                                                                  //
// Software distributed under the License is distributed on an      //
// "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or   //
// implied. See the License for the specific language governing     //
// rights and limitations under the License.                        //
//                                                                  //
// The Original Code is the Mappy VM User Interface, released       //
// April 1st, 2003. The Initial Developer of the Original Code is   //
// Bottled Light, Inc. Portions created by Bottled Light, Inc. are  //
// Copyright (C) 2001-2003 Bottled Light, Inc. All Rights Reserved. //
//                                                                  //
// Author(s):                                                       //
//   Michael Noland (joat), michael@bottledlight.com                //
//                                                                  //
// Changelog:                                                       //
//   1.0: First public release (April 1st, 2003)                    //
//                                                                  //
// Notes:                                                           //
//   None at present.                                               //
//                                                                  //
//////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////
unit jdevCapture; ////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////
interface ////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, KeyEdit, FileCtrl, IniFiles,
  CpuObservers, nexus, console, platformVideo, sysAviWriter;

//////////////////////////////////////////////////////////////////////

type
  TjdevCaptureForm = class(TCpuObserver)
    captureGroup: TGroupBox;
    saveDialog: TSaveDialog;
    lToggleCapture: TLabel;
    kToggleCapture: TKeyEdit;
    bStart: TButton;
    bStop: TButton;
    bHelp: TButton;
    tbFramerate: TTrackBar;
    lFramerate: TLabel;
    lCaptureFramerateDisplay: TLabel;
    eFilename: TEdit;
    eChangeFilename: TButton;
    lFilename: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);

    procedure ChangeFilename(Sender: TObject);
    procedure ChangeFramerate(Sender: TObject);
    procedure ChangeToggleKey(Sender: TObject);

    procedure StartCapture(Sender: TObject);
    procedure StopCapture(Sender: TObject);
    procedure ShowHelp(Sender: TObject);
  public
    procedure UpdateObserver; override;
    class function OCaption: string; override;
    procedure LoadSettings(ini: TIniFile); override;
    procedure SaveSettings(ini: TIniFile); override;
  end;

//////////////////////////////////////////////////////////////////////

var
  jdevCaptureForm: TjdevCaptureForm;

//////////////////////////////////////////////////////////////////////
implementation ///////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////

{$R *.DFM}

//////////////////////////////////////////////////////////////////////

procedure TjdevCaptureForm.FormCreate(Sender: TObject);
begin
  HelpContext := LinkHelp('capture.html');

  capturing := false;
end;

//////////////////////////////////////////////////////////////////////

procedure TjdevCaptureForm.FormShow(Sender: TObject);
begin
  // Load the translation
  LoadTranslation(self, translation);

  // Settings
  lCaptureFramerateDisplay.Caption := IntToStr(captureRate);
  tbFramerate.Position := captureRate;
  eFilename.Text := captureFilename;
  kToggleCapture.VirtualKeyCode := captureToggleKey;
end;

//////////////////////////////////////////////////////////////////////

procedure TjdevCaptureForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if capturing then StopCapture(Sender);
end;

//////////////////////////////////////////////////////////////////////

procedure TjdevCaptureForm.ChangeFramerate(Sender: TObject);
begin
  captureRate := tbFramerate.Position;
  lCaptureFramerateDisplay.Caption := IntToStr(captureRate);
end;

//////////////////////////////////////////////////////////////////////

procedure TjdevCaptureForm.ChangeFilename(Sender: TObject);
begin
  if saveDialog.Execute then begin
    captureFilename := saveDialog.Filename;
    eFilename.Text := captureFilename;
  end;
end;

//////////////////////////////////////////////////////////////////////

procedure TjdevCaptureForm.ChangeToggleKey(Sender: TObject);
begin
  captureToggleKey := kToggleCapture.VirtualKeyCode;
end;

//////////////////////////////////////////////////////////////////////

procedure TjdevCaptureForm.StartCapture(Sender: TObject);
begin
  if captureFilename = '' then begin
    Beep;
    ChangeFilename(Sender);
    if captureFilename = '' then Exit;
  end;

  if not capturing then begin
    capturing := true;
    captureIndex := 0.0;
    captureTarget := 59.727 / captureRate;

    aviStartCapture(captureFilename);
  end;

  bStart.Enabled := false;
  bStop.Enabled := true;
  tbFramerate.Enabled := false;
end;

//////////////////////////////////////////////////////////////////////

procedure TjdevCaptureForm.StopCapture(Sender: TObject);
begin
  if capturing then begin
    ShowMessage('Completing movie capture.  This may take some time.');
    aviCompleteFile;
    capturing := false;
  end;

  bStart.Enabled := true;
  bStop.Enabled := false;
  tbFramerate.Enabled := true;
end;

//////////////////////////////////////////////////////////////////////

procedure TjdevCaptureForm.ShowHelp(Sender: TObject);
begin
  ShowWebPage(helpFiles.strings[HelpContext-1]);
end;

//////////////////////////////////////////////////////////////////////

procedure TjdevCaptureForm.LoadSettings(ini: TIniFile);
begin
  inherited;

end;

//////////////////////////////////////////////////////////////////////

class function TjdevCaptureForm.OCaption: string;
begin
  Result := 'Movie Capture'
end;

//////////////////////////////////////////////////////////////////////

procedure TjdevCaptureForm.SaveSettings(ini: TIniFile);
begin
  inherited;
end;

//////////////////////////////////////////////////////////////////////

procedure TjdevCaptureForm.UpdateObserver;
begin
//
end;

//////////////////////////////////////////////////////////////////////

initialization
  RegisterDialog(TjdevCaptureForm);
end.

//////////////////////////////////////////////////////////////////////

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -