// ************************************************************************ //
// 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:28:13 from Type Library described below.

// ************************************************************************ //
// Type Lib: C:\Program Files\Euresys\MultiCam for Picolo\ActiveX\EDisplayACL.dll (1)
// IID\LCID: {CA1DC8B0-767C-11D3-89F3-0050042A3D34}\0
// Helpfile: 
// DepndLst: 
//   (1) v2.0 stdole, (C:\WINNT\System32\STDOLE2.TLB)
//   (2) v4.0 StdVCL, (C:\WINNT\System32\STDVCL40.DLL)
// ************************************************************************ //
#ifndef   __EDISPLAYACLLib_TLB_h__
#define   __EDISPLAYACLLib_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 Edisplayacllib_tlb
{

// *********************************************************************//
// HelpString: EDisplay ActiveX Control Library
// Version:    1.0
// *********************************************************************//


// *********************************************************************//
// 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_EDISPLAYACLLib;
extern __declspec (package) const GUID DIID__IEDisplayEvents;
extern __declspec (package) const GUID IID_IEDisplay;
extern __declspec (package) const GUID IID_IEDisplayCallBack;
extern __declspec (package) const GUID CLSID_EDisplay;

// *********************************************************************//
// Forward declaration of types defined in TypeLibrary                    
// *********************************************************************//
interface DECLSPEC_UUID("{CA1DC8C1-767C-11D3-89F3-0050042A3D34}") _IEDisplayEvents;
typedef TComInterface<_IEDisplayEvents, &DIID__IEDisplayEvents> _IEDisplayEventsPtr;
interface DECLSPEC_UUID("{CA1DC8BF-767C-11D3-89F3-0050042A3D34}") IEDisplay;
typedef TComInterface<IEDisplay, &IID_IEDisplay> IEDisplayPtr;
interface DECLSPEC_UUID("{B352FA20-7683-11D3-89F3-0050042A3D34}") IEDisplayCallBack;
typedef TComInterface<IEDisplayCallBack, &IID_IEDisplayCallBack> IEDisplayCallBackPtr;

// *********************************************************************//
// 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 IEDisplay EDisplay;
typedef IEDisplayPtr EDisplayPtr;

#define LIBID_OF_EDisplay (&LIBID_EDISPLAYACLLib)
// *********************************************************************//
// Interface: _IEDisplayEvents
// Flags:     (4096) Dispatchable
// GUID:      {CA1DC8C1-767C-11D3-89F3-0050042A3D34}
// *********************************************************************//
interface _IEDisplayEvents : public TDispWrapper<IDispatch>
{

};
// *********************************************************************//
// Interface: IEDisplay
// Flags:     (4416) Dual OleAutomation Dispatchable
// GUID:      {CA1DC8BF-767C-11D3-89F3-0050042A3D34}
// *********************************************************************//
interface IEDisplay  : public IDispatch
{
public:
  // [-550] Refresh the EDisplay object. If an image is available, the image is redrawn.
  virtual HRESULT STDMETHODCALLTYPE Refresh(void) = 0;
  // [1] Stretch the picture to fit to the object's size.
  virtual HRESULT STDMETHODCALLTYPE get_AutoSize(TOLEBOOL* pVal/*[out,retval]*/) = 0;
  // [1] Stretch the picture to fit to the object's size.
  virtual HRESULT STDMETHODCALLTYPE set_AutoSize(TOLEBOOL pVal/*[in]*/) = 0;

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)

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


  __property   TOLEBOOL        AutoSize = {read = get_AutoSize, write = set_AutoSize};

#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

// *********************************************************************//
// Interface: IEDisplayCallBack
// Flags:     (16) Hidden
// GUID:      {B352FA20-7683-11D3-89F3-0050042A3D34}
// *********************************************************************//
interface IEDisplayCallBack  : public IUnknown
{
public:
  // [-1] method UpdateImage
  virtual HRESULT STDMETHODCALLTYPE UpdateImage(long Size/*[in]*/, unsigned_char* pBuffer/*[in]*/, 
                                                long ColorFormat/*[in]*/, long ImageSizeX/*[in]*/, 
                                                long ImageSizeY/*[in]*/) = 0;
  // [-1] method UpdateImageEx
  virtual HRESULT STDMETHODCALLTYPE UpdateImageEx(long Size/*[in]*/, unsigned_char* pBuffer/*[in]*/, 
                                                  long ColorFormat/*[in]*/, long ImageSizeX/*[in]*/, 
                                                  long ImageSizeY/*[in]*/, long pPal[256]/*[in]*/) = 0;
};

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)
// *********************************************************************//
// DispIntf:  _IEDisplayEvents
// Flags:     (4096) Dispatchable
// GUID:      {CA1DC8C1-767C-11D3-89F3-0050042A3D34}
// *********************************************************************//
template <class T>
class _IEDisplayEventsDispT : public TAutoDriver<_IEDisplayEvents>
{
public:
  _IEDisplayEventsDispT(){}

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


};
typedef _IEDisplayEventsDispT<_IEDisplayEvents> _IEDisplayEventsDisp;

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

  HRESULT         __fastcall Refresh(void);
  HRESULT         __fastcall get_AutoSize(TOLEBOOL* pVal/*[out,retval]*/);
  TOLEBOOL        __fastcall get_AutoSize(void);
  HRESULT         __fastcall set_AutoSize(TOLEBOOL pVal/*[in]*/);

  __property   TOLEBOOL        AutoSize = {read = get_AutoSize, write = set_AutoSize};
};
typedef TCOMIEDisplayT<IEDisplay> TCOMIEDisplay;

