////////////////////////////////////////////////////////////////////// // // // 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. //////////////////////////////////////////////////////////////////////