/* This header file machine-generated by mktyplib.exe */
/* Interface to type library: ShapeDatabase */

#ifndef _ShapeDatabase_H_
#define _ShapeDatabase_H_

DEFINE_GUID(CLSID_CShapeData,0x00021AA3,0x0000,0x0000,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46);
DEFINE_GUID(IID_IShapeData,0x00021AB2,0x0000,0x0000,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46);

interface IShapeData;

interface IAttributes;

interface IAttribute;

interface IEntityApps;

interface IEntityApp;

interface IEntities;

interface IEntity;

/* Definition of interface: IAttribute */
DECLARE_INTERFACE_(IAttribute, IDispatch)
{
    /* IUnknown methods */
    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    STDMETHOD_(ULONG, Release)(THIS) PURE;

    /* IDispatch methods */
    STDMETHOD(GetTypeInfoCount)(THIS_ UINT FAR* pctinfo) PURE;

    STDMETHOD(GetTypeInfo)(
      THIS_
      UINT itinfo,
      LCID lcid,
      ITypeInfo FAR* FAR* pptinfo) PURE;

    STDMETHOD(GetIDsOfNames)(
      THIS_
      REFIID riid,
      char FAR* FAR* rgszNames,
      UINT cNames,
      LCID lcid,
      DISPID FAR* rgdispid) PURE;

    STDMETHOD(Invoke)(
      THIS_
      DISPID dispidMember,
      REFIID riid,
      LCID lcid,
      WORD wFlags,
      DISPPARAMS FAR* pdispparams,
      VARIANT FAR* pvarResult,
      EXCEPINFO FAR* pexcepinfo,
      UINT FAR* puArgErr) PURE;

    /* IAttribute methods */
    STDMETHOD_(void, Delete)(THIS) PURE;
    STDMETHOD_(BSTR, get_Name)(THIS) PURE;
    STDMETHOD_(void, put_Value)(THIS_ BSTR bstrValue) PURE;
    STDMETHOD_(BSTR, get_Value)(THIS) PURE;
    STDMETHOD_(void, put_DefaultValue)(THIS_ BSTR bstrDefValue) PURE;
    STDMETHOD_(BSTR, get_DefaultValue)(THIS) PURE;
    STDMETHOD_(void, put_Prompt)(THIS_ BSTR bstrPrompt) PURE;
    STDMETHOD_(BSTR, get_Prompt)(THIS) PURE;
};

typedef IAttribute FAR* LPIATTRIBUTE;

/* Definition of interface: IAttributes */
DECLARE_INTERFACE_(IAttributes, IDispatch)
{
    /* IUnknown methods */
    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    STDMETHOD_(ULONG, Release)(THIS) PURE;

    /* IDispatch methods */
    STDMETHOD(GetTypeInfoCount)(THIS_ UINT FAR* pctinfo) PURE;

    STDMETHOD(GetTypeInfo)(
      THIS_
      UINT itinfo,
      LCID lcid,
      ITypeInfo FAR* FAR* pptinfo) PURE;

    STDMETHOD(GetIDsOfNames)(
      THIS_
      REFIID riid,
      char FAR* FAR* rgszNames,
      UINT cNames,
      LCID lcid,
      DISPID FAR* rgdispid) PURE;

    STDMETHOD(Invoke)(
      THIS_
      DISPID dispidMember,
      REFIID riid,
      LCID lcid,
      WORD wFlags,
      DISPPARAMS FAR* pdispparams,
      VARIANT FAR* pvarResult,
      EXCEPINFO FAR* pexcepinfo,
      UINT FAR* puArgErr) PURE;

    /* IAttributes methods */
    STDMETHOD_(LPIATTRIBUTE, Add)(THIS_ BSTR bstrTag) PURE;
    STDMETHOD_(long, get_Count)(THIS) PURE;
    STDMETHOD_(LPIATTRIBUTE, get_Item)(THIS_ VARIANT varIndex) PURE;
    STDMETHOD_(IUnknown *, get_NewEnum)(THIS) PURE;
};

typedef IAttributes FAR* LPIATTRIBUTES;

