/*****************************************************************************
* dxtmsft3.idl *
*-------------*
*
*   Description:
*       This is the IDL file for DirectX installable transform coclass,
*   interface, and type definitions. This file describes interfaces for
*   3D transforms provided by Microsoft.
*
*-----------------------------------------------------------------------------
*   Date: 07/07/97
*   Copyright Microsoft Corporation 1997
*   All rights reserved.
*
*****************************************************************************/

//--- Import base idl
import "oaidl.idl";
import "ocidl.idl";
import "dxtrans.idl";

//--- Additional includes

//--- Export

//=== Forward References ====================================================

//=== Constants =============================================================

//=== Struct & Enum definitions =============================================

//=== Interface definitions =================================================

//--- IExplode -------------------------------------------------
typedef enum EXPLODEDISPID
{
    DISPID_Explode_Tumble = DISPID_DXE_NEXT_ID,
    DISPID_Explode_MaxRotations,
    DISPID_Explode_FinalVelocity,
    DISPID_Explode_PositionJump,
    DISPID_Explode_DecayTime    
} EXPLODEDISPID;

[
    object,
    uuid(141DBAF0-55FB-11D1-B83E-00A0C933BE86),
    dual,
    helpstring("IExplode Interface"),
    pointer_default(unique)
]
interface IExplode : IDXEffect
{
    [propput, id(DISPID_Explode_Tumble)] HRESULT Tumble([in] BOOL newVal );
    [propget, id(DISPID_Explode_Tumble)] HRESULT Tumble([out, retval] BOOL *pVal);

    [propput, id(DISPID_Explode_MaxRotations)] HRESULT MaxRotations([in] LONG newVal);
    [propget, id(DISPID_Explode_MaxRotations)] HRESULT MaxRotations([out, retval] LONG *pVal);

    [propput, id(DISPID_Explode_FinalVelocity)] HRESULT FinalVelocity([in] float  newVal);
    [propget, id(DISPID_Explode_FinalVelocity)] HRESULT FinalVelocity([out, retval] float *pVal);

    [propput, id(DISPID_Explode_PositionJump)] HRESULT PositionJump([in] float newVal);
    [propget, id(DISPID_Explode_PositionJump)] HRESULT PositionJump([out, retval] float *pVal);

    [propput, id(DISPID_Explode_DecayTime)] HRESULT DecayTime([in] float newVal);
    [propget, id(DISPID_Explode_DecayTime)] HRESULT DecayTime([out, retval] float *pVal);
};

// --- ICrShatter Interface --------------------------------------------------
[
    object,
    uuid(63500AE1-0858-11D2-8CE4-00C04F8ECB10),
    dual,
    helpstring("ICrShatter Interface"),
    pointer_default(unique)
]
interface ICrShatter : IDXEffect
{
    [propget, id(1)] HRESULT seed([out, retval] long *pVal);
    [propput, id(1)] HRESULT seed([in] long newVal);

    [propget, id(2)] HRESULT maxShards([out, retval] long *pVal);
    [propput, id(2)] HRESULT maxShards([in] long newVal);

    [propget, id(3)] HRESULT depth([out, retval] float *pVal);
    [propput, id(3)] HRESULT depth([in] float newVal);

    [propget, id(4)] HRESULT backColor([out, retval] BSTR *pVal);
    [propput, id(4)] HRESULT backColor([in] BSTR newVal);

    [propget, id(6)] HRESULT evacuateX([out, retval] short *pVal);
    [propput, id(6)] HRESULT evacuateX([in] short newVal);
    [propget, id(7)] HRESULT evacuateY([out, retval] short *pVal);
    [propput, id(7)] HRESULT evacuateY([in] short newVal);
    [propget, id(8)] HRESULT evacuateZ([out, retval] short *pVal);
    [propput, id(8)] HRESULT evacuateZ([in] short newVal);

    [propget, id(9)] HRESULT evacuateDeltaX([out, retval] short *pVal);
    [propput, id(9)] HRESULT evacuateDeltaX([in] short newVal);
    [propget, id(10)] HRESULT evacuateDeltaY([out, retval] short *pVal);
    [propput, id(10)] HRESULT evacuateDeltaY([in] short newVal);
    [propget, id(11)] HRESULT evacuateDeltaZ([out, retval] short *pVal);
    [propput, id(11)] HRESULT evacuateDeltaZ([in] short newVal);
};

//  ---- IDXTBlackHole Interface ----------------------------------

