// ************************************************************************ //
// WARNING                                                                    
// -------                                                                    
// The types declared in this file were generated from data read from a       
// Type Library. If this type library is explicitly or indirectly (via        
// another type library referring to this type library) re-imported, or the   
// 'Refresh' command of the Type Library Editor activated while editing the   
// Type Library, the contents of this file will be regenerated and all        
// manual modifications will be lost.                                         
// ************************************************************************ //

// C++ TLBWRTR : $Revision:   1.134.1.39  $
// File generated on 28/02/01 17:27:14 from Type Library described below.

// ************************************************************************ //
// Type Lib: C:\Program Files\Euresys\MultiCam for Picolo\ActiveX\EPicoloACL.dll (1)
// IID\LCID: {0A8ABF70-7A27-11D3-89F7-0050042A3D34}\0
// Helpfile: 
// DepndLst: 
//   (1) v2.0 stdole, (C:\WINNT\System32\STDOLE2.TLB)
//   (2) v4.0 StdVCL, (C:\WINNT\System32\STDVCL40.DLL)
// ************************************************************************ //
#ifndef   __EPICOLOACLLib_TLB_h__
#define   __EPICOLOACLLib_TLB_h__

#pragma option push -b -w-inl

#include <utilcls.h>
#if !defined(__UTILCLS_H_VERSION) || (__UTILCLS_H_VERSION < 0x0500)
//
// The code generated by the TLIBIMP utility or the Import|TypeLibrary 
// and Import|ActiveX feature of C++Builder rely on specific versions of
// the header file UTILCLS.H found in the INCLUDE\VCL directory. If an 
// older version of the file is detected, you probably need an update/patch.
//
#error "This file requires a newer version of the header UTILCLS.H" \
       "You need to apply an update/patch to your copy of C++Builder"
#endif
#include <olectl.h>
#include <ocidl.h>
#if defined(USING_ATLVCL) || defined(USING_ATL)
#if !defined(__TLB_NO_EVENT_WRAPPERS)
#include <atl/atlmod.h>
#endif
#endif


// *********************************************************************//
// Forward reference of some VCL types (to avoid including STDVCL.HPP)    
// *********************************************************************//
namespace Stdvcl {class IStrings; class IStringsDisp;}
using namespace Stdvcl;
typedef TComInterface<IStrings> IStringsPtr;
typedef TComInterface<IStringsDisp> IStringsDispPtr;

namespace Epicoloacllib_tlb
{

// *********************************************************************//
// HelpString: EureCard Picolo ActiveX Control Library
// Version:    3.3
// *********************************************************************//


// *********************************************************************//
// GUIDS declared in the TypeLibrary. Following prefixes are used:        
//   Type Libraries     : LIBID_xxxx                                      
//   CoClasses          : CLSID_xxxx                                      
//   DISPInterfaces     : DIID_xxxx                                       
//   Non-DISP interfaces: IID_xxxx                                        
// *********************************************************************//
extern __declspec (package) const GUID LIBID_EPICOLOACLLib;
extern __declspec (package) const GUID DIID__IECameraPicoloEvents;
extern __declspec (package) const GUID GUID_enumECameraError;
extern __declspec (package) const GUID IID_IECameraPicolo;
extern __declspec (package) const GUID CLSID_ECameraPicolo;
extern __declspec (package) const GUID GUID_enumExpParam;
extern __declspec (package) const GUID GUID_enumExpParamStr;
extern __declspec (package) const GUID GUID_enumVideoStandard;
extern __declspec (package) const GUID GUID_enumColorFormat;
extern __declspec (package) const GUID GUID_enumFieldMode;
extern __declspec (package) const GUID GUID_enumGrabSync;
extern __declspec (package) const GUID GUID_enumColorTrap;
extern __declspec (package) const GUID GUID_enumCoring;
extern __declspec (package) const GUID GUID_enumGamma;
extern __declspec (package) const GUID GUID_enumTriggerMask;
extern __declspec (package) const GUID GUID_enumTriggerMode;
extern __declspec (package) const GUID GUID_enumAcquisitionTrigger;
extern __declspec (package) const GUID DIID__IEConfigPicoloEvents;
extern __declspec (package) const GUID IID_IEConfigPicolo;
extern __declspec (package) const GUID CLSID_EConfigPicolo;
extern __declspec (package) const GUID GUID_enumBoardType;
extern __declspec (package) const GUID GUID_enumWatchDogSetting;
extern __declspec (package) const GUID IID_IPicoloCallBack;
extern __declspec (package) const GUID DIID__IPicoloCallBackEvents;
extern __declspec (package) const GUID CLSID_PicoloCallBack;

// *********************************************************************//
// Forward declaration of types defined in TypeLibrary                    
// *********************************************************************//
enum      enumECameraError;
enum      enumExpParam;
enum      enumExpParamStr;
enum      enumVideoStandard;
enum      enumColorFormat;
enum      enumFieldMode;
enum      enumGrabSync;
enum      enumColorTrap;
enum      enumCoring;
enum      enumGamma;
enum      enumTriggerMask;
enum      enumTriggerMode;
enum      enumAcquisitionTrigger;
enum      enumBoardType;
enum      enumWatchDogSetting;
interface DECLSPEC_UUID("{0A8ABF81-7A27-11D3-89F7-0050042A3D34}") _IECameraPicoloEvents;
typedef TComInterface<_IECameraPicoloEvents, &DIID__IECameraPicoloEvents> _IECameraPicoloEventsPtr;
interface DECLSPEC_UUID("{0A8ABF7F-7A27-11D3-89F7-0050042A3D34}") IECameraPicolo;
typedef TComInterface<IECameraPicolo, &IID_IECameraPicolo> IECameraPicoloPtr;
interface DECLSPEC_UUID("{0A8ABF84-7A27-11D3-89F7-0050042A3D34}") _IEConfigPicoloEvents;
typedef TComInterface<_IEConfigPicoloEvents, &DIID__IEConfigPicoloEvents> _IEConfigPicoloEventsPtr;
interface DECLSPEC_UUID("{0A8ABF82-7A27-11D3-89F7-0050042A3D34}") IEConfigPicolo;
typedef TComInterface<IEConfigPicolo, &IID_IEConfigPicolo> IEConfigPicoloPtr;
interface DECLSPEC_UUID("{0A8ABF86-7A27-11D3-89F7-0050042A3D34}") IPicoloCallBack;
typedef TComInterface<IPicoloCallBack, &IID_IPicoloCallBack> IPicoloCallBackPtr;
interface DECLSPEC_UUID("{0A8ABF88-7A27-11D3-89F7-0050042A3D34}") _IPicoloCallBackEvents;
typedef TComInterface<_IPicoloCallBackEvents, &DIID__IPicoloCallBackEvents> _IPicoloCallBackEventsPtr;

// *********************************************************************//
// Declaration of CoClasses defined in Type Library                       
// (NOTE: Here we map each CoClass to its Default Interface)              
//                                                                        
// The LIBID_OF_ macro(s) map a LIBID_OF_CoClassName to the GUID of this  
// TypeLibrary. It simplifies the updating of macros when CoClass name    
// change.                                                                
// *********************************************************************//
typedef IECameraPicolo ECameraPicolo;
typedef IECameraPicoloPtr ECameraPicoloPtr;
typedef IEConfigPicolo EConfigPicolo;
typedef IEConfigPicoloPtr EConfigPicoloPtr;
typedef IPicoloCallBack PicoloCallBack;
typedef IPicoloCallBackPtr PicoloCallBackPtr;

#define LIBID_OF_ECameraPicolo (&LIBID_EPICOLOACLLib)
#define LIBID_OF_EConfigPicolo (&LIBID_EPICOLOACLLib)
#define LIBID_OF_PicoloCallBack (&LIBID_EPICOLOACLLib)

// *********************************************************************//
// Declaration of Enumerations defined in Type Library                    
// *********************************************************************//
typedef enum enumECameraError
{
  eUnknownError = 0, 
  eNoSignal = 1
} enumECameraError;

typedef enum enumExpParam
{
  eImageScaleX = 59, 
  eImageSizeX = 60, 
  eImageOffsetX = 61, 
  eImageScaleY = 62, 
  eImageSizeY = 63, 
  eImageOffsetY = 64, 
  ePicTmgScaleX = 2, 
  ePicTmgSizeX = 3, 
  ePicTmgOffsetX = 4, 
  ePicTmgScaleY = 5, 
  ePicTmgSizeY = 6, 
  ePicTmgOffsetY = 7, 
  eImageFlipY = 66, 
  eStandard = 13, 
  eFieldMode = 18, 
  eAcqColFmt = 146, 
  eEureCardID = 162, 
  eAcqSource = 136, 
  eColorTrap = 138, 
  eVideoFilter = 139, 
  eCoring = 140, 
  eVerticalYComb = 166, 
  eVerticalCComb = 167, 
  eCAGC = 168, 
  eCKILL = 169, 
  eGamma = 170, 
  eVideoGain = 141, 
  eVideoOffset = 142, 
  eVideoUGain = 143, 
  eVideoVGain = 144, 
  eVideoHue = 145, 
  eAcqMinVal = 147, 
  eAcqMaxVal = 148, 
  eInitPause = 149, 
  eInitTrigger = 150, 
  eInitGrabSync = 151, 
  eInitGrabDelay = 152, 
  eRepeatPause = 153, 
  eRepeatTrigger = 154, 
  eRepeatGrabSync = 155, 
  eRepeatGrabDelay = 156, 
  eRepeatGrabCount = 157, 
  eTriggerMode = 158, 
  eTriggerMask = 159, 
  eAssemblerMask = 160, 
  eChannelState = 163, 
  eChannelSurfaceCount = 164, 
  eChannelTimeCode = 165, 
  eDigitalIoStatusAsLong = 78
} enumExpParam;

typedef enum enumExpParamStr
{
  eDigitalIoConfig = 77, 
  eDigitalIoControl = 76, 
  eDigitalIoStatus = 78
} enumExpParamStr;

typedef enum enumVideoStandard
{
  eCCIR = 0, 
  eEIA = 1, 
  ePAL = 2, 
  eNTSC = 3, 
  eSECAM = 4
} enumVideoStandard;

typedef enum enumColorFormat
{
  eRGB24 = 0, 
  eY8 = 1
} enumColorFormat;

typedef enum enumFieldMode
{
  eProgressive = 1, 
  eInterlaced = 2
} enumFieldMode;

typedef enum enumGrabSync
{
  eNext = 0, 
  eUp = 1, 
  eDown = 2
} enumGrabSync;

typedef enum enumColorTrap
{
  eDisable = 0, 
  eEnable = 1
} enumColorTrap;

typedef enum enumCoring
{
  eNoCoring = 0, 
  eCoring8 = 1, 
  eCoring16 = 2, 
  eCoring32 = 3
} enumCoring;

typedef enum enumGamma
{
  eNoCorrection = 0, 
  eRemoveGamma = 1
} enumGamma;

typedef enum enumTriggerMask
{
  eNoMask = 0, 
  eSkip = 1, 
  eDelayTrigger = 2, 
  eDelayRepeat = 3, 
  eStop = 4, 
  eBypass = 5
} enumTriggerMask;

typedef enum enumTriggerMode
{
  eAuto = 0, 
  eSystem = 1
} enumTriggerMode;

typedef enum enumAcquisitionTrigger
{
  ePause = 0, 
  eHigh = 1, 
  eLow = 2, 
  eGoingHigh = 3, 
  eGoingLow = 4, 
  eGoingAny = 5
} enumAcquisitionTrigger;

typedef enum enumBoardType
{
  eUnknownDevice = 0, 
  ePicolo = 1, 
  ePicoloPro = 2, 
  ePicoloPro2 = 3, 
  eUnknownEureCard = 4, 
  ePicoloPro3I = 5, 
  ePicoloPro3E = 6
} enumBoardType;

typedef enum enumWatchDogSetting
{
  eWatchDogOff = 0, 
  eWatchDogOn = 1, 
  eWatchDogLong = 2, 
  eWatchDogShort = 3
} enumWatchDogSetting;

// *********************************************************************//
// Interface: _IECameraPicoloEvents
// Flags:     (4096) Dispatchable
// GUID:      {0A8ABF81-7A27-11D3-89F7-0050042A3D34}
// *********************************************************************//
interface _IECameraPicoloEvents : public TDispWrapper<IDispatch>
{
  HRESULT __fastcall SurfaceAvailable(long SurfaceHandle/*[in]*/, long Data/*[in]*/, 
                                      long Flags/*[in]*/, long TimeCode/*[in]*/, 
                                      long ExtendedStatus/*[in]*/)
  {
    _TDispID _dispid(/* SurfaceAvailable */ DISPID(1));
    TAutoArgs<5> _args;
    _args[1] = SurfaceHandle /*[VT_I4:0]*/;
    _args[2] = Data /*[VT_I4:0]*/;
    _args[3] = Flags /*[VT_I4:0]*/;
    _args[4] = TimeCode /*[VT_I4:0]*/;
    _args[5] = ExtendedStatus /*[VT_I4:0]*/;
    return OleFunction(_dispid, _args);
  }

  HRESULT __fastcall Error(long SurfaceHandle/*[in]*/, 
                           Epicoloacllib_tlb::enumECameraError ErrorCode/*[in]*/, long Data/*[in]*/
                           , long Flags/*[in]*/, long TimeCode/*[in]*/, long ExtendedStatus/*[in]*/)
  {
    _TDispID _dispid(/* Error */ DISPID(2));
    TAutoArgs<6> _args;
    _args[1] = SurfaceHandle /*[VT_I4:0]*/;
    _args[2] = (int)ErrorCode /*[VT_USERDEFINED:0]*/;
    _args[3] = Data /*[VT_I4:0]*/;
    _args[4] = Flags /*[VT_I4:0]*/;
    _args[5] = TimeCode /*[VT_I4:0]*/;
    _args[6] = ExtendedStatus /*[VT_I4:0]*/;
    return OleFunction(_dispid, _args);
  }


};
// *********************************************************************//
// Interface: IECameraPicolo
// Flags:     (4416) Dual OleAutomation Dispatchable
// GUID:      {0A8ABF7F-7A27-11D3-89F7-0050042A3D34}
// *********************************************************************//
interface IECameraPicolo  : public IDispatch
{
public:
  // [1] Connect the ECamera object to an EDisplay object. This EDisplay object can be used to display the images acquired by ECamera.
  virtual HRESULT STDMETHODCALLTYPE AddDisplay(LPDISPATCH EDisplayObject/*[in]*/) = 0;
  // [2] Create a MultiCam compliant surface handle from an eVision EImage object. The handle must be added to the ECamera object by a subsequent call to AddSurface.
  virtual HRESULT STDMETHODCALLTYPE CreateVisionSurface(LPDISPATCH EImageName/*[in]*/, 
                                                        long* SurfaceHandle/*[out,retval]*/) = 0;
  // [3] Perform one image acquisition.
  virtual HRESULT STDMETHODCALLTYPE Grab(void) = 0;
  // [4] Start 'live' image acquisition.
  virtual HRESULT STDMETHODCALLTYPE Live(void) = 0;
  // [5] Stop 'live' image acquisition.
  virtual HRESULT STDMETHODCALLTYPE Stop(void) = 0;
  // [6] Remove connection between ECamera and the EDisplay object registered by a call to AddDisplay.
  virtual HRESULT STDMETHODCALLTYPE RemoveDisplay(LPDISPATCH EDisplayName/*[in]*/) = 0;
  // [7] Create a new MultiCam surface object. The surface can be created with a user allocated buffer (specified by the 'Pointer' argument). If 'Pointer' is set to 0, the memory allocation will be done automatically by the system.
  virtual HRESULT STDMETHODCALLTYPE CreateNewSurface(long Pointer/*[in]*/, long ImageWidth/*[in]*/, 
                                                     long ImageHeight/*[in]*/, 
                                                     long ImagePitch/*[in]*/, 
                                                     long* SurfaceHandle/*[out,retval]*/) = 0;
  // [8] Add a surface created by CreateNewSurface or CreateVisionSurface to the ECamera object.
  virtual HRESULT STDMETHODCALLTYPE AddSurface(long SurfaceHandle/*[in]*/) = 0;
  // [9] Set expert parameter. This method is to be used to set 'INT32' parameter value (32-bits signed integer).
  virtual HRESULT STDMETHODCALLTYPE SetExpParameter(Epicoloacllib_tlb::enumExpParam ExpParameter/*[in]*/, 
                                                    long ParameterValue/*[in]*/) = 0;
  // [10] Set expert parameter. This method is to be used to set 'STRING' parameter value.
  virtual HRESULT STDMETHODCALLTYPE SetExpParameterStr(Epicoloacllib_tlb::enumExpParamStr ExpParameter/*[in]*/, 
                                                       BSTR ParameterValue/*[in]*/) = 0;
  // [11] Get expert parameter. This method is to be used to get 'INT32' parameter value (32-bits signed integer).
  virtual HRESULT STDMETHODCALLTYPE GetExpParameter(Epicoloacllib_tlb::enumExpParam ExpParameter/*[in]*/, 
                                                    long* ParameterValue/*[out,retval]*/) = 0;
  // [34] Get expert parameter. This method is to be used to get 'STRING' parameter value.
  virtual HRESULT STDMETHODCALLTYPE GetExpParameterStr(Epicoloacllib_tlb::enumExpParamStr ExpParameter/*[in]*/, 
                                                       BSTR* ParameterValue/*[out,retval]*/) = 0;
  // [16] property BoardId
  virtual HRESULT STDMETHODCALLTYPE get_BoardId(BSTR* pVal/*[out,retval]*/) = 0;
  // [16] property BoardId
  virtual HRESULT STDMETHODCALLTYPE set_BoardId(BSTR pVal/*[in]*/) = 0;
  // [20] property VideoSource
  virtual HRESULT STDMETHODCALLTYPE get_VideoSource(long* pVal/*[out,retval]*/) = 0;
  // [20] property VideoSource
  virtual HRESULT STDMETHODCALLTYPE set_VideoSource(long pVal/*[in]*/) = 0;
  // [14] property Standard
  virtual HRESULT STDMETHODCALLTYPE get_Standard(Epicoloacllib_tlb::enumVideoStandard* pVal/*[out,retval]*/) = 0;
  // [14] property Standard
  virtual HRESULT STDMETHODCALLTYPE set_Standard(Epicoloacllib_tlb::enumVideoStandard pVal/*[in]*/) = 0;
  // [19] property ColorFormat
  virtual HRESULT STDMETHODCALLTYPE get_ColorFormat(Epicoloacllib_tlb::enumColorFormat* pVal/*[out,retval]*/) = 0;
  // [19] property ColorFormat
  virtual HRESULT STDMETHODCALLTYPE set_ColorFormat(Epicoloacllib_tlb::enumColorFormat pVal/*[in]*/) = 0;
  // [12] property PixelGain
  virtual HRESULT STDMETHODCALLTYPE get_PixelGain(float* pVal/*[out,retval]*/) = 0;
  // [12] property PixelGain
  virtual HRESULT STDMETHODCALLTYPE set_PixelGain(float pVal/*[in]*/) = 0;
  // [13] property PixelOffset
  virtual HRESULT STDMETHODCALLTYPE get_PixelOffset(float* pVal/*[out,retval]*/) = 0;
  // [13] property PixelOffset
  virtual HRESULT STDMETHODCALLTYPE set_PixelOffset(float pVal/*[in]*/) = 0;
  // [18] property PixelUGain
  virtual HRESULT STDMETHODCALLTYPE get_PixelUGain(float* pVal/*[out,retval]*/) = 0;
  // [18] property PixelUGain
  virtual HRESULT STDMETHODCALLTYPE set_PixelUGain(float pVal/*[in]*/) = 0;
  // [21] property PixelVGain
  virtual HRESULT STDMETHODCALLTYPE get_PixelVGain(float* pVal/*[out,retval]*/) = 0;
  // [21] property PixelVGain
  virtual HRESULT STDMETHODCALLTYPE set_PixelVGain(float pVal/*[in]*/) = 0;
  // [26] property PixelHue
  virtual HRESULT STDMETHODCALLTYPE get_PixelHue(float* pVal/*[out,retval]*/) = 0;
  // [26] property PixelHue
  virtual HRESULT STDMETHODCALLTYPE set_PixelHue(float pVal/*[in]*/) = 0;
  // [47] property PixelNtscHue
  virtual HRESULT STDMETHODCALLTYPE get_PixelNtscHue(float* pVal/*[out,retval]*/) = 0;
  // [47] property PixelNtscHue
  virtual HRESULT STDMETHODCALLTYPE set_PixelNtscHue(float pVal/*[in]*/) = 0;
  // [22] property lPixelGain
  virtual HRESULT STDMETHODCALLTYPE get_lPixelGain(long* pVal/*[out,retval]*/) = 0;
  // [22] property lPixelGain
  virtual HRESULT STDMETHODCALLTYPE set_lPixelGain(long pVal/*[in]*/) = 0;
  // [23] property lPixelOffset
  virtual HRESULT STDMETHODCALLTYPE get_lPixelOffset(long* pVal/*[out,retval]*/) = 0;
  // [23] property lPixelOffset
  virtual HRESULT STDMETHODCALLTYPE set_lPixelOffset(long pVal/*[in]*/) = 0;
  // [24] property lPixelUGain
  virtual HRESULT STDMETHODCALLTYPE get_lPixelUGain(long* pVal/*[out,retval]*/) = 0;
  // [24] property lPixelUGain
  virtual HRESULT STDMETHODCALLTYPE set_lPixelUGain(long pVal/*[in]*/) = 0;
  // [25] property lPixelVGain
  virtual HRESULT STDMETHODCALLTYPE get_lPixelVGain(long* pVal/*[out,retval]*/) = 0;
  // [25] property lPixelVGain
  virtual HRESULT STDMETHODCALLTYPE set_lPixelVGain(long pVal/*[in]*/) = 0;
  // [27] property lPixelHue
  virtual HRESULT STDMETHODCALLTYPE get_lPixelHue(long* pVal/*[out,retval]*/) = 0;
  // [27] property lPixelHue
  virtual HRESULT STDMETHODCALLTYPE set_lPixelHue(long pVal/*[in]*/) = 0;
  // [46] property lPixelNtscHue
  virtual HRESULT STDMETHODCALLTYPE get_lPixelNtscHue(long* pVal/*[out,retval]*/) = 0;
  // [46] property lPixelNtscHue
  virtual HRESULT STDMETHODCALLTYPE set_lPixelNtscHue(long pVal/*[in]*/) = 0;
  // [15] property ImageSizeX
  virtual HRESULT STDMETHODCALLTYPE get_ImageSizeX(long* pVal/*[out,retval]*/) = 0;
  // [15] property ImageSizeX
  virtual HRESULT STDMETHODCALLTYPE set_ImageSizeX(long pVal/*[in]*/) = 0;
  // [17] property ImageSizeY
  virtual HRESULT STDMETHODCALLTYPE get_ImageSizeY(long* pVal/*[out,retval]*/) = 0;
  // [17] property ImageSizeY
  virtual HRESULT STDMETHODCALLTYPE set_ImageSizeY(long pVal/*[in]*/) = 0;
  // [28] property ImageScaleX
  virtual HRESULT STDMETHODCALLTYPE get_ImageScaleX(float* pVal/*[out,retval]*/) = 0;
  // [28] property ImageScaleX
  virtual HRESULT STDMETHODCALLTYPE set_ImageScaleX(float pVal/*[in]*/) = 0;
  // [29] property lImageScaleX
  virtual HRESULT STDMETHODCALLTYPE get_lImageScaleX(long* pVal/*[out,retval]*/) = 0;
  // [29] property lImageScaleX
  virtual HRESULT STDMETHODCALLTYPE set_lImageScaleX(long pVal/*[in]*/) = 0;
  // [30] property ImageScaleY
  virtual HRESULT STDMETHODCALLTYPE get_ImageScaleY(float* pVal/*[out,retval]*/) = 0;
  // [30] property ImageScaleY
  virtual HRESULT STDMETHODCALLTYPE set_ImageScaleY(float pVal/*[in]*/) = 0;
  // [31] property lImageScaleY
  virtual HRESULT STDMETHODCALLTYPE get_lImageScaleY(long* pVal/*[out,retval]*/) = 0;
  // [31] property lImageScaleY
  virtual HRESULT STDMETHODCALLTYPE set_lImageScaleY(long pVal/*[in]*/) = 0;
  // [32] property ImageOffsetX
  virtual HRESULT STDMETHODCALLTYPE get_ImageOffsetX(long* pVal/*[out,retval]*/) = 0;
  // [32] property ImageOffsetX
  virtual HRESULT STDMETHODCALLTYPE set_ImageOffsetX(long pVal/*[in]*/) = 0;
  // [33] property ImageOffsetY
  virtual HRESULT STDMETHODCALLTYPE get_ImageOffsetY(long* pVal/*[out,retval]*/) = 0;
  // [33] property ImageOffsetY
  virtual HRESULT STDMETHODCALLTYPE set_ImageOffsetY(long pVal/*[in]*/) = 0;
  // [38] property ImageFlipY
  virtual HRESULT STDMETHODCALLTYPE get_ImageFlipY(TOLEBOOL* pVal/*[out,retval]*/) = 0;
  // [38] property ImageFlipY
  virtual HRESULT STDMETHODCALLTYPE set_ImageFlipY(TOLEBOOL pVal/*[in]*/) = 0;
  // [39] property FieldMode
  virtual HRESULT STDMETHODCALLTYPE get_FieldMode(Epicoloacllib_tlb::enumFieldMode* pVal/*[out,retval]*/) = 0;
  // [39] property FieldMode
  virtual HRESULT STDMETHODCALLTYPE set_FieldMode(Epicoloacllib_tlb::enumFieldMode pVal/*[in]*/) = 0;
  // [35] property GrabSync
  virtual HRESULT STDMETHODCALLTYPE get_GrabSync(Epicoloacllib_tlb::enumGrabSync* pVal/*[out,retval]*/) = 0;
  // [35] property GrabSync
  virtual HRESULT STDMETHODCALLTYPE set_GrabSync(Epicoloacllib_tlb::enumGrabSync pVal/*[in]*/) = 0;
  // [36] property ColorTrap
  virtual HRESULT STDMETHODCALLTYPE get_ColorTrap(Epicoloacllib_tlb::enumColorTrap* pVal/*[out,retval]*/) = 0;
  // [36] property ColorTrap
  virtual HRESULT STDMETHODCALLTYPE set_ColorTrap(Epicoloacllib_tlb::enumColorTrap pVal/*[in]*/) = 0;
  // [37] property Coring
  virtual HRESULT STDMETHODCALLTYPE get_Coring(Epicoloacllib_tlb::enumCoring* pVal/*[out,retval]*/) = 0;
  // [37] property Coring
  virtual HRESULT STDMETHODCALLTYPE set_Coring(Epicoloacllib_tlb::enumCoring pVal/*[in]*/) = 0;
  // [40] property GammaCorrection
  virtual HRESULT STDMETHODCALLTYPE get_GammaCorrection(Epicoloacllib_tlb::enumGamma* pVal/*[out,retval]*/) = 0;
  // [40] property GammaCorrection
  virtual HRESULT STDMETHODCALLTYPE set_GammaCorrection(Epicoloacllib_tlb::enumGamma pVal/*[in]*/) = 0;
  // [41] property TriggerMask
  virtual HRESULT STDMETHODCALLTYPE get_TriggerMask(Epicoloacllib_tlb::enumTriggerMask* pVal/*[out,retval]*/) = 0;
  // [41] property TriggerMask
  virtual HRESULT STDMETHODCALLTYPE set_TriggerMask(Epicoloacllib_tlb::enumTriggerMask pVal/*[in]*/) = 0;
  // [42] property TriggerMode
  virtual HRESULT STDMETHODCALLTYPE get_TriggerMode(Epicoloacllib_tlb::enumTriggerMode* pVal/*[out,retval]*/) = 0;
  // [42] property TriggerMode
  virtual HRESULT STDMETHODCALLTYPE set_TriggerMode(Epicoloacllib_tlb::enumTriggerMode pVal/*[in]*/) = 0;
  // [43] property AcquisitionPause
  virtual HRESULT STDMETHODCALLTYPE get_AcquisitionPause(long* pVal/*[out,retval]*/) = 0;
  // [43] property AcquisitionPause
  virtual HRESULT STDMETHODCALLTYPE set_AcquisitionPause(long pVal/*[in]*/) = 0;
  // [44] property AcquisitionTrigger
  virtual HRESULT STDMETHODCALLTYPE get_AcquisitionTrigger(Epicoloacllib_tlb::enumAcquisitionTrigger* pVal/*[out,retval]*/) = 0;
  // [44] property AcquisitionTrigger
  virtual HRESULT STDMETHODCALLTYPE set_AcquisitionTrigger(Epicoloacllib_tlb::enumAcquisitionTrigger pVal/*[in]*/) = 0;
  // [45] property RepeatGrabCount
  virtual HRESULT STDMETHODCALLTYPE get_RepeatGrabCount(long* pVal/*[out,retval]*/) = 0;
  // [45] property RepeatGrabCount
  virtual HRESULT STDMETHODCALLTYPE set_RepeatGrabCount(long pVal/*[in]*/) = 0;

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)