/* Definition of interface: IEntity */
DECLARE_INTERFACE_(IEntity, IDispatch)
{
    /* IUnknown methods */
    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    STDMETHOD_(ULONG, Release)(THIS) PURE;

    /* IDispatch methods */
    STDMETHOD(GetTypeInfoCount)(THIS_ UINT FAR* pctinfo) PURE;

    STDMETHOD(GetTypeInfo)(
      THIS_
      UINT itinfo,
      LCID lcid,
      ITypeInfo FAR* FAR* pptinfo) PURE;

    STDMETHOD(GetIDsOfNames)(
      THIS_
      REFIID riid,
      char FAR* FAR* rgszNames,
      UINT cNames,
      LCID lcid,
      DISPID FAR* rgdispid) PURE;

    STDMETHOD(Invoke)(
      THIS_
      DISPID dispidMember,
      REFIID riid,
      LCID lcid,
      WORD wFlags,
      DISPPARAMS FAR* pdispparams,
      VARIANT FAR* pvarResult,
      EXCEPINFO FAR* pexcepinfo,
      UINT FAR* puArgErr) PURE;

    /* IEntity methods */
    STDMETHOD_(void, Delete)(THIS) PURE;
    STDMETHOD_(BSTR, get_Name)(THIS) PURE;
    STDMETHOD_(long, get_Index)(THIS) PURE;
    STDMETHOD_(long, get_Group)(THIS) PURE;
    STDMETHOD_(void, put_Group)(THIS_ long lGroup) PURE;
    STDMETHOD_(BSTR, get_String)(THIS) PURE;
    STDMETHOD_(void, put_String)(THIS_ BSTR bstrString) PURE;
    STDMETHOD_(BSTR, get_Control)(THIS) PURE;
    STDMETHOD_(void, put_Control)(THIS_ BSTR bstrControl) PURE;
    STDMETHOD_(BSTR, get_LayerName)(THIS) PURE;
    STDMETHOD_(void, put_LayerName)(THIS_ BSTR bstrLayerName) PURE;
    STDMETHOD_(BSTR, get_BinaryData)(THIS) PURE;
    STDMETHOD_(void, put_BinaryData)(THIS_ BSTR bstrData) PURE;
    STDMETHOD_(long, get_BinaryLength)(THIS) PURE;
    STDMETHOD_(BSTR, get_Handle)(THIS) PURE;
    STDMETHOD_(void, put_Handle)(THIS_ BSTR bstrHandle) PURE;
#undef STDMETHODCALLTYPE
#define STDMETHODCALLTYPE __export FAR PASCAL
    STDMETHOD_(double, get_VectorX)(THIS) PURE;
    STDMETHOD_(double, get_VectorY)(THIS) PURE;
    STDMETHOD_(double, get_VectorZ)(THIS) PURE;
    STDMETHOD_(double, get_RealValue)(THIS) PURE;
#undef STDMETHODCALLTYPE
#define STDMETHODCALLTYPE __export FAR CDECL
    STDMETHOD_(void, put_VectorX)(THIS_ double dX) PURE;
    STDMETHOD_(void, put_VectorY)(THIS_ double dY) PURE;
    STDMETHOD_(void, put_VectorZ)(THIS_ double dZ) PURE;
    STDMETHOD_(void, put_RealValue)(THIS_ double dValue) PURE;
    STDMETHOD_(long, get_LongValue)(THIS) PURE;
    STDMETHOD_(void, put_LongValue)(THIS_ long lValue) PURE;
    STDMETHOD_(short, get_ShortValue)(THIS) PURE;
    STDMETHOD_(void, put_ShortValue)(THIS_ short sValue) PURE;
};

typedef IEntity FAR* LPIENTITY;

/* Definition of interface: IEntities */
DECLARE_INTERFACE_(IEntities, IDispatch)
{
    /* IUnknown methods */
    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    STDMETHOD_(ULONG, Release)(THIS) PURE;

    /* IDispatch methods */
    STDMETHOD(GetTypeInfoCount)(THIS_ UINT FAR* pctinfo) PURE;

    STDMETHOD(GetTypeInfo)(
      THIS_
      UINT itinfo,
      LCID lcid,
      ITypeInfo FAR* FAR* pptinfo) PURE;

    STDMETHOD(GetIDsOfNames)(
      THIS_
      REFIID riid,
      char FAR* FAR* rgszNames,
      UINT cNames,
      LCID lcid,
      DISPID FAR* rgdispid) PURE;

    STDMETHOD(Invoke)(
      THIS_
      DISPID dispidMember,
      REFIID riid,
      LCID lcid,
      WORD wFlags,
      DISPPARAMS FAR* pdispparams,
      VARIANT FAR* pvarResult,
      EXCEPINFO FAR* pexcepinfo,
      UINT FAR* puArgErr) PURE;

    /* IEntities methods */
    STDMETHOD_(LPIENTITY, Add)(THIS) PURE;
    STDMETHOD_(long, get_Count)(THIS) PURE;
    STDMETHOD_(LPIENTITY, get_Item)(THIS_ long lIndex) PURE;
    STDMETHOD_(BSTR, get_Name)(THIS) PURE;
    STDMETHOD_(IUnknown *, get_NewEnum)(THIS) PURE;
};

typedef IEntities FAR* LPIENTITIES;