[
    object,
    uuid(C3853C21-3F2E-11D2-9900-0000F803FF7A),
    dual,
    helpstring("IDXTBlackHole Interface"),
    pointer_default(unique)
]
interface IDXTBlackHole : IDXEffect
{
    [propget, id(1)] HRESULT HoleX([out, retval] float *pVal);
    [propput, id(1)] HRESULT HoleX([in] float newVal);
    [propget, id(2)] HRESULT HoleY([out, retval] float *pVal);
    [propput, id(2)] HRESULT HoleY([in] float newVal);
    [propget, id(3)] HRESULT HoleZ([out, retval] float *pVal);
    [propput, id(3)] HRESULT HoleZ([in] float newVal);
    [propget, id(4)] HRESULT StretchPercent([out, retval] float *pVal);
    [propput, id(4)] HRESULT StretchPercent([in] float newVal);
    [propget, id(5)] HRESULT FallX([out, retval] float *pVal);
    [propput, id(5)] HRESULT FallX([in] float newVal);
    [propget, id(6)] HRESULT FallY([out, retval] float *pVal);
    [propput, id(6)] HRESULT FallY([in] float newVal);
    [propget, id(7)] HRESULT FallZ([out, retval] float *pVal);
    [propput, id(7)] HRESULT FallZ([in] float newVal);
    [propget, id(8)] HRESULT SpiralX([out, retval] float *pVal);
    [propput, id(8)] HRESULT SpiralX([in] float newVal);
    [propget, id(9)] HRESULT SpiralY([out, retval] float *pVal);
    [propput, id(9)] HRESULT SpiralY([in] float newVal);
    [propget, id(10)] HRESULT SpiralZ([out, retval] float *pVal);
    [propput, id(10)] HRESULT SpiralZ([in] float newVal);
    [propget, id(11)] HRESULT Rotations([out, retval] float *pVal);
    [propput, id(11)] HRESULT Rotations([in] float newVal);
    [propget, id(12)] HRESULT Movement([out, retval] BSTR *pVal);
    [propput, id(12)] HRESULT Movement([in] BSTR newVal);
};

// ----- IDXTRoll Interface --------------------------------------------

[
    object,
    uuid(78F30B81-48AA-11D2-9900-0000F803FF7A),
    dual,
    helpstring("IDXTRoll Interface"),
    pointer_default(unique)
]
interface IDXTRoll : IDXEffect
{
    [propget, id(1)] HRESULT DirectionX([out, retval] float *pVal);
    [propput, id(1)] HRESULT DirectionX([in] float newVal);
    [propget, id(2)] HRESULT DirectionY([out, retval] float *pVal);
    [propput, id(2)] HRESULT DirectionY([in] float newVal);
    [propget, id(3)] HRESULT Radius([out, retval] float *pVal);
    [propput, id(3)] HRESULT Radius([in] float newVal);
};

//--- IDXTSpin -------------------------------------------------

[
    object,
    uuid(3D2807C1-43DE-11D2-9900-0000F803FF7A),
    dual,
    helpstring("IDXTSpin Interface"),
    pointer_default(unique)
]
interface IDXTSpin : IDXEffect
{
    [propget, id(1)] HRESULT SpinX([out, retval] float *pVal);
    [propput, id(1)] HRESULT SpinX([in] float newVal);
    [propget, id(2)] HRESULT SpinY([out, retval] float *pVal);
    [propput, id(2)] HRESULT SpinY([in] float newVal);
    [propget, id(3)] HRESULT SpinZ([out, retval] float *pVal);
    [propput, id(3)] HRESULT SpinZ([in] float newVal);
    [propget, id(4)] HRESULT Flips([out, retval] long *pVal);
    [propput, id(4)] HRESULT Flips([in] long newVal);
};

//--- IRipple -------------------------------------------------
[
    object,
    uuid(6DA4A05E-8E9E-11D1-904E-00C04FD9189D),
    dual,
    helpstring("IRipple Interface"),
    pointer_default(unique)
]
interface IRipple : IDXEffect
{
    [propget, id(11)] HRESULT XOrigin([out, retval] float *pVal);
    [propput, id(11)] HRESULT XOrigin([in] float newVal);

    [propget, id(12)] HRESULT YOrigin([out, retval] float *pVal);
    [propput, id(12)] HRESULT YOrigin([in] float newVal);

    [propget, id(13)] HRESULT Wavelength([out, retval] float *pVal);
    [propput, id(13)] HRESULT Wavelength([in] float newVal);

