📄 jdevcapture.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 + -