//////////////////////////////////////////////////////////////////////////////
//
// File:          WiaVideo.idl
//
// Description:   Describes the interface to the WiaVideo object enabling
//                WIA, and other apps to capture still images from a video
//                stream.  
//
// Copyright (c) 2000 Microsoft Corp.
//
//////////////////////////////////////////////////////////////////////////////

import "oaidl.idl";
import "ocidl.idl";

///////////////////////////////
// WIAVIDEO_STATE
//
// List of states WiaVideo can
// be in.  Retrieved via
// GetCurrentState function.
//
typedef enum
{
   WIAVIDEO_NO_VIDEO          = 1,
   WIAVIDEO_CREATING_VIDEO    = 2,
   WIAVIDEO_VIDEO_CREATED     = 3,
   WIAVIDEO_VIDEO_PLAYING     = 4,
   WIAVIDEO_VIDEO_PAUSED      = 5,
   WIAVIDEO_DESTROYING_VIDEO  = 6
} WIAVIDEO_STATE;
   
   [
      object,
      uuid(D52920AA-DB88-41F0-946C-E00DC0A19CFA),
      helpstring("IWiaVideo Interface"),
      pointer_default(unique)
   ]
   interface IWiaVideo : IUnknown
   {
      // 
      // Properties
      //

      [propget, id(1), helpstring("property PreviewVisible")] 
      HRESULT PreviewVisible([out, retval] BOOL *pbPreviewVisible);

      [propput, id(1), helpstring("property PreviewVisible")] 
      HRESULT PreviewVisible([in] BOOL bPreviewVisible);

      [propget, id(2), helpstring("property ImageDirectory")] 
      HRESULT ImagesDirectory([out, retval] BSTR *pbstrImageDirectory);

      [propput, id(2), helpstring("property ImageDirectory")] 
      HRESULT ImagesDirectory([in] BSTR bstrImageDirectory);

      // 
      // Methods
      //

      [id(3), helpstring("method CreateVideoByWiaDevID.")] 
      HRESULT CreateVideoByWiaDevID([in] BSTR       bstrWiaDeviceID,
                                    [in] HWND       hwndParent,
                                    [in] BOOL       bStretchToFitParent,
                                    [in] BOOL       bAutoBeginPlayback);

      [id(4), helpstring("method CreateVideoByDevNum")] 
      HRESULT CreateVideoByDevNum([in] UINT       uiDeviceNumber,
                                  [in] HWND       hwndParent,
                                  [in] BOOL       bStretchToFitParent,
                                  [in] BOOL       bAutoBeginPlayback);

      [id(5), helpstring("method CreateVideoByName")] 
      HRESULT CreateVideoByName([in] BSTR       bstrFriendlyName,
                                [in] HWND       hwndParent,
                                [in] BOOL       bStretchToFitParent,
                                [in] BOOL       bAutoBeginPlayback);

      [id(6), helpstring("method DestroyVideo")] 
      HRESULT DestroyVideo();

      [id(7), helpstring("method Play")] 
      HRESULT Play();

      [id(8), helpstring("method Pause")] 
      HRESULT Pause();

      [id(9), helpstring("method TakePicture")] 
      HRESULT TakePicture([out] BSTR *pbstrNewImageFilename);

      [id(10), helpstring("method ResizeVideo")] 
      HRESULT ResizeVideo([in] BOOL bStretchToFitParent);

      [id(11), helpstring("method GetState")] 
      HRESULT GetCurrentState([out, retval] WIAVIDEO_STATE   *pState);
   };

[
   uuid(1320AD9E-A50F-4ED0-B1A4-4E45EC25005E),
   version(1.0),
   helpstring("WiaVideo 1.0 Type Library")
]
library WIAVIDEOLib
{
   importlib("stdole32.tlb");
   importlib("stdole2.tlb");

   
   [
      uuid(3908C3CD-4478-4536-AF2F-10C25D4EF89A),
      helpstring("WiaVideo Class")
   ]
   coclass WiaVideo
   {
      [default] interface IWiaVideo;
   };
};