    [propget, id(14)] HRESULT Amplitude([out, retval] float *pVal);
    [propput, id(14)] HRESULT Amplitude([in] float newVal);

    [propget, id(15)] HRESULT NumberOfWaves([out, retval] long *pVal);
    [propput, id(15)] HRESULT NumberOfWaves([in] long newVal);

    [propget, id(16)] HRESULT MinSteps([out, retval] long *pVal);
    [propput, id(16)] HRESULT MinSteps([in] long newVal);

    [propget, id(17)] HRESULT MaxSteps([out, retval] long *pVal);
    [propput, id(17)] HRESULT MaxSteps([in] long newVal);
};

//--- IHeightField -------------------------------------------------
typedef enum HeightFieldDISPID
{
    DISPID_HeightField_Width = DISPID_DXE_NEXT_ID,
    DISPID_HeightField_Height,
    DISPID_HeightField_Depth,
    DISPID_HeightField_Samples
} HeightFieldDISPID;

[
    object,
    uuid(0492170A-B159-11d1-9207-0000F8758E66),
    dual,
    helpstring("IHeightField Interface"),
    pointer_default(unique)
]
interface IHeightField : IDXEffect
{
    [propget, id(DISPID_HeightField_Width)] HRESULT Width([out, retval] float *pVal);
    [propput, id(DISPID_HeightField_Width)] HRESULT Width([in] float newVal);

    [propget, id(DISPID_HeightField_Height)] HRESULT Height([out, retval] float *pVal);
    [propput, id(DISPID_HeightField_Height)] HRESULT Height([in] float newVal);

    [propget, id(DISPID_HeightField_Depth)] HRESULT Depth([out, retval] float *pVal);
    [propput, id(DISPID_HeightField_Depth)] HRESULT Depth([in] float newVal);

    [propget, id(DISPID_HeightField_Samples)] HRESULT Samples([out, retval] long *pVal);
    [propput, id(DISPID_HeightField_Samples)] HRESULT Samples([in] long newVal);
};

//--- IDXTMetaStream -------------------------------------------------

[
    object,
    uuid(48654BC0-E51F-11D1-AA1C-00600895FB99),
    dual,
    local,
    helpstring("IDXTMetaStream Interface"),
    pointer_default(unique)
]
interface IDXTMetaStream : IDispatch
{
    [propget, id(11)] HRESULT DXTurl([out, retval] BSTR *pURL);
    [propput, id(11)] HRESULT DXTurl([in] BSTR newURL);

    [propput, id(12)] HRESULT DXTAutoScale([in]VARIANT_BOOL flag);
    [propget, id(12)] HRESULT DXTAutoScale([out,retval]VARIANT_BOOL* flag);

    [propput, id(13)] HRESULT DXTquality([in]float flag);
    [propget, id(13)] HRESULT DXTquality([out,retval]float *flag);
};
    
//--- IDXTText3D -------------------------------------------------

typedef enum DXTText3DDISPID
{
    //This is not an effect, but doesn't hurt to start at DISPID_DXE_NEXT_ID
    DISPID_DXTText3D_String = DISPID_DXE_NEXT_ID,
    DISPID_DXTText3D_FontFace,
    DISPID_DXTText3D_FontWeight,
    DISPID_DXTText3D_FontStyle,
    DISPID_DXTText3D_Vertical,
    DISPID_DXTText3D_ExtrusionType,
    DISPID_DXTText3D_XAlign,
    DISPID_DXTText3D_YAlign,
    DISPID_DXTText3D_ZAlign,
    DISPID_DXTText3D_LetterSpacing,
	DISPID_DXTText3D_Quality
} DXTText3DDISPID;

[
    object,
    uuid(50C4B592-7E8D-11d2-9B4E-00A0C9697CD0),
    dual,
    local,
    helpstring("IDXTText3D Interface"),
    pointer_default(unique)
]
interface IDXTText3D : IDispatch
{
    [propget, id(DISPID_DXTText3D_String)] HRESULT String([out, retval] BSTR *pbstr);
    [propput, id(DISPID_DXTText3D_String)] HRESULT String([in] BSTR pbstr);

    [propget, id(DISPID_DXTText3D_FontFace)] HRESULT FontFace([out, retval] BSTR *pbstr);
    [propput, id(DISPID_DXTText3D_FontFace)] HRESULT FontFace([in] BSTR pbstr);

