/**
 * This script will create a thumbnail at each marker on the selected track
 * They will be placed in the "StoragePath" subdirectory and stored in JPEG format.
 * The base name of the thumbnail is "PIC" followed by a number.
 *
 * Written By: Edward Troxel
 * www.jetdv.com/tts
 * Modified: 05-07-2003
 **/


import System.Windows.Forms; 
import SonicFoundry.Vegas; 
import System.IO; 
import Microsoft.Win32; 



try { 
  // The first thing this script does is save off the preview & project 
  // settings that will be set later. This is so they can be restored 
  // after the script is complete. 
  var origPreviewRenderQuality = Vegas.Project.Preview.RenderQuality; 
  var origPreviewFillSize = Vegas.Project.Preview.FullSize; 
  var origFieldOrder = Vegas.Project.Video.FieldOrder; 
  var origProjectDeinterlaceMethod = Vegas.Project.Video.DeinterlaceMethod; 
  var currentTime = Vegas.Cursor; 


  //Enter the path here - below represents D:\VMedia. NOTE: \\ = \ when entering path names!
  var StoragePath = "D:\\VMedia"
  var i = 1;
  var currMark;

  var track = FindSelectedTrack();
  if (null == track)
      throw "no selected track";

  // Set the preview quality and size. 
  Vegas.Project.Preview.RenderQuality = VideoRenderQuality.Best; 
  Vegas.Project.Preview.FullSize = true; 

  // Set the field order and deinterlace method 
  Vegas.Project.Video.FieldOrder = VideoFieldOrder.ProgressiveScan; 
  Vegas.Project.Video.DeinterlaceMethod = VideoDeinterlaceMethod.InterpolateFields; 

  //Go through the list of Markers
  var mrkEnum = new Enumerator(Vegas.Project.Markers);
  while (!mrkEnum.atEnd()) {

    currMark = Marker(mrkEnum.item()).Position;

    var nameadder = i.toString();
    if (i < 1000) {
      nameadder = "0" + i.toString();
    }
    if (i < 100) {
      nameadder = "00" + i.toString();
    }
    if (i < 10) {
      nameadder = "000" + i.toString();
    }

    var FullFileName = Path.Combine(StoragePath, "Pic" + nameadder + ".jpg")

    // save a snapshot. The SaveSnapshot method returns a 
    // member of the RenderStatus enumeration. If the user 
    // hits the escape key or quits the app, exit the loop. 
    if (Vegas.SaveSnapshot(FullFileName, ImageFileFormat.JPEG, currMark) == RenderStatus.Complete) {
      Vegas.UpdateUI(); 
    }

    i++;
    mrkEnum.moveNext();
  }


  // restore the project and preview settings 
  Vegas.Project.Preview.RenderQuality = origPreviewRenderQuality; 
  Vegas.Project.Preview.FullSize = origPreviewFillSize; 
  Vegas.Project.Video.FieldOrder = origFieldOrder; 
  Vegas.Project.Video.DeinterlaceMethod = origProjectDeinterlaceMethod; 
  Vegas.Cursor = currentTime; 

  Vegas.SaveProject("D:\\STest.veg");

} catch (e) { 
  MessageBox.Show(e); 
} 




function FindSelectedTrack() : Track {
  var trackEnum = new Enumerator(Vegas.Project.Tracks);
  while (!trackEnum.atEnd()) {
    var track : Track = Track(trackEnum.item());
    if (track.Selected) {
        return track;
    }
    trackEnum.moveNext();
  }
  return null;
}