  long __fastcall CreateVisionSurface(LPDISPATCH EImageName/*[in]*/)
  {
    long SurfaceHandle;
    OLECHECK(this->CreateVisionSurface(EImageName, (long*)&SurfaceHandle));
    return SurfaceHandle;
  }

  long __fastcall CreateNewSurface(long Pointer/*[in]*/, long ImageWidth/*[in]*/, 
                                   long ImageHeight/*[in]*/, long ImagePitch/*[in]*/)
  {
    long SurfaceHandle;
    OLECHECK(this->CreateNewSurface(Pointer, ImageWidth, ImageHeight, ImagePitch, (long*)&SurfaceHandle));
    return SurfaceHandle;
  }

  long __fastcall GetExpParameter(Epicoloacllib_tlb::enumExpParam ExpParameter/*[in]*/)
  {
    long ParameterValue;
    OLECHECK(this->GetExpParameter(ExpParameter, (long*)&ParameterValue));
    return ParameterValue;
  }

  BSTR __fastcall GetExpParameterStr(Epicoloacllib_tlb::enumExpParamStr ExpParameter/*[in]*/)
  {
    BSTR ParameterValue = 0;
    OLECHECK(this->GetExpParameterStr(ExpParameter, (BSTR*)&ParameterValue));
    return ParameterValue;
  }

  BSTR __fastcall get_BoardId(void)
  {
    BSTR pVal = 0;
    OLECHECK(this->get_BoardId((BSTR*)&pVal));
    return pVal;
  }

  long __fastcall get_VideoSource(void)
  {
    long pVal;
    OLECHECK(this->get_VideoSource((long*)&pVal));
    return pVal;
  }

  Epicoloacllib_tlb::enumVideoStandard __fastcall get_Standard(void)
  {
    Epicoloacllib_tlb::enumVideoStandard pVal;
    OLECHECK(this->get_Standard((Epicoloacllib_tlb::enumVideoStandard*)&pVal));
    return pVal;
  }

  Epicoloacllib_tlb::enumColorFormat __fastcall get_ColorFormat(void)
  {
    Epicoloacllib_tlb::enumColorFormat pVal;
    OLECHECK(this->get_ColorFormat((Epicoloacllib_tlb::enumColorFormat*)&pVal));
    return pVal;
  }

  float __fastcall get_PixelGain(void)
  {
    float pVal;
    OLECHECK(this->get_PixelGain((float*)&pVal));
    return pVal;
  }

  float __fastcall get_PixelOffset(void)
  {
    float pVal;
    OLECHECK(this->get_PixelOffset((float*)&pVal));
    return pVal;
  }

  float __fastcall get_PixelUGain(void)
  {
    float pVal;
    OLECHECK(this->get_PixelUGain((float*)&pVal));
    return pVal;
  }

  float __fastcall get_PixelVGain(void)
  {
    float pVal;
    OLECHECK(this->get_PixelVGain((float*)&pVal));
    return pVal;
  }

  float __fastcall get_PixelHue(void)
  {
    float pVal;
    OLECHECK(this->get_PixelHue((float*)&pVal));
    return pVal;
  }

  float __fastcall get_PixelNtscHue(void)
  {
    float pVal;
    OLECHECK(this->get_PixelNtscHue((float*)&pVal));
    return pVal;
  }

  long __fastcall get_lPixelGain(void)
  {
    long pVal;
    OLECHECK(this->get_lPixelGain((long*)&pVal));
    return pVal;
  }

  long __fastcall get_lPixelOffset(void)
  {
    long pVal;
    OLECHECK(this->get_lPixelOffset((long*)&pVal));
    return pVal;
  }

  long __fastcall get_lPixelUGain(void)
  {
    long pVal;
    OLECHECK(this->get_lPixelUGain((long*)&pVal));
    return pVal;
  }

  long __fastcall get_lPixelVGain(void)
  {
    long pVal;
    OLECHECK(this->get_lPixelVGain((long*)&pVal));
    return pVal;
  }

  long __fastcall get_lPixelHue(void)
  {
    long pVal;
    OLECHECK(this->get_lPixelHue((long*)&pVal));
    return pVal;
  }

  long __fastcall get_lPixelNtscHue(void)
  {
    long pVal;
    OLECHECK(this->get_lPixelNtscHue((long*)&pVal));
    return pVal;
  }

  long __fastcall get_ImageSizeX(void)
  {
    long pVal;
    OLECHECK(this->get_ImageSizeX((long*)&pVal));
    return pVal;
  }

  long __fastcall get_ImageSizeY(void)
  {
    long pVal;
    OLECHECK(this->get_ImageSizeY((long*)&pVal));
    return pVal;
  }

  float __fastcall get_ImageScaleX(void)
  {
    float pVal;
    OLECHECK(this->get_ImageScaleX((float*)&pVal));
    return pVal;
  }

  long __fastcall get_lImageScaleX(void)
  {
    long pVal;
    OLECHECK(this->get_lImageScaleX((long*)&pVal));
    return pVal;
  }

  float __fastcall get_ImageScaleY(void)
  {
    float pVal;
    OLECHECK(this->get_ImageScaleY((float*)&pVal));
    return pVal;
  }

  long __fastcall get_lImageScaleY(void)
  {
    long pVal;
    OLECHECK(this->get_lImageScaleY((long*)&pVal));
    return pVal;
  }

  long __fastcall get_ImageOffsetX(void)
  {
    long pVal;
    OLECHECK(this->get_ImageOffsetX((long*)&pVal));
    return pVal;
  }

  long __fastcall get_ImageOffsetY(void)
  {
    long pVal;
    OLECHECK(this->get_ImageOffsetY((long*)&pVal));
    return pVal;
  }

  TOLEBOOL __fastcall get_ImageFlipY(void)
  {
    TOLEBOOL pVal;
    OLECHECK(this->get_ImageFlipY((TOLEBOOL*)&pVal));
    return pVal;
  }

  Epicoloacllib_tlb::enumFieldMode __fastcall get_FieldMode(void)
  {
    Epicoloacllib_tlb::enumFieldMode pVal;
    OLECHECK(this->get_FieldMode((Epicoloacllib_tlb::enumFieldMode*)&pVal));
    return pVal;
  }

  Epicoloacllib_tlb::enumGrabSync __fastcall get_GrabSync(void)
  {
    Epicoloacllib_tlb::enumGrabSync pVal;
    OLECHECK(this->get_GrabSync((Epicoloacllib_tlb::enumGrabSync*)&pVal));
    return pVal;
  }

  Epicoloacllib_tlb::enumColorTrap __fastcall get_ColorTrap(void)
  {
    Epicoloacllib_tlb::enumColorTrap pVal;
    OLECHECK(this->get_ColorTrap((Epicoloacllib_tlb::enumColorTrap*)&pVal));
    return pVal;
  }

  Epicoloacllib_tlb::enumCoring __fastcall get_Coring(void)
  {
    Epicoloacllib_tlb::enumCoring pVal;
    OLECHECK(this->get_Coring((Epicoloacllib_tlb::enumCoring*)&pVal));
    return pVal;
  }

  Epicoloacllib_tlb::enumGamma __fastcall get_GammaCorrection(void)
  {
    Epicoloacllib_tlb::enumGamma pVal;
    OLECHECK(this->get_GammaCorrection((Epicoloacllib_tlb::enumGamma*)&pVal));
    return pVal;
  }

  Epicoloacllib_tlb::enumTriggerMask __fastcall get_TriggerMask(void)
  {
    Epicoloacllib_tlb::enumTriggerMask pVal;
    OLECHECK(this->get_TriggerMask((Epicoloacllib_tlb::enumTriggerMask*)&pVal));
    return pVal;
  }

  Epicoloacllib_tlb::enumTriggerMode __fastcall get_TriggerMode(void)
  {
    Epicoloacllib_tlb::enumTriggerMode pVal;
    OLECHECK(this->get_TriggerMode((Epicoloacllib_tlb::enumTriggerMode*)&pVal));
    return pVal;
  }

  long __fastcall get_AcquisitionPause(void)
  {
    long pVal;
    OLECHECK(this->get_AcquisitionPause((long*)&pVal));
    return pVal;
  }

  Epicoloacllib_tlb::enumAcquisitionTrigger __fastcall get_AcquisitionTrigger(void)
  {
    Epicoloacllib_tlb::enumAcquisitionTrigger pVal;
    OLECHECK(this->get_AcquisitionTrigger((Epicoloacllib_tlb::enumAcquisitionTrigger*)&pVal));
    return pVal;
  }

  long __fastcall get_RepeatGrabCount(void)
  {
    long pVal;
    OLECHECK(this->get_RepeatGrabCount((long*)&pVal));
    return pVal;
  }


  __property   BSTR            BoardId = {read = get_BoardId, write = set_BoardId};
  __property   long            VideoSource = {read = get_VideoSource, write = set_VideoSource};
  __property   Epicoloacllib_tlb::enumVideoStandard Standard = {read = get_Standard, write = set_Standard};
  __property   Epicoloacllib_tlb::enumColorFormat ColorFormat = {read = get_ColorFormat, write = set_ColorFormat};
  __property   float           PixelGain = {read = get_PixelGain, write = set_PixelGain};
  __property   float           PixelOffset = {read = get_PixelOffset, write = set_PixelOffset};
  __property   float           PixelUGain = {read = get_PixelUGain, write = set_PixelUGain};
  __property   float           PixelVGain = {read = get_PixelVGain, write = set_PixelVGain};
  __property   float           PixelHue = {read = get_PixelHue, write = set_PixelHue};
  __property   float           PixelNtscHue = {read = get_PixelNtscHue, write = set_PixelNtscHue};
  __property   long            lPixelGain = {read = get_lPixelGain, write = set_lPixelGain};
  __property   long            lPixelOffset = {read = get_lPixelOffset, write = set_lPixelOffset};
  __property   long            lPixelUGain = {read = get_lPixelUGain, write = set_lPixelUGain};
  __property   long            lPixelVGain = {read = get_lPixelVGain, write = set_lPixelVGain};
  __property   long            lPixelHue = {read = get_lPixelHue, write = set_lPixelHue};
  __property   long            lPixelNtscHue = {read = get_lPixelNtscHue, write = set_lPixelNtscHue};
  __property   long            ImageSizeX = {read = get_ImageSizeX, write = set_ImageSizeX};
  __property   long            ImageSizeY = {read = get_ImageSizeY, write = set_ImageSizeY};
  __property   float           ImageScaleX = {read = get_ImageScaleX, write = set_ImageScaleX};
  __property   long            lImageScaleX = {read = get_lImageScaleX, write = set_lImageScaleX};
  __property   float           ImageScaleY = {read = get_ImageScaleY, write = set_ImageScaleY};
  __property   long            lImageScaleY = {read = get_lImageScaleY, write = set_lImageScaleY};
  __property   long            ImageOffsetX = {read = get_ImageOffsetX, write = set_ImageOffsetX};
  __property   long            ImageOffsetY = {read = get_ImageOffsetY, write = set_ImageOffsetY};
  __property   TOLEBOOL        ImageFlipY = {read = get_ImageFlipY, write = set_ImageFlipY};
  __property   Epicoloacllib_tlb::enumFieldMode FieldMode = {read = get_FieldMode, write = set_FieldMode};
  __property   Epicoloacllib_tlb::enumGrabSync GrabSync = {read = get_GrabSync, write = set_GrabSync};
  __property   Epicoloacllib_tlb::enumColorTrap ColorTrap = {read = get_ColorTrap, write = set_ColorTrap};
  __property   Epicoloacllib_tlb::enumCoring Coring = {read = get_Coring, write = set_Coring};
  __property   Epicoloacllib_tlb::enumGamma GammaCorrection = {read = get_GammaCorrection, write = set_GammaCorrection};
  __property   Epicoloacllib_tlb::enumTriggerMask TriggerMask = {read = get_TriggerMask, write = set_TriggerMask};
  __property   Epicoloacllib_tlb::enumTriggerMode TriggerMode = {read = get_TriggerMode, write = set_TriggerMode};
  __property   long            AcquisitionPause = {read = get_AcquisitionPause, write = set_AcquisitionPause};
  __property   Epicoloacllib_tlb::enumAcquisitionTrigger AcquisitionTrigger = {read = get_AcquisitionTrigger, write = set_AcquisitionTrigger};
  __property   long            RepeatGrabCount = {read = get_RepeatGrabCount, write = set_RepeatGrabCount};

#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

// *********************************************************************//
// Interface: _IEConfigPicoloEvents
// Flags:     (4096) Dispatchable
// GUID:      {0A8ABF84-7A27-11D3-89F7-0050042A3D34}
// *********************************************************************//
interface _IEConfigPicoloEvents : public TDispWrapper<IDispatch>
{

};
// *********************************************************************//
// Interface: IEConfigPicolo
// Flags:     (4416) Dual OleAutomation Dispatchable
// GUID:      {0A8ABF82-7A27-11D3-89F7-0050042A3D34}
// *********************************************************************//
interface IEConfigPicolo  : public IDispatch
{
public:
  // [1] Number of Picolo Series boards inserted in the computer.
  virtual HRESULT STDMETHODCALLTYPE get_BoardCount(long* pVal/*[out,retval]*/) = 0;
  // [2] Name of the Picolo board.
  virtual HRESULT STDMETHODCALLTYPE get_BoardName(long Index/*[in]*/, BSTR* pVal/*[out,retval]*/) = 0;
  // [3] SerialNumber of the Picolo board.
  virtual HRESULT STDMETHODCALLTYPE get_SerialNumber(long Index/*[in]*/, long* pVal/*[out,retval]*/) = 0;
  // [4] Board type. Specifies if the board is a Picolo, Picolo Pro, Picolo Pro 2 or Picolo Pro 3 board.
  virtual HRESULT STDMETHODCALLTYPE get_BoardType(long Index/*[in]*/, 
                                                  Epicoloacllib_tlb::enumBoardType* pVal/*[out,retval]*/) = 0;
  // [5] Change the name of the Picolo board.
  virtual HRESULT STDMETHODCALLTYPE SetBoardName(long Index/*[in]*/, BSTR BoardName/*[in]*/) = 0;
  // [6] method SetOemKey
  virtual HRESULT STDMETHODCALLTYPE SetOemKey(long BoardId/*[in]*/, TVariantInParam Key/*[in]*/) = 0;
  // [7] method CheckOemKey
  virtual HRESULT STDMETHODCALLTYPE CheckOemKey(long BoardId/*[in]*/, TVariantInParam Key/*[in]*/, 
                                                TOLEBOOL* Result/*[out,retval]*/) = 0;
  // [8] Picolo board Pci Position.
  virtual HRESULT STDMETHODCALLTYPE get_PciPosition(long Index/*[in]*/, long* pVal/*[out,retval]*/) = 0;
  // [9] Picolo board Source Count.
  virtual HRESULT STDMETHODCALLTYPE get_SourceCount(long Index/*[in]*/, long* pVal/*[out,retval]*/) = 0;
  // [10] Picolo Pro 3 WatchDog Setting.
  virtual HRESULT STDMETHODCALLTYPE get_WatchDogSetting(long Index/*[in]*/, 
                                                        Epicoloacllib_tlb::enumWatchDogSetting* pVal/*[out,retval]*/) = 0;
  // [10] Picolo Pro 3 WatchDog Setting.
  virtual HRESULT STDMETHODCALLTYPE set_WatchDogSetting(long Index/*[in]*/, 
                                                        Epicoloacllib_tlb::enumWatchDogSetting pVal/*[in]*/) = 0;
  // [11] This method can be called periodically to reset the Picolo Pro 3 WatchDog Timer.
  virtual HRESULT STDMETHODCALLTYPE ResetWatchDogTimer(long Index/*[in]*/) = 0;
  // [12] Picolo Pro 3 RS-485 Serial Line Settings.
  virtual HRESULT STDMETHODCALLTYPE get_SerialLineSettings(long Index/*[in]*/, 
                                                           long* pVal/*[out,retval]*/) = 0;
  // [12] Picolo Pro 3 RS-485 Serial Line Settings.
  virtual HRESULT STDMETHODCALLTYPE set_SerialLineSettings(long Index/*[in]*/, long pVal/*[in]*/) = 0;
  // [13] Read one character from the Picolo Pro 3 RS-485 Serial Line.
  virtual HRESULT STDMETHODCALLTYPE SerialLineGetChar(long Index/*[in]*/, 
                                                      TVariant* pData/*[out,retval]*/) = 0;
  // [14] Write one character to the Picolo Pro 3 RS-485 Serial Line.
  virtual HRESULT STDMETHODCALLTYPE SerialLinePutChar(long Index/*[in]*/, 
                                                      TVariantInParam Data/*[in]*/) = 0;

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)