    [propget, id(DISPID_DXTText3D_FontWeight)] HRESULT FontWeight([out, retval] BSTR *pbstr);
    [propput, id(DISPID_DXTText3D_FontWeight)] HRESULT FontWeight([in] BSTR pbstr);

    [propget, id(DISPID_DXTText3D_FontStyle)] HRESULT FontStyle([out, retval] BSTR *pbstr);
    [propput, id(DISPID_DXTText3D_FontStyle)] HRESULT FontStyle([in] BSTR pbstr);

    [propget, id(DISPID_DXTText3D_Vertical)] HRESULT Vertical([out,retval]VARIANT_BOOL* fVertical);
    [propput, id(DISPID_DXTText3D_Vertical)] HRESULT Vertical([in] VARIANT_BOOL fVertical);

    [propget, id(DISPID_DXTText3D_ExtrusionType)] HRESULT ExtrusionType([out, retval] BSTR *pbstr);
    [propput, id(DISPID_DXTText3D_ExtrusionType)] HRESULT ExtrusionType([in] BSTR pbstr);

    [propget, id(DISPID_DXTText3D_XAlign)] HRESULT XAlign([out, retval] BSTR *pbstr);
    [propput, id(DISPID_DXTText3D_XAlign)] HRESULT XAlign([in] BSTR pbstr);

    [propget, id(DISPID_DXTText3D_YAlign)] HRESULT YAlign([out, retval] BSTR *pbstr);
    [propput, id(DISPID_DXTText3D_YAlign)] HRESULT YAlign([in] BSTR pbstr);

    [propget, id(DISPID_DXTText3D_ZAlign)] HRESULT ZAlign([out, retval] BSTR *pbstr);
    [propput, id(DISPID_DXTText3D_ZAlign)] HRESULT ZAlign([in] BSTR pbstr);

    [propget, id(DISPID_DXTText3D_LetterSpacing)] HRESULT LetterSpacing([out, retval] VARIANT *pvarLetterSpacing);
    [propput, id(DISPID_DXTText3D_LetterSpacing)] HRESULT LetterSpacing([in] VARIANT varLetterSpacing);

    [propget, id(DISPID_DXTText3D_Quality)] HRESULT Quality([out, retval] float *pflQuality);
    [propput, id(DISPID_DXTText3D_Quality)] HRESULT Quality([in] float flQuality);
};
    
//--- IDXTShapes -------------------------------------------------

[
    object,
    uuid(8241F013-84D3-11d2-97E6-0000F803FF7A),
    dual,
    helpstring("IDXTShapes Interface"),
    pointer_default(unique)
]
interface IDXTShapes : IDispatch
{
    [propget, id(1)] HRESULT Shape([out, retval] BSTR* pVal);
    [propput, id(1)] HRESULT Shape([in] BSTR newVal);
    [propget, id(2)] HRESULT XMinRes([out, retval] long* pVal);
    [propput, id(2)] HRESULT XMinRes([in] long newVal);
    [propget, id(3)] HRESULT XMaxRes([out, retval] long* pVal);
    [propput, id(3)] HRESULT XMaxRes([in] long newVal);
    [propget, id(4)] HRESULT YMinRes([out, retval] long* pVal);
    [propput, id(4)] HRESULT YMinRes([in] long newVal);
    [propget, id(5)] HRESULT YMaxRes([out, retval] long* pVal);
    [propput, id(5)] HRESULT YMaxRes([in] long newVal);
    [propget, id(6)] HRESULT Color([out, retval] BSTR *pVal);
    [propput, id(6)] HRESULT Color([in] BSTR newVal);
    [propget, id(7)] HRESULT DoubleSided([out, retval] VARIANT_BOOL *pVal);
    [propput, id(7)] HRESULT DoubleSided([in] VARIANT_BOOL newVal);
    [propget, id(8)] HRESULT KeepAspectRatio([out, retval] VARIANT_BOOL *pVal);
    [propput, id(8)] HRESULT KeepAspectRatio([in] VARIANT_BOOL newVal);
};

