home *** CD-ROM | disk | FTP | other *** search
/ Mastering Visual Basic 6 / mastvb6.iso / leadtools / ocx32.lt / Sdimain.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1998-07-02  |  12.7 KB  |  500 lines

  1. unit Sdimain;
  2.  
  3. interface
  4.  
  5. uses Windows, Classes, Graphics, Forms, Controls, Menus,
  6.   Dialogs, StdCtrls, Buttons, ExtCtrls, ComCtrls, OleCtrls,
  7.   LeadVid,LtVidOCX, LtDlgOCX, SysUtils, LEADDlg, leaddef;
  8.  
  9. type
  10.   TMainForm = class(TForm)
  11.     MainMenu: TMainMenu;
  12.     FileMenu: TMenuItem;
  13.     OpenItem: TMenuItem;
  14.     SaveItem: TMenuItem;
  15.     ExitItem: TMenuItem;
  16.     N1: TMenuItem;
  17.     OpenDialog: TOpenDialog;
  18.     SaveDialog: TSaveDialog;
  19.     Help1: TMenuItem;
  20.     About1: TMenuItem;
  21.     SpeedPanel: TPanel;
  22.     OpenBtn: TSpeedButton;
  23.     SaveBtn: TSpeedButton;
  24.     ExitBtn: TSpeedButton;
  25.     StatusBar: TStatusBar;
  26.     Close1: TMenuItem;
  27.     N2: TMenuItem;
  28.     SaveOptions1: TMenuItem;
  29.     SaveFrame1: TMenuItem;
  30.     N3: TMenuItem;
  31.     Edit1: TMenuItem;
  32.     Copy1: TMenuItem;
  33.     Paste1: TMenuItem;
  34.     Delete1: TMenuItem;
  35.     N4: TMenuItem;
  36.     InsertFrame1: TMenuItem;
  37.     ReplaceFrame1: TMenuItem;
  38.     Multimedia1: TMenuItem;
  39.     Play1: TMenuItem;
  40.     Stop1: TMenuItem;
  41.     Pause1: TMenuItem;
  42.     Resume1: TMenuItem;
  43.     N5: TMenuItem;
  44.     PlaybackSpeed1: TMenuItem;
  45.     AudioProperties1: TMenuItem;
  46.     N6: TMenuItem;
  47.     MarkInOut1: TMenuItem;
  48.     N14x1: TMenuItem;
  49.     N13x1: TMenuItem;
  50.     N12x1: TMenuItem;
  51.     Normal1: TMenuItem;
  52.     N2x1: TMenuItem;
  53.     N3x1: TMenuItem;
  54.     N4x1: TMenuItem;
  55.     Position1: TMenuItem;
  56.     Next1: TMenuItem;
  57.     Previous1: TMenuItem;
  58.     N7: TMenuItem;
  59.     Last1: TMenuItem;
  60.     Preferences1: TMenuItem;
  61.     First1: TMenuItem;
  62.     ReadOnly1: TMenuItem;
  63.     Edit2: TMenuItem;
  64.     Panel1: TPanel;
  65.     LEADVid1: TLeadVidCtrl;
  66.     LTDlg1: TLeadDlgCtrl;
  67.     procedure ShowHint(Sender: TObject);
  68.     procedure ExitItemClick(Sender: TObject);
  69.     procedure OpenItemClick(Sender: TObject);
  70.     procedure SaveItemClick(Sender: TObject);
  71.     procedure About1Click(Sender: TObject);
  72.     procedure FormCreate(Sender: TObject);
  73.     procedure FormShow(Sender: TObject);
  74.     procedure Close1Click(Sender: TObject);
  75.     procedure Edit1Click(Sender: TObject);
  76.     procedure Play1Click(Sender: TObject);
  77.     procedure Stop1Click(Sender: TObject);
  78.     procedure Pause1Click(Sender: TObject);
  79.     procedure Resume1Click(Sender: TObject);
  80.     procedure N14x1Click(Sender: TObject);
  81.     procedure N13x1Click(Sender: TObject);
  82.     procedure N12x1Click(Sender: TObject);
  83.     procedure Normal1Click(Sender: TObject);
  84.     procedure N2x1Click(Sender: TObject);
  85.     procedure N3x1Click(Sender: TObject);
  86.     procedure N4x1Click(Sender: TObject);
  87.     procedure ReadOnly1Click(Sender: TObject);
  88.     procedure Edit2Click(Sender: TObject);
  89.     procedure SaveOptions1Click(Sender: TObject);
  90.     procedure SaveFrame1Click(Sender: TObject);
  91.     procedure MarkInOut1Click(Sender: TObject);
  92.     procedure Multimedia1Click(Sender: TObject);
  93.     procedure Position1Click(Sender: TObject);
  94.     procedure Next1Click(Sender: TObject);
  95.     procedure Previous1Click(Sender: TObject);
  96.     procedure First1Click(Sender: TObject);
  97.     procedure Last1Click(Sender: TObject);
  98.     procedure Copy1Click(Sender: TObject);
  99.     procedure Paste1Click(Sender: TObject);
  100.     procedure Delete1Click(Sender: TObject);
  101.     procedure InsertFrame1Click(Sender: TObject);
  102.     procedure ReplaceFrame1Click(Sender: TObject);
  103.     procedure AudioProperties1Click(Sender: TObject);
  104.     procedure LeadVid1MMModeChange(Sender: TObject; iMode: Smallint);
  105.   private
  106.     { Private declarations }
  107.   public
  108.     { Public declarations }
  109.   end;
  110.  
  111. var
  112.   MainForm: TMainForm;
  113.   gbLoaded: Boolean;
  114.   gAudComp: String;
  115.   gVidComp: String;
  116.   gAudFrmt: Integer;
  117.   gbPaused: Boolean;
  118.  
  119. implementation
  120.  
  121. uses About, SaveOpt, Mark, Volume;
  122.  
  123. {$R *.DFM}
  124.  
  125. procedure TMainForm.ShowHint(Sender: TObject);
  126. begin
  127.   StatusBar.SimpleText := Application.Hint;
  128. end;
  129.  
  130. procedure TMainForm.ExitItemClick(Sender: TObject);
  131. begin
  132.   if gbLoaded then
  133.     LeadVid1.MMClose;
  134.   Close;
  135. end;
  136.  
  137. procedure TMainForm.OpenItemClick(Sender: TObject);
  138. var
  139.   nRet: Integer;
  140. begin
  141.   if OpenDialog.Execute then
  142.    begin
  143.      nRet := LeadVid1.MMLoad(OpenDialog.FileName);
  144.      if nRet=0 then
  145.       begin
  146.         LeadVid1.Left:=0;
  147.         LeadVid1.Top:=0;
  148.         ClientWidth := LeadVid1.VideoWidth;
  149.         ClientHeight := LeadVid1.VideoHeight + SpeedPanel.Height + StatusBar.Height;
  150.         LeadVid1.MMCurrentPos:=0;
  151.         gbLoaded:=True;
  152.         Edit1.Visible:=True;
  153.         Multimedia1.Visible:=True;
  154.         Position1.Visible:=True;
  155.         SaveItem.Enabled:=True;
  156.         SaveFrame1.Enabled:=True;
  157.         Normal1.Checked:=True;
  158.       end
  159.      else
  160.        ShowMessage('Error: ' + IntToStr(nRet) + ' opening file');
  161.    end
  162. end;
  163.  
  164. procedure TMainForm.SaveItemClick(Sender: TObject);
  165. begin
  166.   if SaveDialog.Execute then
  167.    begin
  168.      Cursor:=crHourGlass;
  169.      LeadVid1.MMSaveFile(SaveDialog.FileName,FILE_AVI,gVidComp,gAudComp);
  170.      Cursor:=crDefault;
  171.    end;
  172. end;
  173.  
  174. procedure TMainForm.About1Click(Sender: TObject);
  175. begin
  176.   AboutBox.ShowModal;
  177. end;
  178.  
  179. procedure TMainForm.FormCreate(Sender: TObject);
  180. begin
  181.   LEADVid1.UnlockSupport(L_SUPPORT_EXPRESS, L_KEY_EXPRESS);
  182.   LEADVid1.UnlockSupport(L_SUPPORT_VIDEO, L_KEY_VIDEO);
  183.   LEADVid1.UnlockSupport(L_SUPPORT_GIFLZW, L_KEY_GIFLZW);
  184.   LEADVid1.UnlockSupport(L_SUPPORT_TIFLZW, L_KEY_TIFLZW);
  185.   LEADVid1.UnlockSupport(L_SUPPORT_MEDICAL, L_KEY_MEDICAL);
  186.   Application.OnHint := ShowHint;
  187.   LeadVid1.Appearance:=0;
  188.   LeadVid1.EnableMethodErrors:=0;
  189.   gbLoaded:=False;
  190.   gbPaused:=False;
  191. end;
  192.  
  193. procedure TMainForm.FormShow(Sender: TObject);
  194. begin
  195.   LeadVid1.Left:=0;
  196.   LeadVid1.Top:=0;
  197.   LeadVid1.Width:=Panel1.Width;
  198.   LeadVid1.Height:=Panel1.Height;
  199. end;
  200.  
  201. procedure TMainForm.Close1Click(Sender: TObject);
  202. begin
  203.   LeadVid1.MMClose;
  204.   gbLoaded:=False;
  205.   Edit1.Visible:=False;
  206.   Multimedia1.Visible:=False;
  207.   Position1.Visible:=False;
  208.   SaveItem.Enabled:=False;
  209.   SaveFrame1.Enabled:=False;
  210. end;
  211.  
  212. procedure TMainForm.Edit1Click(Sender: TObject);
  213. var
  214.   bUpdate: Boolean;
  215. begin
  216.   bUpdate := (LeadVid1.ControlMode = MODE_EDIT) and gbLoaded;
  217.   Paste1.Enabled := bUpdate and (LeadVid1.MMIsClipBoardReady<>0);
  218.   Delete1.Enabled := bUpdate;
  219.   InsertFrame1.Enabled := bUpdate;
  220.   ReplaceFrame1.Enabled := bUpdate;
  221. end;
  222.  
  223. procedure TMainForm.Play1Click(Sender: TObject);
  224. begin
  225.   LeadVid1.MMPlay;
  226. end;
  227.  
  228. procedure TMainForm.Stop1Click(Sender: TObject);
  229. begin
  230.   LeadVid1.MMStop;
  231. end;
  232.  
  233. procedure TMainForm.Pause1Click(Sender: TObject);
  234. begin
  235.   LeadVid1.MMPause;
  236.   gbPaused:=True;
  237. end;
  238.  
  239. procedure TMainForm.Resume1Click(Sender: TObject);
  240. begin
  241.   LeadVid1.MMResume;
  242.   gbPaused:=False;
  243. end;
  244.  
  245. procedure TMainForm.N14x1Click(Sender: TObject);
  246. begin
  247.   LeadVid1.MMPlayRate:=0.25;
  248.   N14x1.Checked:=True;
  249. end;
  250.  
  251. procedure TMainForm.N13x1Click(Sender: TObject);
  252. begin
  253.   LeadVid1.MMPlayRate:=0.33;
  254.   N13x1.Checked:=True;
  255. end;
  256.  
  257. procedure TMainForm.N12x1Click(Sender: TObject);
  258. begin
  259.     LeadVid1.MMPlayRate:=0.5;
  260.     N12x1.Checked:=True;
  261. end;
  262.  
  263. procedure TMainForm.Normal1Click(Sender: TObject);
  264. begin
  265.     LeadVid1.MMPlayRate:=1.0;
  266.     Normal1.Checked:=True;
  267. end;
  268.  
  269. procedure TMainForm.N2x1Click(Sender: TObject);
  270. begin
  271.     LeadVid1.MMPlayRate:=2.0;
  272.     N2x1.Checked:=True;
  273. end;
  274.  
  275. procedure TMainForm.N3x1Click(Sender: TObject);
  276. begin
  277.     LeadVid1.MMPlayRate:=3.0;
  278.     N3x1.Checked:=True;
  279. end;
  280.  
  281. procedure TMainForm.N4x1Click(Sender: TObject);
  282. begin
  283.     LeadVid1.MMPlayRate:=4.0;
  284.     N4x1.Checked:=True;
  285. end;
  286.  
  287. procedure TMainForm.ReadOnly1Click(Sender: TObject);
  288. begin
  289.   if not ReadOnly1.Checked then
  290.    begin
  291.      ReadOnly1.Checked:=True;
  292.      LeadVid1.ControlMode:=MODE_PLAYBACK;
  293.      if gbLoaded then LeadVid1.MMClose;
  294.    end;
  295. end;
  296.  
  297. procedure TMainForm.Edit2Click(Sender: TObject);
  298. begin
  299.   if not Edit2.Checked then
  300.    begin
  301.      Edit2.Checked:=True;
  302.      LeadVid1.ControlMode:=MODE_EDIT;
  303.      if gbLoaded then LeadVid1.MMClose;
  304.    end
  305. end;
  306.  
  307. procedure TMainForm.SaveOptions1Click(Sender: TObject);
  308. begin
  309.   with SaveOptDlg do
  310.    begin
  311.      if ShowModal = mrOK then
  312.       begin
  313.         gVidComp:=ComboBox1.Text;
  314.         gAudComp:=ComboBox2.Text;
  315.         gAudFrmt:=nAud;
  316.       end;
  317.    end;
  318. end;
  319.  
  320. procedure TMainForm.SaveFrame1Click(Sender: TObject);
  321. var
  322.   nRet: Integer;
  323. begin
  324.   with LtDlg1 do
  325.    begin
  326.      EnableMethodErrors:=false;
  327.      DialogTitle:='Save Frame';
  328.      FileName:='';
  329.      InitialDir:='';
  330.      UIFlags:=DLG_FS_95STYLE or DLG_FS_PROGRESSIVE or DLG_FS_MULTIPAGE or
  331.               DLG_FS_STAMP or DLG_FS_QFACTOR;
  332.      SaveFormatFlags:=DLG_FS_ALL;
  333.      nRet:=FileSave(Handle);
  334.      if nRet=0 then
  335.       begin
  336.         with LeadVid1 do
  337.          begin
  338.            nRet:= MMSaveFrame(FileName,SaveFormat,SaveBitsPerPixel,SaveQFactor,
  339.                             SaveMulti);
  340.            if nRet<>0 then
  341.              ShowMessage('Error: ' + IntToStr(nRet) + ' saving frame');
  342.          end;
  343.       end
  344.      else
  345.        ShowMessage('Error: ' + IntToStr(nRet) + ' calling FileSave');
  346.    end;
  347. end;
  348.  
  349. procedure TMainForm.MarkInOut1Click(Sender: TObject);
  350. begin
  351.   if MarkDlg.ShowModal=mrOk then
  352.    begin
  353.      try
  354.        LeadVid1.MMClipStart:=MarkDlg.TrackBar1.Position;
  355.        LeadVid1.MMClipEnd:=MarkDlg.TrackBar2.Position;
  356.        LeadVid1.MMCurrentPos:=LeadVid1.MMClipStart;
  357.      except
  358.        ShowMessage('Error Marking Clip');
  359.      end;
  360.    end;
  361. end;
  362.  
  363. procedure TMainForm.Multimedia1Click(Sender: TObject);
  364. begin
  365.   Play1.Enabled:= (LeadVid1.MMIsPlaying=0) and (not gbPaused);
  366.   Stop1.Enabled:=(LeadVid1.MMIsPlaying<>0) and (not gbPaused);
  367.   Pause1.Enabled:= not gbPaused and gbLoaded;
  368.   Resume1.Enabled:=gbPaused and gbLoaded;
  369.   MarkInOut1.Enabled:= LeadVid1.MMIsPlaying=0;
  370. end;
  371.  
  372. procedure TMainForm.Position1Click(Sender: TObject);
  373. begin
  374.   if LeadVid1.MMCurrentPos=0 then
  375.    begin
  376.      First1.Enabled:=False;
  377.      Previous1.Enabled:=False;
  378.    end
  379.   else
  380.    begin
  381.      First1.Enabled:=True;
  382.      Previous1.Enabled:=True;
  383.    end;
  384.   if LeadVid1.MMCurrentPos = LeadVid1.MMTotalFrames - 1 then
  385.    begin
  386.      Last1.Enabled:=False;
  387.      Next1.Enabled:=False;
  388.    end
  389.   else
  390.    begin
  391.      Last1.Enabled:=True;
  392.      Next1.Enabled:=True;
  393.    end;
  394. end;
  395.  
  396. procedure TMainForm.Next1Click(Sender: TObject);
  397. begin
  398.   LeadVid1.MMCurrentPos := LeadVid1.MMCurrentPos + 1;
  399. end;
  400.  
  401. procedure TMainForm.Previous1Click(Sender: TObject);
  402. begin
  403.   LeadVid1.MMCurrentPos := LeadVid1.MMCurrentPos - 1;
  404. end;
  405.  
  406. procedure TMainForm.First1Click(Sender: TObject);
  407. begin
  408.   LeadVid1.MMCurrentPos := 0;
  409. end;
  410.  
  411. procedure TMainForm.Last1Click(Sender: TObject);
  412. begin
  413.   LeadVid1.MMCurrentPos := LeadVid1.MMTotalFrames - 1;
  414. end;
  415.  
  416. procedure TMainForm.Copy1Click(Sender: TObject);
  417. var
  418.   nRet: Integer;
  419. begin
  420.   nRet:=LeadVid1.MMCopyFramesToClipboard(LeadVid1.MMCurrentPos,1);
  421.   if(nRet<>0) then
  422.     ShowMessage('Error: ' + IntToStr(nRet) + ' copying frames to clipboard');
  423. end;
  424.  
  425. procedure TMainForm.Paste1Click(Sender: TObject);
  426. var
  427.   nRet:Integer;
  428. begin
  429.   nRet:=LeadVid1.MMPasteFrames(LeadVid1.MMCurrentPos,1);
  430.   if(nRet<>0) then
  431.     ShowMessage('Error: ' + IntToStr(nRet) + ' pasting frames');
  432. end;
  433.  
  434. procedure TMainForm.Delete1Click(Sender: TObject);
  435. var
  436.   nRet: Integer;
  437. begin
  438.   nRet:=LeadVid1.MMDeleteFrames(LEADVid1.MMCurrentPos,1);
  439.   if(nRet<>0) then
  440.     ShowMessage('Error: ' + IntToStr(nRet) + ' deleting frames');
  441. end;
  442.  
  443. procedure TMainForm.InsertFrame1Click(Sender: TObject);
  444. var
  445.   nRet: Integer;
  446. begin
  447.   with LtDlg1 do
  448.    begin
  449.      EnableMethodErrors:=false;
  450.      FileName:='';
  451.      FileDlgFlags:=0;
  452.      DialogTitle:='Insert Image';
  453.      Filter:='All Files|*.*';
  454.      UIFlags:=DLG_FO_AUTOPROCESS or DLG_FO_95STYLE or DLG_FO_FILEINFO or DLG_FO_SHOWPREVIEW;
  455.      nRet := FileOpen(Handle);
  456.      if nRet=0 then
  457.       begin
  458.         nRet:=LeadVid1.MMInsertFrameFromBitmap(LeadVid1.MMCurrentPos,Bitmap);
  459.         if(nRet<>0)then
  460.           ShowMessage('Error: ' + IntToStr(nRet) + ' inserting frame');
  461.       end
  462.    end
  463. end;
  464.  
  465. procedure TMainForm.ReplaceFrame1Click(Sender: TObject);
  466. var
  467.   nRet: Integer;
  468. begin
  469.   with LtDlg1 do
  470.    begin
  471.      EnableMethodErrors:=false;
  472.      FileName:='';
  473.      FileDlgFlags:=0;
  474.      DialogTitle:='Replace Image';
  475.      Filter:='All Files|*.*';
  476.      UIFlags:=DLG_FO_AUTOPROCESS or DLG_FO_95STYLE or DLG_FO_FILEINFO or DLG_FO_SHOWPREVIEW;
  477.      nRet := FileOpen(Handle);
  478.      if nRet=0 then
  479.       begin
  480.         nRet:=LeadVid1.MMReplaceFrameFromBitmap(LeadVid1.MMCurrentPos,Bitmap);
  481.         if(nRet<>0) then
  482.           ShowMessage('Error: ' + IntToStr(nRet) + ' replacing frame');
  483.       end
  484.    end
  485. end;
  486.  
  487. procedure TMainForm.AudioProperties1Click(Sender: TObject);
  488. begin
  489.   VolumeDlg.ShowModal;
  490. end;
  491.  
  492. procedure TMainForm.LeadVid1MMModeChange(Sender: TObject; iMode: Smallint);
  493. begin
  494.   if iMode=MODE_STOP then
  495.     LeadVid1.MMCurrentPos:=0;
  496. end;
  497.  
  498. end.
  499.  
  500.