  long __fastcall get_BoardCount(void)
  {
    long pVal;
    OLECHECK(this->get_BoardCount((long*)&pVal));
    return pVal;
  }

  BSTR __fastcall get_BoardName(long Index/*[in]*/)
  {
    BSTR pVal = 0;
    OLECHECK(this->get_BoardName(Index, (BSTR*)&pVal));
    return pVal;
  }

  long __fastcall get_SerialNumber(long Index/*[in]*/)
  {
    long pVal;
    OLECHECK(this->get_SerialNumber(Index, (long*)&pVal));
    return pVal;
  }

  Epicoloacllib_tlb::enumBoardType __fastcall get_BoardType(long Index/*[in]*/)
  {
    Epicoloacllib_tlb::enumBoardType pVal;
    OLECHECK(this->get_BoardType(Index, (Epicoloacllib_tlb::enumBoardType*)&pVal));
    return pVal;
  }

  TOLEBOOL __fastcall CheckOemKey(long BoardId/*[in]*/, TVariantInParam Key/*[in]*/)
  {
    TOLEBOOL Result;
    OLECHECK(this->CheckOemKey(BoardId, Key, (TOLEBOOL*)&Result));
    return Result;
  }

  long __fastcall get_PciPosition(long Index/*[in]*/)
  {
    long pVal;
    OLECHECK(this->get_PciPosition(Index, (long*)&pVal));
    return pVal;
  }

  long __fastcall get_SourceCount(long Index/*[in]*/)
  {
    long pVal;
    OLECHECK(this->get_SourceCount(Index, (long*)&pVal));
    return pVal;
  }

  Epicoloacllib_tlb::enumWatchDogSetting __fastcall get_WatchDogSetting(long Index/*[in]*/)
  {
    Epicoloacllib_tlb::enumWatchDogSetting pVal;
    OLECHECK(this->get_WatchDogSetting(Index, (Epicoloacllib_tlb::enumWatchDogSetting*)&pVal));
    return pVal;
  }

  long __fastcall get_SerialLineSettings(long Index/*[in]*/)
  {
    long pVal;
    OLECHECK(this->get_SerialLineSettings(Index, (long*)&pVal));
    return pVal;
  }

  TVariant __fastcall SerialLineGetChar(long Index/*[in]*/)
  {
    TVariant pData;
    OLECHECK(this->SerialLineGetChar(Index, (TVariant*)&pData));
    return pData;
  }


  __property   long            BoardCount = {read = get_BoardCount};

#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

// *********************************************************************//
// Interface: IPicoloCallBack
// Flags:     (4432) Hidden Dual OleAutomation Dispatchable
// GUID:      {0A8ABF86-7A27-11D3-89F7-0050042A3D34}
// *********************************************************************//
interface IPicoloCallBack  : public IDispatch
{
public:
  // [1] method ErrorCallback
  virtual HRESULT STDMETHODCALLTYPE ErrorCallback(long ChannelID/*[in]*/, long SurfaceID/*[in]*/, 
                                                  long Data/*[in]*/, long Flags/*[in]*/, 
                                                  long TimeCode/*[in]*/, long Reserved/*[in]*/) = 0;
  // [2] method Initialize
  virtual HRESULT STDMETHODCALLTYPE Initialize(void) = 0;
  // [3] method Terminate
  virtual HRESULT STDMETHODCALLTYPE Terminate(void) = 0;
  // [4] method SurfaceAvailableCallback
  virtual HRESULT STDMETHODCALLTYPE SurfaceAvailableCallback(long ChannelID/*[in]*/, 
                                                             long SurfaceID/*[in]*/, 
                                                             long Data/*[in]*/, long Flags/*[in]*/, 
                                                             long TimeCode/*[in]*/, 
                                                             long Reserved/*[in]*/) = 0;
  // [5] method GetWorkerThread
  virtual HRESULT STDMETHODCALLTYPE GetWorkerThread(long* p/*[out,retval]*/) = 0;

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)

  long __fastcall GetWorkerThread(void)
  {
    long p;
    OLECHECK(this->GetWorkerThread((long*)&p));
    return p;
  }



#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

// *********************************************************************//
// Interface: _IPicoloCallBackEvents
// Flags:     (4096) Dispatchable
// GUID:      {0A8ABF88-7A27-11D3-89F7-0050042A3D34}
// *********************************************************************//
interface _IPicoloCallBackEvents : public TDispWrapper<IDispatch>
{
  HRESULT __fastcall SurfaceAvailable(long ChannelID/*[in]*/, long SurfaceID/*[in]*/, 
                                      long Data/*[in]*/, long Flags/*[in]*/, long TimeCode/*[in]*/, 
                                      long Reserved/*[in]*/)
  {
    _TDispID _dispid(/* SurfaceAvailable */ DISPID(1));
    TAutoArgs<6> _args;
    _args[1] = ChannelID /*[VT_I4:0]*/;
    _args[2] = SurfaceID /*[VT_I4:0]*/;
    _args[3] = Data /*[VT_I4:0]*/;
    _args[4] = Flags /*[VT_I4:0]*/;
    _args[5] = TimeCode /*[VT_I4:0]*/;
    _args[6] = Reserved /*[VT_I4:0]*/;
    return OleFunction(_dispid, _args);
  }

  HRESULT __fastcall Error(long ChannelID/*[in]*/, long SurfaceID/*[in]*/, long Data/*[in]*/, 
                           long Flags/*[in]*/, long TimeCode/*[in]*/, long Reserved/*[in]*/)
  {
    _TDispID _dispid(/* Error */ DISPID(2));
    TAutoArgs<6> _args;
    _args[1] = ChannelID /*[VT_I4:0]*/;
    _args[2] = SurfaceID /*[VT_I4:0]*/;
    _args[3] = Data /*[VT_I4:0]*/;
    _args[4] = Flags /*[VT_I4:0]*/;
    _args[5] = TimeCode /*[VT_I4:0]*/;
    _args[6] = Reserved /*[VT_I4:0]*/;
    return OleFunction(_dispid, _args);
  }


};
#if !defined(__TLB_NO_INTERFACE_WRAPPERS)
// *********************************************************************//
// DispIntf:  _IECameraPicoloEvents
// Flags:     (4096) Dispatchable
// GUID:      {0A8ABF81-7A27-11D3-89F7-0050042A3D34}
// *********************************************************************//
template <class T>
class _IECameraPicoloEventsDispT : public TAutoDriver<_IECameraPicoloEvents>
{
public:
  _IECameraPicoloEventsDispT(){}

  void Attach(LPUNKNOWN punk)
  { m_Dispatch = static_cast<T*>(punk); }

  HRESULT         __fastcall SurfaceAvailable(long SurfaceHandle/*[in]*/, long Data/*[in]*/, 
                                              long Flags/*[in]*/, long TimeCode/*[in]*/, 
                                              long ExtendedStatus/*[in]*/);
  HRESULT         __fastcall Error(long SurfaceHandle/*[in]*/, 
                                   Epicoloacllib_tlb::enumECameraError ErrorCode/*[in]*/, 
                                   long Data/*[in]*/, long Flags/*[in]*/, long TimeCode/*[in]*/, 
                                   long ExtendedStatus/*[in]*/);

};
typedef _IECameraPicoloEventsDispT<_IECameraPicoloEvents> _IECameraPicoloEventsDisp;

// *********************************************************************//
// SmartIntf: TCOMIECameraPicolo
// Interface: IECameraPicolo
// *********************************************************************//
template <class T /* IECameraPicolo */ >
class TCOMIECameraPicoloT : public TComInterface<IECameraPicolo>, public TComInterfaceBase<IUnknown>
{
public:
  TCOMIECameraPicoloT() {}
  TCOMIECameraPicoloT(IECameraPicolo *intf, bool addRef = false) : TComInterface<IECameraPicolo>(intf, addRef) {}
  TCOMIECameraPicoloT(const TCOMIECameraPicoloT& src) : TComInterface<IECameraPicolo>(src) {}
  TCOMIECameraPicoloT& operator=(const TCOMIECameraPicoloT& src) { Bind(src, true); return *this;}

  HRESULT         __fastcall AddDisplay(LPDISPATCH EDisplayObject/*[in]*/);
  HRESULT         __fastcall CreateVisionSurface(LPDISPATCH EImageName/*[in]*/, 
                                                 long* SurfaceHandle/*[out,retval]*/);
  long            __fastcall CreateVisionSurface(LPDISPATCH EImageName/*[in]*/);
  HRESULT         __fastcall Grab(void);
  HRESULT         __fastcall Live(void);
  HRESULT         __fastcall Stop(void);
  HRESULT         __fastcall RemoveDisplay(LPDISPATCH EDisplayName/*[in]*/);
  HRESULT         __fastcall CreateNewSurface(long Pointer/*[in]*/, long ImageWidth/*[in]*/, 
                                              long ImageHeight/*[in]*/, long ImagePitch/*[in]*/, 
                                              long* SurfaceHandle/*[out,retval]*/);
  long            __fastcall CreateNewSurface(long Pointer/*[in]*/, long ImageWidth/*[in]*/, 
                                              long ImageHeight/*[in]*/, long ImagePitch/*[in]*/);
  HRESULT         __fastcall AddSurface(long SurfaceHandle/*[in]*/);
  HRESULT         __fastcall SetExpParameter(Epicoloacllib_tlb::enumExpParam ExpParameter/*[in]*/, 
                                             long ParameterValue/*[in]*/);
  HRESULT         __fastcall SetExpParameterStr(Epicoloacllib_tlb::enumExpParamStr ExpParameter/*[in]*/, 
                                                BSTR ParameterValue/*[in]*/);
  HRESULT         __fastcall GetExpParameter(Epicoloacllib_tlb::enumExpParam ExpParameter/*[in]*/, 
                                             long* ParameterValue/*[out,retval]*/);
  long            __fastcall GetExpParameter(Epicoloacllib_tlb::enumExpParam ExpParameter/*[in]*/);
  HRESULT         __fastcall GetExpParameterStr(Epicoloacllib_tlb::enumExpParamStr ExpParameter/*[in]*/, 
                                                BSTR* ParameterValue/*[out,retval]*/);
  BSTR            __fastcall GetExpParameterStr(Epicoloacllib_tlb::enumExpParamStr ExpParameter/*[in]*/);
  HRESULT         __fastcall get_BoardId(BSTR* pVal/*[out,retval]*/);
  BSTR            __fastcall get_BoardId(void);
  HRESULT         __fastcall set_BoardId(BSTR pVal/*[in]*/);
  HRESULT         __fastcall get_VideoSource(long* pVal/*[out,retval]*/);
  long            __fastcall get_VideoSource(void);
  HRESULT         __fastcall set_VideoSource(long pVal/*[in]*/);
  HRESULT         __fastcall get_Standard(Epicoloacllib_tlb::enumVideoStandard* pVal/*[out,retval]*/);
  Epicoloacllib_tlb::enumVideoStandard __fastcall get_Standard(void);
  HRESULT         __fastcall set_Standard(Epicoloacllib_tlb::enumVideoStandard pVal/*[in]*/);
  HRESULT         __fastcall get_ColorFormat(Epicoloacllib_tlb::enumColorFormat* pVal/*[out,retval]*/);
  Epicoloacllib_tlb::enumColorFormat __fastcall get_ColorFormat(void);
  HRESULT         __fastcall set_ColorFormat(Epicoloacllib_tlb::enumColorFormat pVal/*[in]*/);
  HRESULT         __fastcall get_PixelGain(float* pVal/*[out,retval]*/);
  float           __fastcall get_PixelGain(void);
  HRESULT         __fastcall set_PixelGain(float pVal/*[in]*/);
  HRESULT         __fastcall get_PixelOffset(float* pVal/*[out,retval]*/);
  float           __fastcall get_PixelOffset(void);
  HRESULT         __fastcall set_PixelOffset(float pVal/*[in]*/);
  HRESULT         __fastcall get_PixelUGain(float* pVal/*[out,retval]*/);
  float           __fastcall get_PixelUGain(void);
  HRESULT         __fastcall set_PixelUGain(float pVal/*[in]*/);
  HRESULT         __fastcall get_PixelVGain(float* pVal/*[out,retval]*/);
  float           __fastcall get_PixelVGain(void);
  HRESULT         __fastcall set_PixelVGain(float pVal/*[in]*/);
  HRESULT         __fastcall get_PixelHue(float* pVal/*[out,retval]*/);
  float           __fastcall get_PixelHue(void);
  HRESULT         __fastcall set_PixelHue(float pVal/*[in]*/);
  HRESULT         __fastcall get_PixelNtscHue(float* pVal/*[out,retval]*/);
  float           __fastcall get_PixelNtscHue(void);
  HRESULT         __fastcall set_PixelNtscHue(float pVal/*[in]*/);
  HRESULT         __fastcall get_lPixelGain(long* pVal/*[out,retval]*/);
  long            __fastcall get_lPixelGain(void);
  HRESULT         __fastcall set_lPixelGain(long pVal/*[in]*/);
  HRESULT         __fastcall get_lPixelOffset(long* pVal/*[out,retval]*/);
  long            __fastcall get_lPixelOffset(void);
  HRESULT         __fastcall set_lPixelOffset(long pVal/*[in]*/);
  HRESULT         __fastcall get_lPixelUGain(long* pVal/*[out,retval]*/);
  long            __fastcall get_lPixelUGain(void);
  HRESULT         __fastcall set_lPixelUGain(long pVal/*[in]*/);
  HRESULT         __fastcall get_lPixelVGain(long* pVal/*[out,retval]*/);
  long            __fastcall get_lPixelVGain(void);
  HRESULT         __fastcall set_lPixelVGain(long pVal/*[in]*/);
  HRESULT         __fastcall get_lPixelHue(long* pVal/*[out,retval]*/);
  long            __fastcall get_lPixelHue(void);
  HRESULT         __fastcall set_lPixelHue(long pVal/*[in]*/);
  HRESULT         __fastcall get_lPixelNtscHue(long* pVal/*[out,retval]*/);
  long            __fastcall get_lPixelNtscHue(void);
  HRESULT         __fastcall set_lPixelNtscHue(long pVal/*[in]*/);
  HRESULT         __fastcall get_ImageSizeX(long* pVal/*[out,retval]*/);
  long            __fastcall get_ImageSizeX(void);
  HRESULT         __fastcall set_ImageSizeX(long pVal/*[in]*/);
  HRESULT         __fastcall get_ImageSizeY(long* pVal/*[out,retval]*/);
  long            __fastcall get_ImageSizeY(void);
  HRESULT         __fastcall set_ImageSizeY(long pVal/*[in]*/);
  HRESULT         __fastcall get_ImageScaleX(float* pVal/*[out,retval]*/);
  float           __fastcall get_ImageScaleX(void);
  HRESULT         __fastcall set_ImageScaleX(float pVal/*[in]*/);
  HRESULT         __fastcall get_lImageScaleX(long* pVal/*[out,retval]*/);
  long            __fastcall get_lImageScaleX(void);
  HRESULT         __fastcall set_lImageScaleX(long pVal/*[in]*/);
  HRESULT         __fastcall get_ImageScaleY(float* pVal/*[out,retval]*/);
  float           __fastcall get_ImageScaleY(void);
  HRESULT         __fastcall set_ImageScaleY(float pVal/*[in]*/);
  HRESULT         __fastcall get_lImageScaleY(long* pVal/*[out,retval]*/);
  long            __fastcall get_lImageScaleY(void);
  HRESULT         __fastcall set_lImageScaleY(long pVal/*[in]*/);
  HRESULT         __fastcall get_ImageOffsetX(long* pVal/*[out,retval]*/);
  long            __fastcall get_ImageOffsetX(void);
  HRESULT         __fastcall set_ImageOffsetX(long pVal/*[in]*/);
  HRESULT         __fastcall get_ImageOffsetY(long* pVal/*[out,retval]*/);
  long            __fastcall get_ImageOffsetY(void);
  HRESULT         __fastcall set_ImageOffsetY(long pVal/*[in]*/);
  HRESULT         __fastcall get_ImageFlipY(TOLEBOOL* pVal/*[out,retval]*/);
  TOLEBOOL        __fastcall get_ImageFlipY(void);
  HRESULT         __fastcall set_ImageFlipY(TOLEBOOL pVal/*[in]*/);
  HRESULT         __fastcall get_FieldMode(Epicoloacllib_tlb::enumFieldMode* pVal/*[out,retval]*/);
  Epicoloacllib_tlb::enumFieldMode __fastcall get_FieldMode(void);
  HRESULT         __fastcall set_FieldMode(Epicoloacllib_tlb::enumFieldMode pVal/*[in]*/);
  HRESULT         __fastcall get_GrabSync(Epicoloacllib_tlb::enumGrabSync* pVal/*[out,retval]*/);
  Epicoloacllib_tlb::enumGrabSync __fastcall get_GrabSync(void);
  HRESULT         __fastcall set_GrabSync(Epicoloacllib_tlb::enumGrabSync pVal/*[in]*/);
  HRESULT         __fastcall get_ColorTrap(Epicoloacllib_tlb::enumColorTrap* pVal/*[out,retval]*/);
  Epicoloacllib_tlb::enumColorTrap __fastcall get_ColorTrap(void);
  HRESULT         __fastcall set_ColorTrap(Epicoloacllib_tlb::enumColorTrap pVal/*[in]*/);
  HRESULT         __fastcall get_Coring(Epicoloacllib_tlb::enumCoring* pVal/*[out,retval]*/);
  Epicoloacllib_tlb::enumCoring __fastcall get_Coring(void);
  HRESULT         __fastcall set_Coring(Epicoloacllib_tlb::enumCoring pVal/*[in]*/);
  HRESULT         __fastcall get_GammaCorrection(Epicoloacllib_tlb::enumGamma* pVal/*[out,retval]*/);
  Epicoloacllib_tlb::enumGamma __fastcall get_GammaCorrection(void);
  HRESULT         __fastcall set_GammaCorrection(Epicoloacllib_tlb::enumGamma pVal/*[in]*/);
  HRESULT         __fastcall get_TriggerMask(Epicoloacllib_tlb::enumTriggerMask* pVal/*[out,retval]*/);
  Epicoloacllib_tlb::enumTriggerMask __fastcall get_TriggerMask(void);
  HRESULT         __fastcall set_TriggerMask(Epicoloacllib_tlb::enumTriggerMask pVal/*[in]*/);
  HRESULT         __fastcall get_TriggerMode(Epicoloacllib_tlb::enumTriggerMode* pVal/*[out,retval]*/);
  Epicoloacllib_tlb::enumTriggerMode __fastcall get_TriggerMode(void);
  HRESULT         __fastcall set_TriggerMode(Epicoloacllib_tlb::enumTriggerMode pVal/*[in]*/);
  HRESULT         __fastcall get_AcquisitionPause(long* pVal/*[out,retval]*/);
  long            __fastcall get_AcquisitionPause(void);
  HRESULT         __fastcall set_AcquisitionPause(long pVal/*[in]*/);
  HRESULT         __fastcall get_AcquisitionTrigger(Epicoloacllib_tlb::enumAcquisitionTrigger* pVal/*[out,retval]*/);
  Epicoloacllib_tlb::enumAcquisitionTrigger __fastcall get_AcquisitionTrigger(void);
  HRESULT         __fastcall set_AcquisitionTrigger(Epicoloacllib_tlb::enumAcquisitionTrigger pVal/*[in]*/);
  HRESULT         __fastcall get_RepeatGrabCount(long* pVal/*[out,retval]*/);
  long            __fastcall get_RepeatGrabCount(void);
  HRESULT         __fastcall set_RepeatGrabCount(long pVal/*[in]*/);