//=== CoClass definitions =================================================
[
    uuid(E4BBA4C0-69B7-11d2-832D-0000F81F5995),
    version(1.0),
    helpstring("DXTMsft3 1.0 Type Library")
]
library DXTMSFT3Lib
{
    importlib("stdole2.tlb");

    [
    uuid(141DBAF1-55FB-11D1-B83E-00A0C933BE86),
    helpstring("Explode Class")
    ]
    coclass Explode
    {
    [default] interface IExplode;
    };

////////////////////////////

    [
    uuid(C53059E1-E6E3-11d1-BA12-00C04FB6BD36),
    helpstring("ExplodeProp Class")
    ]
    coclass ExplodeProp
    {
    interface IUnknown;
    };

////////////////////////////

    [
    uuid(945F5842-3A8D-11D1-9037-00C04FD9189D),
    helpstring("Ripple Class")
    ]
    coclass Ripple
    {
    [default] interface IRipple;
    };

////////////////////////////

    [
    uuid(945F5843-3A8D-11D1-9037-00C04FD9189D),
    helpstring("RipProp Class")
    ]
    coclass RipProp
    {
    interface IUnknown;
    };

////////////////////////////

    [
        uuid(04921709-B159-11d1-9207-0000F8758E66),
        helpstring("HeightField Class")
    ]
    coclass HeightField
    {
    [default] interface IHeightField;
    };

////////////////////////////

    [
        uuid(7A8402E3-FBD6-11D1-B5E0-00AA003B6061),
        helpstring("HtFieldProp Class")
    ]
    coclass HtFieldProp
    {
        interface IUnknown;
    };

////////////////////////////

    [
        uuid(60A0C080-E505-11D1-AA1C-00600895FB99),
        helpstring("DXTMetaStream Class")
    ]
    coclass DXTMetaStream
    {
        [default] interface IDXTMetaStream;
    };

////////////////////////////

    [
        uuid(E3D77340-E505-11D1-AA1C-00600895FB99),
        helpstring("DXTMetaStreamProp Class")
    ]
    coclass DXTMetaStreamProp
    {
        interface IUnknown;
    };

////////////////////////////

    [
        uuid(D56F34F2-7E89-11d2-9B4E-00A0C9697CD0),
        helpstring("DXTText3D Class")
    ]
    coclass DXTText3D
    {
        [default] interface IDXTText3D;
    };

////////////////////////////

    [
        uuid(50C4B593-7E8D-11d2-9B4E-00A0C9697CD0),
        helpstring("DXTText3DPP Class")
    ]
    coclass DXTText3DPP
    {
        interface IUnknown;
    };

////////////////////////////

    [
        uuid(63500AE2-0858-11D2-8CE4-00C04F8ECB10),
        helpstring("CrShatter Class")
    ]
    coclass CrShatter
    {
        [default] interface ICrShatter;
    };

////////////////////////////

    [
        uuid(99275F01-102E-11d2-8B82-00A0C93C09B2),
        helpstring("CrShatterPP Property Page")
    ]
    coclass CrShatterPP
    {
        interface IUnknown;
    };

////////////////////////////

    [
        uuid(C3853C22-3F2E-11D2-9900-0000F803FF7A),
        helpstring("DXTBlackHole Class")
    ]
    coclass DXTBlackHole
    {
        [default] interface IDXTBlackHole;
    };

////////////////////////////

    [
        uuid(C3853C23-3F2E-11D2-9900-0000F803FF7A),
        helpstring("DXTBlackHolePP Class")
    ]
    coclass DXTBlackHolePP
    {
        interface IUnknown;
    };

////////////////////////////

    [
        uuid(78F30B82-48AA-11D2-9900-0000F803FF7A),
        helpstring("DXTRoll")
    ]
    coclass DXTRoll
    {
        [default] interface IDXTRoll;
    };

////////////////////////////

    [
        uuid(78F30B83-48AA-11D2-9900-0000F803FF7A),
        helpstring("DXTRollPP")
    ]
    coclass DXTRollPP
    {
        interface IUnknown;
    };

////////////////////////////

    [
        uuid(3D2807C2-43DE-11D2-9900-0000F803FF7A),
        helpstring("DXTSpin Class")
    ]
    coclass DXTSpin
    {
        [default] interface IDXTSpin;
    };

////////////////////////////

    [
        uuid(3D2807C3-43DE-11D2-9900-0000F803FF7A),
        helpstring("DXTSpinPP Class")
    ]
    coclass DXTSpinPP
    {
        interface IUnknown;
    };

////////////////////////////

    [
        uuid(8241F015-84D3-11d2-97E6-0000F803FF7A),
        helpstring("DXTShapes Class")
    ]
    coclass DXTShapes
    {
        [default] interface IDXTShapes;
    };

////////////////////////////

    [
        uuid(8241F016-84D3-11d2-97E6-0000F803FF7A),
        helpstring("DXTShapesPP Class")
    ]
    coclass DXTShapesPP
    {
        interface IUnknown;
    };
};