/* Definition of interface: IEntityApp */
DECLARE_INTERFACE_(IEntityApp, IDispatch)
{
    /* IUnknown methods */
    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    STDMETHOD_(ULONG, Release)(THIS) PURE;

    /* IDispatch methods */
    STDMETHOD(GetTypeInfoCount)(THIS_ UINT FAR* pctinfo) PURE;

    STDMETHOD(GetTypeInfo)(
      THIS_
      UINT itinfo,
      LCID lcid,
      ITypeInfo FAR* FAR* pptinfo) PURE;

    STDMETHOD(GetIDsOfNames)(
      THIS_
      REFIID riid,
      char FAR* FAR* rgszNames,
      UINT cNames,
      LCID lcid,
      DISPID FAR* rgdispid) PURE;

    STDMETHOD(Invoke)(
      THIS_
      DISPID dispidMember,
      REFIID riid,
      LCID lcid,
      WORD wFlags,
      DISPPARAMS FAR* pdispparams,
      VARIANT FAR* pvarResult,
      EXCEPINFO FAR* pexcepinfo,
      UINT FAR* puArgErr) PURE;

    /* IEntityApp methods */
    STDMETHOD_(void, Delete)(THIS) PURE;
    STDMETHOD_(BSTR, get_Name)(THIS) PURE;
    STDMETHOD_(LPIENTITIES, get_Entities)(THIS) PURE;
};

typedef IEntityApp FAR* LPIENTITYAPP;

/* Definition of interface: IEntityApps */
DECLARE_INTERFACE_(IEntityApps, IDispatch)
{
    /* IUnknown methods */
    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    STDMETHOD_(ULONG, Release)(THIS) PURE;

    /* IDispatch methods */
    STDMETHOD(GetTypeInfoCount)(THIS_ UINT FAR* pctinfo) PURE;

    STDMETHOD(GetTypeInfo)(
      THIS_
      UINT itinfo,
      LCID lcid,
      ITypeInfo FAR* FAR* pptinfo) PURE;

    STDMETHOD(GetIDsOfNames)(
      THIS_
      REFIID riid,
      char FAR* FAR* rgszNames,
      UINT cNames,
      LCID lcid,
      DISPID FAR* rgdispid) PURE;

    STDMETHOD(Invoke)(
      THIS_
      DISPID dispidMember,
      REFIID riid,
      LCID lcid,
      WORD wFlags,
      DISPPARAMS FAR* pdispparams,
      VARIANT FAR* pvarResult,
      EXCEPINFO FAR* pexcepinfo,
      UINT FAR* puArgErr) PURE;

    /* IEntityApps methods */
    STDMETHOD_(LPIENTITYAPP, Add)(THIS_ BSTR bstrTag) PURE;
    STDMETHOD_(long, get_Count)(THIS) PURE;
    STDMETHOD_(LPIENTITYAPP, get_Item)(THIS_ VARIANT varIndex) PURE;
    STDMETHOD_(IUnknown *, get_NewEnum)(THIS) PURE;
};

typedef IEntityApps FAR* LPIENTITYAPPS;

/* Definition of interface: IShapeData */
DECLARE_INTERFACE_(IShapeData, IDispatch)
{
    /* IUnknown methods */
    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    STDMETHOD_(ULONG, Release)(THIS) PURE;

    /* IDispatch methods */
    STDMETHOD(GetTypeInfoCount)(THIS_ UINT FAR* pctinfo) PURE;

    STDMETHOD(GetTypeInfo)(
      THIS_
      UINT itinfo,
      LCID lcid,
      ITypeInfo FAR* FAR* pptinfo) PURE;

    STDMETHOD(GetIDsOfNames)(
      THIS_
      REFIID riid,
      char FAR* FAR* rgszNames,
      UINT cNames,
      LCID lcid,
      DISPID FAR* rgdispid) PURE;

    STDMETHOD(Invoke)(
      THIS_
      DISPID dispidMember,
      REFIID riid,
      LCID lcid,
      WORD wFlags,
      DISPPARAMS FAR* pdispparams,
      VARIANT FAR* pvarResult,
      EXCEPINFO FAR* pexcepinfo,
      UINT FAR* puArgErr) PURE;

    /* IShapeData methods */
    STDMETHOD_(LPIATTRIBUTES, get_Attributes)(THIS) PURE;
    STDMETHOD_(LPIENTITYAPPS, get_EntityApps)(THIS) PURE;
    STDMETHOD_(VARIANT_BOOL, get_Inherit)(THIS) PURE;
    STDMETHOD_(void, put_Inherit)(THIS_ VARIANT_BOOL fInherit) PURE;
    STDMETHOD_(void, PutShape)(THIS_ IDispatch * lpShape) PURE;
    STDMETHOD_(IDispatch *, get_Shape)(THIS) PURE;
    STDMETHOD_(void, BeginTransaction)(THIS) PURE;
    STDMETHOD_(void, EndTransaction)(THIS) PURE;
};

typedef IShapeData FAR* LPISHAPEDATA;

#endif