  __property   BSTR            BoardId = {read = get_BoardId, write = set_BoardId};
  __property   long            VideoSource = {read = get_VideoSource, write = set_VideoSource};
  __property   Epicoloacllib_tlb::enumVideoStandard Standard = {read = get_Standard, write = set_Standard};
  __property   Epicoloacllib_tlb::enumColorFormat ColorFormat = {read = get_ColorFormat, write = set_ColorFormat};
  __property   float           PixelGain = {read = get_PixelGain, write = set_PixelGain};
  __property   float           PixelOffset = {read = get_PixelOffset, write = set_PixelOffset};
  __property   float           PixelUGain = {read = get_PixelUGain, write = set_PixelUGain};
  __property   float           PixelVGain = {read = get_PixelVGain, write = set_PixelVGain};
  __property   float           PixelHue = {read = get_PixelHue, write = set_PixelHue};
  __property   float           PixelNtscHue = {read = get_PixelNtscHue, write = set_PixelNtscHue};
  __property   long            lPixelGain = {read = get_lPixelGain, write = set_lPixelGain};
  __property   long            lPixelOffset = {read = get_lPixelOffset, write = set_lPixelOffset};
  __property   long            lPixelUGain = {read = get_lPixelUGain, write = set_lPixelUGain};
  __property   long            lPixelVGain = {read = get_lPixelVGain, write = set_lPixelVGain};
  __property   long            lPixelHue = {read = get_lPixelHue, write = set_lPixelHue};
  __property   long            lPixelNtscHue = {read = get_lPixelNtscHue, write = set_lPixelNtscHue};
  __property   long            ImageSizeX = {read = get_ImageSizeX, write = set_ImageSizeX};
  __property   long            ImageSizeY = {read = get_ImageSizeY, write = set_ImageSizeY};
  __property   float           ImageScaleX = {read = get_ImageScaleX, write = set_ImageScaleX};
  __property   long            lImageScaleX = {read = get_lImageScaleX, write = set_lImageScaleX};
  __property   float           ImageScaleY = {read = get_ImageScaleY, write = set_ImageScaleY};
  __property   long            lImageScaleY = {read = get_lImageScaleY, write = set_lImageScaleY};
  __property   long            ImageOffsetX = {read = get_ImageOffsetX, write = set_ImageOffsetX};
  __property   long            ImageOffsetY = {read = get_ImageOffsetY, write = set_ImageOffsetY};
  __property   TOLEBOOL        ImageFlipY = {read = get_ImageFlipY, write = set_ImageFlipY};
  __property   Epicoloacllib_tlb::enumFieldMode FieldMode = {read = get_FieldMode, write = set_FieldMode};
  __property   Epicoloacllib_tlb::enumGrabSync GrabSync = {read = get_GrabSync, write = set_GrabSync};
  __property   Epicoloacllib_tlb::enumColorTrap ColorTrap = {read = get_ColorTrap, write = set_ColorTrap};
  __property   Epicoloacllib_tlb::enumCoring Coring = {read = get_Coring, write = set_Coring};
  __property   Epicoloacllib_tlb::enumGamma GammaCorrection = {read = get_GammaCorrection, write = set_GammaCorrection};
  __property   Epicoloacllib_tlb::enumTriggerMask TriggerMask = {read = get_TriggerMask, write = set_TriggerMask};
  __property   Epicoloacllib_tlb::enumTriggerMode TriggerMode = {read = get_TriggerMode, write = set_TriggerMode};
  __property   long            AcquisitionPause = {read = get_AcquisitionPause, write = set_AcquisitionPause};
  __property   Epicoloacllib_tlb::enumAcquisitionTrigger AcquisitionTrigger = {read = get_AcquisitionTrigger, write = set_AcquisitionTrigger};
  __property   long            RepeatGrabCount = {read = get_RepeatGrabCount, write = set_RepeatGrabCount};
};
typedef TCOMIECameraPicoloT<IECameraPicolo> TCOMIECameraPicolo;

// *********************************************************************//
// DispIntf:  IECameraPicolo
// Flags:     (4416) Dual OleAutomation Dispatchable
// GUID:      {0A8ABF7F-7A27-11D3-89F7-0050042A3D34}
// *********************************************************************//
template<class T>
class IECameraPicoloDispT : public TAutoDriver<IECameraPicolo>
{
public:
  IECameraPicoloDispT(){}

  IECameraPicoloDispT(IECameraPicolo *pintf)
  {
    TAutoDriver<IECameraPicolo>::Bind(pintf, false);
  }

  IECameraPicoloDispT(IECameraPicoloPtr pintf)
  {
    TAutoDriver<IECameraPicolo>::Bind(pintf, true);
  }

  IECameraPicoloDispT& operator=(IECameraPicolo *pintf)
  {
    TAutoDriver<IECameraPicolo>::Bind(pintf, false);
    return *this;
  }

  IECameraPicoloDispT& operator=(IECameraPicoloPtr pintf)
  {
    TAutoDriver<IECameraPicolo>::Bind(pintf, true);
    return *this;
  }

  HRESULT BindDefault()
  {
    return OLECHECK(Bind(CLSID_ECameraPicolo));
  }

  HRESULT BindRunning()
  {
    return BindToActive(CLSID_ECameraPicolo);
  }

  HRESULT         __fastcall AddDisplay(LPDISPATCH EDisplayObject/*[in]*/);
  HRESULT         __fastcall CreateVisionSurface(LPDISPATCH EImageName/*[in]*/, 
                                                 long* SurfaceHandle/*[out,retval]*/);
  long            __fastcall CreateVisionSurface(LPDISPATCH EImageName/*[in]*/);
  HRESULT         __fastcall Grab();
  HRESULT         __fastcall Live();
  HRESULT         __fastcall Stop();
  HRESULT         __fastcall RemoveDisplay(LPDISPATCH EDisplayName/*[in]*/);
  HRESULT         __fastcall CreateNewSurface(long Pointer/*[in]*/, long ImageWidth/*[in]*/, 
                                              long ImageHeight/*[in]*/, long ImagePitch/*[in]*/, 
                                              long* SurfaceHandle/*[out,retval]*/);
  long            __fastcall CreateNewSurface(long Pointer/*[in]*/, long ImageWidth/*[in]*/, 
                                              long ImageHeight/*[in]*/, long ImagePitch/*[in]*/);
  HRESULT         __fastcall AddSurface(long SurfaceHandle/*[in]*/);
  HRESULT         __fastcall SetExpParameter(Epicoloacllib_tlb::enumExpParam ExpParameter/*[in]*/, 
                                             long ParameterValue/*[in]*/);
  HRESULT         __fastcall SetExpParameterStr(Epicoloacllib_tlb::enumExpParamStr ExpParameter/*[in]*/
                                                , BSTR ParameterValue/*[in]*/);
  HRESULT         __fastcall GetExpParameter(Epicoloacllib_tlb::enumExpParam ExpParameter/*[in]*/, 
                                             long* ParameterValue/*[out,retval]*/);
  long            __fastcall GetExpParameter(Epicoloacllib_tlb::enumExpParam ExpParameter/*[in]*/);
  HRESULT         __fastcall GetExpParameterStr(Epicoloacllib_tlb::enumExpParamStr ExpParameter/*[in]*/
                                                , BSTR* ParameterValue/*[out,retval]*/);
  BSTR            __fastcall GetExpParameterStr(Epicoloacllib_tlb::enumExpParamStr ExpParameter/*[in]*/);
  HRESULT         __fastcall get_BoardId(BSTR* pVal/*[out,retval]*/);
  BSTR            __fastcall get_BoardId(void);
  HRESULT         __fastcall set_BoardId(BSTR pVal/*[in]*/);
  HRESULT         __fastcall get_VideoSource(long* pVal/*[out,retval]*/);
  long            __fastcall get_VideoSource(void);
  HRESULT         __fastcall set_VideoSource(long pVal/*[in]*/);
  HRESULT         __fastcall get_Standard(Epicoloacllib_tlb::enumVideoStandard* pVal/*[out,retval]*/);
  Epicoloacllib_tlb::enumVideoStandard __fastcall get_Standard(void);
  HRESULT         __fastcall set_Standard(Epicoloacllib_tlb::enumVideoStandard pVal/*[in]*/);
  HRESULT         __fastcall get_ColorFormat(Epicoloacllib_tlb::enumColorFormat* pVal/*[out,retval]*/);
  Epicoloacllib_tlb::enumColorFormat __fastcall get_ColorFormat(void);
  HRESULT         __fastcall set_ColorFormat(Epicoloacllib_tlb::enumColorFormat pVal/*[in]*/);
  HRESULT         __fastcall get_PixelGain(float* pVal/*[out,retval]*/);
  float           __fastcall get_PixelGain(void);
  HRESULT         __fastcall set_PixelGain(float pVal/*[in]*/);
  HRESULT         __fastcall get_PixelOffset(float* pVal/*[out,retval]*/);
  float           __fastcall get_PixelOffset(void);
  HRESULT         __fastcall set_PixelOffset(float pVal/*[in]*/);
  HRESULT         __fastcall get_PixelUGain(float* pVal/*[out,retval]*/);
  float           __fastcall get_PixelUGain(void);
  HRESULT         __fastcall set_PixelUGain(float pVal/*[in]*/);
  HRESULT         __fastcall get_PixelVGain(float* pVal/*[out,retval]*/);
  float           __fastcall get_PixelVGain(void);
  HRESULT         __fastcall set_PixelVGain(float pVal/*[in]*/);
  HRESULT         __fastcall get_PixelHue(float* pVal/*[out,retval]*/);
  float           __fastcall get_PixelHue(void);
  HRESULT         __fastcall set_PixelHue(float pVal/*[in]*/);
  HRESULT         __fastcall get_PixelNtscHue(float* pVal/*[out,retval]*/);
  float           __fastcall get_PixelNtscHue(void);
  HRESULT         __fastcall set_PixelNtscHue(float pVal/*[in]*/);
  HRESULT         __fastcall get_lPixelGain(long* pVal/*[out,retval]*/);
  long            __fastcall get_lPixelGain(void);
  HRESULT         __fastcall set_lPixelGain(long pVal/*[in]*/);
  HRESULT         __fastcall get_lPixelOffset(long* pVal/*[out,retval]*/);
  long            __fastcall get_lPixelOffset(void);
  HRESULT         __fastcall set_lPixelOffset(long pVal/*[in]*/);
  HRESULT         __fastcall get_lPixelUGain(long* pVal/*[out,retval]*/);
  long            __fastcall get_lPixelUGain(void);
  HRESULT         __fastcall set_lPixelUGain(long pVal/*[in]*/);
  HRESULT         __fastcall get_lPixelVGain(long* pVal/*[out,retval]*/);
  long            __fastcall get_lPixelVGain(void);
  HRESULT         __fastcall set_lPixelVGain(long pVal/*[in]*/);
  HRESULT         __fastcall get_lPixelHue(long* pVal/*[out,retval]*/);
  long            __fastcall get_lPixelHue(void);
  HRESULT         __fastcall set_lPixelHue(long pVal/*[in]*/);
  HRESULT         __fastcall get_lPixelNtscHue(long* pVal/*[out,retval]*/);
  long            __fastcall get_lPixelNtscHue(void);
  HRESULT         __fastcall set_lPixelNtscHue(long pVal/*[in]*/);
  HRESULT         __fastcall get_ImageSizeX(long* pVal/*[out,retval]*/);
  long            __fastcall get_ImageSizeX(void);
  HRESULT         __fastcall set_ImageSizeX(long pVal/*[in]*/);
  HRESULT         __fastcall get_ImageSizeY(long* pVal/*[out,retval]*/);
  long            __fastcall get_ImageSizeY(void);
  HRESULT         __fastcall set_ImageSizeY(long pVal/*[in]*/);
  HRESULT         __fastcall get_ImageScaleX(float* pVal/*[out,retval]*/);
  float           __fastcall get_ImageScaleX(void);
  HRESULT         __fastcall set_ImageScaleX(float pVal/*[in]*/);
  HRESULT         __fastcall get_lImageScaleX(long* pVal/*[out,retval]*/);
  long            __fastcall get_lImageScaleX(void);
  HRESULT         __fastcall set_lImageScaleX(long pVal/*[in]*/);
  HRESULT         __fastcall get_ImageScaleY(float* pVal/*[out,retval]*/);
  float           __fastcall get_ImageScaleY(void);
  HRESULT         __fastcall set_ImageScaleY(float pVal/*[in]*/);
  HRESULT         __fastcall get_lImageScaleY(long* pVal/*[out,retval]*/);
  long            __fastcall get_lImageScaleY(void);
  HRESULT         __fastcall set_lImageScaleY(long pVal/*[in]*/);
  HRESULT         __fastcall get_ImageOffsetX(long* pVal/*[out,retval]*/);
  long            __fastcall get_ImageOffsetX(void);
  HRESULT         __fastcall set_ImageOffsetX(long pVal/*[in]*/);
  HRESULT         __fastcall get_ImageOffsetY(long* pVal/*[out,retval]*/);
  long            __fastcall get_ImageOffsetY(void);
  HRESULT         __fastcall set_ImageOffsetY(long pVal/*[in]*/);
  HRESULT         __fastcall get_ImageFlipY(TOLEBOOL* pVal/*[out,retval]*/);
  TOLEBOOL        __fastcall get_ImageFlipY(void);
  HRESULT         __fastcall set_ImageFlipY(TOLEBOOL pVal/*[in]*/);
  HRESULT         __fastcall get_FieldMode(Epicoloacllib_tlb::enumFieldMode* pVal/*[out,retval]*/);
  Epicoloacllib_tlb::enumFieldMode __fastcall get_FieldMode(void);
  HRESULT         __fastcall set_FieldMode(Epicoloacllib_tlb::enumFieldMode pVal/*[in]*/);
  HRESULT         __fastcall get_GrabSync(Epicoloacllib_tlb::enumGrabSync* pVal/*[out,retval]*/);
  Epicoloacllib_tlb::enumGrabSync __fastcall get_GrabSync(void);
  HRESULT         __fastcall set_GrabSync(Epicoloacllib_tlb::enumGrabSync pVal/*[in]*/);
  HRESULT         __fastcall get_ColorTrap(Epicoloacllib_tlb::enumColorTrap* pVal/*[out,retval]*/);
  Epicoloacllib_tlb::enumColorTrap __fastcall get_ColorTrap(void);
  HRESULT         __fastcall set_ColorTrap(Epicoloacllib_tlb::enumColorTrap pVal/*[in]*/);
  HRESULT         __fastcall get_Coring(Epicoloacllib_tlb::enumCoring* pVal/*[out,retval]*/);
  Epicoloacllib_tlb::enumCoring __fastcall get_Coring(void);
  HRESULT         __fastcall set_Coring(Epicoloacllib_tlb::enumCoring pVal/*[in]*/);
  HRESULT         __fastcall get_GammaCorrection(Epicoloacllib_tlb::enumGamma* pVal/*[out,retval]*/);
  Epicoloacllib_tlb::enumGamma __fastcall get_GammaCorrection(void);
  HRESULT         __fastcall set_GammaCorrection(Epicoloacllib_tlb::enumGamma pVal/*[in]*/);
  HRESULT         __fastcall get_TriggerMask(Epicoloacllib_tlb::enumTriggerMask* pVal/*[out,retval]*/);
  Epicoloacllib_tlb::enumTriggerMask __fastcall get_TriggerMask(void);
  HRESULT         __fastcall set_TriggerMask(Epicoloacllib_tlb::enumTriggerMask pVal/*[in]*/);
  HRESULT         __fastcall get_TriggerMode(Epicoloacllib_tlb::enumTriggerMode* pVal/*[out,retval]*/);
  Epicoloacllib_tlb::enumTriggerMode __fastcall get_TriggerMode(void);
  HRESULT         __fastcall set_TriggerMode(Epicoloacllib_tlb::enumTriggerMode pVal/*[in]*/);
  HRESULT         __fastcall get_AcquisitionPause(long* pVal/*[out,retval]*/);
  long            __fastcall get_AcquisitionPause(void);
  HRESULT         __fastcall set_AcquisitionPause(long pVal/*[in]*/);
  HRESULT         __fastcall get_AcquisitionTrigger(Epicoloacllib_tlb::enumAcquisitionTrigger* pVal/*[out,retval]*/);
  Epicoloacllib_tlb::enumAcquisitionTrigger __fastcall get_AcquisitionTrigger(void);
  HRESULT         __fastcall set_AcquisitionTrigger(Epicoloacllib_tlb::enumAcquisitionTrigger pVal/*[in]*/);
  HRESULT         __fastcall get_RepeatGrabCount(long* pVal/*[out,retval]*/);
  long            __fastcall get_RepeatGrabCount(void);
  HRESULT         __fastcall set_RepeatGrabCount(long pVal/*[in]*/);

  __property   BSTR            BoardId = {read = get_BoardId, write = set_BoardId};
  __property   long            VideoSource = {read = get_VideoSource, write = set_VideoSource};
  __property   Epicoloacllib_tlb::enumVideoStandard Standard = {read = get_Standard, write = set_Standard};
  __property   Epicoloacllib_tlb::enumColorFormat ColorFormat = {read = get_ColorFormat, write = set_ColorFormat};
  __property   float           PixelGain = {read = get_PixelGain, write = set_PixelGain};
  __property   float           PixelOffset = {read = get_PixelOffset, write = set_PixelOffset};
  __property   float           PixelUGain = {read = get_PixelUGain, write = set_PixelUGain};
  __property   float           PixelVGain = {read = get_PixelVGain, write = set_PixelVGain};
  __property   float           PixelHue = {read = get_PixelHue, write = set_PixelHue};
  __property   float           PixelNtscHue = {read = get_PixelNtscHue, write = set_PixelNtscHue};
  __property   long            lPixelGain = {read = get_lPixelGain, write = set_lPixelGain};
  __property   long            lPixelOffset = {read = get_lPixelOffset, write = set_lPixelOffset};
  __property   long            lPixelUGain = {read = get_lPixelUGain, write = set_lPixelUGain};
  __property   long            lPixelVGain = {read = get_lPixelVGain, write = set_lPixelVGain};
  __property   long            lPixelHue = {read = get_lPixelHue, write = set_lPixelHue};
  __property   long            lPixelNtscHue = {read = get_lPixelNtscHue, write = set_lPixelNtscHue};
  __property   long            ImageSizeX = {read = get_ImageSizeX, write = set_ImageSizeX};
  __property   long            ImageSizeY = {read = get_ImageSizeY, write = set_ImageSizeY};
  __property   float           ImageScaleX = {read = get_ImageScaleX, write = set_ImageScaleX};
  __property   long            lImageScaleX = {read = get_lImageScaleX, write = set_lImageScaleX};
  __property   float           ImageScaleY = {read = get_ImageScaleY, write = set_ImageScaleY};
  __property   long            lImageScaleY = {read = get_lImageScaleY, write = set_lImageScaleY};
  __property   long            ImageOffsetX = {read = get_ImageOffsetX, write = set_ImageOffsetX};
  __property   long            ImageOffsetY = {read = get_ImageOffsetY, write = set_ImageOffsetY};
  __property   TOLEBOOL        ImageFlipY = {read = get_ImageFlipY, write = set_ImageFlipY};
  __property   Epicoloacllib_tlb::enumFieldMode FieldMode = {read = get_FieldMode, write = set_FieldMode};
  __property   Epicoloacllib_tlb::enumGrabSync GrabSync = {read = get_GrabSync, write = set_GrabSync};
  __property   Epicoloacllib_tlb::enumColorTrap ColorTrap = {read = get_ColorTrap, write = set_ColorTrap};
  __property   Epicoloacllib_tlb::enumCoring Coring = {read = get_Coring, write = set_Coring};
  __property   Epicoloacllib_tlb::enumGamma GammaCorrection = {read = get_GammaCorrection, write = set_GammaCorrection};
  __property   Epicoloacllib_tlb::enumTriggerMask TriggerMask = {read = get_TriggerMask, write = set_TriggerMask};
  __property   Epicoloacllib_tlb::enumTriggerMode TriggerMode = {read = get_TriggerMode, write = set_TriggerMode};
  __property   long            AcquisitionPause = {read = get_AcquisitionPause, write = set_AcquisitionPause};
  __property   Epicoloacllib_tlb::enumAcquisitionTrigger AcquisitionTrigger = {read = get_AcquisitionTrigger, write = set_AcquisitionTrigger};
  __property   long            RepeatGrabCount = {read = get_RepeatGrabCount, write = set_RepeatGrabCount};
};
typedef IECameraPicoloDispT<IECameraPicolo> IECameraPicoloDisp;

// *********************************************************************//
// DispIntf:  _IEConfigPicoloEvents
// Flags:     (4096) Dispatchable
// GUID:      {0A8ABF84-7A27-11D3-89F7-0050042A3D34}
// *********************************************************************//
template <class T>
class _IEConfigPicoloEventsDispT : public TAutoDriver<_IEConfigPicoloEvents>
{
public:
  _IEConfigPicoloEventsDispT(){}

  void Attach(LPUNKNOWN punk)
  { m_Dispatch = static_cast<T*>(punk); }


};
typedef _IEConfigPicoloEventsDispT<_IEConfigPicoloEvents> _IEConfigPicoloEventsDisp;

// *********************************************************************//
// SmartIntf: TCOMIEConfigPicolo
// Interface: IEConfigPicolo
// *********************************************************************//
template <class T /* IEConfigPicolo */ >
class TCOMIEConfigPicoloT : public TComInterface<IEConfigPicolo>, public TComInterfaceBase<IUnknown>
{
public:
  TCOMIEConfigPicoloT() {}
  TCOMIEConfigPicoloT(IEConfigPicolo *intf, bool addRef = false) : TComInterface<IEConfigPicolo>(intf, addRef) {}
  TCOMIEConfigPicoloT(const TCOMIEConfigPicoloT& src) : TComInterface<IEConfigPicolo>(src) {}
  TCOMIEConfigPicoloT& operator=(const TCOMIEConfigPicoloT& src) { Bind(src, true); return *this;}