// *********************************************************************//
// DispIntf:  IEDisplay
// Flags:     (4416) Dual OleAutomation Dispatchable
// GUID:      {CA1DC8BF-767C-11D3-89F3-0050042A3D34}
// *********************************************************************//
template<class T>
class IEDisplayDispT : public TAutoDriver<IEDisplay>
{
public:
  IEDisplayDispT(){}

  IEDisplayDispT(IEDisplay *pintf)
  {
    TAutoDriver<IEDisplay>::Bind(pintf, false);
  }

  IEDisplayDispT(IEDisplayPtr pintf)
  {
    TAutoDriver<IEDisplay>::Bind(pintf, true);
  }

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

  IEDisplayDispT& operator=(IEDisplayPtr pintf)
  {
    TAutoDriver<IEDisplay>::Bind(pintf, true);
    return *this;
  }

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

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

  HRESULT         __fastcall Refresh();
  HRESULT         __fastcall get_AutoSize(TOLEBOOL* pVal/*[out,retval]*/);
  TOLEBOOL        __fastcall get_AutoSize(void);
  HRESULT         __fastcall set_AutoSize(TOLEBOOL pVal/*[in]*/);

  __property   TOLEBOOL        AutoSize = {read = get_AutoSize, write = set_AutoSize};
};
typedef IEDisplayDispT<IEDisplay> IEDisplayDisp;

typedef TComInterface<IEDisplayCallBack>  TCOMIEDisplayCallBack;

// *********************************************************************//
// DispIntf:  _IEDisplayEvents
// Flags:     (4096) Dispatchable
// GUID:      {CA1DC8C1-767C-11D3-89F3-0050042A3D34}
// *********************************************************************//
// *********************************************************************//
// SmartIntf: TCOMIEDisplay
// Interface: IEDisplay
// *********************************************************************//
template <class T> HRESULT __fastcall
TCOMIEDisplayT<T>::Refresh(void)
{
  return (*this)->Refresh();
}

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

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

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

// *********************************************************************//
// DispIntf:  IEDisplay
// Flags:     (4416) Dual OleAutomation Dispatchable
// GUID:      {CA1DC8BF-767C-11D3-89F3-0050042A3D34}
// *********************************************************************//
template <class T> HRESULT __fastcall
IEDisplayDispT<T>::Refresh()
{
  _TDispID _dispid(*this, OLETEXT("Refresh"), DISPID(-550));
  return OleFunction(_dispid);
}

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

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

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

#endif  //   __TLB_NO_INTERFACE_WRAPPERS


#if !defined(__TLB_NO_EVENT_WRAPPERS) && defined(USING_ATLVCL)
// *********************************************************************//
// CONNECTIONPOINT/EVENT PROXY
// CoClass         : EDisplay
// Event Interface : _IEDisplayEvents
// *********************************************************************//
template <class T>
class TEvents_EDisplay : public IConnectionPointImpl<T,
                                                 &DIID__IEDisplayEvents,
                                                 CComUnkArray<CONNECTIONPOINT_ARRAY_SIZE> >
{
public:
protected:
  _IEDisplayEventsDisp m_EventIntfObj;
};

#endif  //   __TLB_NO_EVENT_WRAPPERS

};     // namespace Edisplayacllib_tlb

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

#pragma option pop

#endif // __EDISPLAYACLLib_TLB_h__