  HRESULT         __fastcall get_BoardCount(long* pVal/*[out,retval]*/);
  long            __fastcall get_BoardCount(void);
  HRESULT         __fastcall get_BoardName(long Index/*[in]*/, BSTR* pVal/*[out,retval]*/);
  BSTR            __fastcall get_BoardName(long Index/*[in]*/);
  HRESULT         __fastcall get_SerialNumber(long Index/*[in]*/, long* pVal/*[out,retval]*/);
  long            __fastcall get_SerialNumber(long Index/*[in]*/);
  HRESULT         __fastcall get_BoardType(long Index/*[in]*/, 
                                           Epicoloacllib_tlb::enumBoardType* pVal/*[out,retval]*/);
  Epicoloacllib_tlb::enumBoardType __fastcall get_BoardType(long Index/*[in]*/);
  HRESULT         __fastcall SetBoardName(long Index/*[in]*/, BSTR BoardName/*[in]*/);
  HRESULT         __fastcall SetOemKey(long BoardId/*[in]*/, TVariantInParam Key/*[in]*/);
  HRESULT         __fastcall CheckOemKey(long BoardId/*[in]*/, TVariantInParam Key/*[in]*/, 
                                         TOLEBOOL* Result/*[out,retval]*/);
  TOLEBOOL        __fastcall CheckOemKey(long BoardId/*[in]*/, TVariantInParam Key/*[in]*/);
  HRESULT         __fastcall get_PciPosition(long Index/*[in]*/, long* pVal/*[out,retval]*/);
  long            __fastcall get_PciPosition(long Index/*[in]*/);
  HRESULT         __fastcall get_SourceCount(long Index/*[in]*/, long* pVal/*[out,retval]*/);
  long            __fastcall get_SourceCount(long Index/*[in]*/);
  HRESULT         __fastcall get_WatchDogSetting(long Index/*[in]*/, 
                                                 Epicoloacllib_tlb::enumWatchDogSetting* pVal/*[out,retval]*/);
  Epicoloacllib_tlb::enumWatchDogSetting __fastcall get_WatchDogSetting(long Index/*[in]*/);
  HRESULT         __fastcall set_WatchDogSetting(long Index/*[in]*/, 
                                                 Epicoloacllib_tlb::enumWatchDogSetting pVal/*[in]*/);
  HRESULT         __fastcall ResetWatchDogTimer(long Index/*[in]*/);
  HRESULT         __fastcall get_SerialLineSettings(long Index/*[in]*/, long* pVal/*[out,retval]*/);
  long            __fastcall get_SerialLineSettings(long Index/*[in]*/);
  HRESULT         __fastcall set_SerialLineSettings(long Index/*[in]*/, long pVal/*[in]*/);
  HRESULT         __fastcall SerialLineGetChar(long Index/*[in]*/, TVariant* pData/*[out,retval]*/);
  TVariant        __fastcall SerialLineGetChar(long Index/*[in]*/);
  HRESULT         __fastcall SerialLinePutChar(long Index/*[in]*/, TVariantInParam Data/*[in]*/);

  __property   long            BoardCount = {read = get_BoardCount};
};
typedef TCOMIEConfigPicoloT<IEConfigPicolo> TCOMIEConfigPicolo;

// *********************************************************************//
// DispIntf:  IEConfigPicolo
// Flags:     (4416) Dual OleAutomation Dispatchable
// GUID:      {0A8ABF82-7A27-11D3-89F7-0050042A3D34}
// *********************************************************************//
template<class T>
class IEConfigPicoloDispT : public TAutoDriver<IEConfigPicolo>
{
public:
  IEConfigPicoloDispT(){}

  IEConfigPicoloDispT(IEConfigPicolo *pintf)
  {
    TAutoDriver<IEConfigPicolo>::Bind(pintf, false);
  }

  IEConfigPicoloDispT(IEConfigPicoloPtr pintf)
  {
    TAutoDriver<IEConfigPicolo>::Bind(pintf, true);
  }

  IEConfigPicoloDispT& operator=(IEConfigPicolo *pintf)
  {
    TAutoDriver<IEConfigPicolo>::Bind(pintf, false);
    return *this;
  }

  IEConfigPicoloDispT& operator=(IEConfigPicoloPtr pintf)
  {
    TAutoDriver<IEConfigPicolo>::Bind(pintf, true);
    return *this;
  }

  HRESULT BindDefault()
  {
    return OLECHECK(Bind(CLSID_EConfigPicolo));
  }

  HRESULT BindRunning()
  {
    return BindToActive(CLSID_EConfigPicolo);
  }

  HRESULT         __fastcall get_BoardCount(long* pVal/*[out,retval]*/);
  long            __fastcall get_BoardCount(void);
  HRESULT         __fastcall get_BoardName(long Index/*[in]*/, BSTR* pVal/*[out,retval]*/);
  BSTR            __fastcall get_BoardName(long Index/*[in]*/);
  HRESULT         __fastcall get_SerialNumber(long Index/*[in]*/, long* pVal/*[out,retval]*/);
  long            __fastcall get_SerialNumber(long Index/*[in]*/);
  HRESULT         __fastcall get_BoardType(long Index/*[in]*/, 
                                           Epicoloacllib_tlb::enumBoardType* pVal/*[out,retval]*/);
  Epicoloacllib_tlb::enumBoardType __fastcall get_BoardType(long Index/*[in]*/);
  HRESULT         __fastcall SetBoardName(long Index/*[in]*/, BSTR BoardName/*[in]*/);
  HRESULT         __fastcall SetOemKey(long BoardId/*[in]*/, TVariantInParam Key/*[in]*/);
  HRESULT         __fastcall CheckOemKey(long BoardId/*[in]*/, TVariantInParam Key/*[in]*/, 
                                         TOLEBOOL* Result/*[out,retval]*/);
  TOLEBOOL        __fastcall CheckOemKey(long BoardId/*[in]*/, TVariantInParam Key/*[in]*/);
  HRESULT         __fastcall get_PciPosition(long Index/*[in]*/, long* pVal/*[out,retval]*/);
  long            __fastcall get_PciPosition(long Index/*[in]*/);
  HRESULT         __fastcall get_SourceCount(long Index/*[in]*/, long* pVal/*[out,retval]*/);
  long            __fastcall get_SourceCount(long Index/*[in]*/);
  HRESULT         __fastcall get_WatchDogSetting(long Index/*[in]*/, 
                                                 Epicoloacllib_tlb::enumWatchDogSetting* pVal/*[out,retval]*/);
  Epicoloacllib_tlb::enumWatchDogSetting __fastcall get_WatchDogSetting(long Index/*[in]*/);
  HRESULT         __fastcall set_WatchDogSetting(long Index/*[in]*/, 
                                                 Epicoloacllib_tlb::enumWatchDogSetting pVal/*[in]*/);
  HRESULT         __fastcall ResetWatchDogTimer(long Index/*[in]*/);
  HRESULT         __fastcall get_SerialLineSettings(long Index/*[in]*/, long* pVal/*[out,retval]*/);
  long            __fastcall get_SerialLineSettings(long Index/*[in]*/);
  HRESULT         __fastcall set_SerialLineSettings(long Index/*[in]*/, long pVal/*[in]*/);
  HRESULT         __fastcall SerialLineGetChar(long Index/*[in]*/, TVariant* pData/*[out,retval]*/);
  TVariant        __fastcall SerialLineGetChar(long Index/*[in]*/);
  HRESULT         __fastcall SerialLinePutChar(long Index/*[in]*/, TVariantInParam Data/*[in]*/);

  __property   long            BoardCount = {read = get_BoardCount};
};
typedef IEConfigPicoloDispT<IEConfigPicolo> IEConfigPicoloDisp;

// *********************************************************************//
// SmartIntf: TCOMIPicoloCallBack
// Interface: IPicoloCallBack
// *********************************************************************//
template <class T /* IPicoloCallBack */ >
class TCOMIPicoloCallBackT : public TComInterface<IPicoloCallBack>, public TComInterfaceBase<IUnknown>
{
public:
  TCOMIPicoloCallBackT() {}
  TCOMIPicoloCallBackT(IPicoloCallBack *intf, bool addRef = false) : TComInterface<IPicoloCallBack>(intf, addRef) {}
  TCOMIPicoloCallBackT(const TCOMIPicoloCallBackT& src) : TComInterface<IPicoloCallBack>(src) {}
  TCOMIPicoloCallBackT& operator=(const TCOMIPicoloCallBackT& src) { Bind(src, true); return *this;}

  HRESULT         __fastcall ErrorCallback(long ChannelID/*[in]*/, long SurfaceID/*[in]*/, 
                                           long Data/*[in]*/, long Flags/*[in]*/, 
                                           long TimeCode/*[in]*/, long Reserved/*[in]*/);
  HRESULT         __fastcall Initialize(void);
  HRESULT         __fastcall Terminate(void);
  HRESULT         __fastcall SurfaceAvailableCallback(long ChannelID/*[in]*/, long SurfaceID/*[in]*/, 
                                                      long Data/*[in]*/, long Flags/*[in]*/, 
                                                      long TimeCode/*[in]*/, long Reserved/*[in]*/);
  HRESULT         __fastcall GetWorkerThread(long* p/*[out,retval]*/);
  long            __fastcall GetWorkerThread(void);

};
typedef TCOMIPicoloCallBackT<IPicoloCallBack> TCOMIPicoloCallBack;

// *********************************************************************//
// DispIntf:  IPicoloCallBack
// Flags:     (4432) Hidden Dual OleAutomation Dispatchable
// GUID:      {0A8ABF86-7A27-11D3-89F7-0050042A3D34}
// *********************************************************************//
template<class T>
class IPicoloCallBackDispT : public TAutoDriver<IPicoloCallBack>
{
public:
  IPicoloCallBackDispT(){}

  IPicoloCallBackDispT(IPicoloCallBack *pintf)
  {
    TAutoDriver<IPicoloCallBack>::Bind(pintf, false);
  }

  IPicoloCallBackDispT(IPicoloCallBackPtr pintf)
  {
    TAutoDriver<IPicoloCallBack>::Bind(pintf, true);
  }

  IPicoloCallBackDispT& operator=(IPicoloCallBack *pintf)
  {
    TAutoDriver<IPicoloCallBack>::Bind(pintf, false);
    return *this;
  }

  IPicoloCallBackDispT& operator=(IPicoloCallBackPtr pintf)
  {
    TAutoDriver<IPicoloCallBack>::Bind(pintf, true);
    return *this;
  }

  HRESULT BindDefault()
  {
    return OLECHECK(Bind(CLSID_PicoloCallBack));
  }

  HRESULT BindRunning()
  {
    return BindToActive(CLSID_PicoloCallBack);
  }

  HRESULT         __fastcall ErrorCallback(long ChannelID/*[in]*/, long SurfaceID/*[in]*/, 
                                           long Data/*[in]*/, long Flags/*[in]*/, 
                                           long TimeCode/*[in]*/, long Reserved/*[in]*/);
  HRESULT         __fastcall Initialize();
  HRESULT         __fastcall Terminate();
  HRESULT         __fastcall SurfaceAvailableCallback(long ChannelID/*[in]*/, long SurfaceID/*[in]*/
                                                      , long Data/*[in]*/, long Flags/*[in]*/, 
                                                      long TimeCode/*[in]*/, long Reserved/*[in]*/);
  HRESULT         __fastcall GetWorkerThread(long* p/*[out,retval]*/);
  long            __fastcall GetWorkerThread(void);

};
typedef IPicoloCallBackDispT<IPicoloCallBack> IPicoloCallBackDisp;

// *********************************************************************//
// DispIntf:  _IPicoloCallBackEvents
// Flags:     (4096) Dispatchable
// GUID:      {0A8ABF88-7A27-11D3-89F7-0050042A3D34}
// *********************************************************************//
template <class T>
class _IPicoloCallBackEventsDispT : public TAutoDriver<_IPicoloCallBackEvents>
{
public:
  _IPicoloCallBackEventsDispT(){}

  void Attach(LPUNKNOWN punk)
  { m_Dispatch = static_cast<T*>(punk); }

  HRESULT         __fastcall SurfaceAvailable(long ChannelID/*[in]*/, long SurfaceID/*[in]*/, 
                                              long Data/*[in]*/, long Flags/*[in]*/, 
                                              long TimeCode/*[in]*/, long Reserved/*[in]*/);
  HRESULT         __fastcall Error(long ChannelID/*[in]*/, long SurfaceID/*[in]*/, long Data/*[in]*/
                                   , long Flags/*[in]*/, long TimeCode/*[in]*/, 
                                   long Reserved/*[in]*/);

};
typedef _IPicoloCallBackEventsDispT<_IPicoloCallBackEvents> _IPicoloCallBackEventsDisp;

// *********************************************************************//
// DispIntf:  _IECameraPicoloEvents
// Flags:     (4096) Dispatchable
// GUID:      {0A8ABF81-7A27-11D3-89F7-0050042A3D34}
// *********************************************************************//
template <class T> HRESULT __fastcall
_IECameraPicoloEventsDispT<T>::SurfaceAvailable(long SurfaceHandle/*[in]*/, long Data/*[in]*/, 
                                                long Flags/*[in]*/, long TimeCode/*[in]*/, 
                                                long ExtendedStatus/*[in]*/)
{
  _TDispID _dispid(/* SurfaceAvailable */ DISPID(1));
  TAutoArgs<5> _args;
  _args[1] = SurfaceHandle /*[VT_I4:0]*/;
  _args[2] = Data /*[VT_I4:0]*/;
  _args[3] = Flags /*[VT_I4:0]*/;
  _args[4] = TimeCode /*[VT_I4:0]*/;
  _args[5] = ExtendedStatus /*[VT_I4:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
_IECameraPicoloEventsDispT<T>::Error(long SurfaceHandle/*[in]*/, 
                                     Epicoloacllib_tlb::enumECameraError ErrorCode/*[in]*/, 
                                     long Data/*[in]*/, long Flags/*[in]*/, long TimeCode/*[in]*/, 
                                     long ExtendedStatus/*[in]*/)
{
  _TDispID _dispid(/* Error */ DISPID(2));
  TAutoArgs<6> _args;
  _args[1] = SurfaceHandle /*[VT_I4:0]*/;
  _args[2] = (int)ErrorCode /*[VT_USERDEFINED:0]*/;
  _args[3] = Data /*[VT_I4:0]*/;
  _args[4] = Flags /*[VT_I4:0]*/;
  _args[5] = TimeCode /*[VT_I4:0]*/;
  _args[6] = ExtendedStatus /*[VT_I4:0]*/;
  return OleFunction(_dispid, _args);
}

// *********************************************************************//
// SmartIntf: TCOMIECameraPicolo
// Interface: IECameraPicolo
// *********************************************************************//
template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::AddDisplay(LPDISPATCH EDisplayObject/*[in]*/)
{
  return (*this)->AddDisplay(EDisplayObject);
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::CreateVisionSurface(LPDISPATCH EImageName/*[in]*/, 
                                            long* SurfaceHandle/*[out,retval]*/)
{
  return (*this)->CreateVisionSurface(EImageName, SurfaceHandle);
}

template <class T> long __fastcall
TCOMIECameraPicoloT<T>::CreateVisionSurface(LPDISPATCH EImageName/*[in]*/)
{
  long SurfaceHandle;
  OLECHECK(this->CreateVisionSurface(EImageName, (long*)&SurfaceHandle));
  return SurfaceHandle;
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::Grab(void)
{
  return (*this)->Grab();
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::Live(void)
{
  return (*this)->Live();
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::Stop(void)
{
  return (*this)->Stop();
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::RemoveDisplay(LPDISPATCH EDisplayName/*[in]*/)
{
  return (*this)->RemoveDisplay(EDisplayName);
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::CreateNewSurface(long Pointer/*[in]*/, long ImageWidth/*[in]*/, 
                                         long ImageHeight/*[in]*/, long ImagePitch/*[in]*/, 
                                         long* SurfaceHandle/*[out,retval]*/)
{
  return (*this)->CreateNewSurface(Pointer, ImageWidth, ImageHeight, ImagePitch, SurfaceHandle);
}

template <class T> long __fastcall
TCOMIECameraPicoloT<T>::CreateNewSurface(long Pointer/*[in]*/, long ImageWidth/*[in]*/, 
                                         long ImageHeight/*[in]*/, long ImagePitch/*[in]*/)
{
  long SurfaceHandle;
  OLECHECK(this->CreateNewSurface(Pointer, ImageWidth, ImageHeight, ImagePitch, (long*)&SurfaceHandle));
  return SurfaceHandle;
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::AddSurface(long SurfaceHandle/*[in]*/)
{
  return (*this)->AddSurface(SurfaceHandle);
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::SetExpParameter(Epicoloacllib_tlb::enumExpParam ExpParameter/*[in]*/, 
                                        long ParameterValue/*[in]*/)
{
  return (*this)->SetExpParameter(ExpParameter, ParameterValue);
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::SetExpParameterStr(Epicoloacllib_tlb::enumExpParamStr ExpParameter/*[in]*/, 
                                           BSTR ParameterValue/*[in]*/)
{
  return (*this)->SetExpParameterStr(ExpParameter, ParameterValue);
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::GetExpParameter(Epicoloacllib_tlb::enumExpParam ExpParameter/*[in]*/, 
                                        long* ParameterValue/*[out,retval]*/)
{
  return (*this)->GetExpParameter(ExpParameter, ParameterValue);
}

template <class T> long __fastcall
TCOMIECameraPicoloT<T>::GetExpParameter(Epicoloacllib_tlb::enumExpParam ExpParameter/*[in]*/)
{
  long ParameterValue;
  OLECHECK(this->GetExpParameter(ExpParameter, (long*)&ParameterValue));
  return ParameterValue;
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::GetExpParameterStr(Epicoloacllib_tlb::enumExpParamStr ExpParameter/*[in]*/, 
                                           BSTR* ParameterValue/*[out,retval]*/)
{
  return (*this)->GetExpParameterStr(ExpParameter, ParameterValue);
}

template <class T> BSTR __fastcall
TCOMIECameraPicoloT<T>::GetExpParameterStr(Epicoloacllib_tlb::enumExpParamStr ExpParameter/*[in]*/)
{
  BSTR ParameterValue = 0;
  OLECHECK(this->GetExpParameterStr(ExpParameter, (BSTR*)&ParameterValue));
  return ParameterValue;
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::get_BoardId(BSTR* pVal/*[out,retval]*/)
{
  return (*this)->get_BoardId(pVal);
}

template <class T> BSTR __fastcall
TCOMIECameraPicoloT<T>::get_BoardId(void)
{
  BSTR pVal = 0;
  OLECHECK(this->get_BoardId((BSTR*)&pVal));
  return pVal;
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::set_BoardId(BSTR pVal/*[in]*/)
{
  return (*this)->set_BoardId(pVal);
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::get_VideoSource(long* pVal/*[out,retval]*/)
{
  return (*this)->get_VideoSource(pVal);
}

template <class T> long __fastcall
TCOMIECameraPicoloT<T>::get_VideoSource(void)
{
  long pVal;
  OLECHECK(this->get_VideoSource((long*)&pVal));
  return pVal;
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::set_VideoSource(long pVal/*[in]*/)
{
  return (*this)->set_VideoSource(pVal);
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::get_Standard(Epicoloacllib_tlb::enumVideoStandard* pVal/*[out,retval]*/)
{
  return (*this)->get_Standard(pVal);
}

template <class T> Epicoloacllib_tlb::enumVideoStandard __fastcall
TCOMIECameraPicoloT<T>::get_Standard(void)
{
  Epicoloacllib_tlb::enumVideoStandard pVal;
  OLECHECK(this->get_Standard((Epicoloacllib_tlb::enumVideoStandard*)&pVal));
  return pVal;
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::set_Standard(Epicoloacllib_tlb::enumVideoStandard pVal/*[in]*/)
{
  return (*this)->set_Standard(pVal);
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::get_ColorFormat(Epicoloacllib_tlb::enumColorFormat* pVal/*[out,retval]*/)
{
  return (*this)->get_ColorFormat(pVal);
}

template <class T> Epicoloacllib_tlb::enumColorFormat __fastcall
TCOMIECameraPicoloT<T>::get_ColorFormat(void)
{
  Epicoloacllib_tlb::enumColorFormat pVal;
  OLECHECK(this->get_ColorFormat((Epicoloacllib_tlb::enumColorFormat*)&pVal));
  return pVal;
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::set_ColorFormat(Epicoloacllib_tlb::enumColorFormat pVal/*[in]*/)
{
  return (*this)->set_ColorFormat(pVal);
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::get_PixelGain(float* pVal/*[out,retval]*/)
{
  return (*this)->get_PixelGain(pVal);
}

template <class T> float __fastcall
TCOMIECameraPicoloT<T>::get_PixelGain(void)
{
  float pVal;
  OLECHECK(this->get_PixelGain((float*)&pVal));
  return pVal;
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::set_PixelGain(float pVal/*[in]*/)
{
  return (*this)->set_PixelGain(pVal);
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::get_PixelOffset(float* pVal/*[out,retval]*/)
{
  return (*this)->get_PixelOffset(pVal);
}

template <class T> float __fastcall
TCOMIECameraPicoloT<T>::get_PixelOffset(void)
{
  float pVal;
  OLECHECK(this->get_PixelOffset((float*)&pVal));
  return pVal;
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::set_PixelOffset(float pVal/*[in]*/)
{
  return (*this)->set_PixelOffset(pVal);
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::get_PixelUGain(float* pVal/*[out,retval]*/)
{
  return (*this)->get_PixelUGain(pVal);
}

template <class T> float __fastcall
TCOMIECameraPicoloT<T>::get_PixelUGain(void)
{
  float pVal;
  OLECHECK(this->get_PixelUGain((float*)&pVal));
  return pVal;
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::set_PixelUGain(float pVal/*[in]*/)
{
  return (*this)->set_PixelUGain(pVal);
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::get_PixelVGain(float* pVal/*[out,retval]*/)
{
  return (*this)->get_PixelVGain(pVal);
}

template <class T> float __fastcall
TCOMIECameraPicoloT<T>::get_PixelVGain(void)
{
  float pVal;
  OLECHECK(this->get_PixelVGain((float*)&pVal));
  return pVal;
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::set_PixelVGain(float pVal/*[in]*/)
{
  return (*this)->set_PixelVGain(pVal);
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::get_PixelHue(float* pVal/*[out,retval]*/)
{
  return (*this)->get_PixelHue(pVal);
}

template <class T> float __fastcall
TCOMIECameraPicoloT<T>::get_PixelHue(void)
{
  float pVal;
  OLECHECK(this->get_PixelHue((float*)&pVal));
  return pVal;
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::set_PixelHue(float pVal/*[in]*/)
{
  return (*this)->set_PixelHue(pVal);
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::get_PixelNtscHue(float* pVal/*[out,retval]*/)
{
  return (*this)->get_PixelNtscHue(pVal);
}

template <class T> float __fastcall
TCOMIECameraPicoloT<T>::get_PixelNtscHue(void)
{
  float pVal;
  OLECHECK(this->get_PixelNtscHue((float*)&pVal));
  return pVal;
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::set_PixelNtscHue(float pVal/*[in]*/)
{
  return (*this)->set_PixelNtscHue(pVal);
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::get_lPixelGain(long* pVal/*[out,retval]*/)
{
  return (*this)->get_lPixelGain(pVal);
}

template <class T> long __fastcall
TCOMIECameraPicoloT<T>::get_lPixelGain(void)
{
  long pVal;
  OLECHECK(this->get_lPixelGain((long*)&pVal));
  return pVal;
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::set_lPixelGain(long pVal/*[in]*/)
{
  return (*this)->set_lPixelGain(pVal);
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::get_lPixelOffset(long* pVal/*[out,retval]*/)
{
  return (*this)->get_lPixelOffset(pVal);
}

template <class T> long __fastcall
TCOMIECameraPicoloT<T>::get_lPixelOffset(void)
{
  long pVal;
  OLECHECK(this->get_lPixelOffset((long*)&pVal));
  return pVal;
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::set_lPixelOffset(long pVal/*[in]*/)
{
  return (*this)->set_lPixelOffset(pVal);
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::get_lPixelUGain(long* pVal/*[out,retval]*/)
{
  return (*this)->get_lPixelUGain(pVal);
}

template <class T> long __fastcall
TCOMIECameraPicoloT<T>::get_lPixelUGain(void)
{
  long pVal;
  OLECHECK(this->get_lPixelUGain((long*)&pVal));
  return pVal;
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::set_lPixelUGain(long pVal/*[in]*/)
{
  return (*this)->set_lPixelUGain(pVal);
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::get_lPixelVGain(long* pVal/*[out,retval]*/)
{
  return (*this)->get_lPixelVGain(pVal);
}

template <class T> long __fastcall
TCOMIECameraPicoloT<T>::get_lPixelVGain(void)
{
  long pVal;
  OLECHECK(this->get_lPixelVGain((long*)&pVal));
  return pVal;
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::set_lPixelVGain(long pVal/*[in]*/)
{
  return (*this)->set_lPixelVGain(pVal);
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::get_lPixelHue(long* pVal/*[out,retval]*/)
{
  return (*this)->get_lPixelHue(pVal);
}

template <class T> long __fastcall
TCOMIECameraPicoloT<T>::get_lPixelHue(void)
{
  long pVal;
  OLECHECK(this->get_lPixelHue((long*)&pVal));
  return pVal;
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::set_lPixelHue(long pVal/*[in]*/)
{
  return (*this)->set_lPixelHue(pVal);
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::get_lPixelNtscHue(long* pVal/*[out,retval]*/)
{
  return (*this)->get_lPixelNtscHue(pVal);
}

template <class T> long __fastcall
TCOMIECameraPicoloT<T>::get_lPixelNtscHue(void)
{
  long pVal;
  OLECHECK(this->get_lPixelNtscHue((long*)&pVal));
  return pVal;
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::set_lPixelNtscHue(long pVal/*[in]*/)
{
  return (*this)->set_lPixelNtscHue(pVal);
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::get_ImageSizeX(long* pVal/*[out,retval]*/)
{
  return (*this)->get_ImageSizeX(pVal);
}

template <class T> long __fastcall
TCOMIECameraPicoloT<T>::get_ImageSizeX(void)
{
  long pVal;
  OLECHECK(this->get_ImageSizeX((long*)&pVal));
  return pVal;
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::set_ImageSizeX(long pVal/*[in]*/)
{
  return (*this)->set_ImageSizeX(pVal);
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::get_ImageSizeY(long* pVal/*[out,retval]*/)
{
  return (*this)->get_ImageSizeY(pVal);
}

template <class T> long __fastcall
TCOMIECameraPicoloT<T>::get_ImageSizeY(void)
{
  long pVal;
  OLECHECK(this->get_ImageSizeY((long*)&pVal));
  return pVal;
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::set_ImageSizeY(long pVal/*[in]*/)
{
  return (*this)->set_ImageSizeY(pVal);
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::get_ImageScaleX(float* pVal/*[out,retval]*/)
{
  return (*this)->get_ImageScaleX(pVal);
}

template <class T> float __fastcall
TCOMIECameraPicoloT<T>::get_ImageScaleX(void)
{
  float pVal;
  OLECHECK(this->get_ImageScaleX((float*)&pVal));
  return pVal;
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::set_ImageScaleX(float pVal/*[in]*/)
{
  return (*this)->set_ImageScaleX(pVal);
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::get_lImageScaleX(long* pVal/*[out,retval]*/)
{
  return (*this)->get_lImageScaleX(pVal);
}

template <class T> long __fastcall
TCOMIECameraPicoloT<T>::get_lImageScaleX(void)
{
  long pVal;
  OLECHECK(this->get_lImageScaleX((long*)&pVal));
  return pVal;
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::set_lImageScaleX(long pVal/*[in]*/)
{
  return (*this)->set_lImageScaleX(pVal);
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::get_ImageScaleY(float* pVal/*[out,retval]*/)
{
  return (*this)->get_ImageScaleY(pVal);
}

template <class T> float __fastcall
TCOMIECameraPicoloT<T>::get_ImageScaleY(void)
{
  float pVal;
  OLECHECK(this->get_ImageScaleY((float*)&pVal));
  return pVal;
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::set_ImageScaleY(float pVal/*[in]*/)
{
  return (*this)->set_ImageScaleY(pVal);
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::get_lImageScaleY(long* pVal/*[out,retval]*/)
{
  return (*this)->get_lImageScaleY(pVal);
}

template <class T> long __fastcall
TCOMIECameraPicoloT<T>::get_lImageScaleY(void)
{
  long pVal;
  OLECHECK(this->get_lImageScaleY((long*)&pVal));
  return pVal;
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::set_lImageScaleY(long pVal/*[in]*/)
{
  return (*this)->set_lImageScaleY(pVal);
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::get_ImageOffsetX(long* pVal/*[out,retval]*/)
{
  return (*this)->get_ImageOffsetX(pVal);
}

template <class T> long __fastcall
TCOMIECameraPicoloT<T>::get_ImageOffsetX(void)
{
  long pVal;
  OLECHECK(this->get_ImageOffsetX((long*)&pVal));
  return pVal;
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::set_ImageOffsetX(long pVal/*[in]*/)
{
  return (*this)->set_ImageOffsetX(pVal);
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::get_ImageOffsetY(long* pVal/*[out,retval]*/)
{
  return (*this)->get_ImageOffsetY(pVal);
}

template <class T> long __fastcall
TCOMIECameraPicoloT<T>::get_ImageOffsetY(void)
{
  long pVal;
  OLECHECK(this->get_ImageOffsetY((long*)&pVal));
  return pVal;
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::set_ImageOffsetY(long pVal/*[in]*/)
{
  return (*this)->set_ImageOffsetY(pVal);
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::get_ImageFlipY(TOLEBOOL* pVal/*[out,retval]*/)
{
  return (*this)->get_ImageFlipY(pVal);
}

template <class T> TOLEBOOL __fastcall
TCOMIECameraPicoloT<T>::get_ImageFlipY(void)
{
  TOLEBOOL pVal;
  OLECHECK(this->get_ImageFlipY((TOLEBOOL*)&pVal));
  return pVal;
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::set_ImageFlipY(TOLEBOOL pVal/*[in]*/)
{
  return (*this)->set_ImageFlipY(pVal);
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::get_FieldMode(Epicoloacllib_tlb::enumFieldMode* pVal/*[out,retval]*/)
{
  return (*this)->get_FieldMode(pVal);
}

template <class T> Epicoloacllib_tlb::enumFieldMode __fastcall
TCOMIECameraPicoloT<T>::get_FieldMode(void)
{
  Epicoloacllib_tlb::enumFieldMode pVal;
  OLECHECK(this->get_FieldMode((Epicoloacllib_tlb::enumFieldMode*)&pVal));
  return pVal;
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::set_FieldMode(Epicoloacllib_tlb::enumFieldMode pVal/*[in]*/)
{
  return (*this)->set_FieldMode(pVal);
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::get_GrabSync(Epicoloacllib_tlb::enumGrabSync* pVal/*[out,retval]*/)
{
  return (*this)->get_GrabSync(pVal);
}

template <class T> Epicoloacllib_tlb::enumGrabSync __fastcall
TCOMIECameraPicoloT<T>::get_GrabSync(void)
{
  Epicoloacllib_tlb::enumGrabSync pVal;
  OLECHECK(this->get_GrabSync((Epicoloacllib_tlb::enumGrabSync*)&pVal));
  return pVal;
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::set_GrabSync(Epicoloacllib_tlb::enumGrabSync pVal/*[in]*/)
{
  return (*this)->set_GrabSync(pVal);
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::get_ColorTrap(Epicoloacllib_tlb::enumColorTrap* pVal/*[out,retval]*/)
{
  return (*this)->get_ColorTrap(pVal);
}

template <class T> Epicoloacllib_tlb::enumColorTrap __fastcall
TCOMIECameraPicoloT<T>::get_ColorTrap(void)
{
  Epicoloacllib_tlb::enumColorTrap pVal;
  OLECHECK(this->get_ColorTrap((Epicoloacllib_tlb::enumColorTrap*)&pVal));
  return pVal;
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::set_ColorTrap(Epicoloacllib_tlb::enumColorTrap pVal/*[in]*/)
{
  return (*this)->set_ColorTrap(pVal);
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::get_Coring(Epicoloacllib_tlb::enumCoring* pVal/*[out,retval]*/)
{
  return (*this)->get_Coring(pVal);
}

template <class T> Epicoloacllib_tlb::enumCoring __fastcall
TCOMIECameraPicoloT<T>::get_Coring(void)
{
  Epicoloacllib_tlb::enumCoring pVal;
  OLECHECK(this->get_Coring((Epicoloacllib_tlb::enumCoring*)&pVal));
  return pVal;
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::set_Coring(Epicoloacllib_tlb::enumCoring pVal/*[in]*/)
{
  return (*this)->set_Coring(pVal);
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::get_GammaCorrection(Epicoloacllib_tlb::enumGamma* pVal/*[out,retval]*/)
{
  return (*this)->get_GammaCorrection(pVal);
}

template <class T> Epicoloacllib_tlb::enumGamma __fastcall
TCOMIECameraPicoloT<T>::get_GammaCorrection(void)
{
  Epicoloacllib_tlb::enumGamma pVal;
  OLECHECK(this->get_GammaCorrection((Epicoloacllib_tlb::enumGamma*)&pVal));
  return pVal;
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::set_GammaCorrection(Epicoloacllib_tlb::enumGamma pVal/*[in]*/)
{
  return (*this)->set_GammaCorrection(pVal);
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::get_TriggerMask(Epicoloacllib_tlb::enumTriggerMask* pVal/*[out,retval]*/)
{
  return (*this)->get_TriggerMask(pVal);
}

template <class T> Epicoloacllib_tlb::enumTriggerMask __fastcall
TCOMIECameraPicoloT<T>::get_TriggerMask(void)
{
  Epicoloacllib_tlb::enumTriggerMask pVal;
  OLECHECK(this->get_TriggerMask((Epicoloacllib_tlb::enumTriggerMask*)&pVal));
  return pVal;
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::set_TriggerMask(Epicoloacllib_tlb::enumTriggerMask pVal/*[in]*/)
{
  return (*this)->set_TriggerMask(pVal);
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::get_TriggerMode(Epicoloacllib_tlb::enumTriggerMode* pVal/*[out,retval]*/)
{
  return (*this)->get_TriggerMode(pVal);
}

template <class T> Epicoloacllib_tlb::enumTriggerMode __fastcall
TCOMIECameraPicoloT<T>::get_TriggerMode(void)
{
  Epicoloacllib_tlb::enumTriggerMode pVal;
  OLECHECK(this->get_TriggerMode((Epicoloacllib_tlb::enumTriggerMode*)&pVal));
  return pVal;
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::set_TriggerMode(Epicoloacllib_tlb::enumTriggerMode pVal/*[in]*/)
{
  return (*this)->set_TriggerMode(pVal);
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::get_AcquisitionPause(long* pVal/*[out,retval]*/)
{
  return (*this)->get_AcquisitionPause(pVal);
}

template <class T> long __fastcall
TCOMIECameraPicoloT<T>::get_AcquisitionPause(void)
{
  long pVal;
  OLECHECK(this->get_AcquisitionPause((long*)&pVal));
  return pVal;
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::set_AcquisitionPause(long pVal/*[in]*/)
{
  return (*this)->set_AcquisitionPause(pVal);
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::get_AcquisitionTrigger(Epicoloacllib_tlb::enumAcquisitionTrigger* pVal/*[out,retval]*/)
{
  return (*this)->get_AcquisitionTrigger(pVal);
}

template <class T> Epicoloacllib_tlb::enumAcquisitionTrigger __fastcall
TCOMIECameraPicoloT<T>::get_AcquisitionTrigger(void)
{
  Epicoloacllib_tlb::enumAcquisitionTrigger pVal;
  OLECHECK(this->get_AcquisitionTrigger((Epicoloacllib_tlb::enumAcquisitionTrigger*)&pVal));
  return pVal;
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::set_AcquisitionTrigger(Epicoloacllib_tlb::enumAcquisitionTrigger pVal/*[in]*/)
{
  return (*this)->set_AcquisitionTrigger(pVal);
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::get_RepeatGrabCount(long* pVal/*[out,retval]*/)
{
  return (*this)->get_RepeatGrabCount(pVal);
}

template <class T> long __fastcall
TCOMIECameraPicoloT<T>::get_RepeatGrabCount(void)
{
  long pVal;
  OLECHECK(this->get_RepeatGrabCount((long*)&pVal));
  return pVal;
}

template <class T> HRESULT __fastcall
TCOMIECameraPicoloT<T>::set_RepeatGrabCount(long pVal/*[in]*/)
{
  return (*this)->set_RepeatGrabCount(pVal);
}

// *********************************************************************//
// DispIntf:  IECameraPicolo
// Flags:     (4416) Dual OleAutomation Dispatchable
// GUID:      {0A8ABF7F-7A27-11D3-89F7-0050042A3D34}
// *********************************************************************//
template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::AddDisplay(LPDISPATCH EDisplayObject/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("AddDisplay"), DISPID(1));
  TAutoArgs<1> _args;
  _args[1] = EDisplayObject /*[VT_DISPATCH:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::CreateVisionSurface(LPDISPATCH EImageName/*[in]*/, 
                                            long* SurfaceHandle/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("CreateVisionSurface"), DISPID(2));
  TAutoArgs<1> _args;
  _args[1] = EImageName /*[VT_DISPATCH:0]*/;
  return OutRetValSetterPtr(SurfaceHandle /*[VT_I4:1]*/, _args, OleFunction(_dispid, _args));
}

template <class T> long __fastcall
IECameraPicoloDispT<T>::CreateVisionSurface(LPDISPATCH EImageName/*[in]*/)
{
  long SurfaceHandle;
  this->CreateVisionSurface(EImageName, (long*)&SurfaceHandle);
  return SurfaceHandle;
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::Grab()
{
  _TDispID _dispid(*this, OLETEXT("Grab"), DISPID(3));
  return OleFunction(_dispid);
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::Live()
{
  _TDispID _dispid(*this, OLETEXT("Live"), DISPID(4));
  return OleFunction(_dispid);
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::Stop()
{
  _TDispID _dispid(*this, OLETEXT("Stop"), DISPID(5));
  return OleFunction(_dispid);
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::RemoveDisplay(LPDISPATCH EDisplayName/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("RemoveDisplay"), DISPID(6));
  TAutoArgs<1> _args;
  _args[1] = EDisplayName /*[VT_DISPATCH:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::CreateNewSurface(long Pointer/*[in]*/, long ImageWidth/*[in]*/, 
                                         long ImageHeight/*[in]*/, long ImagePitch/*[in]*/, 
                                         long* SurfaceHandle/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("CreateNewSurface"), DISPID(7));
  TAutoArgs<4> _args;
  _args[1] = Pointer /*[VT_I4:0]*/;
  _args[2] = ImageWidth /*[VT_I4:0]*/;
  _args[3] = ImageHeight /*[VT_I4:0]*/;
  _args[4] = ImagePitch /*[VT_I4:0]*/;
  return OutRetValSetterPtr(SurfaceHandle /*[VT_I4:1]*/, _args, OleFunction(_dispid, _args));
}

template <class T> long __fastcall
IECameraPicoloDispT<T>::CreateNewSurface(long Pointer/*[in]*/, long ImageWidth/*[in]*/, 
                                         long ImageHeight/*[in]*/, long ImagePitch/*[in]*/)
{
  long SurfaceHandle;
  this->CreateNewSurface(Pointer, ImageWidth, ImageHeight, ImagePitch, (long*)&SurfaceHandle);
  return SurfaceHandle;
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::AddSurface(long SurfaceHandle/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("AddSurface"), DISPID(8));
  TAutoArgs<1> _args;
  _args[1] = SurfaceHandle /*[VT_I4:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::SetExpParameter(Epicoloacllib_tlb::enumExpParam ExpParameter/*[in]*/, 
                                        long ParameterValue/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("SetExpParameter"), DISPID(9));
  TAutoArgs<2> _args;
  _args[1] = (int)ExpParameter /*[VT_USERDEFINED:0]*/;
  _args[2] = ParameterValue /*[VT_I4:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::SetExpParameterStr(Epicoloacllib_tlb::enumExpParamStr ExpParameter/*[in]*/, 
                                           BSTR ParameterValue/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("SetExpParameterStr"), DISPID(10));
  TAutoArgs<2> _args;
  _args[1] = (int)ExpParameter /*[VT_USERDEFINED:0]*/;
  _args[2] = ParameterValue /*[VT_BSTR:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::GetExpParameter(Epicoloacllib_tlb::enumExpParam ExpParameter/*[in]*/, 
                                        long* ParameterValue/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("GetExpParameter"), DISPID(11));
  TAutoArgs<1> _args;
  _args[1] = (int)ExpParameter /*[VT_USERDEFINED:0]*/;
  return OutRetValSetterPtr(ParameterValue /*[VT_I4:1]*/, _args, OleFunction(_dispid, _args));
}

template <class T> long __fastcall
IECameraPicoloDispT<T>::GetExpParameter(Epicoloacllib_tlb::enumExpParam ExpParameter/*[in]*/)
{
  long ParameterValue;
  this->GetExpParameter(ExpParameter, (long*)&ParameterValue);
  return ParameterValue;
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::GetExpParameterStr(Epicoloacllib_tlb::enumExpParamStr ExpParameter/*[in]*/, 
                                           BSTR* ParameterValue/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("GetExpParameterStr"), DISPID(34));
  TAutoArgs<1> _args;
  _args[1] = (int)ExpParameter /*[VT_USERDEFINED:0]*/;
  return OutRetValSetterPtr(ParameterValue /*[VT_BSTR:1]*/, _args, OleFunction(_dispid, _args));
}

template <class T> BSTR __fastcall
IECameraPicoloDispT<T>::GetExpParameterStr(Epicoloacllib_tlb::enumExpParamStr ExpParameter/*[in]*/)
{
  BSTR ParameterValue;
  this->GetExpParameterStr(ExpParameter, (BSTR*)&ParameterValue);
  return ParameterValue;
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::get_BoardId(BSTR* pVal/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("BoardId"), DISPID(16));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pVal /*[VT_BSTR:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> BSTR __fastcall
IECameraPicoloDispT<T>::get_BoardId(void)
{
  BSTR pVal;
  this->get_BoardId((BSTR*)&pVal);
  return pVal;
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::set_BoardId(BSTR pVal/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("BoardId"), DISPID(16));
  TAutoArgs<1> _args;
  _args[1] = pVal /*[VT_BSTR:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::get_VideoSource(long* pVal/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("VideoSource"), DISPID(20));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pVal /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
IECameraPicoloDispT<T>::get_VideoSource(void)
{
  long pVal;
  this->get_VideoSource((long*)&pVal);
  return pVal;
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::set_VideoSource(long pVal/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("VideoSource"), DISPID(20));
  TAutoArgs<1> _args;
  _args[1] = pVal /*[VT_I4:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::get_Standard(Epicoloacllib_tlb::enumVideoStandard* pVal/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Standard"), DISPID(14));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((int*)pVal /*[VT_USERDEFINED:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Epicoloacllib_tlb::enumVideoStandard __fastcall
IECameraPicoloDispT<T>::get_Standard(void)
{
  Epicoloacllib_tlb::enumVideoStandard pVal;
  this->get_Standard((Epicoloacllib_tlb::enumVideoStandard*)&pVal);
  return pVal;
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::set_Standard(Epicoloacllib_tlb::enumVideoStandard pVal/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Standard"), DISPID(14));
  TAutoArgs<1> _args;
  _args[1] = (int)pVal /*[VT_USERDEFINED:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::get_ColorFormat(Epicoloacllib_tlb::enumColorFormat* pVal/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("ColorFormat"), DISPID(19));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((int*)pVal /*[VT_USERDEFINED:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Epicoloacllib_tlb::enumColorFormat __fastcall
IECameraPicoloDispT<T>::get_ColorFormat(void)
{
  Epicoloacllib_tlb::enumColorFormat pVal;
  this->get_ColorFormat((Epicoloacllib_tlb::enumColorFormat*)&pVal);
  return pVal;
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::set_ColorFormat(Epicoloacllib_tlb::enumColorFormat pVal/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("ColorFormat"), DISPID(19));
  TAutoArgs<1> _args;
  _args[1] = (int)pVal /*[VT_USERDEFINED:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::get_PixelGain(float* pVal/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("PixelGain"), DISPID(12));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pVal /*[VT_R4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> float __fastcall
IECameraPicoloDispT<T>::get_PixelGain(void)
{
  float pVal;
  this->get_PixelGain((float*)&pVal);
  return pVal;
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::set_PixelGain(float pVal/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("PixelGain"), DISPID(12));
  TAutoArgs<1> _args;
  _args[1] = pVal /*[VT_R4:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::get_PixelOffset(float* pVal/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("PixelOffset"), DISPID(13));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pVal /*[VT_R4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> float __fastcall
IECameraPicoloDispT<T>::get_PixelOffset(void)
{
  float pVal;
  this->get_PixelOffset((float*)&pVal);
  return pVal;
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::set_PixelOffset(float pVal/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("PixelOffset"), DISPID(13));
  TAutoArgs<1> _args;
  _args[1] = pVal /*[VT_R4:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::get_PixelUGain(float* pVal/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("PixelUGain"), DISPID(18));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pVal /*[VT_R4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> float __fastcall
IECameraPicoloDispT<T>::get_PixelUGain(void)
{
  float pVal;
  this->get_PixelUGain((float*)&pVal);
  return pVal;
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::set_PixelUGain(float pVal/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("PixelUGain"), DISPID(18));
  TAutoArgs<1> _args;
  _args[1] = pVal /*[VT_R4:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::get_PixelVGain(float* pVal/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("PixelVGain"), DISPID(21));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pVal /*[VT_R4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> float __fastcall
IECameraPicoloDispT<T>::get_PixelVGain(void)
{
  float pVal;
  this->get_PixelVGain((float*)&pVal);
  return pVal;
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::set_PixelVGain(float pVal/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("PixelVGain"), DISPID(21));
  TAutoArgs<1> _args;
  _args[1] = pVal /*[VT_R4:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::get_PixelHue(float* pVal/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("PixelHue"), DISPID(26));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pVal /*[VT_R4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> float __fastcall
IECameraPicoloDispT<T>::get_PixelHue(void)
{
  float pVal;
  this->get_PixelHue((float*)&pVal);
  return pVal;
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::set_PixelHue(float pVal/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("PixelHue"), DISPID(26));
  TAutoArgs<1> _args;
  _args[1] = pVal /*[VT_R4:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::get_PixelNtscHue(float* pVal/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("PixelNtscHue"), DISPID(47));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pVal /*[VT_R4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> float __fastcall
IECameraPicoloDispT<T>::get_PixelNtscHue(void)
{
  float pVal;
  this->get_PixelNtscHue((float*)&pVal);
  return pVal;
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::set_PixelNtscHue(float pVal/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("PixelNtscHue"), DISPID(47));
  TAutoArgs<1> _args;
  _args[1] = pVal /*[VT_R4:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::get_lPixelGain(long* pVal/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("lPixelGain"), DISPID(22));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pVal /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
IECameraPicoloDispT<T>::get_lPixelGain(void)
{
  long pVal;
  this->get_lPixelGain((long*)&pVal);
  return pVal;
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::set_lPixelGain(long pVal/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("lPixelGain"), DISPID(22));
  TAutoArgs<1> _args;
  _args[1] = pVal /*[VT_I4:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::get_lPixelOffset(long* pVal/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("lPixelOffset"), DISPID(23));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pVal /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
IECameraPicoloDispT<T>::get_lPixelOffset(void)
{
  long pVal;
  this->get_lPixelOffset((long*)&pVal);
  return pVal;
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::set_lPixelOffset(long pVal/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("lPixelOffset"), DISPID(23));
  TAutoArgs<1> _args;
  _args[1] = pVal /*[VT_I4:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::get_lPixelUGain(long* pVal/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("lPixelUGain"), DISPID(24));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pVal /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
IECameraPicoloDispT<T>::get_lPixelUGain(void)
{
  long pVal;
  this->get_lPixelUGain((long*)&pVal);
  return pVal;
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::set_lPixelUGain(long pVal/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("lPixelUGain"), DISPID(24));
  TAutoArgs<1> _args;
  _args[1] = pVal /*[VT_I4:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::get_lPixelVGain(long* pVal/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("lPixelVGain"), DISPID(25));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pVal /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
IECameraPicoloDispT<T>::get_lPixelVGain(void)
{
  long pVal;
  this->get_lPixelVGain((long*)&pVal);
  return pVal;
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::set_lPixelVGain(long pVal/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("lPixelVGain"), DISPID(25));
  TAutoArgs<1> _args;
  _args[1] = pVal /*[VT_I4:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::get_lPixelHue(long* pVal/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("lPixelHue"), DISPID(27));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pVal /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
IECameraPicoloDispT<T>::get_lPixelHue(void)
{
  long pVal;
  this->get_lPixelHue((long*)&pVal);
  return pVal;
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::set_lPixelHue(long pVal/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("lPixelHue"), DISPID(27));
  TAutoArgs<1> _args;
  _args[1] = pVal /*[VT_I4:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::get_lPixelNtscHue(long* pVal/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("lPixelNtscHue"), DISPID(46));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pVal /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
IECameraPicoloDispT<T>::get_lPixelNtscHue(void)
{
  long pVal;
  this->get_lPixelNtscHue((long*)&pVal);
  return pVal;
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::set_lPixelNtscHue(long pVal/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("lPixelNtscHue"), DISPID(46));
  TAutoArgs<1> _args;
  _args[1] = pVal /*[VT_I4:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::get_ImageSizeX(long* pVal/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("ImageSizeX"), DISPID(15));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pVal /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
IECameraPicoloDispT<T>::get_ImageSizeX(void)
{
  long pVal;
  this->get_ImageSizeX((long*)&pVal);
  return pVal;
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::set_ImageSizeX(long pVal/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("ImageSizeX"), DISPID(15));
  TAutoArgs<1> _args;
  _args[1] = pVal /*[VT_I4:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::get_ImageSizeY(long* pVal/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("ImageSizeY"), DISPID(17));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pVal /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
IECameraPicoloDispT<T>::get_ImageSizeY(void)
{
  long pVal;
  this->get_ImageSizeY((long*)&pVal);
  return pVal;
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::set_ImageSizeY(long pVal/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("ImageSizeY"), DISPID(17));
  TAutoArgs<1> _args;
  _args[1] = pVal /*[VT_I4:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::get_ImageScaleX(float* pVal/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("ImageScaleX"), DISPID(28));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pVal /*[VT_R4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> float __fastcall
IECameraPicoloDispT<T>::get_ImageScaleX(void)
{
  float pVal;
  this->get_ImageScaleX((float*)&pVal);
  return pVal;
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::set_ImageScaleX(float pVal/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("ImageScaleX"), DISPID(28));
  TAutoArgs<1> _args;
  _args[1] = pVal /*[VT_R4:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::get_lImageScaleX(long* pVal/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("lImageScaleX"), DISPID(29));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pVal /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
IECameraPicoloDispT<T>::get_lImageScaleX(void)
{
  long pVal;
  this->get_lImageScaleX((long*)&pVal);
  return pVal;
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::set_lImageScaleX(long pVal/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("lImageScaleX"), DISPID(29));
  TAutoArgs<1> _args;
  _args[1] = pVal /*[VT_I4:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::get_ImageScaleY(float* pVal/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("ImageScaleY"), DISPID(30));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pVal /*[VT_R4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> float __fastcall
IECameraPicoloDispT<T>::get_ImageScaleY(void)
{
  float pVal;
  this->get_ImageScaleY((float*)&pVal);
  return pVal;
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::set_ImageScaleY(float pVal/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("ImageScaleY"), DISPID(30));
  TAutoArgs<1> _args;
  _args[1] = pVal /*[VT_R4:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::get_lImageScaleY(long* pVal/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("lImageScaleY"), DISPID(31));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pVal /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
IECameraPicoloDispT<T>::get_lImageScaleY(void)
{
  long pVal;
  this->get_lImageScaleY((long*)&pVal);
  return pVal;
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::set_lImageScaleY(long pVal/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("lImageScaleY"), DISPID(31));
  TAutoArgs<1> _args;
  _args[1] = pVal /*[VT_I4:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::get_ImageOffsetX(long* pVal/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("ImageOffsetX"), DISPID(32));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pVal /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
IECameraPicoloDispT<T>::get_ImageOffsetX(void)
{
  long pVal;
  this->get_ImageOffsetX((long*)&pVal);
  return pVal;
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::set_ImageOffsetX(long pVal/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("ImageOffsetX"), DISPID(32));
  TAutoArgs<1> _args;
  _args[1] = pVal /*[VT_I4:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::get_ImageOffsetY(long* pVal/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("ImageOffsetY"), DISPID(33));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pVal /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
IECameraPicoloDispT<T>::get_ImageOffsetY(void)
{
  long pVal;
  this->get_ImageOffsetY((long*)&pVal);
  return pVal;
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::set_ImageOffsetY(long pVal/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("ImageOffsetY"), DISPID(33));
  TAutoArgs<1> _args;
  _args[1] = pVal /*[VT_I4:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::get_ImageFlipY(TOLEBOOL* pVal/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("ImageFlipY"), DISPID(38));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pVal /*[VT_BOOL:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> TOLEBOOL __fastcall
IECameraPicoloDispT<T>::get_ImageFlipY(void)
{
  TOLEBOOL pVal;
  this->get_ImageFlipY((TOLEBOOL*)&pVal);
  return pVal;
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::set_ImageFlipY(TOLEBOOL pVal/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("ImageFlipY"), DISPID(38));
  TAutoArgs<1> _args;
  _args[1] = pVal /*[VT_BOOL:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::get_FieldMode(Epicoloacllib_tlb::enumFieldMode* pVal/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("FieldMode"), DISPID(39));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((int*)pVal /*[VT_USERDEFINED:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Epicoloacllib_tlb::enumFieldMode __fastcall
IECameraPicoloDispT<T>::get_FieldMode(void)
{
  Epicoloacllib_tlb::enumFieldMode pVal;
  this->get_FieldMode((Epicoloacllib_tlb::enumFieldMode*)&pVal);
  return pVal;
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::set_FieldMode(Epicoloacllib_tlb::enumFieldMode pVal/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("FieldMode"), DISPID(39));
  TAutoArgs<1> _args;
  _args[1] = (int)pVal /*[VT_USERDEFINED:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::get_GrabSync(Epicoloacllib_tlb::enumGrabSync* pVal/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("GrabSync"), DISPID(35));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((int*)pVal /*[VT_USERDEFINED:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Epicoloacllib_tlb::enumGrabSync __fastcall
IECameraPicoloDispT<T>::get_GrabSync(void)
{
  Epicoloacllib_tlb::enumGrabSync pVal;
  this->get_GrabSync((Epicoloacllib_tlb::enumGrabSync*)&pVal);
  return pVal;
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::set_GrabSync(Epicoloacllib_tlb::enumGrabSync pVal/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("GrabSync"), DISPID(35));
  TAutoArgs<1> _args;
  _args[1] = (int)pVal /*[VT_USERDEFINED:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::get_ColorTrap(Epicoloacllib_tlb::enumColorTrap* pVal/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("ColorTrap"), DISPID(36));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((int*)pVal /*[VT_USERDEFINED:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Epicoloacllib_tlb::enumColorTrap __fastcall
IECameraPicoloDispT<T>::get_ColorTrap(void)
{
  Epicoloacllib_tlb::enumColorTrap pVal;
  this->get_ColorTrap((Epicoloacllib_tlb::enumColorTrap*)&pVal);
  return pVal;
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::set_ColorTrap(Epicoloacllib_tlb::enumColorTrap pVal/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("ColorTrap"), DISPID(36));
  TAutoArgs<1> _args;
  _args[1] = (int)pVal /*[VT_USERDEFINED:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::get_Coring(Epicoloacllib_tlb::enumCoring* pVal/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Coring"), DISPID(37));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((int*)pVal /*[VT_USERDEFINED:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Epicoloacllib_tlb::enumCoring __fastcall
IECameraPicoloDispT<T>::get_Coring(void)
{
  Epicoloacllib_tlb::enumCoring pVal;
  this->get_Coring((Epicoloacllib_tlb::enumCoring*)&pVal);
  return pVal;
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::set_Coring(Epicoloacllib_tlb::enumCoring pVal/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Coring"), DISPID(37));
  TAutoArgs<1> _args;
  _args[1] = (int)pVal /*[VT_USERDEFINED:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::get_GammaCorrection(Epicoloacllib_tlb::enumGamma* pVal/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("GammaCorrection"), DISPID(40));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((int*)pVal /*[VT_USERDEFINED:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Epicoloacllib_tlb::enumGamma __fastcall
IECameraPicoloDispT<T>::get_GammaCorrection(void)
{
  Epicoloacllib_tlb::enumGamma pVal;
  this->get_GammaCorrection((Epicoloacllib_tlb::enumGamma*)&pVal);
  return pVal;
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::set_GammaCorrection(Epicoloacllib_tlb::enumGamma pVal/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("GammaCorrection"), DISPID(40));
  TAutoArgs<1> _args;
  _args[1] = (int)pVal /*[VT_USERDEFINED:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::get_TriggerMask(Epicoloacllib_tlb::enumTriggerMask* pVal/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("TriggerMask"), DISPID(41));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((int*)pVal /*[VT_USERDEFINED:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Epicoloacllib_tlb::enumTriggerMask __fastcall
IECameraPicoloDispT<T>::get_TriggerMask(void)
{
  Epicoloacllib_tlb::enumTriggerMask pVal;
  this->get_TriggerMask((Epicoloacllib_tlb::enumTriggerMask*)&pVal);
  return pVal;
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::set_TriggerMask(Epicoloacllib_tlb::enumTriggerMask pVal/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("TriggerMask"), DISPID(41));
  TAutoArgs<1> _args;
  _args[1] = (int)pVal /*[VT_USERDEFINED:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::get_TriggerMode(Epicoloacllib_tlb::enumTriggerMode* pVal/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("TriggerMode"), DISPID(42));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((int*)pVal /*[VT_USERDEFINED:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Epicoloacllib_tlb::enumTriggerMode __fastcall
IECameraPicoloDispT<T>::get_TriggerMode(void)
{
  Epicoloacllib_tlb::enumTriggerMode pVal;
  this->get_TriggerMode((Epicoloacllib_tlb::enumTriggerMode*)&pVal);
  return pVal;
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::set_TriggerMode(Epicoloacllib_tlb::enumTriggerMode pVal/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("TriggerMode"), DISPID(42));
  TAutoArgs<1> _args;
  _args[1] = (int)pVal /*[VT_USERDEFINED:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::get_AcquisitionPause(long* pVal/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("AcquisitionPause"), DISPID(43));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pVal /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
IECameraPicoloDispT<T>::get_AcquisitionPause(void)
{
  long pVal;
  this->get_AcquisitionPause((long*)&pVal);
  return pVal;
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::set_AcquisitionPause(long pVal/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("AcquisitionPause"), DISPID(43));
  TAutoArgs<1> _args;
  _args[1] = pVal /*[VT_I4:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::get_AcquisitionTrigger(Epicoloacllib_tlb::enumAcquisitionTrigger* pVal/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("AcquisitionTrigger"), DISPID(44));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((int*)pVal /*[VT_USERDEFINED:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Epicoloacllib_tlb::enumAcquisitionTrigger __fastcall
IECameraPicoloDispT<T>::get_AcquisitionTrigger(void)
{
  Epicoloacllib_tlb::enumAcquisitionTrigger pVal;
  this->get_AcquisitionTrigger((Epicoloacllib_tlb::enumAcquisitionTrigger*)&pVal);
  return pVal;
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::set_AcquisitionTrigger(Epicoloacllib_tlb::enumAcquisitionTrigger pVal/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("AcquisitionTrigger"), DISPID(44));
  TAutoArgs<1> _args;
  _args[1] = (int)pVal /*[VT_USERDEFINED:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::get_RepeatGrabCount(long* pVal/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("RepeatGrabCount"), DISPID(45));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pVal /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
IECameraPicoloDispT<T>::get_RepeatGrabCount(void)
{
  long pVal;
  this->get_RepeatGrabCount((long*)&pVal);
  return pVal;
}

template <class T> HRESULT __fastcall
IECameraPicoloDispT<T>::set_RepeatGrabCount(long pVal/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("RepeatGrabCount"), DISPID(45));
  TAutoArgs<1> _args;
  _args[1] = pVal /*[VT_I4:0]*/;
  return OlePropertyPut(_dispid, _args);
}

// *********************************************************************//
// DispIntf:  _IEConfigPicoloEvents
// Flags:     (4096) Dispatchable
// GUID:      {0A8ABF84-7A27-11D3-89F7-0050042A3D34}
// *********************************************************************//
// *********************************************************************//
// SmartIntf: TCOMIEConfigPicolo
// Interface: IEConfigPicolo
// *********************************************************************//
template <class T> HRESULT __fastcall
TCOMIEConfigPicoloT<T>::get_BoardCount(long* pVal/*[out,retval]*/)
{
  return (*this)->get_BoardCount(pVal);
}

template <class T> long __fastcall
TCOMIEConfigPicoloT<T>::get_BoardCount(void)
{
  long pVal;
  OLECHECK(this->get_BoardCount((long*)&pVal));
  return pVal;
}

template <class T> HRESULT __fastcall
TCOMIEConfigPicoloT<T>::get_BoardName(long Index/*[in]*/, BSTR* pVal/*[out,retval]*/)
{
  return (*this)->get_BoardName(Index, pVal);
}

template <class T> BSTR __fastcall
TCOMIEConfigPicoloT<T>::get_BoardName(long Index/*[in]*/)
{
  BSTR pVal = 0;
  OLECHECK(this->get_BoardName(Index, (BSTR*)&pVal));
  return pVal;
}

template <class T> HRESULT __fastcall
TCOMIEConfigPicoloT<T>::get_SerialNumber(long Index/*[in]*/, long* pVal/*[out,retval]*/)
{
  return (*this)->get_SerialNumber(Index, pVal);
}

template <class T> long __fastcall
TCOMIEConfigPicoloT<T>::get_SerialNumber(long Index/*[in]*/)
{
  long pVal;
  OLECHECK(this->get_SerialNumber(Index, (long*)&pVal));
  return pVal;
}

template <class T> HRESULT __fastcall
TCOMIEConfigPicoloT<T>::get_BoardType(long Index/*[in]*/, 
                                      Epicoloacllib_tlb::enumBoardType* pVal/*[out,retval]*/)
{
  return (*this)->get_BoardType(Index, pVal);
}

template <class T> Epicoloacllib_tlb::enumBoardType __fastcall
TCOMIEConfigPicoloT<T>::get_BoardType(long Index/*[in]*/)
{
  Epicoloacllib_tlb::enumBoardType pVal;
  OLECHECK(this->get_BoardType(Index, (Epicoloacllib_tlb::enumBoardType*)&pVal));
  return pVal;
}

template <class T> HRESULT __fastcall
TCOMIEConfigPicoloT<T>::SetBoardName(long Index/*[in]*/, BSTR BoardName/*[in]*/)
{
  return (*this)->SetBoardName(Index, BoardName);
}

template <class T> HRESULT __fastcall
TCOMIEConfigPicoloT<T>::SetOemKey(long BoardId/*[in]*/, TVariantInParam Key/*[in]*/)
{
  return (*this)->SetOemKey(BoardId, Key);
}

template <class T> HRESULT __fastcall
TCOMIEConfigPicoloT<T>::CheckOemKey(long BoardId/*[in]*/, TVariantInParam Key/*[in]*/, 
                                    TOLEBOOL* Result/*[out,retval]*/)
{
  return (*this)->CheckOemKey(BoardId, Key, Result);
}

template <class T> TOLEBOOL __fastcall
TCOMIEConfigPicoloT<T>::CheckOemKey(long BoardId/*[in]*/, TVariantInParam Key/*[in]*/)
{
  TOLEBOOL Result;
  OLECHECK(this->CheckOemKey(BoardId, Key, (TOLEBOOL*)&Result));
  return Result;
}

template <class T> HRESULT __fastcall
TCOMIEConfigPicoloT<T>::get_PciPosition(long Index/*[in]*/, long* pVal/*[out,retval]*/)
{
  return (*this)->get_PciPosition(Index, pVal);
}

template <class T> long __fastcall
TCOMIEConfigPicoloT<T>::get_PciPosition(long Index/*[in]*/)
{
  long pVal;
  OLECHECK(this->get_PciPosition(Index, (long*)&pVal));
  return pVal;
}

template <class T> HRESULT __fastcall
TCOMIEConfigPicoloT<T>::get_SourceCount(long Index/*[in]*/, long* pVal/*[out,retval]*/)
{
  return (*this)->get_SourceCount(Index, pVal);
}

template <class T> long __fastcall
TCOMIEConfigPicoloT<T>::get_SourceCount(long Index/*[in]*/)
{
  long pVal;
  OLECHECK(this->get_SourceCount(Index, (long*)&pVal));
  return pVal;
}

template <class T> HRESULT __fastcall
TCOMIEConfigPicoloT<T>::get_WatchDogSetting(long Index/*[in]*/, 
                                            Epicoloacllib_tlb::enumWatchDogSetting* pVal/*[out,retval]*/)
{
  return (*this)->get_WatchDogSetting(Index, pVal);
}

template <class T> Epicoloacllib_tlb::enumWatchDogSetting __fastcall
TCOMIEConfigPicoloT<T>::get_WatchDogSetting(long Index/*[in]*/)
{
  Epicoloacllib_tlb::enumWatchDogSetting pVal;
  OLECHECK(this->get_WatchDogSetting(Index, (Epicoloacllib_tlb::enumWatchDogSetting*)&pVal));
  return pVal;
}

template <class T> HRESULT __fastcall
TCOMIEConfigPicoloT<T>::set_WatchDogSetting(long Index/*[in]*/, 
                                            Epicoloacllib_tlb::enumWatchDogSetting pVal/*[in]*/)
{
  return (*this)->set_WatchDogSetting(Index, pVal);
}

template <class T> HRESULT __fastcall
TCOMIEConfigPicoloT<T>::ResetWatchDogTimer(long Index/*[in]*/)
{
  return (*this)->ResetWatchDogTimer(Index);
}

template <class T> HRESULT __fastcall
TCOMIEConfigPicoloT<T>::get_SerialLineSettings(long Index/*[in]*/, long* pVal/*[out,retval]*/)
{
  return (*this)->get_SerialLineSettings(Index, pVal);
}

template <class T> long __fastcall
TCOMIEConfigPicoloT<T>::get_SerialLineSettings(long Index/*[in]*/)
{
  long pVal;
  OLECHECK(this->get_SerialLineSettings(Index, (long*)&pVal));
  return pVal;
}

template <class T> HRESULT __fastcall
TCOMIEConfigPicoloT<T>::set_SerialLineSettings(long Index/*[in]*/, long pVal/*[in]*/)
{
  return (*this)->set_SerialLineSettings(Index, pVal);
}

template <class T> HRESULT __fastcall
TCOMIEConfigPicoloT<T>::SerialLineGetChar(long Index/*[in]*/, TVariant* pData/*[out,retval]*/)
{
  return (*this)->SerialLineGetChar(Index, pData);
}

template <class T> TVariant __fastcall
TCOMIEConfigPicoloT<T>::SerialLineGetChar(long Index/*[in]*/)
{
  TVariant pData;
  OLECHECK(this->SerialLineGetChar(Index, (TVariant*)&pData));
  return pData;
}

template <class T> HRESULT __fastcall
TCOMIEConfigPicoloT<T>::SerialLinePutChar(long Index/*[in]*/, TVariantInParam Data/*[in]*/)
{
  return (*this)->SerialLinePutChar(Index, Data);
}

// *********************************************************************//
// DispIntf:  IEConfigPicolo
// Flags:     (4416) Dual OleAutomation Dispatchable
// GUID:      {0A8ABF82-7A27-11D3-89F7-0050042A3D34}
// *********************************************************************//
template <class T> HRESULT __fastcall
IEConfigPicoloDispT<T>::get_BoardCount(long* pVal/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("BoardCount"), DISPID(1));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pVal /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
IEConfigPicoloDispT<T>::get_BoardCount(void)
{
  long pVal;
  this->get_BoardCount((long*)&pVal);
  return pVal;
}

template <class T> HRESULT __fastcall
IEConfigPicoloDispT<T>::get_BoardName(long Index/*[in]*/, BSTR* pVal/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("BoardName"), DISPID(2));
  TAutoArgs<1> _args;
  _args[1] = Index /*[VT_I4:0]*/;
  return OutRetValSetterPtr(pVal /*[VT_BSTR:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> BSTR __fastcall
IEConfigPicoloDispT<T>::get_BoardName(long Index/*[in]*/)
{
  BSTR pVal;
  this->get_BoardName(Index, (BSTR*)&pVal);
  return pVal;
}

template <class T> HRESULT __fastcall
IEConfigPicoloDispT<T>::get_SerialNumber(long Index/*[in]*/, long* pVal/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("SerialNumber"), DISPID(3));
  TAutoArgs<1> _args;
  _args[1] = Index /*[VT_I4:0]*/;
  return OutRetValSetterPtr(pVal /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
IEConfigPicoloDispT<T>::get_SerialNumber(long Index/*[in]*/)
{
  long pVal;
  this->get_SerialNumber(Index, (long*)&pVal);
  return pVal;
}

template <class T> HRESULT __fastcall
IEConfigPicoloDispT<T>::get_BoardType(long Index/*[in]*/, 
                                      Epicoloacllib_tlb::enumBoardType* pVal/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("BoardType"), DISPID(4));
  TAutoArgs<1> _args;
  _args[1] = Index /*[VT_I4:0]*/;
  return OutRetValSetterPtr((int*)pVal /*[VT_USERDEFINED:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Epicoloacllib_tlb::enumBoardType __fastcall
IEConfigPicoloDispT<T>::get_BoardType(long Index/*[in]*/)
{
  Epicoloacllib_tlb::enumBoardType pVal;
  this->get_BoardType(Index, (Epicoloacllib_tlb::enumBoardType*)&pVal);
  return pVal;
}

template <class T> HRESULT __fastcall
IEConfigPicoloDispT<T>::SetBoardName(long Index/*[in]*/, BSTR BoardName/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("SetBoardName"), DISPID(5));
  TAutoArgs<2> _args;
  _args[1] = Index /*[VT_I4:0]*/;
  _args[2] = BoardName /*[VT_BSTR:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
IEConfigPicoloDispT<T>::SetOemKey(long BoardId/*[in]*/, TVariantInParam Key/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("SetOemKey"), DISPID(6));
  TAutoArgs<2> _args;
  _args[1] = BoardId /*[VT_I4:0]*/;
  _args[2] = Key /*[VT_VARIANT:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
IEConfigPicoloDispT<T>::CheckOemKey(long BoardId/*[in]*/, TVariantInParam Key/*[in]*/, 
                                    TOLEBOOL* Result/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("CheckOemKey"), DISPID(7));
  TAutoArgs<2> _args;
  _args[1] = BoardId /*[VT_I4:0]*/;
  _args[2] = Key /*[VT_VARIANT:0]*/;
  return OutRetValSetterPtr(Result /*[VT_BOOL:1]*/, _args, OleFunction(_dispid, _args));
}

template <class T> TOLEBOOL __fastcall
IEConfigPicoloDispT<T>::CheckOemKey(long BoardId/*[in]*/, TVariantInParam Key/*[in]*/)
{
  TOLEBOOL Result;
  this->CheckOemKey(BoardId, Key, (TOLEBOOL*)&Result);
  return Result;
}

template <class T> HRESULT __fastcall
IEConfigPicoloDispT<T>::get_PciPosition(long Index/*[in]*/, long* pVal/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("PciPosition"), DISPID(8));
  TAutoArgs<1> _args;
  _args[1] = Index /*[VT_I4:0]*/;
  return OutRetValSetterPtr(pVal /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
IEConfigPicoloDispT<T>::get_PciPosition(long Index/*[in]*/)
{
  long pVal;
  this->get_PciPosition(Index, (long*)&pVal);
  return pVal;
}

template <class T> HRESULT __fastcall
IEConfigPicoloDispT<T>::get_SourceCount(long Index/*[in]*/, long* pVal/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("SourceCount"), DISPID(9));
  TAutoArgs<1> _args;
  _args[1] = Index /*[VT_I4:0]*/;
  return OutRetValSetterPtr(pVal /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
IEConfigPicoloDispT<T>::get_SourceCount(long Index/*[in]*/)
{
  long pVal;
  this->get_SourceCount(Index, (long*)&pVal);
  return pVal;
}

template <class T> HRESULT __fastcall
IEConfigPicoloDispT<T>::get_WatchDogSetting(long Index/*[in]*/, 
                                            Epicoloacllib_tlb::enumWatchDogSetting* pVal/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("WatchDogSetting"), DISPID(10));
  TAutoArgs<1> _args;
  _args[1] = Index /*[VT_I4:0]*/;
  return OutRetValSetterPtr((int*)pVal /*[VT_USERDEFINED:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Epicoloacllib_tlb::enumWatchDogSetting __fastcall
IEConfigPicoloDispT<T>::get_WatchDogSetting(long Index/*[in]*/)
{
  Epicoloacllib_tlb::enumWatchDogSetting pVal;
  this->get_WatchDogSetting(Index, (Epicoloacllib_tlb::enumWatchDogSetting*)&pVal);
  return pVal;
}

template <class T> HRESULT __fastcall
IEConfigPicoloDispT<T>::set_WatchDogSetting(long Index/*[in]*/, 
                                            Epicoloacllib_tlb::enumWatchDogSetting pVal/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("WatchDogSetting"), DISPID(10));
  TAutoArgs<2> _args;
  _args[1] = Index /*[VT_I4:0]*/;
  _args[2] = (int)pVal /*[VT_USERDEFINED:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
IEConfigPicoloDispT<T>::ResetWatchDogTimer(long Index/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("ResetWatchDogTimer"), DISPID(11));
  TAutoArgs<1> _args;
  _args[1] = Index /*[VT_I4:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
IEConfigPicoloDispT<T>::get_SerialLineSettings(long Index/*[in]*/, long* pVal/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("SerialLineSettings"), DISPID(12));
  TAutoArgs<1> _args;
  _args[1] = Index /*[VT_I4:0]*/;
  return OutRetValSetterPtr(pVal /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
IEConfigPicoloDispT<T>::get_SerialLineSettings(long Index/*[in]*/)
{
  long pVal;
  this->get_SerialLineSettings(Index, (long*)&pVal);
  return pVal;
}

template <class T> HRESULT __fastcall
IEConfigPicoloDispT<T>::set_SerialLineSettings(long Index/*[in]*/, long pVal/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("SerialLineSettings"), DISPID(12));
  TAutoArgs<2> _args;
  _args[1] = Index /*[VT_I4:0]*/;
  _args[2] = pVal /*[VT_I4:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
IEConfigPicoloDispT<T>::SerialLineGetChar(long Index/*[in]*/, TVariant* pData/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("SerialLineGetChar"), DISPID(13));
  TAutoArgs<1> _args;
  _args[1] = Index /*[VT_I4:0]*/;
  return OutRetValSetterPtr(pData /*[VT_VARIANT:1]*/, _args, OleFunction(_dispid, _args));
}

template <class T> TVariant __fastcall
IEConfigPicoloDispT<T>::SerialLineGetChar(long Index/*[in]*/)
{
  TVariant pData;
  this->SerialLineGetChar(Index, (TVariant*)&pData);
  return pData;
}

template <class T> HRESULT __fastcall
IEConfigPicoloDispT<T>::SerialLinePutChar(long Index/*[in]*/, TVariantInParam Data/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("SerialLinePutChar"), DISPID(14));
  TAutoArgs<2> _args;
  _args[1] = Index /*[VT_I4:0]*/;
  _args[2] = Data /*[VT_VARIANT:0]*/;
  return OleFunction(_dispid, _args);
}

// *********************************************************************//
// SmartIntf: TCOMIPicoloCallBack
// Interface: IPicoloCallBack
// *********************************************************************//
template <class T> HRESULT __fastcall
TCOMIPicoloCallBackT<T>::ErrorCallback(long ChannelID/*[in]*/, long SurfaceID/*[in]*/, 
                                       long Data/*[in]*/, long Flags/*[in]*/, long TimeCode/*[in]*/, 
                                       long Reserved/*[in]*/)
{
  return (*this)->ErrorCallback(ChannelID, SurfaceID, Data, Flags, TimeCode, Reserved);
}

template <class T> HRESULT __fastcall
TCOMIPicoloCallBackT<T>::Initialize(void)
{
  return (*this)->Initialize();
}

template <class T> HRESULT __fastcall
TCOMIPicoloCallBackT<T>::Terminate(void)
{
  return (*this)->Terminate();
}

template <class T> HRESULT __fastcall
TCOMIPicoloCallBackT<T>::SurfaceAvailableCallback(long ChannelID/*[in]*/, long SurfaceID/*[in]*/, 
                                                  long Data/*[in]*/, long Flags/*[in]*/, 
                                                  long TimeCode/*[in]*/, long Reserved/*[in]*/)
{
  return (*this)->SurfaceAvailableCallback(ChannelID, SurfaceID, Data, Flags, TimeCode, Reserved);
}

template <class T> HRESULT __fastcall
TCOMIPicoloCallBackT<T>::GetWorkerThread(long* p/*[out,retval]*/)
{
  return (*this)->GetWorkerThread(p);
}

template <class T> long __fastcall
TCOMIPicoloCallBackT<T>::GetWorkerThread(void)
{
  long p;
  OLECHECK(this->GetWorkerThread((long*)&p));
  return p;
}

// *********************************************************************//
// DispIntf:  IPicoloCallBack
// Flags:     (4432) Hidden Dual OleAutomation Dispatchable
// GUID:      {0A8ABF86-7A27-11D3-89F7-0050042A3D34}
// *********************************************************************//
template <class T> HRESULT __fastcall
IPicoloCallBackDispT<T>::ErrorCallback(long ChannelID/*[in]*/, long SurfaceID/*[in]*/, 
                                       long Data/*[in]*/, long Flags/*[in]*/, long TimeCode/*[in]*/
                                       , long Reserved/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("ErrorCallback"), DISPID(1));
  TAutoArgs<6> _args;
  _args[1] = ChannelID /*[VT_I4:0]*/;
  _args[2] = SurfaceID /*[VT_I4:0]*/;
  _args[3] = Data /*[VT_I4:0]*/;
  _args[4] = Flags /*[VT_I4:0]*/;
  _args[5] = TimeCode /*[VT_I4:0]*/;
  _args[6] = Reserved /*[VT_I4:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
IPicoloCallBackDispT<T>::Initialize()
{
  _TDispID _dispid(*this, OLETEXT("Initialize"), DISPID(2));
  return OleFunction(_dispid);
}

template <class T> HRESULT __fastcall
IPicoloCallBackDispT<T>::Terminate()
{
  _TDispID _dispid(*this, OLETEXT("Terminate"), DISPID(3));
  return OleFunction(_dispid);
}

template <class T> HRESULT __fastcall
IPicoloCallBackDispT<T>::SurfaceAvailableCallback(long ChannelID/*[in]*/, long SurfaceID/*[in]*/, 
                                                  long Data/*[in]*/, long Flags/*[in]*/, 
                                                  long TimeCode/*[in]*/, long Reserved/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("SurfaceAvailableCallback"), DISPID(4));
  TAutoArgs<6> _args;
  _args[1] = ChannelID /*[VT_I4:0]*/;
  _args[2] = SurfaceID /*[VT_I4:0]*/;
  _args[3] = Data /*[VT_I4:0]*/;
  _args[4] = Flags /*[VT_I4:0]*/;
  _args[5] = TimeCode /*[VT_I4:0]*/;
  _args[6] = Reserved /*[VT_I4:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
IPicoloCallBackDispT<T>::GetWorkerThread(long* p/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("GetWorkerThread"), DISPID(5));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(p /*[VT_I4:1]*/, _args, OleFunction(_dispid, _args));
}

template <class T> long __fastcall
IPicoloCallBackDispT<T>::GetWorkerThread(void)
{
  long p;
  this->GetWorkerThread((long*)&p);
  return p;
}

// *********************************************************************//
// DispIntf:  _IPicoloCallBackEvents
// Flags:     (4096) Dispatchable
// GUID:      {0A8ABF88-7A27-11D3-89F7-0050042A3D34}
// *********************************************************************//
template <class T> HRESULT __fastcall
_IPicoloCallBackEventsDispT<T>::SurfaceAvailable(long ChannelID/*[in]*/, long SurfaceID/*[in]*/, 
                                                 long Data/*[in]*/, long Flags/*[in]*/, 
                                                 long TimeCode/*[in]*/, long Reserved/*[in]*/)
{
  _TDispID _dispid(/* SurfaceAvailable */ DISPID(1));
  TAutoArgs<6> _args;
  _args[1] = ChannelID /*[VT_I4:0]*/;
  _args[2] = SurfaceID /*[VT_I4:0]*/;
  _args[3] = Data /*[VT_I4:0]*/;
  _args[4] = Flags /*[VT_I4:0]*/;
  _args[5] = TimeCode /*[VT_I4:0]*/;
  _args[6] = Reserved /*[VT_I4:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
_IPicoloCallBackEventsDispT<T>::Error(long ChannelID/*[in]*/, long SurfaceID/*[in]*/, 
                                      long Data/*[in]*/, long Flags/*[in]*/, long TimeCode/*[in]*/, 
                                      long Reserved/*[in]*/)
{
  _TDispID _dispid(/* Error */ DISPID(2));
  TAutoArgs<6> _args;
  _args[1] = ChannelID /*[VT_I4:0]*/;
  _args[2] = SurfaceID /*[VT_I4:0]*/;
  _args[3] = Data /*[VT_I4:0]*/;
  _args[4] = Flags /*[VT_I4:0]*/;
  _args[5] = TimeCode /*[VT_I4:0]*/;
  _args[6] = Reserved /*[VT_I4:0]*/;
  return OleFunction(_dispid, _args);
}

// *********************************************************************//
// The following typedefs expose classes (named CoCoClassName) that       
// provide static Create() and CreateRemote(LPWSTR machineName) methods   
// for creating an instance of an exposed object. These functions can     
// be used by client wishing to automate CoClasses exposed by this        
// typelibrary.                                                           
// *********************************************************************//

// *********************************************************************//
// COCLASS DEFAULT INTERFACE CREATOR
// CoClass  : PicoloCallBack
// Interface: TCOMIPicoloCallBack
// *********************************************************************//
typedef TCoClassCreatorT<TCOMIPicoloCallBack, IPicoloCallBack, &CLSID_PicoloCallBack, &IID_IPicoloCallBack> CoPicoloCallBack;
#endif  //   __TLB_NO_INTERFACE_WRAPPERS


#if !defined(__TLB_NO_EVENT_WRAPPERS) && defined(USING_ATLVCL)
// *********************************************************************//
// CONNECTIONPOINT/EVENT PROXY
// CoClass         : ECameraPicolo
// Event Interface : _IECameraPicoloEvents
// *********************************************************************//
template <class T>
class TEvents_ECameraPicolo : public IConnectionPointImpl<T,
                                                 &DIID__IECameraPicoloEvents,
                                                 CComUnkArray<CONNECTIONPOINT_ARRAY_SIZE> >
{
public:
  HRESULT         Fire_SurfaceAvailable(long SurfaceHandle, long Data, long Flags, long TimeCode, 
                                        long ExtendedStatus);
  HRESULT         Fire_Error(long SurfaceHandle, Epicoloacllib_tlb::enumECameraError ErrorCode, 
                             long Data, long Flags, long TimeCode, long ExtendedStatus);
protected:
  _IECameraPicoloEventsDisp m_EventIntfObj;
};

template <class T> HRESULT
TEvents_ECameraPicolo<T>::Fire_SurfaceAvailable(long SurfaceHandle, long Data, long Flags, 
                                                long TimeCode, long ExtendedStatus)
{
  T * pT = (T*)this;
  pT->Lock();
  IUnknown ** pp = m_vec.begin();
  while (pp < m_vec.end())
  {
    if (*pp != NULL)
    {
      m_EventIntfObj.Attach(*pp);
      m_EventIntfObj.SurfaceAvailable(SurfaceHandle, Data, Flags, TimeCode, ExtendedStatus);
      m_EventIntfObj.Attach(0);
    }
    pp++;
  }
  pT->Unlock();
}

template <class T> HRESULT
TEvents_ECameraPicolo<T>::Fire_Error(long SurfaceHandle, 
                                     Epicoloacllib_tlb::enumECameraError ErrorCode, long Data, 
                                     long Flags, long TimeCode, long ExtendedStatus)
{
  T * pT = (T*)this;
  pT->Lock();
  IUnknown ** pp = m_vec.begin();
  while (pp < m_vec.end())
  {
    if (*pp != NULL)
    {
      m_EventIntfObj.Attach(*pp);
      m_EventIntfObj.Error(SurfaceHandle, ErrorCode, Data, Flags, TimeCode, ExtendedStatus);
      m_EventIntfObj.Attach(0);
    }
    pp++;
  }
  pT->Unlock();
}

// *********************************************************************//
// CONNECTIONPOINT/EVENT PROXY
// CoClass         : EConfigPicolo
// Event Interface : _IEConfigPicoloEvents
// *********************************************************************//
template <class T>
class TEvents_EConfigPicolo : public IConnectionPointImpl<T,
                                                 &DIID__IEConfigPicoloEvents,
                                                 CComUnkArray<CONNECTIONPOINT_ARRAY_SIZE> >
{
public:
protected:
  _IEConfigPicoloEventsDisp m_EventIntfObj;
};

// *********************************************************************//
// CONNECTIONPOINT/EVENT PROXY
// CoClass         : PicoloCallBack
// Event Interface : _IPicoloCallBackEvents
// *********************************************************************//
template <class T>
class TEvents_PicoloCallBack : public IConnectionPointImpl<T,
                                                 &DIID__IPicoloCallBackEvents,
                                                 CComUnkArray<CONNECTIONPOINT_ARRAY_SIZE> >
{
public:
  HRESULT         Fire_SurfaceAvailable(long ChannelID, long SurfaceID, long Data, long Flags, 
                                        long TimeCode, long Reserved);
  HRESULT         Fire_Error(long ChannelID, long SurfaceID, long Data, long Flags, long TimeCode, 
                             long Reserved);
protected:
  _IPicoloCallBackEventsDisp m_EventIntfObj;
};

template <class T> HRESULT
TEvents_PicoloCallBack<T>::Fire_SurfaceAvailable(long ChannelID, long SurfaceID, long Data, 
                                                 long Flags, long TimeCode, long Reserved)
{
  T * pT = (T*)this;
  pT->Lock();
  IUnknown ** pp = m_vec.begin();
  while (pp < m_vec.end())
  {
    if (*pp != NULL)
    {
      m_EventIntfObj.Attach(*pp);
      m_EventIntfObj.SurfaceAvailable(ChannelID, SurfaceID, Data, Flags, TimeCode, Reserved);
      m_EventIntfObj.Attach(0);
    }
    pp++;
  }
  pT->Unlock();
}

template <class T> HRESULT
TEvents_PicoloCallBack<T>::Fire_Error(long ChannelID, long SurfaceID, long Data, long Flags, 
                                      long TimeCode, long Reserved)
{
  T * pT = (T*)this;
  pT->Lock();
  IUnknown ** pp = m_vec.begin();
  while (pp < m_vec.end())
  {
    if (*pp != NULL)
    {
      m_EventIntfObj.Attach(*pp);
      m_EventIntfObj.Error(ChannelID, SurfaceID, Data, Flags, TimeCode, Reserved);
      m_EventIntfObj.Attach(0);
    }
    pp++;
  }
  pT->Unlock();
}

#endif  //   __TLB_NO_EVENT_WRAPPERS

};     // namespace Epicoloacllib_tlb

#if !defined(NO_IMPLICIT_NAMESPACE_USE)
using  namespace Epicoloacllib_tlb;
#endif

#pragma option pop

#endif // __EPICOLOACLLib_TLB_h__
