Home | History | Annotate | Download | only in include
      1 #undef INTERFACE
      2 /*
      3  * Copyright (C) 2008 Vijay Kiran Kamuju
      4  * Copyright (C) 2010 Christian Costa
      5  *
      6  * This library is free software; you can redistribute it and/or
      7  * modify it under the terms of the GNU Lesser General Public
      8  * License as published by the Free Software Foundation; either
      9  * version 2.1 of the License, or (at your option) any later version.
     10  *
     11  * This library is distributed in the hope that it will be useful,
     12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
     13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     14  * Lesser General Public License for more details.
     15  *
     16  * You should have received a copy of the GNU Lesser General Public
     17  * License along with this library; if not, write to the Free Software
     18  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
     19  */
     20 
     21 #ifndef __D3DRMOBJ_H__
     22 #define __D3DRMOBJ_H__
     23 
     24 #include <objbase.h>
     25 #define VIRTUAL
     26 #include <d3drmdef.h>
     27 #include <d3d.h>
     28 
     29 #ifdef __cplusplus
     30 extern "C" {
     31 #endif
     32 
     33 /* Direct3DRM object CLSIDs */
     34 
     35 DEFINE_GUID(CLSID_CDirect3DRMDevice,                    0x4fa3568e, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
     36 DEFINE_GUID(CLSID_CDirect3DRMViewport,                  0x4fa3568f, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
     37 DEFINE_GUID(CLSID_CDirect3DRMFrame,                     0x4fa35690, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
     38 DEFINE_GUID(CLSID_CDirect3DRMMesh,                      0x4fa35691, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
     39 DEFINE_GUID(CLSID_CDirect3DRMMeshBuilder,               0x4fa35692, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
     40 DEFINE_GUID(CLSID_CDirect3DRMFace,                      0x4fa35693, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
     41 DEFINE_GUID(CLSID_CDirect3DRMLight,                     0x4fa35694, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
     42 DEFINE_GUID(CLSID_CDirect3DRMTexture,                   0x4fa35695, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
     43 DEFINE_GUID(CLSID_CDirect3DRMWrap,                      0x4fa35696, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
     44 DEFINE_GUID(CLSID_CDirect3DRMMaterial,                  0x4fa35697, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
     45 DEFINE_GUID(CLSID_CDirect3DRMAnimation,                 0x4fa35698, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
     46 DEFINE_GUID(CLSID_CDirect3DRMAnimationSet,              0x4fa35699, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
     47 DEFINE_GUID(CLSID_CDirect3DRMUserVisual,                0x4fa3569a, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
     48 DEFINE_GUID(CLSID_CDirect3DRMShadow,                    0x4fa3569b, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1);
     49 DEFINE_GUID(CLSID_CDirect3DRMViewportInterpolator,      0xde9eaa1, 0x3b84, 0x11d0, 0x9b, 0x6d, 0x0, 0x0, 0xc0, 0x78, 0x1b, 0xc3);
     50 DEFINE_GUID(CLSID_CDirect3DRMFrameInterpolator,         0xde9eaa2, 0x3b84, 0x11d0, 0x9b, 0x6d, 0x0, 0x0, 0xc0, 0x78, 0x1b, 0xc3);
     51 DEFINE_GUID(CLSID_CDirect3DRMMeshInterpolator,          0xde9eaa3, 0x3b84, 0x11d0, 0x9b, 0x6d, 0x0, 0x0, 0xc0, 0x78, 0x1b, 0xc3);
     52 DEFINE_GUID(CLSID_CDirect3DRMLightInterpolator,         0xde9eaa6, 0x3b84, 0x11d0, 0x9b, 0x6d, 0x0, 0x0, 0xc0, 0x78, 0x1b, 0xc3);
     53 DEFINE_GUID(CLSID_CDirect3DRMMaterialInterpolator,      0xde9eaa7, 0x3b84, 0x11d0, 0x9b, 0x6d, 0x0, 0x0, 0xc0, 0x78, 0x1b, 0xc3);
     54 DEFINE_GUID(CLSID_CDirect3DRMTextureInterpolator,       0xde9eaa8, 0x3b84, 0x11d0, 0x9b, 0x6d, 0x0, 0x0, 0xc0, 0x78, 0x1b, 0xc3);
     55 DEFINE_GUID(CLSID_CDirect3DRMProgressiveMesh,           0x4516ec40, 0x8f20, 0x11d0, 0x9b, 0x6d, 0x00, 0x00, 0xc0, 0x78, 0x1b, 0xc3);
     56 DEFINE_GUID(CLSID_CDirect3DRMClippedVisual,             0x5434e72d, 0x6d66, 0x11d1, 0xbb, 0xb, 0x0, 0x0, 0xf8, 0x75, 0x86, 0x5a);
     57 
     58 /* Direct3DRM object interface GUIDs */
     59 
     60 DEFINE_GUID(IID_IDirect3DRMObject,          0xeb16cb00, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
     61 DEFINE_GUID(IID_IDirect3DRMObject2,         0x4516ec7c, 0x8f20, 0x11d0, 0x9b, 0x6d, 0x00, 0x00, 0xc0, 0x78, 0x1b, 0xc3);
     62 DEFINE_GUID(IID_IDirect3DRMDevice,          0xe9e19280, 0x6e05, 0x11cf, 0xac, 0x4a, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
     63 DEFINE_GUID(IID_IDirect3DRMDevice2,         0x4516ec78, 0x8f20, 0x11d0, 0x9b, 0x6d, 0x00, 0x00, 0xc0, 0x78, 0x1b, 0xc3);
     64 DEFINE_GUID(IID_IDirect3DRMDevice3,         0x549f498b, 0xbfeb, 0x11d1, 0x8e, 0xd8, 0x00, 0xa0, 0xc9, 0x67, 0xa4, 0x82);
     65 DEFINE_GUID(IID_IDirect3DRMViewport,        0xeb16cb02, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
     66 DEFINE_GUID(IID_IDirect3DRMViewport2,       0x4a1b1be6, 0xbfed, 0x11d1, 0x8e, 0xd8, 0x00, 0xa0, 0xc9, 0x67, 0xa4, 0x82);
     67 DEFINE_GUID(IID_IDirect3DRMFrame,           0xeb16cb03, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
     68 DEFINE_GUID(IID_IDirect3DRMFrame2,          0xc3dfbd60, 0x3988, 0x11d0, 0x9e, 0xc2, 0x00, 0x00, 0xc0, 0x29, 0x1a, 0xc3);
     69 DEFINE_GUID(IID_IDirect3DRMFrame3,          0xff6b7f70, 0xa40e, 0x11d1, 0x91, 0xf9, 0x00, 0x00, 0xf8, 0x75, 0x8e, 0x66);
     70 DEFINE_GUID(IID_IDirect3DRMVisual,          0xeb16cb04, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
     71 DEFINE_GUID(IID_IDirect3DRMMesh,            0xa3a80d01, 0x6e12, 0x11cf, 0xac, 0x4a, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
     72 DEFINE_GUID(IID_IDirect3DRMMeshBuilder,     0xa3a80d02, 0x6e12, 0x11cf, 0xac, 0x4a, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
     73 DEFINE_GUID(IID_IDirect3DRMMeshBuilder2,    0x4516ec77, 0x8f20, 0x11d0, 0x9b, 0x6d, 0x00, 0x00, 0xc0, 0x78, 0x1b, 0xc3);
     74 DEFINE_GUID(IID_IDirect3DRMMeshBuilder3,    0x4516ec82, 0x8f20, 0x11d0, 0x9b, 0x6d, 0x00, 0x00, 0xc0, 0x78, 0x1b, 0xc3);
     75 DEFINE_GUID(IID_IDirect3DRMFace,            0xeb16cb07, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
     76 DEFINE_GUID(IID_IDirect3DRMFace2,           0x4516ec81, 0x8f20, 0x11d0, 0x9b, 0x6d, 0x00, 0x00, 0xc0, 0x78, 0x1b, 0xc3);
     77 DEFINE_GUID(IID_IDirect3DRMLight,           0xeb16cb08, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
     78 DEFINE_GUID(IID_IDirect3DRMTexture,         0xeb16cb09, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
     79 DEFINE_GUID(IID_IDirect3DRMTexture2,        0x120f30c0, 0x1629, 0x11d0, 0x94, 0x1c, 0x00, 0x80, 0xc8, 0x0c, 0xfa, 0x7b);
     80 DEFINE_GUID(IID_IDirect3DRMTexture3,        0xff6b7f73, 0xa40e, 0x11d1, 0x91, 0xf9, 0x00, 0x00, 0xf8, 0x75, 0x8e, 0x66);
     81 DEFINE_GUID(IID_IDirect3DRMWrap,            0xeb16cb0a, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
     82 DEFINE_GUID(IID_IDirect3DRMMaterial,        0xeb16cb0b, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
     83 DEFINE_GUID(IID_IDirect3DRMMaterial2,       0xff6b7f75, 0xa40e, 0x11d1, 0x91, 0xf9, 0x00, 0x00, 0xf8, 0x75, 0x8e, 0x66);
     84 DEFINE_GUID(IID_IDirect3DRMAnimation,       0xeb16cb0d, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
     85 DEFINE_GUID(IID_IDirect3DRMAnimation2,      0xff6b7f77, 0xa40e, 0x11d1, 0x91, 0xf9, 0x00, 0x00, 0xf8, 0x75, 0x8e, 0x66);
     86 DEFINE_GUID(IID_IDirect3DRMAnimationSet,    0xeb16cb0e, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
     87 DEFINE_GUID(IID_IDirect3DRMAnimationSet2,   0xff6b7f79, 0xa40e, 0x11d1, 0x91, 0xf9, 0x00, 0x00, 0xf8, 0x75, 0x8e, 0x66);
     88 DEFINE_GUID(IID_IDirect3DRMObjectArray,     0x242f6bc2, 0x3849, 0x11d0, 0x9b, 0x6d, 0x00, 0x00, 0xc0, 0x78, 0x1b, 0xc3);
     89 DEFINE_GUID(IID_IDirect3DRMDeviceArray,     0xeb16cb10, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
     90 DEFINE_GUID(IID_IDirect3DRMViewportArray,   0xeb16cb11, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
     91 DEFINE_GUID(IID_IDirect3DRMFrameArray,      0xeb16cb12, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
     92 DEFINE_GUID(IID_IDirect3DRMVisualArray,     0xeb16cb13, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
     93 DEFINE_GUID(IID_IDirect3DRMLightArray,      0xeb16cb14, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
     94 DEFINE_GUID(IID_IDirect3DRMPickedArray,     0xeb16cb16, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
     95 DEFINE_GUID(IID_IDirect3DRMFaceArray,       0xeb16cb17, 0xd271, 0x11ce, 0xac, 0x48, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
     96 DEFINE_GUID(IID_IDirect3DRMAnimationArray,  0xd5f1cae0, 0x4bd7, 0x11d1, 0xb9, 0x74, 0x00, 0x60, 0x08, 0x3e, 0x45, 0xf3);
     97 DEFINE_GUID(IID_IDirect3DRMUserVisual,      0x59163de0, 0x6d43, 0x11cf, 0xac, 0x4a, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
     98 DEFINE_GUID(IID_IDirect3DRMShadow,          0xaf359780, 0x6ba3, 0x11cf, 0xac, 0x4a, 0x00, 0x00, 0xc0, 0x38, 0x25, 0xa1);
     99 DEFINE_GUID(IID_IDirect3DRMShadow2,         0x86b44e25, 0x9c82, 0x11d1, 0xbb, 0x0b, 0x00, 0xa0, 0xc9, 0x81, 0xa0, 0xa6);
    100 DEFINE_GUID(IID_IDirect3DRMInterpolator,    0x242f6bc1, 0x3849, 0x11d0, 0x9b, 0x6d, 0x00, 0x00, 0xc0, 0x78, 0x1b, 0xc3);
    101 DEFINE_GUID(IID_IDirect3DRMProgressiveMesh, 0x4516ec79, 0x8f20, 0x11d0, 0x9b, 0x6d, 0x00, 0x00, 0xc0, 0x78, 0x1b, 0xc3);
    102 DEFINE_GUID(IID_IDirect3DRMPicked2Array,    0x4516ec7b, 0x8f20, 0x11d0, 0x9b, 0x6d, 0x00, 0x00, 0xc0, 0x78, 0x1b, 0xc3);
    103 DEFINE_GUID(IID_IDirect3DRMClippedVisual,   0x5434e733, 0x6d66, 0x11d1, 0xbb, 0x0b, 0x00, 0x00, 0xf8, 0x75, 0x86, 0x5a);
    104 
    105 /*****************************************************************************
    106  * Predeclare the interfaces
    107  */
    108 
    109 typedef struct IDirect3DRMObject          *LPDIRECT3DRMOBJECT, **LPLPDIRECT3DRMOBJECT;
    110 typedef struct IDirect3DRMObject2         *LPDIRECT3DRMOBJECT2, **LPLPDIRECT3DRMOBJECT2;
    111 typedef struct IDirect3DRMDevice          *LPDIRECT3DRMDEVICE, **LPLPDIRECT3DRMDEVICE;
    112 typedef struct IDirect3DRMDevice2         *LPDIRECT3DRMDEVICE2, **LPLPDIRECT3DRMDEVICE2;
    113 typedef struct IDirect3DRMDevice3         *LPDIRECT3DRMDEVICE3, **LPLPDIRECT3DRMDEVICE3;
    114 typedef struct IDirect3DRMViewport        *LPDIRECT3DRMVIEWPORT, **LPLPDIRECT3DRMVIEWPORT;
    115 typedef struct IDirect3DRMViewport2       *LPDIRECT3DRMVIEWPORT2, **LPLPDIRECT3DRMVIEWPORT2;
    116 typedef struct IDirect3DRMFrame           *LPDIRECT3DRMFRAME, **LPLPDIRECT3DRMFRAME;
    117 typedef struct IDirect3DRMFrame2          *LPDIRECT3DRMFRAME2, **LPLPDIRECT3DRMFRAME2;
    118 typedef struct IDirect3DRMFrame3          *LPDIRECT3DRMFRAME3, **LPLPDIRECT3DRMFRAME3;
    119 typedef struct IDirect3DRMVisual          *LPDIRECT3DRMVISUAL, **LPLPDIRECT3DRMVISUAL;
    120 typedef struct IDirect3DRMMesh            *LPDIRECT3DRMMESH, **LPLPDIRECT3DRMMESH;
    121 typedef struct IDirect3DRMMeshBuilder     *LPDIRECT3DRMMESHBUILDER, **LPLPDIRECT3DRMMESHBUILDER;
    122 typedef struct IDirect3DRMMeshBuilder2    *LPDIRECT3DRMMESHBUILDER2, **LPLPDIRECT3DRMMESHBUILDER2;
    123 typedef struct IDirect3DRMMeshBuilder3    *LPDIRECT3DRMMESHBUILDER3, **LPLPDIRECT3DRMMESHBUILDER3;
    124 typedef struct IDirect3DRMFace            *LPDIRECT3DRMFACE, **LPLPDIRECT3DRMFACE;
    125 typedef struct IDirect3DRMFace2           *LPDIRECT3DRMFACE2, **LPLPDIRECT3DRMFACE2;
    126 typedef struct IDirect3DRMLight           *LPDIRECT3DRMLIGHT, **LPLPDIRECT3DRMLIGHT;
    127 typedef struct IDirect3DRMTexture         *LPDIRECT3DRMTEXTURE, **LPLPDIRECT3DRMTEXTURE;
    128 typedef struct IDirect3DRMTexture2        *LPDIRECT3DRMTEXTURE2, **LPLPDIRECT3DRMTEXTURE2;
    129 typedef struct IDirect3DRMTexture3        *LPDIRECT3DRMTEXTURE3, **LPLPDIRECT3DRMTEXTURE3;
    130 typedef struct IDirect3DRMWrap            *LPDIRECT3DRMWRAP, **LPLPDIRECT3DRMWRAP;
    131 typedef struct IDirect3DRMMaterial        *LPDIRECT3DRMMATERIAL, **LPLPDIRECT3DRMMATERIAL;
    132 typedef struct IDirect3DRMMaterial2       *LPDIRECT3DRMMATERIAL2, **LPLPDIRECT3DRMMATERIAL2;
    133 typedef struct IDirect3DRMAnimation       *LPDIRECT3DRMANIMATION, **LPLPDIRECT3DRMANIMATION;
    134 typedef struct IDirect3DRMAnimation2      *LPDIRECT3DRMANIMATION2, **LPLPDIRECT3DRMANIMATION2;
    135 typedef struct IDirect3DRMAnimationSet    *LPDIRECT3DRMANIMATIONSET, **LPLPDIRECT3DRMANIMATIONSET;
    136 typedef struct IDirect3DRMAnimationSet2   *LPDIRECT3DRMANIMATIONSET2, **LPLPDIRECT3DRMANIMATIONSET2;
    137 typedef struct IDirect3DRMUserVisual      *LPDIRECT3DRMUSERVISUAL, **LPLPDIRECT3DRMUSERVISUAL;
    138 typedef struct IDirect3DRMShadow          *LPDIRECT3DRMSHADOW, **LPLPDIRECT3DRMSHADOW;
    139 typedef struct IDirect3DRMShadow2         *LPDIRECT3DRMSHADOW2, **LPLPDIRECT3DRMSHADOW2;
    140 typedef struct IDirect3DRMArray           *LPDIRECT3DRMARRAY, **LPLPDIRECT3DRMARRAY;
    141 typedef struct IDirect3DRMObjectArray     *LPDIRECT3DRMOBJECTARRAY, **LPLPDIRECT3DRMOBJECTARRAY;
    142 typedef struct IDirect3DRMDeviceArray     *LPDIRECT3DRMDEVICEARRAY, **LPLPDIRECT3DRMDEVICEARRAY;
    143 typedef struct IDirect3DRMFaceArray       *LPDIRECT3DRMFACEARRAY, **LPLPDIRECT3DRMFACEARRAY;
    144 typedef struct IDirect3DRMViewportArray   *LPDIRECT3DRMVIEWPORTARRAY, **LPLPDIRECT3DRMVIEWPORTARRAY;
    145 typedef struct IDirect3DRMFrameArray      *LPDIRECT3DRMFRAMEARRAY, **LPLPDIRECT3DRMFRAMEARRAY;
    146 typedef struct IDirect3DRMAnimationArray  *LPDIRECT3DRMANIMATIONARRAY, **LPLPDIRECT3DRMANIMATIONARRAY;
    147 typedef struct IDirect3DRMVisualArray     *LPDIRECT3DRMVISUALARRAY, **LPLPDIRECT3DRMVISUALARRAY;
    148 typedef struct IDirect3DRMPickedArray     *LPDIRECT3DRMPICKEDARRAY, **LPLPDIRECT3DRMPICKEDARRAY;
    149 typedef struct IDirect3DRMPicked2Array    *LPDIRECT3DRMPICKED2ARRAY, **LPLPDIRECT3DRMPICKED2ARRAY;
    150 typedef struct IDirect3DRMLightArray      *LPDIRECT3DRMLIGHTARRAY, **LPLPDIRECT3DRMLIGHTARRAY;
    151 typedef struct IDirect3DRMProgressiveMesh *LPDIRECT3DRMPROGRESSIVEMESH, **LPLPDIRECT3DRMPROGRESSIVEMESH;
    152 typedef struct IDirect3DRMClippedVisual   *LPDIRECT3DRMCLIPPEDVISUAL, **LPLPDIRECT3DRMCLIPPEDVISUAL;
    153 
    154 /* ********************************************************************
    155    Types and structures
    156    ******************************************************************** */
    157 
    158 typedef void (__cdecl *D3DRMOBJECTCALLBACK)(struct IDirect3DRMObject *obj, void *arg);
    159 typedef void (__cdecl *D3DRMFRAMEMOVECALLBACK)(struct IDirect3DRMFrame *frame, void *ctx, D3DVALUE delta);
    160 typedef void (__cdecl *D3DRMFRAME3MOVECALLBACK)(struct IDirect3DRMFrame3 *frame, void *ctx, D3DVALUE delta);
    161 typedef void (__cdecl *D3DRMUPDATECALLBACK)(struct IDirect3DRMDevice *device, void *ctx, int count, D3DRECT *rects);
    162 typedef void (__cdecl *D3DRMDEVICE3UPDATECALLBACK)(struct IDirect3DRMDevice3 *device, void *ctx,
    163         int count, D3DRECT *rects);
    164 typedef int (__cdecl *D3DRMUSERVISUALCALLBACK)(struct IDirect3DRMUserVisual *visual, void *ctx,
    165         D3DRMUSERVISUALREASON reason, struct IDirect3DRMDevice *device, struct IDirect3DRMViewport *viewport);
    166 typedef HRESULT (__cdecl *D3DRMLOADTEXTURECALLBACK)(char *tex_name, void *arg, LPDIRECT3DRMTEXTURE *);
    167 typedef HRESULT (__cdecl *D3DRMLOADTEXTURE3CALLBACK)(char *tex_name, void *arg, LPDIRECT3DRMTEXTURE3 *);
    168 typedef void (__cdecl *D3DRMLOADCALLBACK)(struct IDirect3DRMObject *object, REFIID objectguid, void *arg);
    169 typedef HRESULT (__cdecl *D3DRMDOWNSAMPLECALLBACK)(struct IDirect3DRMTexture3 *texture, void *ctx,
    170         IDirectDrawSurface *src_surface, IDirectDrawSurface *dst_surface);
    171 typedef HRESULT (__cdecl *D3DRMVALIDATIONCALLBACK)(LPDIRECT3DRMTEXTURE3 lpDirect3DRMTexture, LPVOID pArg,
    172     DWORD dwFlags, DWORD dwcRects, LPRECT pRects);
    173 
    174 typedef struct _D3DRMPICKDESC
    175 {
    176     ULONG     ulFaceIdx;
    177     LONG      lGroupIdx;
    178     D3DVECTOR vPosition;
    179 } D3DRMPICKDESC, *LPD3DRMPICKDESC;
    180 
    181 typedef struct _D3DRMPICKDESC2
    182 {
    183     ULONG     ulFaceIdx;
    184     LONG      lGroupIdx;
    185     D3DVECTOR vPosition;
    186     D3DVALUE  tu;
    187     D3DVALUE  tv;
    188     D3DVECTOR dvNormal;
    189     D3DCOLOR  dcColor;
    190 } D3DRMPICKDESC2, *LPD3DRMPICKDESC2;
    191 
    192 /*****************************************************************************
    193  * IDirect3DRMObject interface
    194  */
    195 #ifdef WINE_NO_UNICODE_MACROS
    196 #undef GetClassName
    197 #endif
    198 #define INTERFACE IDirect3DRMObject
    199 DECLARE_INTERFACE_(IDirect3DRMObject,IUnknown)
    200 {
    201     /*** IUnknown methods ***/
    202     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
    203     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
    204     STDMETHOD_(ULONG,Release)(THIS) PURE;
    205     /*** IDirect3DRMObject methods ***/
    206     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
    207     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
    208     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
    209     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
    210     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
    211     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
    212     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
    213     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
    214 };
    215 #undef INTERFACE
    216 
    217 #if !defined(__cplusplus) || defined(CINTERFACE)
    218 /*** IUnknown methods ***/
    219 #define IDirect3DRMObject_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
    220 #define IDirect3DRMObject_AddRef(p)                    (p)->lpVtbl->AddRef(p)
    221 #define IDirect3DRMObject_Release(p)                   (p)->lpVtbl->Release(p)
    222 /*** IDirect3DRMObject methods ***/
    223 #define IDirect3DRMObject_Clone(p,a,b,c)               (p)->lpVtbl->Clone(p,a,b,c)
    224 #define IDirect3DRMObject_AddDestroyCallback(p,a,b)    (p)->lpVtbl->AddDestroyCallback(p,a,b)
    225 #define IDirect3DRMObject_DeleteDestroyCallback(p,a,b) (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
    226 #define IDirect3DRMObject_SetAppData(p,a)              (p)->lpVtbl->SetAppData(p,a)
    227 #define IDirect3DRMObject_GetAppData(p)                (p)->lpVtbl->GetAppData(p)
    228 #define IDirect3DRMObject_SetName(p,a)                 (p)->lpVtbl->SetName(p,a)
    229 #define IDirect3DRMObject_GetName(p,a,b)               (p)->lpVtbl->GetName(p,a,b)
    230 #define IDirect3DRMObject_GetClassName(p,a,b)          (p)->lpVtbl->GetClassName(p,a,b)
    231 #else
    232 /*** IUnknown methods ***/
    233 #define IDirect3DRMObject_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
    234 #define IDirect3DRMObject_AddRef(p)                    (p)->AddRef()
    235 #define IDirect3DRMObject_Release(p)                   (p)->Release()
    236 /*** IDirect3DRMObject methods ***/
    237 #define IDirect3DRMObject_Clone(p,a,b,c)               (p)->Clone(a,b,c)
    238 #define IDirect3DRMObject_AddDestroyCallback(p,a,b)    (p)->AddDestroyCallback(a,b)
    239 #define IDirect3DRMObject_DeleteDestroyCallback(p,a,b) (p)->DeleteDestroyCallback(a,b)
    240 #define IDirect3DRMObject_SetAppData(p,a)              (p)->SetAppData(a)
    241 #define IDirect3DRMObject_GetAppData(p)                (p)->GetAppData()
    242 #define IDirect3DRMObject_SetName(p,a)                 (p)->SetName(a)
    243 #define IDirect3DRMObject_GetName(p,a,b)               (p)->GetName(a,b)
    244 #define IDirect3DRMObject_GetClassName(p,a,b)          (p)->GetClassName(a,b)
    245 #endif
    246 
    247 /*****************************************************************************
    248  * IDirect3DRMObject2 interface
    249  */
    250 #ifdef WINE_NO_UNICODE_MACROS
    251 #undef GetClassName
    252 #endif
    253 #define INTERFACE IDirect3DRMObject2
    254 DECLARE_INTERFACE_(IDirect3DRMObject2,IUnknown)
    255 {
    256     /*** IUnknown methods ***/
    257     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
    258     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
    259     STDMETHOD_(ULONG,Release)(THIS) PURE;
    260     /*** IDirect3DRMObject2 methods ***/
    261     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK pFunc, LPVOID pArg) PURE;
    262     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
    263     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK pFunc, LPVOID pArg) PURE;
    264     STDMETHOD(GetClientData)(THIS_ DWORD id, LPVOID* ppData) PURE;
    265     STDMETHOD(GetDirect3DRM)(THIS_ struct IDirect3DRM **d3drm) PURE;
    266     STDMETHOD(GetName)(THIS_ LPDWORD pSize, LPSTR pName) PURE;
    267     STDMETHOD(SetClientData)(THIS_ DWORD id, LPVOID pData, DWORD flags) PURE;
    268     STDMETHOD(SetName)(THIS_ LPCSTR pName) PURE;
    269     STDMETHOD(GetAge)(THIS_ DWORD flags, LPDWORD pAge) PURE;
    270 };
    271 #undef INTERFACE
    272 
    273 #if !defined(__cplusplus) || defined(CINTERFACE)
    274 /*** IUnknown methods ***/
    275 #define IDirect3DRMObject2_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
    276 #define IDirect3DRMObject2_AddRef(p)                    (p)->lpVtbl->AddRef(p)
    277 #define IDirect3DRMObject2_Release(p)                   (p)->lpVtbl->Release(p)
    278 /*** IDirect3DRMObject2 methods ***/
    279 #define IDirect3DRMObject2_AddDestroyCallback(p,a,b)    (p)->lpVtbl->AddDestroyCallback(p,a,b)
    280 #define IDirect3DRMObject2_Clone(p,a,b,c)               (p)->lpVtbl->Clone(p,a,b,c)
    281 #define IDirect3DRMObject2_DeleteDestroyCallback(p,a,b) (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
    282 #define IDirect3DRMObject2_GetClientData(p,a,b)         (p)->lpVtbl->SetClientData(p,a,b)
    283 #define IDirect3DRMObject2_GetDirect3DRM(p,a)           (p)->lpVtbl->GetDirect3DRM(p,a)
    284 #define IDirect3DRMObject2_GetName(p,a,b)               (p)->lpVtbl->GetName(p,a,b)
    285 #define IDirect3DRMObject2_SetClientData(p,a,b,c)       (p)->lpVtbl->SetClientData(p,a,b,c)
    286 #define IDirect3DRMObject2_SetName(p,a)                 (p)->lpVtbl->SetName(p,a)
    287 #define IDirect3DRMObject2_GetAge(p,a,b)                (p)->lpVtbl->GetAge(p,a,b)
    288 #else
    289 /*** IUnknown methods ***/
    290 #define IDirect3DRMObject2_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
    291 #define IDirect3DRMObject2_AddRef(p)                    (p)->AddRef()
    292 #define IDirect3DRMObject2_Release(p)                   (p)->Release()
    293 /*** IDirect3DRMObject2 methods ***/
    294 #define IDirect3DRMObject2_AddDestroyCallback(p,a,b)    (p)->AddDestroyCallback(a,b)
    295 #define IDirect3DRMObject2_Clone(p,a,b,c)               (p)->Clone(a,b,c)
    296 #define IDirect3DRMObject2_DeleteDestroyCallback(p,a,b) (p)->DeleteDestroyCallback(a,b)
    297 #define IDirect3DRMObject2_GetClientData(p,a,b)         (p)->SetClientData(a,b)
    298 #define IDirect3DRMObject2_GetDirect3DRM(p,a)           (p)->GetDirect3DRM(a)
    299 #define IDirect3DRMObject2_GetName(p,a,b)               (p)->GetName(a,b)
    300 #define IDirect3DRMObject2_SetClientData(p,a,b,c)       (p)->SetClientData(a,b,c)
    301 #define IDirect3DRMObject2_SetName(p,a)                 (p)->SetName(a)
    302 #define IDirect3DRMObject2_GetAge(p,a,b)                (p)->GetAge(a,b)
    303 #endif
    304 
    305 /*****************************************************************************
    306  * IDirect3DRMVisual interface
    307  */
    308 #define INTERFACE IDirect3DRMVisual
    309 DECLARE_INTERFACE_(IDirect3DRMVisual,IDirect3DRMObject)
    310 {
    311     /*** IUnknown methods ***/
    312     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
    313     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
    314     STDMETHOD_(ULONG,Release)(THIS) PURE;
    315     /*** IDirect3DRMObject methods ***/
    316     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
    317     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
    318     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
    319     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
    320     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
    321     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
    322     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
    323     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
    324 };
    325 #undef INTERFACE
    326 
    327 #if !defined(__cplusplus) || defined(CINTERFACE)
    328 /*** IUnknown methods ***/
    329 #define IDirect3DRMVisual_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
    330 #define IDirect3DRMVisual_AddRef(p)                    (p)->lpVtbl->AddRef(p)
    331 #define IDirect3DRMVisual_Release(p)                   (p)->lpVtbl->Release(p)
    332 /*** IDirect3DRMObject methods ***/
    333 #define IDirect3DRMVisual_Clone(p,a,b,c)               (p)->lpVtbl->Clone(p,a,b,c)
    334 #define IDirect3DRMVisual_AddDestroyCallback(p,a,b)    (p)->lpVtbl->AddDestroyCallback(p,a,b)
    335 #define IDirect3DRMVisual_DeleteDestroyCallback(p,a,b) (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
    336 #define IDirect3DRMVisual_SetAppData(p,a)              (p)->lpVtbl->SetAppData(p,a)
    337 #define IDirect3DRMVisual_GetAppData(p)                (p)->lpVtbl->GetAppData(p)
    338 #define IDirect3DRMVisual_SetName(p,a)                 (p)->lpVtbl->SetName(p,a)
    339 #define IDirect3DRMVisual_GetName(p,a,b)               (p)->lpVtbl->GetName(p,a,b)
    340 #define IDirect3DRMVisual_GetClassName(p,a,b)          (p)->lpVtbl->GetClassName(p,a,b)
    341 #else
    342 /*** IUnknown methods ***/
    343 #define IDirect3DRMVisual_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
    344 #define IDirect3DRMVisual_AddRef(p)                    (p)->AddRef()
    345 #define IDirect3DRMVisual_Release(p)                   (p)->Release()
    346 /*** IDirect3DRMObject methods ***/
    347 #define IDirect3DRMVisual_Clone(p,a,b,c)               (p)->Clone(a,b,c)
    348 #define IDirect3DRMVisual_AddDestroyCallback(p,a,b)    (p)->AddDestroyCallback(a,b)
    349 #define IDirect3DRMVisual_DeleteDestroyCallback(p,a,b) (p)->DeleteDestroyCallback(a,b)
    350 #define IDirect3DRMVisual_SetAppData(p,a)              (p)->SetAppData(a)
    351 #define IDirect3DRMVisual_GetAppData(p)                (p)->GetAppData()
    352 #define IDirect3DRMVisual_SetName(p,a)                 (p)->SetName(a)
    353 #define IDirect3DRMVisual_GetName(p,a,b)               (p)->GetName(a,b)
    354 #define IDirect3DRMVisual_GetClassName(p,a,b)          (p)->GetClassName(a,b)
    355 #endif
    356 
    357 /*****************************************************************************
    358  * IDirect3DRMDevice interface
    359  */
    360 #ifdef WINE_NO_UNICODE_MACROS
    361 #undef GetClassName
    362 #endif
    363 #define INTERFACE IDirect3DRMDevice
    364 DECLARE_INTERFACE_(IDirect3DRMDevice,IUnknown)
    365 {
    366     /*** IUnknown methods ***/
    367     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
    368     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
    369     STDMETHOD_(ULONG,Release)(THIS) PURE;
    370     /*** IDirect3DRMObject methods ***/
    371     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
    372     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK pFunc, LPVOID pArg) PURE;
    373     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK pFunc, LPVOID pArg) PURE;
    374     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
    375     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
    376     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
    377     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
    378     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
    379     /*** IDirect3DRMDevice methods ***/
    380     STDMETHOD(Init)(THIS_ ULONG width, ULONG height) PURE;
    381     STDMETHOD(InitFromD3D)(THIS_ IDirect3D *d3d, IDirect3DDevice *d3d_device) PURE;
    382     STDMETHOD(InitFromClipper)(THIS_ IDirectDrawClipper *clipper, GUID *guid, int width, int height) PURE;
    383     STDMETHOD(Update)(THIS) PURE;
    384     STDMETHOD(AddUpdateCallback)(THIS_ D3DRMUPDATECALLBACK, LPVOID arg) PURE;
    385     STDMETHOD(DeleteUpdateCallback)(THIS_ D3DRMUPDATECALLBACK, LPVOID arg) PURE;
    386     STDMETHOD(SetBufferCount)(THIS_ DWORD) PURE;
    387     STDMETHOD_(DWORD, GetBufferCount)(THIS) PURE;
    388     STDMETHOD(SetDither)(THIS_ WINBOOL) PURE;
    389     STDMETHOD(SetShades)(THIS_ DWORD) PURE;
    390     STDMETHOD(SetQuality)(THIS_ D3DRMRENDERQUALITY) PURE;
    391     STDMETHOD(SetTextureQuality)(THIS_ D3DRMTEXTUREQUALITY) PURE;
    392     STDMETHOD(GetViewports)(THIS_ LPDIRECT3DRMVIEWPORTARRAY *return_views) PURE;
    393     STDMETHOD_(WINBOOL, GetDither)(THIS) PURE;
    394     STDMETHOD_(DWORD, GetShades)(THIS) PURE;
    395     STDMETHOD_(DWORD, GetHeight)(THIS) PURE;
    396     STDMETHOD_(DWORD, GetWidth)(THIS) PURE;
    397     STDMETHOD_(DWORD, GetTrianglesDrawn)(THIS) PURE;
    398     STDMETHOD_(DWORD, GetWireframeOptions)(THIS) PURE;
    399     STDMETHOD_(D3DRMRENDERQUALITY, GetQuality)(THIS) PURE;
    400     STDMETHOD_(D3DCOLORMODEL, GetColorModel)(THIS) PURE;
    401     STDMETHOD_(D3DRMTEXTUREQUALITY, GetTextureQuality)(THIS) PURE;
    402     STDMETHOD(GetDirect3DDevice)(THIS_ IDirect3DDevice **d3d_device) PURE;
    403 };
    404 #undef INTERFACE
    405 
    406 #if !defined(__cplusplus) || defined(CINTERFACE)
    407 /*** IUnknown methods ***/
    408 #define IDirect3DRMDevice_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
    409 #define IDirect3DRMDevice_AddRef(p)                    (p)->lpVtbl->AddRef(p)
    410 #define IDirect3DRMDevice_Release(p)                   (p)->lpVtbl->Release(p)
    411 /*** IDirect3DRMObject methods ***/
    412 #define IDirect3DRMDevice_Clone(p,a,b,c)               (p)->lpVtbl->Clone(p,a,b,c)
    413 #define IDirect3DRMDevice_AddDestroyCallback(p,a,b)    (p)->lpVtbl->AddDestroyCallback(p,a,b)
    414 #define IDirect3DRMDevice_DeleteDestroyCallback(p,a,b) (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
    415 #define IDirect3DRMDevice_SetAppData(p,a)              (p)->lpVtbl->SetAppData(p,a)
    416 #define IDirect3DRMDevice_GetAppData(p)                (p)->lpVtbl->GetAppData(p)
    417 #define IDirect3DRMDevice_SetName(p,a)                 (p)->lpVtbl->SetName(p,a)
    418 #define IDirect3DRMDevice_GetName(p,a,b)               (p)->lpVtbl->GetName(p,a,b)
    419 #define IDirect3DRMDevice_GetClassName(p,a,b)          (p)->lpVtbl->GetClassName(p,a,b)
    420 /*** IDirect3DRMDevice methods ***/
    421 #define IDirect3DRMDevice_Init(p,a,b)                  (p)->lpVtbl->Init(p,a,b)
    422 #define IDirect3DRMDevice_InitFromD3D(p,a,b)           (p)->lpVtbl->InitFromD3D(p,a,b)
    423 #define IDirect3DRMDevice_InitFromClipper(p,a,b,c,d)   (p)->lpVtbl->InitFromClipper(p,a,b,c,d)
    424 #define IDirect3DRMDevice_Update(p)                    (p)->lpVtbl->Update(p)
    425 #define IDirect3DRMDevice_AddUpdateCallback(p,a,b)     (p)->lpVtbl->AddUpdateCallback(p,a,b)
    426 #define IDirect3DRMDevice_DeleteUpdateCallback(p,a,b)  (p)->lpVtbl->DeleteUpdateCallback(p,a,b)
    427 #define IDirect3DRMDevice_SetBufferCount(p,a)          (p)->lpVtbl->SetBufferCount(p,a)
    428 #define IDirect3DRMDevice_GetBufferCount(p)            (p)->lpVtbl->GetBufferCount(p)
    429 #define IDirect3DRMDevice_SetDither(p,a)               (p)->lpVtbl->SetDither(p,a)
    430 #define IDirect3DRMDevice_SetShades(p,a)               (p)->lpVtbl->SetShades(p,a)
    431 #define IDirect3DRMDevice_SetQuality(p,a)              (p)->lpVtbl->SetQuality(p,a)
    432 #define IDirect3DRMDevice_SetTextureQuality(p,a)       (p)->lpVtbl->SetTextureQuality(p,a)
    433 #define IDirect3DRMDevice_GetViewports(p,a)            (p)->lpVtbl->GetViewports(p,a)
    434 #define IDirect3DRMDevice_GetDither(p)                 (p)->lpVtbl->GetDither(p)
    435 #define IDirect3DRMDevice_GetShades(p)                 (p)->lpVtbl->GetShades(p)
    436 #define IDirect3DRMDevice_GetHeight(p)                 (p)->lpVtbl->GetHeight(p)
    437 #define IDirect3DRMDevice_GetWidth(p)                  (p)->lpVtbl->GetWidth(p)
    438 #define IDirect3DRMDevice_GetTrianglesDrawn(p)         (p)->lpVtbl->GetTrianglesDrawn(p)
    439 #define IDirect3DRMDevice_GetWireframeOptions(p)       (p)->lpVtbl->GetWireframeOptions(p)
    440 #define IDirect3DRMDevice_GetQuality(p)                (p)->lpVtbl->GetQuality(p)
    441 #define IDirect3DRMDevice_GetColorModel(p)             (p)->lpVtbl->GetColorModel(p)
    442 #define IDirect3DRMDevice_GetTextureQuality(p)         (p)->lpVtbl->GetTextureQuality(p)
    443 #define IDirect3DRMDevice_GetDirect3DDevice(p,a)       (p)->lpVtbl->GetDirect3DDevice(p,a)
    444 #else
    445 /*** IUnknown methods ***/
    446 #define IDirect3DRMDevice_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
    447 #define IDirect3DRMDevice_AddRef(p)                    (p)->AddRef()
    448 #define IDirect3DRMDevice_Release(p)                   (p)->Release()
    449 /*** IDirect3DRMObject methods ***/
    450 #define IDirect3DRMDevice_Clone(p,a,b,c)               (p)->Clone(a,b,c)
    451 #define IDirect3DRMDevice_AddDestroyCallback(p,a,b)    (p)->AddDestroyCallback(a,b)
    452 #define IDirect3DRMDevice_DeleteDestroyCallback(p,a,b) (p)->DeleteDestroyCallback(a,b)
    453 #define IDirect3DRMDevice_SetAppData(p,a)              (p)->SetAppData(a)
    454 #define IDirect3DRMDevice_GetAppData(p)                (p)->GetAppData()
    455 #define IDirect3DRMDevice_SetName(p,a)                 (p)->SetName(a)
    456 #define IDirect3DRMDevice_GetName(p,a,b)               (p)->GetName(a,b)
    457 #define IDirect3DRMDevice_GetClassName(p,a,b)          (p)->GetClassName(a,b)
    458 /*** IDirect3DRMDevice methods ***/
    459 #define IDirect3DRMDevice_Init(p,a,b)                  (p)->Init(a,b)
    460 #define IDirect3DRMDevice_InitFromD3D(p,a,b)           (p)->InitFromD3D(a,b)
    461 #define IDirect3DRMDevice_InitFromClipper(p,a,b,c,d)   (p)->InitFromClipper(a,b,c,d)
    462 #define IDirect3DRMDevice_Update(p)                    (p)->Update()
    463 #define IDirect3DRMDevice_AddUpdateCallback(p,a,b)     (p)->AddUpdateCallback(a,b)
    464 #define IDirect3DRMDevice_DeleteUpdateCallback(p,a,b)  (p)->DeleteUpdateCallback(a,b)
    465 #define IDirect3DRMDevice_SetBufferCount(p,a)          (p)->SetBufferCount(a)
    466 #define IDirect3DRMDevice_GetBufferCount(p)            (p)->GetBufferCount()
    467 #define IDirect3DRMDevice_SetDither(p,a)               (p)->SetDither(a)
    468 #define IDirect3DRMDevice_SetShades(p,a)               (p)->SetShades(a)
    469 #define IDirect3DRMDevice_SetQuality(p,a)              (p)->SetQuality(a)
    470 #define IDirect3DRMDevice_SetTextureQuality(p,a)       (p)->SetTextureQuality(a)
    471 #define IDirect3DRMDevice_GetViewports(p,a)            (p)->GetViewports(a)
    472 #define IDirect3DRMDevice_GetDither(p)                 (p)->GetDither()
    473 #define IDirect3DRMDevice_GetShades(p)                 (p)->GetShades()
    474 #define IDirect3DRMDevice_GetHeight(p)                 (p)->GetHeight()
    475 #define IDirect3DRMDevice_GetWidth(p)                  (p)->GetWidth()
    476 #define IDirect3DRMDevice_GetTrianglesDrawn(p)         (p)->GetTrianglesDrawn()
    477 #define IDirect3DRMDevice_GetWireframeOptions(p)       (p)->GetWireframeOptions()
    478 #define IDirect3DRMDevice_GetQuality(p)                (p)->GetQuality()
    479 #define IDirect3DRMDevice_GetColorModel(p)             (p)->GetColorModel()
    480 #define IDirect3DRMDevice_GetTextureQuality(p)         (p)->GetTextureQuality()
    481 #define IDirect3DRMDevice_GetDirect3DDevice(p,a)       (p)->GetDirect3DDevice(a)
    482 #endif
    483 
    484 /*****************************************************************************
    485  * IDirect3DRMDevice2 interface
    486  */
    487 #ifdef WINE_NO_UNICODE_MACROS
    488 #undef GetClassName
    489 #endif
    490 #define INTERFACE IDirect3DRMDevice2
    491 DECLARE_INTERFACE_(IDirect3DRMDevice2,IDirect3DRMDevice)
    492 {
    493     /*** IUnknown methods ***/
    494     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
    495     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
    496     STDMETHOD_(ULONG,Release)(THIS) PURE;
    497     /*** IDirect3DRMObject methods ***/
    498     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
    499     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK pFunc, LPVOID pArg) PURE;
    500     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK pFunc, LPVOID pArg) PURE;
    501     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
    502     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
    503     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
    504     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
    505     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
    506     /*** IDirect3DRMDevice methods ***/
    507     STDMETHOD(Init)(THIS_ ULONG width, ULONG height) PURE;
    508     STDMETHOD(InitFromD3D)(THIS_ IDirect3D *d3d, IDirect3DDevice *d3d_device) PURE;
    509     STDMETHOD(InitFromClipper)(THIS_ IDirectDrawClipper *clipper, GUID *guid, int width, int height) PURE;
    510     STDMETHOD(Update)(THIS) PURE;
    511     STDMETHOD(AddUpdateCallback)(THIS_ D3DRMUPDATECALLBACK, LPVOID arg) PURE;
    512     STDMETHOD(DeleteUpdateCallback)(THIS_ D3DRMUPDATECALLBACK, LPVOID arg) PURE;
    513     STDMETHOD(SetBufferCount)(THIS_ DWORD) PURE;
    514     STDMETHOD_(DWORD, GetBufferCount)(THIS) PURE;
    515     STDMETHOD(SetDither)(THIS_ WINBOOL) PURE;
    516     STDMETHOD(SetShades)(THIS_ DWORD) PURE;
    517     STDMETHOD(SetQuality)(THIS_ D3DRMRENDERQUALITY) PURE;
    518     STDMETHOD(SetTextureQuality)(THIS_ D3DRMTEXTUREQUALITY) PURE;
    519     STDMETHOD(GetViewports)(THIS_ LPDIRECT3DRMVIEWPORTARRAY *return_views) PURE;
    520     STDMETHOD_(WINBOOL, GetDither)(THIS) PURE;
    521     STDMETHOD_(DWORD, GetShades)(THIS) PURE;
    522     STDMETHOD_(DWORD, GetHeight)(THIS) PURE;
    523     STDMETHOD_(DWORD, GetWidth)(THIS) PURE;
    524     STDMETHOD_(DWORD, GetTrianglesDrawn)(THIS) PURE;
    525     STDMETHOD_(DWORD, GetWireframeOptions)(THIS) PURE;
    526     STDMETHOD_(D3DRMRENDERQUALITY, GetQuality)(THIS) PURE;
    527     STDMETHOD_(D3DCOLORMODEL, GetColorModel)(THIS) PURE;
    528     STDMETHOD_(D3DRMTEXTUREQUALITY, GetTextureQuality)(THIS) PURE;
    529     STDMETHOD(GetDirect3DDevice)(THIS_ IDirect3DDevice **d3d_device) PURE;
    530     /*** IDirect3DRMDevice2 methods ***/
    531     STDMETHOD(InitFromD3D2)(THIS_ IDirect3D2 *d3d, IDirect3DDevice2 *device) PURE;
    532     STDMETHOD(InitFromSurface)(THIS_ GUID *guid, IDirectDraw *ddraw, IDirectDrawSurface *surface) PURE;
    533     STDMETHOD(SetRenderMode)(THIS_ DWORD flags) PURE;
    534     STDMETHOD_(DWORD, GetRenderMode)(THIS) PURE;
    535     STDMETHOD(GetDirect3DDevice2)(THIS_ IDirect3DDevice2 **device) PURE;
    536 };
    537 #undef INTERFACE
    538 
    539 #if !defined(__cplusplus) || defined(CINTERFACE)
    540 /*** IUnknown methods ***/
    541 #define IDirect3DRMDevice2_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
    542 #define IDirect3DRMDevice2_AddRef(p)                    (p)->lpVtbl->AddRef(p)
    543 #define IDirect3DRMDevice2_Release(p)                   (p)->lpVtbl->Release(p)
    544 /*** IDirect3DRMObject methods ***/
    545 #define IDirect3DRMDevice2_Clone(p,a,b,c)               (p)->lpVtbl->Clone(p,a,b,c)
    546 #define IDirect3DRMDevice2_AddDestroyCallback(p,a,b)    (p)->lpVtbl->AddDestroyCallback(p,a,b)
    547 #define IDirect3DRMDevice2_DeleteDestroyCallback(p,a,b) (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
    548 #define IDirect3DRMDevice2_SetAppData(p,a)              (p)->lpVtbl->SetAppData(p,a)
    549 #define IDirect3DRMDevice2_GetAppData(p)                (p)->lpVtbl->GetAppData(p)
    550 #define IDirect3DRMDevice2_SetName(p,a)                 (p)->lpVtbl->SetName(p,a)
    551 #define IDirect3DRMDevice2_GetName(p,a,b)               (p)->lpVtbl->GetName(p,a,b)
    552 #define IDirect3DRMDevice2_GetClassName(p,a,b)          (p)->lpVtbl->GetClassName(p,a,b)
    553 /*** IDirect3DRMDevice methods ***/
    554 #define IDirect3DRMDevice2_Init(p,a,b)                  (p)->lpVtbl->Init(p,a,b)
    555 #define IDirect3DRMDevice2_InitFromD3D(p,a,b)           (p)->lpVtbl->InitFromD3D(p,a,b)
    556 #define IDirect3DRMDevice2_InitFromClipper(p,a,b,c,d)   (p)->lpVtbl->InitFromClipper(p,a,b,c,d)
    557 #define IDirect3DRMDevice2_Update(p)                    (p)->lpVtbl->Update(p)
    558 #define IDirect3DRMDevice2_AddUpdateCallback(p,a,b)     (p)->lpVtbl->AddUpdateCallback(p,a,b)
    559 #define IDirect3DRMDevice2_DeleteUpdateCallback(p,a,b)  (p)->lpVtbl->DeleteUpdateCallback(p,a,b)
    560 #define IDirect3DRMDevice2_SetBufferCount(p,a)          (p)->lpVtbl->SetBufferCount(p,a)
    561 #define IDirect3DRMDevice2_GetBufferCount(p)            (p)->lpVtbl->GetBufferCount(p)
    562 #define IDirect3DRMDevice2_SetDither(p,a)               (p)->lpVtbl->SetDither(p,a)
    563 #define IDirect3DRMDevice2_SetShades(p,a)               (p)->lpVtbl->SetShades(p,a)
    564 #define IDirect3DRMDevice2_SetQuality(p,a)              (p)->lpVtbl->SetQuality(p,a)
    565 #define IDirect3DRMDevice2_SetTextureQuality(p,a)       (p)->lpVtbl->SetTextureQuality(p,a)
    566 #define IDirect3DRMDevice2_GetViewports(p,a)            (p)->lpVtbl->GetViewports(p,a)
    567 #define IDirect3DRMDevice2_GetDither(p)                 (p)->lpVtbl->GetDither(p)
    568 #define IDirect3DRMDevice2_GetShades(p)                 (p)->lpVtbl->GetShades(p)
    569 #define IDirect3DRMDevice2_GetHeight(p)                 (p)->lpVtbl->GetHeight(p)
    570 #define IDirect3DRMDevice2_GetWidth(p)                  (p)->lpVtbl->GetWidth(p)
    571 #define IDirect3DRMDevice2_GetTrianglesDrawn(p)         (p)->lpVtbl->GetTrianglesDrawn(p)
    572 #define IDirect3DRMDevice2_GetWireframeOptions(p)       (p)->lpVtbl->GetWireframeOptions(p)
    573 #define IDirect3DRMDevice2_GetQuality(p)                (p)->lpVtbl->GetQuality(p)
    574 #define IDirect3DRMDevice2_GetColorModel(p)             (p)->lpVtbl->GetColorModel(p)
    575 #define IDirect3DRMDevice2_GetTextureQuality(p)         (p)->lpVtbl->GetTextureQuality(p)
    576 #define IDirect3DRMDevice2_GetDirect3DDevice(p,a)       (p)->lpVtbl->GetDirect3DDevice(p,a)
    577 /*** IDirect3DRMDevice2 methods ***/
    578 #define IDirect3DRMDevice2_InitFromD3D2(p,a,b)          (p)->lpVtbl->InitFromD3D2(p,a,b)
    579 #define IDirect3DRMDevice2_InitFromSurface(p,a,b,c)     (p)->lpVtbl->InitFromSurface(p,a,b,c)
    580 #define IDirect3DRMDevice2_SetRenderMode(p,a)           (p)->lpVtbl->SetRenderMode(p,a)
    581 #define IDirect3DRMDevice2_GetRenderMode(p)             (p)->lpVtbl->GetRenderMode(p)
    582 #define IDirect3DRMDevice2_GetDirect3DDevice2(p,a)      (p)->lpVtbl->GetDirect3DDevice2(p,a)
    583 #else
    584 /*** IUnknown methods ***/
    585 #define IDirect3DRMDevice2_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
    586 #define IDirect3DRMDevice2_AddRef(p)                    (p)->AddRef()
    587 #define IDirect3DRMDevice2_Release(p)                   (p)->Release()
    588 /*** IDirect3DRMObject methods ***/
    589 #define IDirect3DRMDevice2_Clone(p,a,b,c)               (p)->Clone(a,b,c)
    590 #define IDirect3DRMDevice2_AddDestroyCallback(p,a,b)    (p)->AddDestroyCallback(a,b)
    591 #define IDirect3DRMDevice2_DeleteDestroyCallback(p,a,b) (p)->DeleteDestroyCallback(a,b)
    592 #define IDirect3DRMDevice2_SetAppData(p,a)              (p)->SetAppData(a)
    593 #define IDirect3DRMDevice2_GetAppData(p)                (p)->GetAppData()
    594 #define IDirect3DRMDevice2_SetName(p,a)                 (p)->SetName(a)
    595 #define IDirect3DRMDevice2_GetName(p,a,b)               (p)->GetName(a,b)
    596 #define IDirect3DRMDevice2_GetClassName(p,a,b)          (p)->GetClassName(a,b)
    597 /*** IDirect3DRMDevice methods ***/
    598 #define IDirect3DRMDevice2_Init(p,a,b)                  (p)->Init(a,b)
    599 #define IDirect3DRMDevice2_InitFromD3D(p,a,b)           (p)->InitFromD3D(a,b)
    600 #define IDirect3DRMDevice2_InitFromClipper(p,a,b,c,d)   (p)->InitFromClipper(a,b,c,d)
    601 #define IDirect3DRMDevice2_Update(p)                    (p)->Update()
    602 #define IDirect3DRMDevice2_AddUpdateCallback(p,a,b)     (p)->AddUpdateCallback(a,b)
    603 #define IDirect3DRMDevice2_DeleteUpdateCallback(p,a,b)  (p)->DeleteUpdateCallback(a,b)
    604 #define IDirect3DRMDevice2_SetBufferCount(p,a)          (p)->SetBufferCount(a)
    605 #define IDirect3DRMDevice2_GetBufferCount(p)            (p)->GetBufferCount()
    606 #define IDirect3DRMDevice2_SetDither(p,a)               (p)->SetDither(a)
    607 #define IDirect3DRMDevice2_SetShades(p,a)               (p)->SetShades(a)
    608 #define IDirect3DRMDevice2_SetQuality(p,a)              (p)->SetQuality(a)
    609 #define IDirect3DRMDevice2_SetTextureQuality(p,a)       (p)->SetTextureQuality(a)
    610 #define IDirect3DRMDevice2_GetViewports(p,a)            (p)->GetViewports(a)
    611 #define IDirect3DRMDevice2_GetDither(p)                 (p)->GetDither()
    612 #define IDirect3DRMDevice2_GetShades(p)                 (p)->GetShades()
    613 #define IDirect3DRMDevice2_GetHeight(p)                 (p)->GetHeight()
    614 #define IDirect3DRMDevice2_GetWidth(p)                  (p)->GetWidth()
    615 #define IDirect3DRMDevice2_GetTrianglesDrawn(p)         (p)->GetTrianglesDrawn()
    616 #define IDirect3DRMDevice2_GetWireframeOptions(p)       (p)->GetWireframeOptions()
    617 #define IDirect3DRMDevice2_GetQuality(p)                (p)->GetQuality()
    618 #define IDirect3DRMDevice2_GetColorModel(p)             (p)->GetColorModel()
    619 #define IDirect3DRMDevice2_GetTextureQuality(p)         (p)->GetTextureQuality()
    620 #define IDirect3DRMDevice2_GetDirect3DDevice(p,a)       (p)->GetDirect3DDevice(a)
    621 /*** IDirect3DRMDevice2 methods ***/
    622 #define IDirect3DRMDevice2_InitFromD3D2(p,a,b)          (p)->InitFromD3D2(a,b)
    623 #define IDirect3DRMDevice2_InitFromSurface(p,a,b,c)     (p)->InitFromSurface(a,b,c)
    624 #define IDirect3DRMDevice2_SetRenderMode(p,a)           (p)->SetRenderMode(a)
    625 #define IDirect3DRMDevice2_GetRenderMode(p)             (p)->GetRenderMode()
    626 #define IDirect3DRMDevice2_GetDirect3DDevice2(p,a)      (p)->GetDirect3DDevice2(a)
    627 #endif
    628 
    629 /*****************************************************************************
    630  * IDirect3DRMDevice3 interface
    631  */
    632 #ifdef WINE_NO_UNICODE_MACROS
    633 #undef GetClassName
    634 #endif
    635 #define INTERFACE IDirect3DRMDevice3
    636 DECLARE_INTERFACE_(IDirect3DRMDevice3,IDirect3DRMObject)
    637 {
    638     /*** IUnknown methods ***/
    639     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
    640     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
    641     STDMETHOD_(ULONG,Release)(THIS) PURE;
    642     /*** IDirect3DRMObject methods ***/
    643     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
    644     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK pFunc, LPVOID pArg) PURE;
    645     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK pFunc, LPVOID pArg) PURE;
    646     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
    647     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
    648     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
    649     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
    650     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
    651     /*** IDirect3DRMDevice methods ***/
    652     STDMETHOD(Init)(THIS_ ULONG width, ULONG height) PURE;
    653     STDMETHOD(InitFromD3D)(THIS_ IDirect3D *d3d, IDirect3DDevice *d3d_device) PURE;
    654     STDMETHOD(InitFromClipper)(THIS_ IDirectDrawClipper *clipper, GUID *guid, int width, int height) PURE;
    655     STDMETHOD(Update)(THIS) PURE;
    656     STDMETHOD(AddUpdateCallback)(THIS_ D3DRMUPDATECALLBACK, LPVOID arg) PURE;
    657     STDMETHOD(DeleteUpdateCallback)(THIS_ D3DRMUPDATECALLBACK, LPVOID arg) PURE;
    658     STDMETHOD(SetBufferCount)(THIS_ DWORD) PURE;
    659     STDMETHOD_(DWORD, GetBufferCount)(THIS) PURE;
    660     STDMETHOD(SetDither)(THIS_ WINBOOL) PURE;
    661     STDMETHOD(SetShades)(THIS_ DWORD) PURE;
    662     STDMETHOD(SetQuality)(THIS_ D3DRMRENDERQUALITY) PURE;
    663     STDMETHOD(SetTextureQuality)(THIS_ D3DRMTEXTUREQUALITY) PURE;
    664     STDMETHOD(GetViewports)(THIS_ LPDIRECT3DRMVIEWPORTARRAY *return_views) PURE;
    665     STDMETHOD_(WINBOOL, GetDither)(THIS) PURE;
    666     STDMETHOD_(DWORD, GetShades)(THIS) PURE;
    667     STDMETHOD_(DWORD, GetHeight)(THIS) PURE;
    668     STDMETHOD_(DWORD, GetWidth)(THIS) PURE;
    669     STDMETHOD_(DWORD, GetTrianglesDrawn)(THIS) PURE;
    670     STDMETHOD_(DWORD, GetWireframeOptions)(THIS) PURE;
    671     STDMETHOD_(D3DRMRENDERQUALITY, GetQuality)(THIS) PURE;
    672     STDMETHOD_(D3DCOLORMODEL, GetColorModel)(THIS) PURE;
    673     STDMETHOD_(D3DRMTEXTUREQUALITY, GetTextureQuality)(THIS) PURE;
    674     STDMETHOD(GetDirect3DDevice)(THIS_ IDirect3DDevice **d3d_device) PURE;
    675     /*** IDirect3DRMDevice2 methods ***/
    676     STDMETHOD(InitFromD3D2)(THIS_ IDirect3D2 *d3d, IDirect3DDevice2 *device) PURE;
    677     STDMETHOD(InitFromSurface)(THIS_ GUID *guid, IDirectDraw *ddraw, IDirectDrawSurface *surface) PURE;
    678     STDMETHOD(SetRenderMode)(THIS_ DWORD flags) PURE;
    679     STDMETHOD_(DWORD, GetRenderMode)(THIS) PURE;
    680     STDMETHOD(GetDirect3DDevice2)(THIS_ IDirect3DDevice2 **device) PURE;
    681     /*** IDirect3DRMDevice3 methods ***/
    682     STDMETHOD(FindPreferredTextureFormat)(THIS_ DWORD BitDepths, DWORD flags, DDPIXELFORMAT *format) PURE;
    683     STDMETHOD(RenderStateChange)(THIS_ D3DRENDERSTATETYPE drsType, DWORD val, DWORD flags) PURE;
    684     STDMETHOD(LightStateChange)(THIS_ D3DLIGHTSTATETYPE drsType, DWORD val, DWORD flags) PURE;
    685     STDMETHOD(GetStateChangeOptions)(THIS_ DWORD StateClass, DWORD StateNum, LPDWORD pFlags) PURE;
    686     STDMETHOD(SetStateChangeOptions)(THIS_ DWORD StateClass, DWORD StateNum, DWORD flags) PURE;
    687 };
    688 #undef INTERFACE
    689 
    690 #if !defined(__cplusplus) || defined(CINTERFACE)
    691 /*** IUnknown methods ***/
    692 #define IDirect3DRMDevice3_QueryInterface(p,a,b)               (p)->lpVtbl->QueryInterface(p,a,b)
    693 #define IDirect3DRMDevice3_AddRef(p)                           (p)->lpVtbl->AddRef(p)
    694 #define IDirect3DRMDevice3_Release(p)                          (p)->lpVtbl->Release(p)
    695 /*** IDirect3DRMObject methods ***/
    696 #define IDirect3DRMDevice3_Clone(p,a,b,c)                      (p)->lpVtbl->Clone(p,a,b,c)
    697 #define IDirect3DRMDevice3_AddDestroyCallback(p,a,b)           (p)->lpVtbl->AddDestroyCallback(p,a,b)
    698 #define IDirect3DRMDevice3_DeleteDestroyCallback(p,a,b)        (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
    699 #define IDirect3DRMDevice3_SetAppData(p,a)                     (p)->lpVtbl->SetAppData(p,a)
    700 #define IDirect3DRMDevice3_GetAppData(p)                       (p)->lpVtbl->GetAppData(p)
    701 #define IDirect3DRMDevice3_SetName(p,a)                        (p)->lpVtbl->SetName(p,a)
    702 #define IDirect3DRMDevice3_GetName(p,a,b)                      (p)->lpVtbl->GetName(p,a,b)
    703 #define IDirect3DRMDevice3_GetClassName(p,a,b)                 (p)->lpVtbl->GetClassName(p,a,b)
    704 /*** IDirect3DRMDevice methods ***/
    705 #define IDirect3DRMDevice3_Init(p,a,b)                         (p)->lpVtbl->Init(p,a,b)
    706 #define IDirect3DRMDevice3_InitFromD3D(p,a,b)                  (p)->lpVtbl->InitFromD3D(p,a,b)
    707 #define IDirect3DRMDevice3_InitFromClipper(p,a,b,c,d)          (p)->lpVtbl->InitFromClipper(p,a,b,c,d)
    708 #define IDirect3DRMDevice3_Update(p)                           (p)->lpVtbl->Update(p)
    709 #define IDirect3DRMDevice3_AddUpdateCallback(p,a,b)            (p)->lpVtbl->AddUpdateCallback(p,a,b)
    710 #define IDirect3DRMDevice3_DeleteUpdateCallback(p,a,b)         (p)->lpVtbl->DeleteUpdateCallback(p,a,b)
    711 #define IDirect3DRMDevice3_SetBufferCount(p,a)                 (p)->lpVtbl->SetBufferCount(p,a)
    712 #define IDirect3DRMDevice3_GetBufferCount(p)                   (p)->lpVtbl->GetBufferCount(p)
    713 #define IDirect3DRMDevice3_SetDither(p,a)                      (p)->lpVtbl->SetDither(p,a)
    714 #define IDirect3DRMDevice3_SetShades(p,a)                      (p)->lpVtbl->SetShades(p,a)
    715 #define IDirect3DRMDevice3_SetQuality(p,a)                     (p)->lpVtbl->SetQuality(p,a)
    716 #define IDirect3DRMDevice3_SetTextureQuality(p,a)              (p)->lpVtbl->SetTextureQuality(p,a)
    717 #define IDirect3DRMDevice3_GetViewports(p,a)                   (p)->lpVtbl->GetViewports(p,a)
    718 #define IDirect3DRMDevice3_GetDither(p)                        (p)->lpVtbl->GetDither(p)
    719 #define IDirect3DRMDevice3_GetShades(p)                        (p)->lpVtbl->GetShades(p)
    720 #define IDirect3DRMDevice3_GetHeight(p)                        (p)->lpVtbl->GetHeight(p)
    721 #define IDirect3DRMDevice3_GetWidth(p)                         (p)->lpVtbl->GetWidth(p)
    722 #define IDirect3DRMDevice3_GetTrianglesDrawn(p)                (p)->lpVtbl->GetTrianglesDrawn(p)
    723 #define IDirect3DRMDevice3_GetWireframeOptions(p)              (p)->lpVtbl->GetWireframeOptions(p)
    724 #define IDirect3DRMDevice3_GetQuality(p)                       (p)->lpVtbl->GetQuality(p)
    725 #define IDirect3DRMDevice3_GetColorModel(p)                    (p)->lpVtbl->GetColorModel(p)
    726 #define IDirect3DRMDevice3_GetTextureQuality(p)                (p)->lpVtbl->GetTextureQuality(p)
    727 #define IDirect3DRMDevice3_GetDirect3DDevice(p,a)              (p)->lpVtbl->GetDirect3DDevice(p,a)
    728 /*** IDirect3DRMDevice2 methods ***/
    729 #define IDirect3DRMDevice3_InitFromD3D2(p,a,b)                 (p)->lpVtbl->InitFromD3D2(p,a,b)
    730 #define IDirect3DRMDevice3_InitFromSurface(p,a,b,c)            (p)->lpVtbl->InitFromSurface(p,a,b,c)
    731 #define IDirect3DRMDevice3_SetRenderMode(p,a)                  (p)->lpVtbl->SetRenderMode(p,a)
    732 #define IDirect3DRMDevice3_GetRenderMode(p)                    (p)->lpVtbl->GetRenderMode(p)
    733 #define IDirect3DRMDevice3_GetDirect3DDevice2(p,a)             (p)->lpVtbl->GetDirect3DDevice2(p,a)
    734 /*** IDirect3DRMDevice3 methods ***/
    735 #define IDirect3DRMDevice3_FindPreferredTextureFormat(p,a,b,c) (p)->lpVtbl->FindPreferredTextureFormat(p,a,b,c)
    736 #define IDirect3DRMDevice3_RenderStateChange(p,a,b,c)          (p)->lpVtbl->RenderStateChange(p,a,b,c)
    737 #define IDirect3DRMDevice3_LightStateChange(p,a,b,c)           (p)->lpVtbl->LightStateChange(p,a,b,c)
    738 #define IDirect3DRMDevice3_GetStateChangeOptions(p,a,b,c)      (p)->lpVtbl->GetStateChangeOptions(p,a,b,c)
    739 #define IDirect3DRMDevice3_SetStateChangeOptions(p,a,b,c)      (p)->lpVtbl->SetStateChangeOptions(p,a,b,c)
    740 #else
    741 /*** IUnknown methods ***/
    742 #define IDirect3DRMDevice3_QueryInterface(p,a,b)               (p)->QueryInterface(a,b)
    743 #define IDirect3DRMDevice3_AddRef(p)                           (p)->AddRef()
    744 #define IDirect3DRMDevice3_Release(p)                          (p)->Release()
    745 /*** IDirect3DRMObject methods ***/
    746 #define IDirect3DRMDevice3_Clone(p,a,b,c)                      (p)->Clone(a,b,c)
    747 #define IDirect3DRMDevice3_AddDestroyCallback(p,a,b)           (p)->AddDestroyCallback(a,b)
    748 #define IDirect3DRMDevice3_DeleteDestroyCallback(p,a,b)        (p)->DeleteDestroyCallback(a,b)
    749 #define IDirect3DRMDevice3_SetAppData(p,a)                     (p)->SetAppData(a)
    750 #define IDirect3DRMDevice3_GetAppData(p)                       (p)->GetAppData()
    751 #define IDirect3DRMDevice3_SetName(p,a)                        (p)->SetName(a)
    752 #define IDirect3DRMDevice3_GetName(p,a,b)                      (p)->GetName(a,b)
    753 #define IDirect3DRMDevice3_GetClassName(p,a,b)                 (p)->GetClassName(a,b)
    754 /*** IDirect3DRMDevice methods ***/
    755 #define IDirect3DRMDevice3_Init(p,a,b)                         (p)->Init(a,b)
    756 #define IDirect3DRMDevice3_InitFromD3D(p,a,b)                  (p)->InitFromD3D(a,b)
    757 #define IDirect3DRMDevice3_InitFromClipper(p,a,b,c,d)          (p)->InitFromClipper(a,b,c,d)
    758 #define IDirect3DRMDevice3_Update(p)                           (p)->Update()
    759 #define IDirect3DRMDevice3_AddUpdateCallback(p,a,b)            (p)->AddUpdateCallback(a,b)
    760 #define IDirect3DRMDevice3_DeleteUpdateCallback(p,a,b)         (p)->DeleteUpdateCallback(a,b)
    761 #define IDirect3DRMDevice3_SetBufferCount(p,a)                 (p)->SetBufferCount(a)
    762 #define IDirect3DRMDevice3_GetBufferCount(p)                   (p)->GetBufferCount()
    763 #define IDirect3DRMDevice3_SetDither(p,a)                      (p)->SetDither(a)
    764 #define IDirect3DRMDevice3_SetShades(p,a)                      (p)->SetShades(a)
    765 #define IDirect3DRMDevice3_SetQuality(p,a)                     (p)->SetQuality(a)
    766 #define IDirect3DRMDevice3_SetTextureQuality(p,a)              (p)->SetTextureQuality(a)
    767 #define IDirect3DRMDevice3_GetViewports(p,a)                   (p)->GetViewports(a)
    768 #define IDirect3DRMDevice3_GetDither(p)                        (p)->GetDither()
    769 #define IDirect3DRMDevice3_GetShades(p)                        (p)->GetShades()
    770 #define IDirect3DRMDevice3_GetHeight(p)                        (p)->GetHeight()
    771 #define IDirect3DRMDevice3_GetWidth(p)                         (p)->GetWidth()
    772 #define IDirect3DRMDevice3_GetTrianglesDrawn(p)                (p)->GetTrianglesDrawn()
    773 #define IDirect3DRMDevice3_GetWireframeOptions(p)              (p)->GetWireframeOptions()
    774 #define IDirect3DRMDevice3_GetQuality(p)                       (p)->GetQuality()
    775 #define IDirect3DRMDevice3_GetColorModel(p)                    (p)->GetColorModel()
    776 #define IDirect3DRMDevice3_GetTextureQuality(p)                (p)->GetTextureQuality()
    777 #define IDirect3DRMDevice3_GetDirect3DDevice(p,a)              (p)->GetDirect3DDevice(a)
    778 /*** IDirect3DRMDevice2 methods ***/
    779 #define IDirect3DRMDevice3_InitFromD3D2(p,a,b)                 (p)->InitFromD3D2(a,b)
    780 #define IDirect3DRMDevice3_InitFromSurface(p,a,b,c)            (p)->InitFromSurface(a,b,c)
    781 #define IDirect3DRMDevice3_SetRenderMode(p,a)                  (p)->SetRenderMode(a)
    782 #define IDirect3DRMDevice3_GetRenderMode(p)                    (p)->GetRenderMode()
    783 #define IDirect3DRMDevice3_GetDirect3DDevice2(p,a)             (p)->GetDirect3DDevice2(a)
    784 /*** IDirect3DRMDevice3 methods ***/
    785 #define IDirect3DRMDevice3_FindPreferredTextureFormat(p,a,b,c) (p)->FindPreferredTextureFormat(a,b,c)
    786 #define IDirect3DRMDevice3_RenderStateChange(p,a,b,c)          (p)->RenderStateChange(a,b,c)
    787 #define IDirect3DRMDevice3_LightStateChange(p,a,b,c)           (p)->LightStateChange(a,b,c)
    788 #define IDirect3DRMDevice3_GetStateChangeOptions(p,a,b,c)      (p)->GetStateChangeOptions(a,b,c)
    789 #define IDirect3DRMDevice3_SetStateChangeOptions(p,a,b,c)      (p)->SetStateChangeOptions(a,b,c)
    790 #endif
    791 
    792 /*****************************************************************************
    793  * IDirect3DRMViewport interface
    794  */
    795 #define INTERFACE IDirect3DRMViewport
    796 DECLARE_INTERFACE_(IDirect3DRMViewport,IDirect3DRMObject)
    797 {
    798     /*** IUnknown methods ***/
    799     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
    800     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
    801     STDMETHOD_(ULONG,Release)(THIS) PURE;
    802     /*** IDirect3DRMObject methods ***/
    803     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
    804     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
    805     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
    806     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
    807     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
    808     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
    809     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
    810     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
    811     /*** IDirect3DRMViewport methods ***/
    812     STDMETHOD(Init) (THIS_ IDirect3DRMDevice *device, struct IDirect3DRMFrame *camera,
    813             DWORD x, DWORD y, DWORD width, DWORD height) PURE;
    814     STDMETHOD(Clear)(THIS) PURE;
    815     STDMETHOD(Render)(THIS_ struct IDirect3DRMFrame *frame) PURE;
    816     STDMETHOD(SetFront)(THIS_ D3DVALUE) PURE;
    817     STDMETHOD(SetBack)(THIS_ D3DVALUE) PURE;
    818     STDMETHOD(SetField)(THIS_ D3DVALUE) PURE;
    819     STDMETHOD(SetUniformScaling)(THIS_ WINBOOL) PURE;
    820     STDMETHOD(SetCamera)(THIS_ struct IDirect3DRMFrame *camera) PURE;
    821     STDMETHOD(SetProjection)(THIS_ D3DRMPROJECTIONTYPE) PURE;
    822     STDMETHOD(Transform)(THIS_ D3DRMVECTOR4D *d, D3DVECTOR *s) PURE;
    823     STDMETHOD(InverseTransform)(THIS_ D3DVECTOR *d, D3DRMVECTOR4D *s) PURE;
    824     STDMETHOD(Configure)(THIS_ LONG x, LONG y, DWORD width, DWORD height) PURE;
    825     STDMETHOD(ForceUpdate)(THIS_ DWORD x1, DWORD y1, DWORD x2, DWORD y2) PURE;
    826     STDMETHOD(SetPlane)(THIS_ D3DVALUE left, D3DVALUE right, D3DVALUE bottom, D3DVALUE top) PURE;
    827     STDMETHOD(GetCamera)(THIS_ struct IDirect3DRMFrame **camera) PURE;
    828     STDMETHOD(GetDevice)(THIS_ IDirect3DRMDevice **device) PURE;
    829     STDMETHOD(GetPlane)(THIS_ D3DVALUE *left, D3DVALUE *right, D3DVALUE *bottom, D3DVALUE *top) PURE;
    830     STDMETHOD(Pick)(THIS_ LONG x, LONG y, LPDIRECT3DRMPICKEDARRAY *return_visuals) PURE;
    831     STDMETHOD_(WINBOOL, GetUniformScaling)(THIS) PURE;
    832     STDMETHOD_(LONG, GetX)(THIS) PURE;
    833     STDMETHOD_(LONG, GetY)(THIS) PURE;
    834     STDMETHOD_(DWORD, GetWidth)(THIS) PURE;
    835     STDMETHOD_(DWORD, GetHeight)(THIS) PURE;
    836     STDMETHOD_(D3DVALUE, GetField)(THIS) PURE;
    837     STDMETHOD_(D3DVALUE, GetBack)(THIS) PURE;
    838     STDMETHOD_(D3DVALUE, GetFront)(THIS) PURE;
    839     STDMETHOD_(D3DRMPROJECTIONTYPE, GetProjection)(THIS) PURE;
    840     STDMETHOD(GetDirect3DViewport)(THIS_ IDirect3DViewport **viewport) PURE;
    841 };
    842 #undef INTERFACE
    843 
    844 #if !defined(__cplusplus) || defined(CINTERFACE)
    845 /*** IUnknown methods ***/
    846 #define IDirect3DRMViewport_QueryInterface(p,a,b)        (p)->lpVtbl->QueryInterface(p,a,b)
    847 #define IDirect3DRMViewport_AddRef(p)                    (p)->lpVtbl->AddRef(p)
    848 #define IDirect3DRMViewport_Release(p)                   (p)->lpVtbl->Release(p)
    849 /*** IDirect3DRMObject methods ***/
    850 #define IDirect3DRMViewport_Clone(p,a,b,c)               (p)->lpVtbl->Clone(p,a,b,c)
    851 #define IDirect3DRMViewport_AddDestroyCallback(p,a,b)    (p)->lpVtbl->AddDestroyCallback(p,a,b)
    852 #define IDirect3DRMViewport_DeleteDestroyCallback(p,a,b) (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
    853 #define IDirect3DRMViewport_SetAppData(p,a)              (p)->lpVtbl->SetAppData(p,a)
    854 #define IDirect3DRMViewport_GetAppData(p)                (p)->lpVtbl->GetAppData(p)
    855 #define IDirect3DRMViewport_SetName(p,a)                 (p)->lpVtbl->SetName(p,a)
    856 #define IDirect3DRMViewport_GetName(p,a,b)               (p)->lpVtbl->GetName(p,a,b)
    857 #define IDirect3DRMViewport_GetClassName(p,a,b)          (p)->lpVtbl->GetClassName(p,a,b)
    858 /*** IDirect3DRMViewport methods ***/
    859 #define IDirect3DRMViewport_Init(p,a,b,c,d)              (p)->lpVtbl->Init(p,a,b,c,d)
    860 #define IDirect3DRMViewport_Clear(p)                     (p)->lpVtbl->Clear(p)
    861 #define IDirect3DRMViewport_Render(p,a)                  (p)->lpVtbl->Render(p,a)
    862 #define IDirect3DRMViewport_SetFront(p,a)                (p)->lpVtbl->SetFront(p,a)
    863 #define IDirect3DRMViewport_SetBack(p,a)                 (p)->lpVtbl->SetBack(p,a)
    864 #define IDirect3DRMViewport_SetField(p,a)                (p)->lpVtbl->SetField(p,a)
    865 #define IDirect3DRMViewport_SetUniformScaling(p,a)       (p)->lpVtbl->SetUniformScaling(p,a)
    866 #define IDirect3DRMViewport_SetCamera(p,a)               (p)->lpVtbl->SetCamera(p,a)
    867 #define IDirect3DRMViewport_SetProjection(p,a)           (p)->lpVtbl->SetProjection(p,a)
    868 #define IDirect3DRMViewport_Transform(p,a,b)             (p)->lpVtbl->Transform(p,a,b)
    869 #define IDirect3DRMViewport_InverseTransform(p,a,b)      (p)->lpVtbl->InverseTransform(p,a,b)
    870 #define IDirect3DRMViewport_Configure(p,a,b,c,d)         (p)->lpVtbl->Configure(p,a,b,c,d)
    871 #define IDirect3DRMViewport_ForceUpdate(p,a,b,c,d)       (p)->lpVtbl->ForceUpdate(p,a,b,c,d)
    872 #define IDirect3DRMViewport_SetPlane(p,a,b,c,d)          (p)->lpVtbl->SetPlane(p,a,b,c,d)
    873 #define IDirect3DRMViewport_GetCamera(p,a)               (p)->lpVtbl->GetCamera(p,a)
    874 #define IDirect3DRMViewport_GetDevice(p,a)               (p)->lpVtbl->GetDevice(p,a)
    875 #define IDirect3DRMViewport_GetPlane(p,a,b,c,d)          (p)->lpVtbl->GetPlane(p,a,b,c,d)
    876 #define IDirect3DRMViewport_Pick(p,a,b,c)                (p)->lpVtbl->Pick(p,a,b,c)
    877 #define IDirect3DRMViewport_GetUniformScaling(p)         (p)->lpVtbl->GetUniformScaling(p)
    878 #define IDirect3DRMViewport_GetX(p)                      (p)->lpVtbl->GetX(p)
    879 #define IDirect3DRMViewport_GetY(p)                      (p)->lpVtbl->GetY(p)
    880 #define IDirect3DRMViewport_GetWidth(p)                  (p)->lpVtbl->GetWidth(p)
    881 #define IDirect3DRMViewport_GetHeight(p)                 (p)->lpVtbl->GetHeight(p)
    882 #define IDirect3DRMViewport_GetField(p)                  (p)->lpVtbl->GetField(p)
    883 #define IDirect3DRMViewport_GetBack(p)                   (p)->lpVtbl->GetBack(p)
    884 #define IDirect3DRMViewport_GetFront(p)                  (p)->lpVtbl->GetFront(p)
    885 #define IDirect3DRMViewport_GetProjection(p)             (p)->lpVtbl->GetProjection(p)
    886 #define IDirect3DRMViewport_GetDirect3DViewport(p,a)     (p)->lpVtbl->GetDirect3DViewport(p,a)
    887 #else
    888 /*** IUnknown methods ***/
    889 #define IDirect3DRMViewport_QueryInterface(p,a,b)        (p)->QueryInterface(a,b)
    890 #define IDirect3DRMViewport_AddRef(p)                    (p)->AddRef()
    891 #define IDirect3DRMViewport_Release(p)                   (p)->Release()
    892 /*** IDirect3DRMObject methods ***/
    893 #define IDirect3DRMViewport_Clone(p,a,b,c)               (p)->Clone(a,b,c)
    894 #define IDirect3DRMViewport_AddDestroyCallback(p,a,b)    (p)->AddDestroyCallback(a,b)
    895 #define IDirect3DRMViewport_DeleteDestroyCallback(p,a,b) (p)->DeleteDestroyCallback(a,b)
    896 #define IDirect3DRMViewport_SetAppData(p,a)              (p)->SetAppData(a)
    897 #define IDirect3DRMViewport_GetAppData(p)                (p)->GetAppData()
    898 #define IDirect3DRMViewport_SetName(p,a)                 (p)->SetName(a)
    899 #define IDirect3DRMViewport_GetName(p,a,b)               (p)->GetName(a,b)
    900 #define IDirect3DRMViewport_GetClassName(p,a,b)          (p)->GetClassName(a,b)
    901 /*** IDirect3DRMViewport methods ***/
    902 #define IDirect3DRMViewport_Init(p,a,b,c,d)              (p)->Init(a,b,c,d)
    903 #define IDirect3DRMViewport_Clear(p)                     (p)->Clear()
    904 #define IDirect3DRMViewport_Render(p,a)                  (p)->Render(a)
    905 #define IDirect3DRMViewport_SetFront(p,a)                (p)->SetFront(a)
    906 #define IDirect3DRMViewport_SetBack(p,a)                 (p)->SetBack(a)
    907 #define IDirect3DRMViewport_SetField(p,a)                (p)->SetField(a)
    908 #define IDirect3DRMViewport_SetUniformScaling(p,a)       (p)->SetUniformScaling(a)
    909 #define IDirect3DRMViewport_SetCamera(p,a)               (p)->SetCamera(a)
    910 #define IDirect3DRMViewport_SetProjection(p,a)           (p)->SetProjection(a)
    911 #define IDirect3DRMViewport_Transform(p,a,b)             (p)->Transform(a,b)
    912 #define IDirect3DRMViewport_InverseTransform(p,a,b)      (p)->InverseTransform(a,b)
    913 #define IDirect3DRMViewport_Configure(p,a,b,c,d)         (p)->Configure(a,b,c,d)
    914 #define IDirect3DRMViewport_ForceUpdate(p,a,b,c,d)       (p)->ForceUpdate(a,b,c,d)
    915 #define IDirect3DRMViewport_SetPlane(p,a,b,c,d)          (p)->SetPlane(a,b,c,d)
    916 #define IDirect3DRMViewport_GetCamera(p,a)               (p)->GetCamera(a)
    917 #define IDirect3DRMViewport_GetDevice(p,a)               (p)->GetDevice(a)
    918 #define IDirect3DRMViewport_GetPlane(p,a,b,c,d)          (p)->GetPlane(a,b,c,d)
    919 #define IDirect3DRMViewport_Pick(p,a,b,c)                (p)->Pick(a,b,c)
    920 #define IDirect3DRMViewport_GetUniformScaling(p)         (p)->GetUniformScaling()
    921 #define IDirect3DRMViewport_GetX(p)                      (p)->GetX()
    922 #define IDirect3DRMViewport_GetY(p)                      (p)->GetY()
    923 #define IDirect3DRMViewport_GetWidth(p)                  (p)->GetWidth()
    924 #define IDirect3DRMViewport_GetHeight(p)                 (p)->GetHeight()
    925 #define IDirect3DRMViewport_GetField(p)                  (p)->GetField()
    926 #define IDirect3DRMViewport_GetBack(p)                   (p)->GetBack()
    927 #define IDirect3DRMViewport_GetFront(p)                  (p)->GetFront()
    928 #define IDirect3DRMViewport_GetProjection(p)             (p)->GetProjection()
    929 #define IDirect3DRMViewport_GetDirect3DViewport(p,a)     (p)->GetDirect3DViewport(a)
    930 #endif
    931 
    932 /*****************************************************************************
    933  * IDirect3DRMViewport2 interface
    934  */
    935 #define INTERFACE IDirect3DRMViewport2
    936 DECLARE_INTERFACE_(IDirect3DRMViewport2,IDirect3DRMObject)
    937 {
    938     /*** IUnknown methods ***/
    939     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
    940     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
    941     STDMETHOD_(ULONG,Release)(THIS) PURE;
    942     /*** IDirect3DRMObject methods ***/
    943     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
    944     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
    945     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
    946     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
    947     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
    948     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
    949     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
    950     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
    951     /*** IDirect3DRMViewport2 methods ***/
    952     STDMETHOD(Init) (THIS_ IDirect3DRMDevice3 *device, struct IDirect3DRMFrame3 *camera,
    953             DWORD x, DWORD y, DWORD width, DWORD height) PURE;
    954     STDMETHOD(Clear)(THIS_ DWORD flags) PURE;
    955     STDMETHOD(Render)(THIS_ struct IDirect3DRMFrame3 *frame) PURE;
    956     STDMETHOD(SetFront)(THIS_ D3DVALUE) PURE;
    957     STDMETHOD(SetBack)(THIS_ D3DVALUE) PURE;
    958     STDMETHOD(SetField)(THIS_ D3DVALUE) PURE;
    959     STDMETHOD(SetUniformScaling)(THIS_ WINBOOL) PURE;
    960     STDMETHOD(SetCamera)(THIS_ struct IDirect3DRMFrame3 *camera) PURE;
    961     STDMETHOD(SetProjection)(THIS_ D3DRMPROJECTIONTYPE) PURE;
    962     STDMETHOD(Transform)(THIS_ D3DRMVECTOR4D *d, D3DVECTOR *s) PURE;
    963     STDMETHOD(InverseTransform)(THIS_ D3DVECTOR *d, D3DRMVECTOR4D *s) PURE;
    964     STDMETHOD(Configure)(THIS_ LONG x, LONG y, DWORD width, DWORD height) PURE;
    965     STDMETHOD(ForceUpdate)(THIS_ DWORD x1, DWORD y1, DWORD x2, DWORD y2) PURE;
    966     STDMETHOD(SetPlane)(THIS_ D3DVALUE left, D3DVALUE right, D3DVALUE bottom, D3DVALUE top) PURE;
    967     STDMETHOD(GetCamera)(THIS_ struct IDirect3DRMFrame3 **camera) PURE;
    968     STDMETHOD(GetDevice)(THIS_ IDirect3DRMDevice3 **device) PURE;
    969     STDMETHOD(GetPlane)(THIS_ D3DVALUE *left, D3DVALUE *right, D3DVALUE *bottom, D3DVALUE *top) PURE;
    970     STDMETHOD(Pick)(THIS_ LONG x, LONG y, LPDIRECT3DRMPICKEDARRAY *return_visuals) PURE;
    971     STDMETHOD_(WINBOOL, GetUniformScaling)(THIS) PURE;
    972     STDMETHOD_(LONG, GetX)(THIS) PURE;
    973     STDMETHOD_(LONG, GetY)(THIS) PURE;
    974     STDMETHOD_(DWORD, GetWidth)(THIS) PURE;
    975     STDMETHOD_(DWORD, GetHeight)(THIS) PURE;
    976     STDMETHOD_(D3DVALUE, GetField)(THIS) PURE;
    977     STDMETHOD_(D3DVALUE, GetBack)(THIS) PURE;
    978     STDMETHOD_(D3DVALUE, GetFront)(THIS) PURE;
    979     STDMETHOD_(D3DRMPROJECTIONTYPE, GetProjection)(THIS) PURE;
    980     STDMETHOD(GetDirect3DViewport)(THIS_ IDirect3DViewport **viewport) PURE;
    981     STDMETHOD(TransformVectors)(THIS_ DWORD vector_count, D3DRMVECTOR4D *dst_vectors,
    982             D3DVECTOR *src_vectors) PURE;
    983     STDMETHOD(InverseTransformVectors)(THIS_ DWORD vector_count, D3DVECTOR *dst_vectors,
    984             D3DRMVECTOR4D *src_vectors) PURE;
    985 };
    986 #undef INTERFACE
    987 
    988 #if !defined(__cplusplus) || defined(CINTERFACE)
    989 /*** IUnknown methods ***/
    990 #define IDirect3DRMViewport2_QueryInterface(p,a,b)            (p)->lpVtbl->QueryInterface(p,a,b)
    991 #define IDirect3DRMViewport2_AddRef(p)                        (p)->lpVtbl->AddRef(p)
    992 #define IDirect3DRMViewport2_Release(p)                       (p)->lpVtbl->Release(p)
    993 /*** IDirect3DRMObject methods ***/
    994 #define IDirect3DRMViewport_2Clone(p,a,b,c)                   (p)->lpVtbl->Clone(p,a,b,c)
    995 #define IDirect3DRMViewport2_AddDestroyCallback(p,a,b)        (p)->lpVtbl->AddDestroyCallback(p,a,b)
    996 #define IDirect3DRMViewport2_DeleteDestroyCallback(p,a,b)     (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
    997 #define IDirect3DRMViewport2_SetAppData(p,a)                  (p)->lpVtbl->SetAppData(p,a)
    998 #define IDirect3DRMViewport2_GetAppData(p)                    (p)->lpVtbl->GetAppData(p)
    999 #define IDirect3DRMViewport2_SetName(p,a)                     (p)->lpVtbl->SetName(p,a)
   1000 #define IDirect3DRMViewport2_GetName(p,a,b)                   (p)->lpVtbl->GetName(p,a,b)
   1001 #define IDirect3DRMViewport2_GetClassName(p,a,b)              (p)->lpVtbl->GetClassName(p,a,b)
   1002 /*** IDirect3DRMViewport2 methods ***/
   1003 #define IDirect3DRMViewport2_Init(p,a,b,c,d,e,f)              (p)->lpVtbl->Init(p,a,b,c,d,e,f)
   1004 #define IDirect3DRMViewport2_Clear(p,a)                       (p)->lpVtbl->Clear(p,a)
   1005 #define IDirect3DRMViewport2_Render(p,a)                      (p)->lpVtbl->Render(p,a)
   1006 #define IDirect3DRMViewport2_SetFront(p,a)                    (p)->lpVtbl->SetFront(p,a)
   1007 #define IDirect3DRMViewport2_SetBack(p,a)                     (p)->lpVtbl->SetBack(p,a)
   1008 #define IDirect3DRMViewport2_SetField(p,a)                    (p)->lpVtbl->SetField(p,a)
   1009 #define IDirect3DRMViewport2_SetUniformScaling(p,a)           (p)->lpVtbl->SetUniformScaling(p,a)
   1010 #define IDirect3DRMViewport2_SetCamera(p,a)                   (p)->lpVtbl->SetCamera(p,a)
   1011 #define IDirect3DRMViewport2_SetProjection(p,a)               (p)->lpVtbl->SetProjection(p,a)
   1012 #define IDirect3DRMViewport2_Transform(p,a,b)                 (p)->lpVtbl->Transform(p,a,b)
   1013 #define IDirect3DRMViewport2_InverseTransform(p,a,b)          (p)->lpVtbl->InverseTransform(p,a,b)
   1014 #define IDirect3DRMViewport2_Configure(p,a,b,c,d)             (p)->lpVtbl->Configure(p,a,b,c,d)
   1015 #define IDirect3DRMViewport2_ForceUpdate(p,a,b,c,d)           (p)->lpVtbl->ForceUpdate(p,a,b,c,d)
   1016 #define IDirect3DRMViewport2_SetPlane(p,a,b,c,d)              (p)->lpVtbl->SetPlane(p,a,b,c,d)
   1017 #define IDirect3DRMViewport2_GetCamera(p,a)                   (p)->lpVtbl->GetCamera(p,a)
   1018 #define IDirect3DRMViewport2_GetDevice(p,a)                   (p)->lpVtbl->GetDevice(p,a)
   1019 #define IDirect3DRMViewport2_GetPlane(p,a,b,c,d)              (p)->lpVtbl->GetPlane(p,a,b,c,d)
   1020 #define IDirect3DRMViewport2_Pick(p,a,b,c)                    (p)->lpVtbl->Pick(p,a,b,c)
   1021 #define IDirect3DRMViewport2_GetUniformScaling(p)             (p)->lpVtbl->GetUniformScaling(p)
   1022 #define IDirect3DRMViewport2_GetX(p)                          (p)->lpVtbl->GetX(p)
   1023 #define IDirect3DRMViewport2_GetY(p)                          (p)->lpVtbl->GetY(p)
   1024 #define IDirect3DRMViewport2_GetWidth(p)                      (p)->lpVtbl->GetWidth(p)
   1025 #define IDirect3DRMViewport2_GetHeight(p)                     (p)->lpVtbl->GetHeight(p)
   1026 #define IDirect3DRMViewport2_GetField(p)                      (p)->lpVtbl->GetField(p)
   1027 #define IDirect3DRMViewport2_GetBack(p)                       (p)->lpVtbl->GetBack(p)
   1028 #define IDirect3DRMViewport2_GetFront(p)                      (p)->lpVtbl->GetFront(p)
   1029 #define IDirect3DRMViewport2_GetProjection(p)                 (p)->lpVtbl->GetProjection(p)
   1030 #define IDirect3DRMViewport2_GetDirect3DViewport(p,a)         (p)->lpVtbl->GetDirect3DViewport(p,a)
   1031 #define IDirect3DRMViewport2_TransformVectors(p,a,b,c)        (p)->lpVtbl->TransformVectors(p,a,b,c)
   1032 #define IDirect3DRMViewport2_InverseTransformVectors(p,a,b,c) (p)->lpVtbl->InverseTransformVectors(p,a,b,c)
   1033 #else
   1034 /*** IUnknown methods ***/
   1035 #define IDirect3DRMViewport2_QueryInterface(p,a,b)            (p)->QueryInterface(a,b)
   1036 #define IDirect3DRMViewport2_AddRef(p)                        (p)->AddRef()
   1037 #define IDirect3DRMViewport2_Release(p)                       (p)->Release()
   1038 /*** IDirect3DRMObject methods ***/
   1039 #define IDirect3DRMViewport2_Clone(p,a,b,c)                   (p)->Clone(a,b,c)
   1040 #define IDirect3DRMViewport2_AddDestroyCallback(p,a,b)        (p)->AddDestroyCallback(a,b)
   1041 #define IDirect3DRMViewport2_DeleteDestroyCallback(p,a,b)     (p)->DeleteDestroyCallback(a,b)
   1042 #define IDirect3DRMViewport2_SetAppData(p,a)                  (p)->SetAppData(a)
   1043 #define IDirect3DRMViewport2_GetAppData(p)                    (p)->GetAppData()
   1044 #define IDirect3DRMViewport2_SetName(p,a)                     (p)->SetName(a)
   1045 #define IDirect3DRMViewport2_GetName(p,a,b)                   (p)->GetName(a,b)
   1046 #define IDirect3DRMViewport2_GetClassName(p,a,b)              (p)->GetClassName(a,b)
   1047 /*** IDirect3DRMViewport2 methods ***/
   1048 #define IDirect3DRMViewport2_Init(p,a,b,c,d)                  (p)->Init(a,b,c,d)
   1049 #define IDirect3DRMViewport2_Clear(p)                         (p)->Clear()
   1050 #define IDirect3DRMViewport2_Render(p,a)                      (p)->Render(a)
   1051 #define IDirect3DRMViewport2_SetFront(p,a)                    (p)->SetFront(a)
   1052 #define IDirect3DRMViewport2_SetBack(p,a)                     (p)->SetBack(a)
   1053 #define IDirect3DRMViewport2_SetField(p,a)                    (p)->SetField(a)
   1054 #define IDirect3DRMViewport2_SetUniformScaling(p,a)           (p)->SetUniformScaling(a)
   1055 #define IDirect3DRMViewport2_SetCamera(p,a)                   (p)->SetCamera(a)
   1056 #define IDirect3DRMViewport2_SetProjection(p,a)               (p)->SetProjection(a)
   1057 #define IDirect3DRMViewport2_Transform(p,a,b)                 (p)->Transform(a,b)
   1058 #define IDirect3DRMViewport2_InverseTransform(p,a,b)          (p)->InverseTransform(a,b)
   1059 #define IDirect3DRMViewport2_Configure(p,a,b,c,d)             (p)->Configure(a,b,c,d)
   1060 #define IDirect3DRMViewport2_ForceUpdate(p,a,b,c,d)           (p)->ForceUpdate(a,b,c,d)
   1061 #define IDirect3DRMViewport2_SetPlane(p,a,b,c,d)              (p)->SetPlane(a,b,c,d)
   1062 #define IDirect3DRMViewport2_GetCamera(p,a)                   (p)->GetCamera(a)
   1063 #define IDirect3DRMViewport2_GetDevice(p,a)                   (p)->GetDevice(a)
   1064 #define IDirect3DRMViewport2_GetPlane(p,a,b,c,d)              (p)->GetPlane(a,b,c,d)
   1065 #define IDirect3DRMViewport2_Pick(p,a,b,c)                    (p)->Pick(a,b,c)
   1066 #define IDirect3DRMViewport2_GetUniformScaling(p)             (p)->GetUniformScaling()
   1067 #define IDirect3DRMViewport2_GetX(p)                          (p)->GetX()
   1068 #define IDirect3DRMViewport2_GetY(p)                          (p)->GetY()
   1069 #define IDirect3DRMViewport2_GetWidth(p)                      (p)->GetWidth()
   1070 #define IDirect3DRMViewport2_GetHeight(p)                     (p)->GetHeight()
   1071 #define IDirect3DRMViewport2_GetField(p)                      (p)->GetField()
   1072 #define IDirect3DRMViewport2_GetBack(p)                       (p)->GetBack()
   1073 #define IDirect3DRMViewport2_GetFront(p)                      (p)->GetFront()
   1074 #define IDirect3DRMViewport2_GetProjection(p)                 (p)->GetProjection()
   1075 #define IDirect3DRMViewport2_GetDirect3DViewport(p,a)         (p)->GetDirect3DViewport(a)
   1076 #define IDirect3DRMViewport2_TransformVectors(p,a,b,c)        (p)->TransformVectors(a,b,c)
   1077 #define IDirect3DRMViewport2_InverseTransformVectors(p,a,b,c) (p)->InverseTransformVectors(a,b,c)
   1078 #endif
   1079 
   1080 /*****************************************************************************
   1081  * IDirect3DRMFrame interface
   1082  */
   1083 #define INTERFACE IDirect3DRMFrame
   1084 DECLARE_INTERFACE_(IDirect3DRMFrame,IDirect3DRMVisual)
   1085 {
   1086     /*** IUnknown methods ***/
   1087     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
   1088     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
   1089     STDMETHOD_(ULONG,Release)(THIS) PURE;
   1090     /*** IDirect3DRMObject methods ***/
   1091     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
   1092     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
   1093     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
   1094     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
   1095     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
   1096     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
   1097     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
   1098     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
   1099     /*** IDirect3DRMFrame methods ***/
   1100     STDMETHOD(AddChild)(THIS_ IDirect3DRMFrame *child) PURE;
   1101     STDMETHOD(AddLight)(THIS_ struct IDirect3DRMLight *light) PURE;
   1102     STDMETHOD(AddMoveCallback)(THIS_ D3DRMFRAMEMOVECALLBACK, VOID *arg) PURE;
   1103     STDMETHOD(AddTransform)(THIS_ D3DRMCOMBINETYPE, D3DRMMATRIX4D) PURE;
   1104     STDMETHOD(AddTranslation)(THIS_ D3DRMCOMBINETYPE, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
   1105     STDMETHOD(AddScale)(THIS_ D3DRMCOMBINETYPE, D3DVALUE sx, D3DVALUE sy, D3DVALUE sz) PURE;
   1106     STDMETHOD(AddRotation)(THIS_ D3DRMCOMBINETYPE, D3DVALUE x, D3DVALUE y, D3DVALUE z, D3DVALUE theta) PURE;
   1107     STDMETHOD(AddVisual)(THIS_ IDirect3DRMVisual *visual) PURE;
   1108     STDMETHOD(GetChildren)(THIS_ LPDIRECT3DRMFRAMEARRAY *children) PURE;
   1109     STDMETHOD_(D3DCOLOR, GetColor)(THIS) PURE;
   1110     STDMETHOD(GetLights)(THIS_ LPDIRECT3DRMLIGHTARRAY *lights) PURE;
   1111     STDMETHOD_(D3DRMMATERIALMODE, GetMaterialMode)(THIS) PURE;
   1112     STDMETHOD(GetParent)(THIS_ IDirect3DRMFrame **parent) PURE;
   1113     STDMETHOD(GetPosition)(THIS_ IDirect3DRMFrame *reference, D3DVECTOR *return_position) PURE;
   1114     STDMETHOD(GetRotation)(THIS_ IDirect3DRMFrame *reference, D3DVECTOR *axis, D3DVALUE *return_theta) PURE;
   1115     STDMETHOD(GetScene)(THIS_ IDirect3DRMFrame **scene) PURE;
   1116     STDMETHOD_(D3DRMSORTMODE, GetSortMode)(THIS) PURE;
   1117     STDMETHOD(GetTexture)(THIS_ LPDIRECT3DRMTEXTURE *) PURE;
   1118     STDMETHOD(GetTransform)(THIS_ D3DRMMATRIX4D return_matrix) PURE;
   1119     STDMETHOD(GetVelocity)(THIS_ IDirect3DRMFrame *reference, D3DVECTOR *return_velocity, WINBOOL with_rotation) PURE;
   1120     STDMETHOD(GetOrientation)(THIS_ IDirect3DRMFrame *reference, D3DVECTOR *dir, D3DVECTOR *up) PURE;
   1121     STDMETHOD(GetVisuals)(THIS_ LPDIRECT3DRMVISUALARRAY *visuals) PURE;
   1122     STDMETHOD(GetTextureTopology)(THIS_ WINBOOL *wrap_u, WINBOOL *wrap_v) PURE;
   1123     STDMETHOD(InverseTransform)(THIS_ D3DVECTOR *d, D3DVECTOR *s) PURE;
   1124     STDMETHOD(Load)(THIS_ LPVOID filename, LPVOID name, D3DRMLOADOPTIONS loadflags, D3DRMLOADTEXTURECALLBACK,
   1125         LPVOID pArg)PURE;
   1126     STDMETHOD(LookAt)(THIS_ IDirect3DRMFrame *target, IDirect3DRMFrame *reference,
   1127             D3DRMFRAMECONSTRAINT constraint) PURE;
   1128     STDMETHOD(Move)(THIS_ D3DVALUE delta) PURE;
   1129     STDMETHOD(DeleteChild)(THIS_ IDirect3DRMFrame *child) PURE;
   1130     STDMETHOD(DeleteLight)(THIS_ struct IDirect3DRMLight *light) PURE;
   1131     STDMETHOD(DeleteMoveCallback)(THIS_ D3DRMFRAMEMOVECALLBACK, VOID *arg) PURE;
   1132     STDMETHOD(DeleteVisual)(THIS_ IDirect3DRMVisual *visual) PURE;
   1133     STDMETHOD_(D3DCOLOR, GetSceneBackground)(THIS) PURE;
   1134     STDMETHOD(GetSceneBackgroundDepth)(THIS_ IDirectDrawSurface **surface) PURE;
   1135     STDMETHOD_(D3DCOLOR, GetSceneFogColor)(THIS) PURE;
   1136     STDMETHOD_(WINBOOL, GetSceneFogEnable)(THIS) PURE;
   1137     STDMETHOD_(D3DRMFOGMODE, GetSceneFogMode)(THIS) PURE;
   1138     STDMETHOD(GetSceneFogParams)(THIS_ D3DVALUE *return_start, D3DVALUE *return_end, D3DVALUE *return_density) PURE;
   1139     STDMETHOD(SetSceneBackground)(THIS_ D3DCOLOR) PURE;
   1140     STDMETHOD(SetSceneBackgroundRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
   1141     STDMETHOD(SetSceneBackgroundDepth)(THIS_ IDirectDrawSurface *surface) PURE;
   1142     STDMETHOD(SetSceneBackgroundImage)(THIS_ LPDIRECT3DRMTEXTURE) PURE;
   1143     STDMETHOD(SetSceneFogEnable)(THIS_ WINBOOL) PURE;
   1144     STDMETHOD(SetSceneFogColor)(THIS_ D3DCOLOR) PURE;
   1145     STDMETHOD(SetSceneFogMode)(THIS_ D3DRMFOGMODE) PURE;
   1146     STDMETHOD(SetSceneFogParams)(THIS_ D3DVALUE start, D3DVALUE end, D3DVALUE density) PURE;
   1147     STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE;
   1148     STDMETHOD(SetColorRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
   1149     STDMETHOD_(D3DRMZBUFFERMODE, GetZbufferMode)(THIS) PURE;
   1150     STDMETHOD(SetMaterialMode)(THIS_ D3DRMMATERIALMODE) PURE;
   1151     STDMETHOD(SetOrientation)(THIS_ IDirect3DRMFrame *reference, D3DVALUE dx, D3DVALUE dy, D3DVALUE dz,
   1152             D3DVALUE ux, D3DVALUE uy, D3DVALUE uz) PURE;
   1153     STDMETHOD(SetPosition)(THIS_ IDirect3DRMFrame *reference, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
   1154     STDMETHOD(SetRotation)(THIS_ IDirect3DRMFrame *reference, D3DVALUE x, D3DVALUE y, D3DVALUE z, D3DVALUE theta) PURE;
   1155     STDMETHOD(SetSortMode)(THIS_ D3DRMSORTMODE) PURE;
   1156     STDMETHOD(SetTexture)(THIS_ LPDIRECT3DRMTEXTURE) PURE;
   1157     STDMETHOD(SetTextureTopology)(THIS_ WINBOOL wrap_u, WINBOOL wrap_v) PURE;
   1158     STDMETHOD(SetVelocity)(THIS_ IDirect3DRMFrame *reference,
   1159             D3DVALUE x, D3DVALUE y, D3DVALUE z, WINBOOL with_rotation) PURE;
   1160     STDMETHOD(SetZbufferMode)(THIS_ D3DRMZBUFFERMODE) PURE;
   1161     STDMETHOD(Transform)(THIS_ D3DVECTOR *d, D3DVECTOR *s) PURE;
   1162 };
   1163 #undef INTERFACE
   1164 
   1165 #if !defined(__cplusplus) || defined(CINTERFACE)
   1166 /*** IUnknown methods ***/
   1167 #define IDirect3DRMFrame_QueryInterface(p,a,b)            (p)->lpVtbl->QueryInterface(p,a,b)
   1168 #define IDirect3DRMFrame_AddRef(p)                        (p)->lpVtbl->AddRef(p)
   1169 #define IDirect3DRMFrame_Release(p)                       (p)->lpVtbl->Release(p)
   1170 /*** IDirect3DRMObject methods ***/
   1171 #define IDirect3DRMFrame_Clone(p,a,b,c)                   (p)->lpVtbl->Clone(p,a,b,c)
   1172 #define IDirect3DRMFrame_AddDestroyCallback(p,a,b)        (p)->lpVtbl->AddDestroyCallback(p,a,b)
   1173 #define IDirect3DRMFrame_DeleteDestroyCallback(p,a,b)     (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
   1174 #define IDirect3DRMFrame_SetAppData(p,a)                  (p)->lpVtbl->SetAppData(p,a)
   1175 #define IDirect3DRMFrame_GetAppData(p)                    (p)->lpVtbl->GetAppData(p)
   1176 #define IDirect3DRMFrame_SetName(p,a)                     (p)->lpVtbl->SetName(p,a)
   1177 #define IDirect3DRMFrame_GetName(p,a,b)                   (p)->lpVtbl->GetName(p,a,b)
   1178 #define IDirect3DRMFrame_GetClassName(p,a,b)              (p)->lpVtbl->GetClassName(p,a,b)
   1179 /*** IDirect3DRMFrame methods ***/
   1180 #define IDirect3DRMFrame_AddChild(p,a)                    (p)->lpVtbl->AddChild(p,a)
   1181 #define IDirect3DRMFrame_AddLight(p,a)                    (p)->lpVtbl->AddLight(p,a)
   1182 #define IDirect3DRMFrame_AddMoveCallback(p,a,b)           (p)->lpVtbl->AddMoveCallback(p,a,b)
   1183 #define IDirect3DRMFrame_AddTransform(p,a,b)              (p)->lpVtbl->AddTransform(p,a,b)
   1184 #define IDirect3DRMFrame_AddTranslation(p,a,b,c,d)        (p)->lpVtbl->AddTranslation(p,a,b,c,d)
   1185 #define IDirect3DRMFrame_AddScale(p,a,b,c,d)              (p)->lpVtbl->AddScale(p,a,b,c,d)
   1186 #define IDirect3DRMFrame_AddRotation(p,a,b,c,d,e)         (p)->lpVtbl->AddRotation(p,a,b,c,d,e)
   1187 #define IDirect3DRMFrame_AddVisual(p,a)                   (p)->lpVtbl->AddVisual(p,a)
   1188 #define IDirect3DRMFrame_GetChildren(p,a)                 (p)->lpVtbl->GetChildren(p,a)
   1189 #define IDirect3DRMFrame_GetColor(p)                      (p)->lpVtbl->GetColor(p)
   1190 #define IDirect3DRMFrame_GetLights(p,a)                   (p)->lpVtbl->GetLights(p,a)
   1191 #define IDirect3DRMFrame_GetMaterialMode(p)               (p)->lpVtbl->GetMaterialMode(p)
   1192 #define IDirect3DRMFrame_GetParent(p,a)                   (p)->lpVtbl->GetParent(p,a)
   1193 #define IDirect3DRMFrame_GetPosition(p,a,b)               (p)->lpVtbl->GetPosition(p,a,b)
   1194 #define IDirect3DRMFrame_GetRotation(p,a,b,c)             (p)->lpVtbl->GetRotation(p,a,b,c)
   1195 #define IDirect3DRMFrame_GetScene(p,a)                    (p)->lpVtbl->GetScene(p,a)
   1196 #define IDirect3DRMFrame_GetSortMode(p)                   (p)->lpVtbl->GetSortMode(p)
   1197 #define IDirect3DRMFrame_GetTexture(p,a)                  (p)->lpVtbl->GetTexture(p,a)
   1198 #define IDirect3DRMFrame_GetTransform(p,a)                (p)->lpVtbl->GetTransform(p,a)
   1199 #define IDirect3DRMFrame_GetVelocity(p,a,b,c)             (p)->lpVtbl->GetVelocity(p,a,b,c)
   1200 #define IDirect3DRMFrame_GetOrientation(p,a,b,c)          (p)->lpVtbl->GetOrientation(p,a,b,c)
   1201 #define IDirect3DRMFrame_GetVisuals(p,a)                  (p)->lpVtbl->GetVisuals(p,a)
   1202 #define IDirect3DRMFrame_GetTextureTopology(p,a,b)        (p)->lpVtbl->GetTextureTopology(p,a,b)
   1203 #define IDirect3DRMFrame_InverseTransform(p,a,b)          (p)->lpVtbl->InverseTransform(p,a,b)
   1204 #define IDirect3DRMFrame_Load(p,a,b,c,d,e)                (p)->lpVtbl->Load(p,a,b,c,d,e)
   1205 #define IDirect3DRMFrame_LookAt(p,a,b,c)                  (p)->lpVtbl->LookAt(p,a,b,c)
   1206 #define IDirect3DRMFrame_Move(p,a)                        (p)->lpVtbl->Move(p,a)
   1207 #define IDirect3DRMFrame_DeleteChild(p,a)                 (p)->lpVtbl->DeleteChild(p,a)
   1208 #define IDirect3DRMFrame_DeleteLight(p,a)                 (p)->lpVtbl->DeleteLight(p,a)
   1209 #define IDirect3DRMFrame_DeleteMoveCallback(p,a,b)        (p)->lpVtbl->DeleteMoveCallback(p,a,b)
   1210 #define IDirect3DRMFrame_DeleteVisual(p,a)                (p)->lpVtbl->DeleteVisual(p,a)
   1211 #define IDirect3DRMFrame_GetSceneBackground(p)            (p)->lpVtbl->GetSceneBackground(p)
   1212 #define IDirect3DRMFrame_GetSceneBackgroundDepth(p,a)     (p)->lpVtbl->GetSceneBackgroundDepth(p,a)
   1213 #define IDirect3DRMFrame_GetSceneFogColor(p)              (p)->lpVtbl->GetSceneFogColor(p)
   1214 #define IDirect3DRMFrame_GetSceneFogEnable(p)             (p)->lpVtbl->GetSceneFogEnable(p)
   1215 #define IDirect3DRMFrame_GetSceneFogMode(p)               (p)->lpVtbl->GetSceneFogMode(p)
   1216 #define IDirect3DRMFrame_GetSceneFogParams(p,a,b,c)       (p)->lpVtbl->GetSceneFogParams(p,a,b,c)
   1217 #define IDirect3DRMFrame_SetSceneBackground(p,a)          (p)->lpVtbl->SetSceneBackground(p,a)
   1218 #define IDirect3DRMFrame_SetSceneBackgroundRGB(p,a,b,c)   (p)->lpVtbl->SetSceneBackgroundRGB(p,a,b,c)
   1219 #define IDirect3DRMFrame_SetSceneBackgroundDepth(p,a)     (p)->lpVtbl->SetSceneBackgroundDepth(p,a)
   1220 #define IDirect3DRMFrame_SetSceneBackgroundImage(p,a)     (p)->lpVtbl->SetSceneBackgroundImage(p,a)
   1221 #define IDirect3DRMFrame_SetSceneFogEnable(p,a)           (p)->lpVtbl->SetSceneFogEnable(p,a)
   1222 #define IDirect3DRMFrame_SetSceneFogColor(p,a)            (p)->lpVtbl->SetSceneFogColor(p,a)
   1223 #define IDirect3DRMFrame_SetSceneFogMode(p,a)             (p)->lpVtbl->SetSceneFogMode(p,a)
   1224 #define IDirect3DRMFrame_SetSceneFogParams(p,a,b,c)       (p)->lpVtbl->SetSceneFogParams(p,a,b,c)
   1225 #define IDirect3DRMFrame_SetColor(p,a)                    (p)->lpVtbl->SetColor(p,a)
   1226 #define IDirect3DRMFrame_SetColorRGB(p,a,b,c)             (p)->lpVtbl->SetColorRGB(p,a,b,c)
   1227 #define IDirect3DRMFrame_GetZbufferMode(p)                (p)->lpVtbl->GetZbufferMode(p)
   1228 #define IDirect3DRMFrame_SetMaterialMode(p,a)             (p)->lpVtbl->SetMaterialMode(p,a)
   1229 #define IDirect3DRMFrame_SetOrientation(p,a,b,c,d,e,f,g)  (p)->lpVtbl->SetOrientation(p,a,b,c,d,e,f,g)
   1230 #define IDirect3DRMFrame_SetPosition(p,a,b,c,d)           (p)->lpVtbl->SetPosition(p,a,b,c,d)
   1231 #define IDirect3DRMFrame_SetRotation(p,a,b,c,d,e)         (p)->lpVtbl->SetRotation(p,a,b,c,d,e)
   1232 #define IDirect3DRMFrame_SetSortMode(p,a)                 (p)->lpVtbl->SetSortMode(p,a)
   1233 #define IDirect3DRMFrame_SetTexture(p,a)                  (p)->lpVtbl->SetTexture(p,a)
   1234 #define IDirect3DRMFrame_SetTextureTopology(p,a,b)        (p)->lpVtbl->SetTextureTopology(p,a,b)
   1235 #define IDirect3DRMFrame_SetVelocity(p,a,b,c,d,e)         (p)->lpVtbl->SetVelocity(p,a,b,c,d,e)
   1236 #define IDirect3DRMFrame_SetZbufferMode(p,a)              (p)->lpVtbl->SetZbufferMode(p,a)
   1237 #define IDirect3DRMFrame_Transform(p,a,b)                 (p)->lpVtbl->Transform(p,a,b)
   1238 #else
   1239 /*** IUnknown methods ***/
   1240 #define IDirect3DRMFrame_QueryInterface(p,a,b)            (p)->QueryInterface(a,b)
   1241 #define IDirect3DRMFrame_AddRef(p)                        (p)->AddRef()
   1242 #define IDirect3DRMFrame_Release(p)                       (p)->Release()
   1243 /*** IDirect3DRMObject methods ***/
   1244 #define IDirect3DRMFrame_Clone(p,a,b,c)                   (p)->Clone(a,b,c)
   1245 #define IDirect3DRMFrame_AddDestroyCallback(p,a,b)        (p)->AddDestroyCallback(a,b)
   1246 #define IDirect3DRMFrame_DeleteDestroyCallback(p,a,b)     (p)->DeleteDestroyCallback(a,b)
   1247 #define IDirect3DRMFrame_SetAppData(p,a)                  (p)->SetAppData(a)
   1248 #define IDirect3DRMFrame_GetAppData(p)                    (p)->GetAppData()
   1249 #define IDirect3DRMFrame_SetName(p,a)                     (p)->SetName(a)
   1250 #define IDirect3DRMFrame_GetName(p,a,b)                   (p)->GetName(a,b)
   1251 #define IDirect3DRMFrame_GetClassName(p,a,b)              (p)->GetClassName(a,b)
   1252 /*** IDirect3DRMFrame methods ***/
   1253 #define IDirect3DRMFrame_AddChild(p,a)                    (p)->AddChild(a)
   1254 #define IDirect3DRMFrame_AddLight(p,a)                    (p)->AddLight(a)
   1255 #define IDirect3DRMFrame_AddMoveCallback(p,a,b)           (p)->AddMoveCallback(a,b)
   1256 #define IDirect3DRMFrame_AddTransform(p,a,b)              (p)->AddTransform(a,b)
   1257 #define IDirect3DRMFrame_AddTranslation(p,a,b,c,d)        (p)->AddTranslation(a,b,c,d)
   1258 #define IDirect3DRMFrame_AddScale(p,a,b,c,d)              (p)->AddScale(a,b,c,d)
   1259 #define IDirect3DRMFrame_AddRotation(p,a,b,c,d,e)         (p)->AddRotation(a,b,c,d,e)
   1260 #define IDirect3DRMFrame_AddVisual(p,a)                   (p)->AddVisual(a)
   1261 #define IDirect3DRMFrame_GetChildren(p,a)                 (p)->GetChildren(a)
   1262 #define IDirect3DRMFrame_GetColor(p)                      (p)->GetColor()
   1263 #define IDirect3DRMFrame_GetLights(p,a)                   (p)->GetLights(a)
   1264 #define IDirect3DRMFrame_GetMaterialMode(p)               (p)->GetMaterialMode()
   1265 #define IDirect3DRMFrame_GetParent(p,a)                   (p)->GetParent(a)
   1266 #define IDirect3DRMFrame_GetPosition(p,a,b)               (p)->GetPosition(a,b)
   1267 #define IDirect3DRMFrame_GetRotation(p,a,b,c)             (p)->GetRotation(a,b,c)
   1268 #define IDirect3DRMFrame_GetScene(p,a)                    (p)->GetScene(a)
   1269 #define IDirect3DRMFrame_GetSortMode(p)                   (p)->GetSortMode()
   1270 #define IDirect3DRMFrame_GetTexture(p,a)                  (p)->GetTexture(a)
   1271 #define IDirect3DRMFrame_GetTransform(p,a)                (p)->GetTransform(a)
   1272 #define IDirect3DRMFrame_GetVelocity(p,a,b,c)             (p)->GetVelocity(a,b,c)
   1273 #define IDirect3DRMFrame_GetOrientation(p,a,b,c)          (p)->GetOrientation(a,b,c)
   1274 #define IDirect3DRMFrame_GetVisuals(p,a)                  (p)->GetVisuals(a)
   1275 #define IDirect3DRMFrame_GetTextureTopology(p,a,b)        (p)->GetTextureTopology(a,b)
   1276 #define IDirect3DRMFrame_InverseTransform(p,a,b)          (p)->InverseTransform(a,b)
   1277 #define IDirect3DRMFrame_Load(p,a,b,c,d,e)                (p)->Load(a,b,c,d,e)
   1278 #define IDirect3DRMFrame_LookAt(p,a,b,c)                  (p)->LookAt(a,b,c)
   1279 #define IDirect3DRMFrame_Move(p,a)                        (p)->Move(a)
   1280 #define IDirect3DRMFrame_DeleteChild(p,a)                 (p)->DeleteChild(a)
   1281 #define IDirect3DRMFrame_DeleteLight(p,a)                 (p)->DeleteLight(a)
   1282 #define IDirect3DRMFrame_DeleteMoveCallback(p,a,b)        (p)->DeleteMoveCallback(a,b)
   1283 #define IDirect3DRMFrame_DeleteVisual(p,a)                (p)->DeleteVisual(a)
   1284 #define IDirect3DRMFrame_GetSceneBackground(p)            (p)->GetSceneBackground()
   1285 #define IDirect3DRMFrame_GetSceneBackgroundDepth(p,a)     (p)->GetSceneBackgroundDepth(a)
   1286 #define IDirect3DRMFrame_GetSceneFogColor(p)              (p)->GetSceneFogColor()
   1287 #define IDirect3DRMFrame_GetSceneFogEnable(p)             (p)->GetSceneFogEnable()
   1288 #define IDirect3DRMFrame_GetSceneFogMode(p)               (p)->GetSceneFogMode()
   1289 #define IDirect3DRMFrame_GetSceneFogParams(p,a,b,c)       (p)->GetSceneFogParams(a,b,c)
   1290 #define IDirect3DRMFrame_SetSceneBackground(p,a)          (p)->SetSceneBackground(a)
   1291 #define IDirect3DRMFrame_SetSceneBackgroundRGB(p,a,b,c)   (p)->SetSceneBackgroundRGB(a,b,c)
   1292 #define IDirect3DRMFrame_SetSceneBackgroundDepth(p,a)     (p)->SetSceneBackgroundDepth(a)
   1293 #define IDirect3DRMFrame_SetSceneBackgroundImage(p,a)     (p)->SetSceneBackgroundImage(a)
   1294 #define IDirect3DRMFrame_SetSceneFogEnable(p,a)           (p)->SetSceneFogEnable(a)
   1295 #define IDirect3DRMFrame_SetSceneFogColor(p,a)            (p)->SetSceneFogColor(a)
   1296 #define IDirect3DRMFrame_SetSceneFogMode(p,a)             (p)->SetSceneFogMode(a)
   1297 #define IDirect3DRMFrame_SetSceneFogParams(p,a,b,c)       (p)->SetSceneFogParams(a,b,c)
   1298 #define IDirect3DRMFrame_SetColor(p,a)                    (p)->SetColor(a)
   1299 #define IDirect3DRMFrame_SetColorRGB(p,a,b,c)             (p)->SetColorRGB(a,b,c)
   1300 #define IDirect3DRMFrame_GetZbufferMode(p)                (p)->GetZbufferMode()
   1301 #define IDirect3DRMFrame_SetMaterialMode(p,a)             (p)->SetMaterialMode(a)
   1302 #define IDirect3DRMFrame_SetOrientation(p,a,b,c,d,e,f,g)  (p)->SetOrientation(a,b,c,d,e,f,g)
   1303 #define IDirect3DRMFrame_SetPosition(p,a,b,c,d)           (p)->SetPosition(a,b,c,d)
   1304 #define IDirect3DRMFrame_SetRotation(p,a,b,c,d,e)         (p)->SetRotation(a,b,c,d,e)
   1305 #define IDirect3DRMFrame_SetSortMode(p,a)                 (p)->SetSortMode(a)
   1306 #define IDirect3DRMFrame_SetTexture(p,a)                  (p)->SetTexture(a)
   1307 #define IDirect3DRMFrame_SetTextureTopology(p,a,b)        (p)->SetTextureTopology(a,b)
   1308 #define IDirect3DRMFrame_SetVelocity(p,a,b,c,d,e)         (p)->SetVelocity(a,b,c,d,e)
   1309 #define IDirect3DRMFrame_SetZbufferMode(p,a)              (p)->SetZbufferMode(a)
   1310 #define IDirect3DRMFrame_Transform(p,a,b)                 (p)->Transform(a,b)
   1311 #endif
   1312 
   1313 /*****************************************************************************
   1314  * IDirect3DRMFrame2 interface
   1315  */
   1316 #define INTERFACE IDirect3DRMFrame2
   1317 DECLARE_INTERFACE_(IDirect3DRMFrame2,IDirect3DRMFrame)
   1318 {
   1319     /*** IUnknown methods ***/
   1320     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
   1321     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
   1322     STDMETHOD_(ULONG,Release)(THIS) PURE;
   1323     /*** IDirect3DRMObject methods ***/
   1324     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
   1325     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
   1326     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
   1327     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
   1328     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
   1329     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
   1330     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
   1331     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
   1332     /*** IDirect3DRMFrame methods ***/
   1333     STDMETHOD(AddChild)(THIS_ IDirect3DRMFrame *child) PURE;
   1334     STDMETHOD(AddLight)(THIS_ struct IDirect3DRMLight *light) PURE;
   1335     STDMETHOD(AddMoveCallback)(THIS_ D3DRMFRAMEMOVECALLBACK, VOID *arg) PURE;
   1336     STDMETHOD(AddTransform)(THIS_ D3DRMCOMBINETYPE, D3DRMMATRIX4D) PURE;
   1337     STDMETHOD(AddTranslation)(THIS_ D3DRMCOMBINETYPE, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
   1338     STDMETHOD(AddScale)(THIS_ D3DRMCOMBINETYPE, D3DVALUE sx, D3DVALUE sy, D3DVALUE sz) PURE;
   1339     STDMETHOD(AddRotation)(THIS_ D3DRMCOMBINETYPE, D3DVALUE x, D3DVALUE y, D3DVALUE z, D3DVALUE theta) PURE;
   1340     STDMETHOD(AddVisual)(THIS_ IDirect3DRMVisual *visual) PURE;
   1341     STDMETHOD(GetChildren)(THIS_ LPDIRECT3DRMFRAMEARRAY *children) PURE;
   1342     STDMETHOD_(D3DCOLOR, GetColor)(THIS) PURE;
   1343     STDMETHOD(GetLights)(THIS_ LPDIRECT3DRMLIGHTARRAY *lights) PURE;
   1344     STDMETHOD_(D3DRMMATERIALMODE, GetMaterialMode)(THIS) PURE;
   1345     STDMETHOD(GetParent)(THIS_ IDirect3DRMFrame **parent) PURE;
   1346     STDMETHOD(GetPosition)(THIS_ IDirect3DRMFrame *reference, D3DVECTOR *return_position) PURE;
   1347     STDMETHOD(GetRotation)(THIS_ IDirect3DRMFrame *reference, D3DVECTOR *axis, D3DVALUE *return_theta) PURE;
   1348     STDMETHOD(GetScene)(THIS_ IDirect3DRMFrame **scene) PURE;
   1349     STDMETHOD_(D3DRMSORTMODE, GetSortMode)(THIS) PURE;
   1350     STDMETHOD(GetTexture)(THIS_ LPDIRECT3DRMTEXTURE *) PURE;
   1351     STDMETHOD(GetTransform)(THIS_ D3DRMMATRIX4D return_matrix) PURE;
   1352     STDMETHOD(GetVelocity)(THIS_ IDirect3DRMFrame *reference, D3DVECTOR *return_velocity, WINBOOL with_rotation) PURE;
   1353     STDMETHOD(GetOrientation)(THIS_ IDirect3DRMFrame *reference, D3DVECTOR *dir, D3DVECTOR *up) PURE;
   1354     STDMETHOD(GetVisuals)(THIS_ LPDIRECT3DRMVISUALARRAY *visuals) PURE;
   1355     STDMETHOD(GetTextureTopology)(THIS_ WINBOOL *wrap_u, WINBOOL *wrap_v) PURE;
   1356     STDMETHOD(InverseTransform)(THIS_ D3DVECTOR *d, D3DVECTOR *s) PURE;
   1357     STDMETHOD(Load)(THIS_ LPVOID filename, LPVOID name, D3DRMLOADOPTIONS loadflags, D3DRMLOADTEXTURECALLBACK,
   1358         LPVOID pArg)PURE;
   1359     STDMETHOD(LookAt)(THIS_ IDirect3DRMFrame *target, IDirect3DRMFrame *reference,
   1360             D3DRMFRAMECONSTRAINT constraint) PURE;
   1361     STDMETHOD(Move)(THIS_ D3DVALUE delta) PURE;
   1362     STDMETHOD(DeleteChild)(THIS_ IDirect3DRMFrame *child) PURE;
   1363     STDMETHOD(DeleteLight)(THIS_ struct IDirect3DRMLight *light) PURE;
   1364     STDMETHOD(DeleteMoveCallback)(THIS_ D3DRMFRAMEMOVECALLBACK, VOID *arg) PURE;
   1365     STDMETHOD(DeleteVisual)(THIS_ IDirect3DRMVisual *visual) PURE;
   1366     STDMETHOD_(D3DCOLOR, GetSceneBackground)(THIS) PURE;
   1367     STDMETHOD(GetSceneBackgroundDepth)(THIS_ IDirectDrawSurface **surface) PURE;
   1368     STDMETHOD_(D3DCOLOR, GetSceneFogColor)(THIS) PURE;
   1369     STDMETHOD_(WINBOOL, GetSceneFogEnable)(THIS) PURE;
   1370     STDMETHOD_(D3DRMFOGMODE, GetSceneFogMode)(THIS) PURE;
   1371     STDMETHOD(GetSceneFogParams)(THIS_ D3DVALUE *return_start, D3DVALUE *return_end, D3DVALUE *return_density) PURE;
   1372     STDMETHOD(SetSceneBackground)(THIS_ D3DCOLOR) PURE;
   1373     STDMETHOD(SetSceneBackgroundRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
   1374     STDMETHOD(SetSceneBackgroundDepth)(THIS_ IDirectDrawSurface *surface) PURE;
   1375     STDMETHOD(SetSceneBackgroundImage)(THIS_ LPDIRECT3DRMTEXTURE) PURE;
   1376     STDMETHOD(SetSceneFogEnable)(THIS_ WINBOOL) PURE;
   1377     STDMETHOD(SetSceneFogColor)(THIS_ D3DCOLOR) PURE;
   1378     STDMETHOD(SetSceneFogMode)(THIS_ D3DRMFOGMODE) PURE;
   1379     STDMETHOD(SetSceneFogParams)(THIS_ D3DVALUE start, D3DVALUE end, D3DVALUE density) PURE;
   1380     STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE;
   1381     STDMETHOD(SetColorRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
   1382     STDMETHOD_(D3DRMZBUFFERMODE, GetZbufferMode)(THIS) PURE;
   1383     STDMETHOD(SetMaterialMode)(THIS_ D3DRMMATERIALMODE) PURE;
   1384     STDMETHOD(SetOrientation)(THIS_ IDirect3DRMFrame *reference, D3DVALUE dx, D3DVALUE dy, D3DVALUE dz,
   1385             D3DVALUE ux, D3DVALUE uy, D3DVALUE uz) PURE;
   1386     STDMETHOD(SetPosition)(THIS_ IDirect3DRMFrame *reference, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
   1387     STDMETHOD(SetRotation)(THIS_ IDirect3DRMFrame *reference, D3DVALUE x, D3DVALUE y, D3DVALUE z, D3DVALUE theta) PURE;
   1388     STDMETHOD(SetSortMode)(THIS_ D3DRMSORTMODE) PURE;
   1389     STDMETHOD(SetTexture)(THIS_ LPDIRECT3DRMTEXTURE) PURE;
   1390     STDMETHOD(SetTextureTopology)(THIS_ WINBOOL wrap_u, WINBOOL wrap_v) PURE;
   1391     STDMETHOD(SetVelocity)(THIS_ IDirect3DRMFrame *reference,
   1392             D3DVALUE x, D3DVALUE y, D3DVALUE z, WINBOOL with_rotation) PURE;
   1393     STDMETHOD(SetZbufferMode)(THIS_ D3DRMZBUFFERMODE) PURE;
   1394     STDMETHOD(Transform)(THIS_ D3DVECTOR *d, D3DVECTOR *s) PURE;
   1395     /*** IDirect3DRMFrame2 methods ***/
   1396     STDMETHOD(AddMoveCallback2)(THIS_ D3DRMFRAMEMOVECALLBACK, VOID *arg, DWORD flags) PURE;
   1397     STDMETHOD(GetBox)(THIS_ D3DRMBOX *box) PURE;
   1398     STDMETHOD_(WINBOOL, GetBoxEnable)(THIS) PURE;
   1399     STDMETHOD(GetAxes)(THIS_ D3DVECTOR *dir, D3DVECTOR *up);
   1400     STDMETHOD(GetMaterial)(THIS_ LPDIRECT3DRMMATERIAL *) PURE;
   1401     STDMETHOD_(WINBOOL, GetInheritAxes)(THIS);
   1402     STDMETHOD(GetHierarchyBox)(THIS_ D3DRMBOX *box) PURE;
   1403     STDMETHOD(SetBox)(THIS_ D3DRMBOX *box) PURE;
   1404     STDMETHOD(SetBoxEnable)(THIS_ WINBOOL) PURE;
   1405     STDMETHOD(SetAxes)(THIS_ D3DVALUE dx, D3DVALUE dy, D3DVALUE dz, D3DVALUE ux, D3DVALUE uy, D3DVALUE uz);
   1406     STDMETHOD(SetInheritAxes)(THIS_ WINBOOL inherit_from_parent);
   1407     STDMETHOD(SetMaterial)(THIS_ LPDIRECT3DRMMATERIAL) PURE;
   1408     STDMETHOD(SetQuaternion)(THIS_ IDirect3DRMFrame *reference, D3DRMQUATERNION *q) PURE;
   1409     STDMETHOD(RayPick)(THIS_ IDirect3DRMFrame *reference, D3DRMRAY *ray, DWORD flags,
   1410             struct IDirect3DRMPicked2Array **return_visuals) PURE;
   1411     STDMETHOD(Save)(THIS_ LPCSTR filename, D3DRMXOFFORMAT d3dFormat, D3DRMSAVEOPTIONS d3dSaveFlags);
   1412 };
   1413 #undef INTERFACE
   1414 
   1415 #if !defined(__cplusplus) || defined(CINTERFACE)
   1416 /*** IUnknown methods ***/
   1417 #define IDirect3DRMFrame2_QueryInterface(p,a,b)            (p)->lpVtbl->QueryInterface(p,a,b)
   1418 #define IDirect3DRMFrame2_AddRef(p)                        (p)->lpVtbl->AddRef(p)
   1419 #define IDirect3DRMFrame2_Release(p)                       (p)->lpVtbl->Release(p)
   1420 /*** IDirect3DRMObject methods ***/
   1421 #define IDirect3DRMFrame2_Clone(p,a,b,c)                   (p)->lpVtbl->Clone(p,a,b,c)
   1422 #define IDirect3DRMFrame2_AddDestroyCallback(p,a,b)        (p)->lpVtbl->AddDestroyCallback(p,a,b)
   1423 #define IDirect3DRMFrame2_DeleteDestroyCallback(p,a,b)     (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
   1424 #define IDirect3DRMFrame2_SetAppData(p,a)                  (p)->lpVtbl->SetAppData(p,a)
   1425 #define IDirect3DRMFrame2_GetAppData(p)                    (p)->lpVtbl->GetAppData(p)
   1426 #define IDirect3DRMFrame2_SetName(p,a)                     (p)->lpVtbl->SetName(p,a)
   1427 #define IDirect3DRMFrame2_GetName(p,a,b)                   (p)->lpVtbl->GetName(p,a,b)
   1428 #define IDirect3DRMFrame2_GetClassName(p,a,b)              (p)->lpVtbl->GetClassName(p,a,b)
   1429 /*** IDirect3DRMFrame methods ***/
   1430 #define IDirect3DRMFrame2_AddChild(p,a)                    (p)->lpVtbl->AddChild(p,a)
   1431 #define IDirect3DRMFrame2_AddLight(p,a)                    (p)->lpVtbl->AddLight(p,a)
   1432 #define IDirect3DRMFrame2_AddMoveCallback(p,a,b)           (p)->lpVtbl->AddMoveCallback(p,a,b)
   1433 #define IDirect3DRMFrame2_AddTransform(p,a,b)              (p)->lpVtbl->AddTransform(p,a,b)
   1434 #define IDirect3DRMFrame2_AddTranslation(p,a,b,c,d)        (p)->lpVtbl->AddTranslation(p,a,b,c,d)
   1435 #define IDirect3DRMFrame2_AddScale(p,a,b,c,d)              (p)->lpVtbl->AddScale(p,a,b,c,d)
   1436 #define IDirect3DRMFrame2_AddRotation(p,a,b,c,d,e)         (p)->lpVtbl->AddRotation(p,a,b,c,d,e)
   1437 #define IDirect3DRMFrame2_AddVisual(p,a)                   (p)->lpVtbl->AddVisual(p,a)
   1438 #define IDirect3DRMFrame2_GetChildren(p,a)                 (p)->lpVtbl->GetChildren(p,a)
   1439 #define IDirect3DRMFrame2_GetColor(p)                      (p)->lpVtbl->GetColor(p)
   1440 #define IDirect3DRMFrame2_GetLights(p,a)                   (p)->lpVtbl->GetLights(p,a)
   1441 #define IDirect3DRMFrame2_GetMaterialMode(p)               (p)->lpVtbl->GetMaterialMode(p)
   1442 #define IDirect3DRMFrame2_GetParent(p,a)                   (p)->lpVtbl->GetParent(p,a)
   1443 #define IDirect3DRMFrame2_GetPosition(p,a,b)               (p)->lpVtbl->GetPosition(p,a,b)
   1444 #define IDirect3DRMFrame2_GetRotation(p,a,b,c)             (p)->lpVtbl->GetRotation(p,a,b,c)
   1445 #define IDirect3DRMFrame2_GetScene(p,a)                    (p)->lpVtbl->GetScene(p,a)
   1446 #define IDirect3DRMFrame2_GetSortMode(p)                   (p)->lpVtbl->GetSortMode(p)
   1447 #define IDirect3DRMFrame2_GetTexture(p,a)                  (p)->lpVtbl->GetTexture(p,a)
   1448 #define IDirect3DRMFrame2_GetTransform(p,a)                (p)->lpVtbl->GetTransform(p,a)
   1449 #define IDirect3DRMFrame2_GetVelocity(p,a,b,c)             (p)->lpVtbl->GetVelocity(p,a,b,c)
   1450 #define IDirect3DRMFrame2_GetOrientation(p,a,b,c)          (p)->lpVtbl->GetOrientation(p,a,b,c)
   1451 #define IDirect3DRMFrame2_GetVisuals(p,a)                  (p)->lpVtbl->GetVisuals(p,a)
   1452 #define IDirect3DRMFrame2_GetTextureTopology(p,a,b)        (p)->lpVtbl->GetTextureTopology(p,a,b)
   1453 #define IDirect3DRMFrame2_InverseTransform(p,a,b)          (p)->lpVtbl->InverseTransform(p,a,b)
   1454 #define IDirect3DRMFrame2_Load(p,a,b,c,d,e)                (p)->lpVtbl->Load(p,a,b,c,d,e)
   1455 #define IDirect3DRMFrame2_LookAt(p,a,b,c)                  (p)->lpVtbl->LookAt(p,a,b,c)
   1456 #define IDirect3DRMFrame2_Move(p,a)                        (p)->lpVtbl->Move(p,a)
   1457 #define IDirect3DRMFrame2_DeleteChild(p,a)                 (p)->lpVtbl->DeleteChild(p,a)
   1458 #define IDirect3DRMFrame2_DeleteLight(p,a)                 (p)->lpVtbl->DeleteLight(p,a)
   1459 #define IDirect3DRMFrame2_DeleteMoveCallback(p,a,b)        (p)->lpVtbl->DeleteMoveCallback(p,a,b)
   1460 #define IDirect3DRMFrame2_DeleteVisual(p,a)                (p)->lpVtbl->DeleteVisual(p,a)
   1461 #define IDirect3DRMFrame2_GetSceneBackground(p)            (p)->lpVtbl->GetSceneBackground(p)
   1462 #define IDirect3DRMFrame2_GetSceneBackgroundDepth(p,a)     (p)->lpVtbl->GetSceneBackgroundDepth(p,a)
   1463 #define IDirect3DRMFrame2_GetSceneFogColor(p)              (p)->lpVtbl->GetSceneFogColor(p)
   1464 #define IDirect3DRMFrame2_GetSceneFogEnable(p)             (p)->lpVtbl->GetSceneFogEnable(p)
   1465 #define IDirect3DRMFrame2_GetSceneFogMode(p)               (p)->lpVtbl->GetSceneFogMode(p)
   1466 #define IDirect3DRMFrame2_GetSceneFogParams(p,a,b,c)       (p)->lpVtbl->GetSceneFogParams(p,a,b,c)
   1467 #define IDirect3DRMFrame2_SetSceneBackground(p,a)          (p)->lpVtbl->SetSceneBackground(p,a)
   1468 #define IDirect3DRMFrame2_SetSceneBackgroundRGB(p,a,b,c)   (p)->lpVtbl->SetSceneBackgroundRGB(p,a,b,c)
   1469 #define IDirect3DRMFrame2_SetSceneBackgroundDepth(p,a)     (p)->lpVtbl->SetSceneBackgroundDepth(p,a)
   1470 #define IDirect3DRMFrame2_SetSceneBackgroundImage(p,a)     (p)->lpVtbl->SetSceneBackgroundImage(p,a)
   1471 #define IDirect3DRMFrame2_SetSceneFogEnable(p,a)           (p)->lpVtbl->SetSceneFogEnable(p,a)
   1472 #define IDirect3DRMFrame2_SetSceneFogColor(p,a)            (p)->lpVtbl->SetSceneFogColor(p,a)
   1473 #define IDirect3DRMFrame2_SetSceneFogMode(p,a)             (p)->lpVtbl->SetSceneFogMode(p,a)
   1474 #define IDirect3DRMFrame2_SetSceneFogParams(p,a,b,c)       (p)->lpVtbl->SetSceneFogParams(p,a,b,c)
   1475 #define IDirect3DRMFrame2_SetColor(p,a)                    (p)->lpVtbl->SetColor(p,a)
   1476 #define IDirect3DRMFrame2_SetColorRGB(p,a,b,c)             (p)->lpVtbl->SetColorRGB(p,a,b,c)
   1477 #define IDirect3DRMFrame2_GetZbufferMode(p)                (p)->lpVtbl->GetZbufferMode(p)
   1478 #define IDirect3DRMFrame2_SetMaterialMode(p,a)             (p)->lpVtbl->SetMaterialMode(p,a)
   1479 #define IDirect3DRMFrame2_SetOrientation(p,a,b,c,d,e,f,g)  (p)->lpVtbl->SetOrientation(p,a,b,c,d,e,f,g)
   1480 #define IDirect3DRMFrame2_SetPosition(p,a,b,c,d)           (p)->lpVtbl->SetPosition(p,a,b,c,d)
   1481 #define IDirect3DRMFrame2_SetRotation(p,a,b,c,d,e)         (p)->lpVtbl->SetRotation(p,a,b,c,d,e)
   1482 #define IDirect3DRMFrame2_SetSortMode(p,a)                 (p)->lpVtbl->SetSortMode(p,a)
   1483 #define IDirect3DRMFrame2_SetTexture(p,a)                  (p)->lpVtbl->SetTexture(p,a)
   1484 #define IDirect3DRMFrame2_SetTextureTopology(p,a,b)        (p)->lpVtbl->SetTextureTopology(p,a,b)
   1485 #define IDirect3DRMFrame2_SetVelocity(p,a,b,c,d,e)         (p)->lpVtbl->SetVelocity(p,a,b,c,d,e)
   1486 #define IDirect3DRMFrame2_SetZbufferMode(p,a)              (p)->lpVtbl->SetZbufferMode(p,a)
   1487 #define IDirect3DRMFrame2_Transform(p,a,b)                 (p)->lpVtbl->Transform(p,a,b)
   1488 /*** IDirect3DRMFrame2 methods ***/
   1489 #define IDirect3DRMFrame2_AddMoveCallback2(p,a,b,c)        (p)->lpVtbl->AddMoveCallback2(p,a,b,c)
   1490 #define IDirect3DRMFrame2_GetBox(p,a)                      (p)->lpVtbl->GetBox(p,a)
   1491 #define IDirect3DRMFrame2_GetBoxEnable(p)                  (p)->lpVtbl->GetBoxEnable(p)
   1492 #define IDirect3DRMFrame2_GetAxes(p,a,b)                   (p)->lpVtbl->GetAxes(p,a,b)
   1493 #define IDirect3DRMFrame2_GetMaterial(p,a)                 (p)->lpVtbl->GetMaterial(p,a)
   1494 #define IDirect3DRMFrame2_GetInheritAxes(p,a,b)            (p)->lpVtbl->GetInheritAxes(p,a,b)
   1495 #define IDirect3DRMFrame2_GetHierarchyBox(p,a)             (p)->lpVtbl->GetHierarchyBox(p,a)
   1496 #define IDirect3DRMFrame2_SetBox(p,a)                      (p)->lpVtbl->SetBox(p,a)
   1497 #define IDirect3DRMFrame2_SetBoxEnable(p,a)                (p)->lpVtbl->SetBoxEnable(p,a)
   1498 #define IDirect3DRMFrame2_SetAxes(p,a,b,c,d,e,f)           (p)->lpVtbl->SetAxes(p,a,b,c,d,e,f)
   1499 #define IDirect3DRMFrame2_SetInheritAxes(p,a)              (p)->lpVtbl->SetInheritAxes(p,a)
   1500 #define IDirect3DRMFrame2_SetMaterial(p,a)                 (p)->lpVtbl->SetMaterial(p,a)
   1501 #define IDirect3DRMFrame2_SetQuaternion(p,a,b)             (p)->lpVtbl->SetQuaternion(p,a,b)
   1502 #define IDirect3DRMFrame2_RayPick(p,a,b,c,d)               (p)->lpVtbl->RayPick(p,a,b,c,d)
   1503 #define IDirect3DRMFrame2_Save(p,a,b,c)                    (p)->lpVtbl->Save(p,a,b,c)
   1504 #else
   1505 /*** IUnknown methods ***/
   1506 #define IDirect3DRMFrame2_QueryInterface(p,a,b)            (p)->QueryInterface(a,b)
   1507 #define IDirect3DRMFrame2_AddRef(p)                        (p)->AddRef()
   1508 #define IDirect3DRMFrame2_Release(p)                       (p)->Release()
   1509 /*** IDirect3DRMObject methods ***/
   1510 #define IDirect3DRMFrame2_Clone(p,a,b,c)                   (p)->Clone(a,b,c)
   1511 #define IDirect3DRMFrame2_AddDestroyCallback(p,a,b)        (p)->AddDestroyCallback(a,b)
   1512 #define IDirect3DRMFrame2_DeleteDestroyCallback(p,a,b)     (p)->DeleteDestroyCallback(a,b)
   1513 #define IDirect3DRMFrame2_SetAppData(p,a)                  (p)->SetAppData(a)
   1514 #define IDirect3DRMFrame2_GetAppData(p)                    (p)->GetAppData()
   1515 #define IDirect3DRMFrame2_SetName(p,a)                     (p)->SetName(a)
   1516 #define IDirect3DRMFrame2_GetName(p,a,b)                   (p)->GetName(a,b)
   1517 #define IDirect3DRMFrame2_GetClassName(p,a,b)              (p)->GetClassName(a,b)
   1518 /*** IDirect3DRMFrame methods ***/
   1519 #define IDirect3DRMFrame2_AddChild(p,a)                    (p)->AddChild(a)
   1520 #define IDirect3DRMFrame2_AddLight(p,a)                    (p)->AddLight(a)
   1521 #define IDirect3DRMFrame2_AddMoveCallback(p,a,b)           (p)->AddMoveCallback(a,b)
   1522 #define IDirect3DRMFrame2_AddTransform(p,a,b)              (p)->AddTransform(a,b)
   1523 #define IDirect3DRMFrame2_AddTranslation(p,a,b,c,d)        (p)->AddTranslation(a,b,c,d)
   1524 #define IDirect3DRMFrame2_AddScale(p,a,b,c,d)              (p)->AddScale(a,b,c,d)
   1525 #define IDirect3DRMFrame2_AddRotation(p,a,b,c,d,e)         (p)->AddRotation(a,b,c,d,e)
   1526 #define IDirect3DRMFrame2_AddVisual(p,a)                   (p)->AddVisual(a)
   1527 #define IDirect3DRMFrame2_GetChildren(p,a)                 (p)->GetChildren(a)
   1528 #define IDirect3DRMFrame2_GetColor(p)                      (p)->GetColor()
   1529 #define IDirect3DRMFrame2_GetLights(p,a)                   (p)->GetLights(a)
   1530 #define IDirect3DRMFrame2_GetMaterialMode(p)               (p)->GetMaterialMode()
   1531 #define IDirect3DRMFrame2_GetParent(p,a)                   (p)->GetParent(a)
   1532 #define IDirect3DRMFrame2_GetPosition(p,a,b)               (p)->GetPosition(a,b)
   1533 #define IDirect3DRMFrame2_GetRotation(p,a,b,c)             (p)->GetRotation(a,b,c)
   1534 #define IDirect3DRMFrame2_GetScene(p,a)                    (p)->GetScene(a)
   1535 #define IDirect3DRMFrame2_GetSortMode(p)                   (p)->GetSortMode()
   1536 #define IDirect3DRMFrame2_GetTexture(p,a)                  (p)->GetTexture(a)
   1537 #define IDirect3DRMFrame2_GetTransform(p,a)                (p)->GetTransform(a)
   1538 #define IDirect3DRMFrame2_GetVelocity(p,a,b,c)             (p)->GetVelocity(a,b,c)
   1539 #define IDirect3DRMFrame2_GetOrientation(p,a,b,c)          (p)->GetOrientation(a,b,c)
   1540 #define IDirect3DRMFrame2_GetVisuals(p,a)                  (p)->GetVisuals(a)
   1541 #define IDirect3DRMFrame2_GetTextureTopology(p,a,b)        (p)->GetTextureTopology(a,b)
   1542 #define IDirect3DRMFrame2_InverseTransform(p,a,b)          (p)->InverseTransform(a,b)
   1543 #define IDirect3DRMFrame2_Load(p,a,b,c,d,e)                (p)->Load(a,b,c,d,e)
   1544 #define IDirect3DRMFrame2_LookAt(p,a,b,c)                  (p)->LookAt(a,b,c)
   1545 #define IDirect3DRMFrame2_Move(p,a)                        (p)->Move(a)
   1546 #define IDirect3DRMFrame2_DeleteChild(p,a)                 (p)->DeleteChild(a)
   1547 #define IDirect3DRMFrame2_DeleteLight(p,a)                 (p)->DeleteLight(a)
   1548 #define IDirect3DRMFrame2_DeleteMoveCallback(p,a,b)        (p)->DeleteMoveCallback(a,b)
   1549 #define IDirect3DRMFrame2_DeleteVisual(p,a)                (p)->DeleteVisual(a)
   1550 #define IDirect3DRMFrame2_GetSceneBackground(p)            (p)->GetSceneBackground()
   1551 #define IDirect3DRMFrame2_GetSceneBackgroundDepth(p,a)     (p)->GetSceneBackgroundDepth(a)
   1552 #define IDirect3DRMFrame2_GetSceneFogColor(p)              (p)->GetSceneFogColor()
   1553 #define IDirect3DRMFrame2_GetSceneFogEnable(p)             (p)->GetSceneFogEnable()
   1554 #define IDirect3DRMFrame2_GetSceneFogMode(p)               (p)->GetSceneFogMode()
   1555 #define IDirect3DRMFrame2_GetSceneFogParams(p,a,b,c)       (p)->GetSceneFogParams(a,b,c)
   1556 #define IDirect3DRMFrame2_SetSceneBackground(p,a)          (p)->SetSceneBackground(a)
   1557 #define IDirect3DRMFrame2_SetSceneBackgroundRGB(p,a,b,c)   (p)->SetSceneBackgroundRGB(a,b,c)
   1558 #define IDirect3DRMFrame2_SetSceneBackgroundDepth(p,a)     (p)->SetSceneBackgroundDepth(a)
   1559 #define IDirect3DRMFrame2_SetSceneBackgroundImage(p,a)     (p)->SetSceneBackgroundImage(a)
   1560 #define IDirect3DRMFrame2_SetSceneFogEnable(p,a)           (p)->SetSceneFogEnable(a)
   1561 #define IDirect3DRMFrame2_SetSceneFogColor(p,a)            (p)->SetSceneFogColor(a)
   1562 #define IDirect3DRMFrame2_SetSceneFogMode(p,a)             (p)->SetSceneFogMode(a)
   1563 #define IDirect3DRMFrame2_SetSceneFogParams(p,a,b,c)       (p)->SetSceneFogParams(a,b,c)
   1564 #define IDirect3DRMFrame2_SetColor(p,a)                    (p)->SetColor(a)
   1565 #define IDirect3DRMFrame2_SetColorRGB(p,a,b,c)             (p)->SetColorRGB(a,b,c)
   1566 #define IDirect3DRMFrame2_GetZbufferMode(p)                (p)->GetZbufferMode()
   1567 #define IDirect3DRMFrame2_SetMaterialMode(p,a)             (p)->SetMaterialMode(a)
   1568 #define IDirect3DRMFrame2_SetOrientation(p,a,b,c,d,e,f,g)  (p)->SetOrientation(a,b,c,d,e,f,g)
   1569 #define IDirect3DRMFrame2_SetPosition(p,a,b,c,d)           (p)->SetPosition(a,b,c,d)
   1570 #define IDirect3DRMFrame2_SetRotation(p,a,b,c,d,e)         (p)->SetRotation(a,b,c,d,e)
   1571 #define IDirect3DRMFrame2_SetSortMode(p,a)                 (p)->SetSortMode(a)
   1572 #define IDirect3DRMFrame2_SetTexture(p,a)                  (p)->SetTexture(a)
   1573 #define IDirect3DRMFrame2_SetTextureTopology(p,a,b)        (p)->SetTextureTopology(a,b)
   1574 #define IDirect3DRMFrame2_SetVelocity(p,a,b,c,d,e)         (p)->SetVelocity(a,b,c,d,e)
   1575 #define IDirect3DRMFrame2_SetZbufferMode(p,a)              (p)->SetZbufferMode(a)
   1576 #define IDirect3DRMFrame2_Transform(p,a,b)                 (p)->Transform(a,b)
   1577 /*** IDirect3DRMFrame2 methods ***/
   1578 #define IDirect3DRMFrame2_AddMoveCallback2(p,a,b,c)        (p)->AddMoveCallback2(a,b,c)
   1579 #define IDirect3DRMFrame2_GetBox(p,a)                      (p)->GetBox(a)
   1580 #define IDirect3DRMFrame2_GetBoxEnable(p)                  (p)->GetBoxEnable()
   1581 #define IDirect3DRMFrame2_GetAxes(p,a,b)                   (p)->GetAxes(a,b)
   1582 #define IDirect3DRMFrame2_GetMaterial(p,a)                 (p)->GetMaterial(a)
   1583 #define IDirect3DRMFrame2_GetInheritAxes(p,a,b)            (p)->GetInheritAxes(a,b)
   1584 #define IDirect3DRMFrame2_GetHierarchyBox(p,a)             (p)->GetHierarchyBox(a)
   1585 #define IDirect3DRMFrame2_SetBox(p,a)                      (p)->SetBox(a)
   1586 #define IDirect3DRMFrame2_SetBoxEnable(p,a)                (p)->SetBoxEnable(a)
   1587 #define IDirect3DRMFrame2_SetAxes(p,a,b,c,d,e,f)           (p)->SetAxes(a,b,c,d,e,f)
   1588 #define IDirect3DRMFrame2_SetInheritAxes(p,a)              (p)->SetInheritAxes(a)
   1589 #define IDirect3DRMFrame2_SetMaterial(p,a)                 (p)->SetMaterial(a)
   1590 #define IDirect3DRMFrame2_SetQuaternion(p,a,b)             (p)->SetQuaternion(a,b)
   1591 #define IDirect3DRMFrame2_RayPick(p,a,b,c,d)               (p)->RayPick(a,b,c,d)
   1592 #define IDirect3DRMFrame2_Save(p,a,b,c)                    (p)->Save(a,b,c)
   1593 #endif
   1594 
   1595 /*****************************************************************************
   1596  * IDirect3DRMFrame3 interface
   1597  */
   1598 #define INTERFACE IDirect3DRMFrame3
   1599 DECLARE_INTERFACE_(IDirect3DRMFrame3,IDirect3DRMVisual)
   1600 {
   1601     /*** IUnknown methods ***/
   1602     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
   1603     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
   1604     STDMETHOD_(ULONG,Release)(THIS) PURE;
   1605     /*** IDirect3DRMObject methods ***/
   1606     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
   1607     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
   1608     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
   1609     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
   1610     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
   1611     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
   1612     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
   1613     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
   1614     /*** IDirect3DRMFrame3 methods ***/
   1615     STDMETHOD(AddChild)(THIS_ IDirect3DRMFrame3 *child) PURE;
   1616     STDMETHOD(AddLight)(THIS_ struct IDirect3DRMLight *light) PURE;
   1617     STDMETHOD(AddMoveCallback)(THIS_ D3DRMFRAME3MOVECALLBACK, VOID *arg, DWORD flags) PURE;
   1618     STDMETHOD(AddTransform)(THIS_ D3DRMCOMBINETYPE, D3DRMMATRIX4D) PURE;
   1619     STDMETHOD(AddTranslation)(THIS_ D3DRMCOMBINETYPE, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
   1620     STDMETHOD(AddScale)(THIS_ D3DRMCOMBINETYPE, D3DVALUE sx, D3DVALUE sy, D3DVALUE sz) PURE;
   1621     STDMETHOD(AddRotation)(THIS_ D3DRMCOMBINETYPE, D3DVALUE x, D3DVALUE y, D3DVALUE z, D3DVALUE theta) PURE;
   1622     STDMETHOD(AddVisual)(THIS_ LPUNKNOWN) PURE;
   1623     STDMETHOD(GetChildren)(THIS_ LPDIRECT3DRMFRAMEARRAY *children) PURE;
   1624     STDMETHOD_(D3DCOLOR, GetColor)(THIS) PURE;
   1625     STDMETHOD(GetLights)(THIS_ LPDIRECT3DRMLIGHTARRAY *lights) PURE;
   1626     STDMETHOD_(D3DRMMATERIALMODE, GetMaterialMode)(THIS) PURE;
   1627     STDMETHOD(GetParent)(THIS_ IDirect3DRMFrame3 **parent) PURE;
   1628     STDMETHOD(GetPosition)(THIS_ IDirect3DRMFrame3 *reference, D3DVECTOR *return_position) PURE;
   1629     STDMETHOD(GetRotation)(THIS_ IDirect3DRMFrame3 *reference, D3DVECTOR *axis, D3DVALUE *return_theta) PURE;
   1630     STDMETHOD(GetScene)(THIS_ IDirect3DRMFrame3 **scene) PURE;
   1631     STDMETHOD_(D3DRMSORTMODE, GetSortMode)(THIS) PURE;
   1632     STDMETHOD(GetTexture)(THIS_ LPDIRECT3DRMTEXTURE3 *) PURE;
   1633     STDMETHOD(GetTransform)(THIS_ IDirect3DRMFrame3 *reference, D3DRMMATRIX4D matrix) PURE;
   1634     STDMETHOD(GetVelocity)(THIS_ IDirect3DRMFrame3 *reference, D3DVECTOR *return_velocity, WINBOOL with_rotation) PURE;
   1635     STDMETHOD(GetOrientation)(THIS_ IDirect3DRMFrame3 *reference, D3DVECTOR *dir, D3DVECTOR *up) PURE;
   1636     STDMETHOD(GetVisuals)(THIS_ LPDWORD pCount, LPUNKNOWN *) PURE;
   1637     STDMETHOD(InverseTransform)(THIS_ D3DVECTOR *d, D3DVECTOR *s) PURE;
   1638     STDMETHOD(Load)(THIS_ LPVOID filename, LPVOID name, D3DRMLOADOPTIONS loadflags,
   1639         D3DRMLOADTEXTURE3CALLBACK, LPVOID pArg) PURE;
   1640     STDMETHOD(LookAt)(THIS_ IDirect3DRMFrame3 *target, IDirect3DRMFrame3 *reference,
   1641             D3DRMFRAMECONSTRAINT constraint) PURE;
   1642     STDMETHOD(Move)(THIS_ D3DVALUE delta) PURE;
   1643     STDMETHOD(DeleteChild)(THIS_ IDirect3DRMFrame3 *child) PURE;
   1644     STDMETHOD(DeleteLight)(THIS_ struct IDirect3DRMLight *light) PURE;
   1645     STDMETHOD(DeleteMoveCallback)(THIS_ D3DRMFRAME3MOVECALLBACK, VOID *arg) PURE;
   1646     STDMETHOD(DeleteVisual)(THIS_ LPUNKNOWN) PURE;
   1647     STDMETHOD_(D3DCOLOR, GetSceneBackground)(THIS) PURE;
   1648     STDMETHOD(GetSceneBackgroundDepth)(THIS_ IDirectDrawSurface **surface) PURE;
   1649     STDMETHOD_(D3DCOLOR, GetSceneFogColor)(THIS) PURE;
   1650     STDMETHOD_(WINBOOL, GetSceneFogEnable)(THIS) PURE;
   1651     STDMETHOD_(D3DRMFOGMODE, GetSceneFogMode)(THIS) PURE;
   1652     STDMETHOD(GetSceneFogParams)(THIS_ D3DVALUE *return_start, D3DVALUE *return_end,
   1653         D3DVALUE *return_density) PURE;
   1654     STDMETHOD(SetSceneBackground)(THIS_ D3DCOLOR) PURE;
   1655     STDMETHOD(SetSceneBackgroundRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
   1656     STDMETHOD(SetSceneBackgroundDepth)(THIS_ IDirectDrawSurface *surface) PURE;
   1657     STDMETHOD(SetSceneBackgroundImage)(THIS_ LPDIRECT3DRMTEXTURE3) PURE;
   1658     STDMETHOD(SetSceneFogEnable)(THIS_ WINBOOL) PURE;
   1659     STDMETHOD(SetSceneFogColor)(THIS_ D3DCOLOR) PURE;
   1660     STDMETHOD(SetSceneFogMode)(THIS_ D3DRMFOGMODE) PURE;
   1661     STDMETHOD(SetSceneFogParams)(THIS_ D3DVALUE start, D3DVALUE end, D3DVALUE density) PURE;
   1662     STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE;
   1663     STDMETHOD(SetColorRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
   1664     STDMETHOD_(D3DRMZBUFFERMODE, GetZbufferMode)(THIS) PURE;
   1665     STDMETHOD(SetMaterialMode)(THIS_ D3DRMMATERIALMODE) PURE;
   1666     STDMETHOD(SetOrientation)(THIS_ IDirect3DRMFrame3 *reference, D3DVALUE dx, D3DVALUE dy, D3DVALUE dz,
   1667             D3DVALUE ux, D3DVALUE uy, D3DVALUE uz) PURE;
   1668     STDMETHOD(SetPosition)(THIS_ IDirect3DRMFrame3 *reference, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
   1669     STDMETHOD(SetRotation)(THIS_ IDirect3DRMFrame3 *reference,
   1670             D3DVALUE x, D3DVALUE y, D3DVALUE z, D3DVALUE theta) PURE;
   1671     STDMETHOD(SetSortMode)(THIS_ D3DRMSORTMODE) PURE;
   1672     STDMETHOD(SetTexture)(THIS_ LPDIRECT3DRMTEXTURE3) PURE;
   1673     STDMETHOD(SetVelocity)(THIS_ IDirect3DRMFrame3 *reference,
   1674             D3DVALUE x, D3DVALUE y, D3DVALUE z, WINBOOL with_rotation) PURE;
   1675     STDMETHOD(SetZbufferMode)(THIS_ D3DRMZBUFFERMODE) PURE;
   1676     STDMETHOD(Transform)(THIS_ D3DVECTOR *d, D3DVECTOR *s) PURE;
   1677     STDMETHOD(GetBox)(THIS_ D3DRMBOX *box) PURE;
   1678     STDMETHOD_(WINBOOL, GetBoxEnable)(THIS) PURE;
   1679     STDMETHOD(GetAxes)(THIS_ D3DVECTOR *dir, D3DVECTOR *up);
   1680     STDMETHOD(GetMaterial)(THIS_ LPDIRECT3DRMMATERIAL2 *) PURE;
   1681     STDMETHOD_(WINBOOL, GetInheritAxes)(THIS);
   1682     STDMETHOD(GetHierarchyBox)(THIS_ D3DRMBOX *box) PURE;
   1683     STDMETHOD(SetBox)(THIS_ D3DRMBOX *box) PURE;
   1684     STDMETHOD(SetBoxEnable)(THIS_ WINBOOL) PURE;
   1685     STDMETHOD(SetAxes)(THIS_ D3DVALUE dx, D3DVALUE dy, D3DVALUE dz, D3DVALUE ux, D3DVALUE uy, D3DVALUE uz);
   1686     STDMETHOD(SetInheritAxes)(THIS_ WINBOOL inherit_from_parent);
   1687     STDMETHOD(SetMaterial)(THIS_ LPDIRECT3DRMMATERIAL2) PURE;
   1688     STDMETHOD(SetQuaternion)(THIS_ IDirect3DRMFrame3 *reference, D3DRMQUATERNION *q) PURE;
   1689     STDMETHOD(RayPick)(THIS_ IDirect3DRMFrame3 *reference, D3DRMRAY *ray, DWORD flags,
   1690             struct IDirect3DRMPicked2Array **return_visuals) PURE;
   1691     STDMETHOD(Save)(THIS_ LPCSTR filename, D3DRMXOFFORMAT d3dFormat, D3DRMSAVEOPTIONS d3dSaveFlags);
   1692     STDMETHOD(TransformVectors)(THIS_ IDirect3DRMFrame3 *reference, DWORD vector_count,
   1693             D3DVECTOR *dst_vectors, D3DVECTOR *src_vectors) PURE;
   1694     STDMETHOD(InverseTransformVectors)(THIS_ IDirect3DRMFrame3 *reference, DWORD vector_count,
   1695             D3DVECTOR *dst_vectors, D3DVECTOR *src_vectors) PURE;
   1696     STDMETHOD(SetTraversalOptions)(THIS_ DWORD flags) PURE;
   1697     STDMETHOD(GetTraversalOptions)(THIS_ LPDWORD pFlags) PURE;
   1698     STDMETHOD(SetSceneFogMethod)(THIS_ DWORD flags) PURE;
   1699     STDMETHOD(GetSceneFogMethod)(THIS_ LPDWORD pFlags) PURE;
   1700     STDMETHOD(SetMaterialOverride)(THIS_ D3DRMMATERIALOVERRIDE *override) PURE;
   1701     STDMETHOD(GetMaterialOverride)(THIS_ D3DRMMATERIALOVERRIDE *override) PURE;
   1702 };
   1703 #undef INTERFACE
   1704 
   1705 #if !defined(__cplusplus) || defined(CINTERFACE)
   1706 /*** IUnknown methods ***/
   1707 #define IDirect3DRMFrame3_QueryInterface(p,a,b)              (p)->lpVtbl->QueryInterface(p,a,b)
   1708 #define IDirect3DRMFrame3_AddRef(p)                          (p)->lpVtbl->AddRef(p)
   1709 #define IDirect3DRMFrame3_Release(p)                         (p)->lpVtbl->Release(p)
   1710 /*** IDirect3DRMObject methods ***/
   1711 #define IDirect3DRMFrame3_Clone(p,a,b,c)                     (p)->lpVtbl->Clone(p,a,b,c)
   1712 #define IDirect3DRMFrame3_AddDestroyCallback(p,a,b)          (p)->lpVtbl->AddDestroyCallback(p,a,b)
   1713 #define IDirect3DRMFrame3_DeleteDestroyCallback(p,a,b)       (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
   1714 #define IDirect3DRMFrame3_SetAppData(p,a)                    (p)->lpVtbl->SetAppData(p,a)
   1715 #define IDirect3DRMFrame3_GetAppData(p)                      (p)->lpVtbl->GetAppData(p)
   1716 #define IDirect3DRMFrame3_SetName(p,a)                       (p)->lpVtbl->SetName(p,a)
   1717 #define IDirect3DRMFrame3_GetName(p,a,b)                     (p)->lpVtbl->GetName(p,a,b)
   1718 #define IDirect3DRMFrame3_GetClassName(p,a,b)                (p)->lpVtbl->GetClassName(p,a,b)
   1719 /*** IDirect3DRMFrame3 methods ***/
   1720 #define IDirect3DRMFrame3_AddChild(p,a)                      (p)->lpVtbl->AddChild(p,a)
   1721 #define IDirect3DRMFrame3_AddLight(p,a)                      (p)->lpVtbl->AddLight(p,a)
   1722 #define IDirect3DRMFrame3_AddMoveCallback(p,a,b,c)           (p)->lpVtbl->AddMoveCallback(p,a,b,c)
   1723 #define IDirect3DRMFrame3_AddTransform(p,a,b)                (p)->lpVtbl->AddTransform(p,a,b)
   1724 #define IDirect3DRMFrame3_AddTranslation(p,a,b,c,d)          (p)->lpVtbl->AddTranslation(p,a,b,c,d)
   1725 #define IDirect3DRMFrame3_AddScale(p,a,b,c,d)                (p)->lpVtbl->AddScale(p,a,b,c,d)
   1726 #define IDirect3DRMFrame3_AddRotation(p,a,b,c,d,e)           (p)->lpVtbl->AddRotation(p,a,b,c,d,e)
   1727 #define IDirect3DRMFrame3_AddVisual(p,a)                     (p)->lpVtbl->AddVisual(p,a)
   1728 #define IDirect3DRMFrame3_GetChildren(p,a)                   (p)->lpVtbl->GetChildren(p,a)
   1729 #define IDirect3DRMFrame3_GetColor(p)                        (p)->lpVtbl->GetColor(p)
   1730 #define IDirect3DRMFrame3_GetLights(p,a)                     (p)->lpVtbl->GetLights(p,a)
   1731 #define IDirect3DRMFrame3_GetMaterialMode(p)                 (p)->lpVtbl->GetMaterialMode(p)
   1732 #define IDirect3DRMFrame3_GetParent(p,a)                     (p)->lpVtbl->GetParent(p,a)
   1733 #define IDirect3DRMFrame3_GetPosition(p,a,b)                 (p)->lpVtbl->GetPosition(p,a,b)
   1734 #define IDirect3DRMFrame3_GetRotation(p,a,b,c)               (p)->lpVtbl->GetRotation(p,a,b,c)
   1735 #define IDirect3DRMFrame3_GetScene(p,a)                      (p)->lpVtbl->GetScene(p,a)
   1736 #define IDirect3DRMFrame3_GetSortMode(p)                     (p)->lpVtbl->GetSortMode(p)
   1737 #define IDirect3DRMFrame3_GetTexture(p,a)                    (p)->lpVtbl->GetTexture(p,a)
   1738 #define IDirect3DRMFrame3_GetTransform(p,a,b)                (p)->lpVtbl->GetTransform(p,a,b)
   1739 #define IDirect3DRMFrame3_GetVelocity(p,a,b,c)               (p)->lpVtbl->GetVelocity(p,a,b,c)
   1740 #define IDirect3DRMFrame3_GetOrientation(p,a,b,c)            (p)->lpVtbl->GetOrientation(p,a,b,c)
   1741 #define IDirect3DRMFrame3_GetVisuals(p,a,b)                  (p)->lpVtbl->GetVisuals(p,a,b)
   1742 #define IDirect3DRMFrame3_InverseTransform(p,a,b)            (p)->lpVtbl->InverseTransform(p,a,b)
   1743 #define IDirect3DRMFrame3_Load(p,a,b,c,d,e)                  (p)->lpVtbl->Load(p,a,b,c,d,e)
   1744 #define IDirect3DRMFrame3_LookAt(p,a,b,c)                    (p)->lpVtbl->LookAt(p,a,b,c)
   1745 #define IDirect3DRMFrame3_Move(p,a)                          (p)->lpVtbl->Move(p,a)
   1746 #define IDirect3DRMFrame3_DeleteChild(p,a)                   (p)->lpVtbl->DeleteChild(p,a)
   1747 #define IDirect3DRMFrame3_DeleteLight(p,a)                   (p)->lpVtbl->DeleteLight(p,a)
   1748 #define IDirect3DRMFrame3_DeleteMoveCallback(p,a,b)          (p)->lpVtbl->DeleteMoveCallback(p,a,b)
   1749 #define IDirect3DRMFrame3_DeleteVisual(p,a)                  (p)->lpVtbl->DeleteVisual(p,a)
   1750 #define IDirect3DRMFrame3_GetSceneBackground(p)              (p)->lpVtbl->GetSceneBackground(p)
   1751 #define IDirect3DRMFrame3_GetSceneBackgroundDepth(p,a)       (p)->lpVtbl->GetSceneBackgroundDepth(p,a)
   1752 #define IDirect3DRMFrame3_GetSceneFogColor(p)                (p)->lpVtbl->GetSceneFogColor(p)
   1753 #define IDirect3DRMFrame3_GetSceneFogEnable(p)               (p)->lpVtbl->GetSceneFogEnable(p)
   1754 #define IDirect3DRMFrame3_GetSceneFogMode(p)                 (p)->lpVtbl->GetSceneFogMode(p)
   1755 #define IDirect3DRMFrame3_GetSceneFogParams(p,a,b,c)         (p)->lpVtbl->GetSceneFogParams(p,a,b,c)
   1756 #define IDirect3DRMFrame3_SetSceneBackground(p,a)            (p)->lpVtbl->SetSceneBackground(p,a)
   1757 #define IDirect3DRMFrame3_SetSceneBackgroundRGB(p,a,b,c)     (p)->lpVtbl->SetSceneBackgroundRGB(p,a,b,c)
   1758 #define IDirect3DRMFrame3_SetSceneBackgroundDepth(p,a)       (p)->lpVtbl->SetSceneBackgroundDepth(p,a)
   1759 #define IDirect3DRMFrame3_SetSceneBackgroundImage(p,a)       (p)->lpVtbl->SetSceneBackgroundImage(p,a)
   1760 #define IDirect3DRMFrame3_SetSceneFogEnable(p,a)             (p)->lpVtbl->SetSceneFogEnable(p,a)
   1761 #define IDirect3DRMFrame3_SetSceneFogColor(p,a)              (p)->lpVtbl->SetSceneFogColor(p,a)
   1762 #define IDirect3DRMFrame3_SetSceneFogMode(p,a)               (p)->lpVtbl->SetSceneFogMode(p,a)
   1763 #define IDirect3DRMFrame3_SetSceneFogParams(p,a,b,c)         (p)->lpVtbl->SetSceneFogParams(p,a,b,c)
   1764 #define IDirect3DRMFrame3_SetColor(p,a)                      (p)->lpVtbl->SetColor(p,a)
   1765 #define IDirect3DRMFrame3_SetColorRGB(p,a,b,c)               (p)->lpVtbl->SetColorRGB(p,a,b,c)
   1766 #define IDirect3DRMFrame3_GetZbufferMode(p)                  (p)->lpVtbl->GetZbufferMode(p)
   1767 #define IDirect3DRMFrame3_SetMaterialMode(p,a)               (p)->lpVtbl->SetMaterialMode(p,a)
   1768 #define IDirect3DRMFrame3_SetOrientation(p,a,b,c,d,e,f,g)    (p)->lpVtbl->SetOrientation(p,a,b,c,d,e,f,g)
   1769 #define IDirect3DRMFrame3_SetPosition(p,a,b,c,d)             (p)->lpVtbl->SetPosition(p,a,b,c,d)
   1770 #define IDirect3DRMFrame3_SetRotation(p,a,b,c,d,e)           (p)->lpVtbl->SetRotation(p,a,b,c,d,e)
   1771 #define IDirect3DRMFrame3_SetSortMode(p,a)                   (p)->lpVtbl->SetSortMode(p,a)
   1772 #define IDirect3DRMFrame3_SetTexture(p,a)                    (p)->lpVtbl->SetTexture(p,a)
   1773 #define IDirect3DRMFrame3_SetVelocity(p,a,b,c,d,e)           (p)->lpVtbl->SetVelocity(p,a,b,c,d,e)
   1774 #define IDirect3DRMFrame3_SetZbufferMode(p,a)                (p)->lpVtbl->SetZbufferMode(p,a)
   1775 #define IDirect3DRMFrame3_Transform(p,a,b)                   (p)->lpVtbl->Transform(p,a,b)
   1776 #define IDirect3DRMFrame3_GetBox(p,a)                        (p)->lpVtbl->GetBox(p,a)
   1777 #define IDirect3DRMFrame3_GetBoxEnable(p)                    (p)->lpVtbl->GetBoxEnable(p)
   1778 #define IDirect3DRMFrame3_GetAxes(p,a,b)                     (p)->lpVtbl->GetAxes(p,a,b)
   1779 #define IDirect3DRMFrame3_GetMaterial(p,a)                   (p)->lpVtbl->GetMaterial(p,a)
   1780 #define IDirect3DRMFrame3_GetInheritAxes(p)                  (p)->lpVtbl->GetInheritAxes(p)
   1781 #define IDirect3DRMFrame3_GetHierarchyBox(p,a)               (p)->lpVtbl->GetHierarchyBox(p,a)
   1782 #define IDirect3DRMFrame3_SetBox(p,a)                        (p)->lpVtbl->SetBox(p,a)
   1783 #define IDirect3DRMFrame3_SetBoxEnable(p,a)                  (p)->lpVtbl->SetBoxEnable(p,a)
   1784 #define IDirect3DRMFrame3_SetAxes(p,a,b,c,d,e,f)             (p)->lpVtbl->SetAxes(p,a,b,c,d,e,f)
   1785 #define IDirect3DRMFrame3_SetInheritAxes(p,a)                (p)->lpVtbl->SetInheritAxes(p,a)
   1786 #define IDirect3DRMFrame3_SetMaterial(p,a)                   (p)->lpVtbl->SetMaterial(p,a)
   1787 #define IDirect3DRMFrame3_SetQuaternion(p,a,b)               (p)->lpVtbl->SetQuaternion(p,a,b)
   1788 #define IDirect3DRMFrame3_RayPick(p,a,b,c,d)                 (p)->lpVtbl->RayPick(p,a,b,c,d)
   1789 #define IDirect3DRMFrame3_Save(p,a,b,c)                      (p)->lpVtbl->Save(p,a,b,c)
   1790 #define IDirect3DRMFrame3_TransformVectors(p,a,b,c,d)        (p)->lpVtbl->TransformVectors(p,a,b,c,d)
   1791 #define IDirect3DRMFrame3_InverseTransformVectors(p,a,b,c,d) (p)->lpVtbl->InverseTransformVectors(p,a,b,c,d)
   1792 #define IDirect3DRMFrame3_SetTraversalOptions(p,a)           (p)->lpVtbl->SetTraversalOptions(p,a)
   1793 #define IDirect3DRMFrame3_GetTraversalOptions(p,a)           (p)->lpVtbl->GetTraversalOptions(p,a)
   1794 #define IDirect3DRMFrame3_SetSceneFogMethod(p,a)             (p)->lpVtbl->SetSceneFogMethod(p,a)
   1795 #define IDirect3DRMFrame3_GetSceneFogMethod(p,a)             (p)->lpVtbl->GetSceneFogMethod(p,a)
   1796 #define IDirect3DRMFrame3_SetMaterialOverride(p,a)           (p)->lpVtbl->SetMaterialOverride(p,a)
   1797 #define IDirect3DRMFrame3_GetMaterialOverride(p,a)           (p)->lpVtbl->GetMaterialOverride(p,a)
   1798 #else
   1799 /*** IUnknown methods ***/
   1800 #define IDirect3DRMFrame3_QueryInterface(p,a,b)              (p)->QueryInterface(a,b)
   1801 #define IDirect3DRMFrame3_AddRef(p)                          (p)->AddRef()
   1802 #define IDirect3DRMFrame3_Release(p)                         (p)->Release()
   1803 /*** IDirect3DRMObject methods ***/
   1804 #define IDirect3DRMFrame3_Clone(p,a,b,c)                     (p)->Clone(a,b,c)
   1805 #define IDirect3DRMFrame3_AddDestroyCallback(p,a,b)          (p)->AddDestroyCallback(a,b)
   1806 #define IDirect3DRMFrame3_DeleteDestroyCallback(p,a,b)       (p)->DeleteDestroyCallback(a,b)
   1807 #define IDirect3DRMFrame3_SetAppData(p,a)                    (p)->SetAppData(a)
   1808 #define IDirect3DRMFrame3_GetAppData(p)                      (p)->GetAppData()
   1809 #define IDirect3DRMFrame3_SetName(p,a)                       (p)->SetName(a)
   1810 #define IDirect3DRMFrame3_GetName(p,a,b)                     (p)->GetName(a,b)
   1811 #define IDirect3DRMFrame3_GetClassName(p,a,b)                (p)->GetClassName(a,b)
   1812 /*** IDirect3DRMFrame3 methods ***/
   1813 #define IDirect3DRMFrame3_AddChild(p,a)                      (p)->AddChild(a)
   1814 #define IDirect3DRMFrame3_AddLight(p,a)                      (p)->AddLight(a)
   1815 #define IDirect3DRMFrame3_AddMoveCallback(p,a,b,c)           (p)->AddMoveCallback(a,b,c)
   1816 #define IDirect3DRMFrame3_AddTransform(p,a,b)                (p)->AddTransform(a,b)
   1817 #define IDirect3DRMFrame3_AddTranslation(p,a,b,c,d)          (p)->AddTranslation(a,b,c,d)
   1818 #define IDirect3DRMFrame3_AddScale(p,a,b,c,d)                (p)->AddScale(a,b,c,d)
   1819 #define IDirect3DRMFrame3_AddRotation(p,a,b,c,d,e)           (p)->AddRotation(a,b,c,d,e)
   1820 #define IDirect3DRMFrame3_AddVisual(p,a)                     (p)->AddVisual(a)
   1821 #define IDirect3DRMFrame3_GetChildren(p,a)                   (p)->GetChildren(a)
   1822 #define IDirect3DRMFrame3_GetColor(p)                        (p)->GetColor()
   1823 #define IDirect3DRMFrame3_GetLights(p,a)                     (p)->GetLights(a)
   1824 #define IDirect3DRMFrame3_GetMaterialMode(p)                 (p)->GetMaterialMode()
   1825 #define IDirect3DRMFrame3_GetParent(p,a)                     (p)->GetParent(a)
   1826 #define IDirect3DRMFrame3_GetPosition(p,a,b)                 (p)->GetPosition(a,b)
   1827 #define IDirect3DRMFrame3_GetRotation(p,a,b,c)               (p)->GetRotation(a,b,c)
   1828 #define IDirect3DRMFrame3_GetScene(p,a)                      (p)->GetScene(a)
   1829 #define IDirect3DRMFrame3_GetSortMode(p)                     (p)->GetSortMode()
   1830 #define IDirect3DRMFrame3_GetTexture(p,a)                    (p)->GetTexture(a)
   1831 #define IDirect3DRMFrame3_GetTransform(p,a,b)                (p)->GetTransform(a,b)
   1832 #define IDirect3DRMFrame3_GetVelocity(p,a,b,c)               (p)->GetVelocity(a,b,c)
   1833 #define IDirect3DRMFrame3_GetOrientation(p,a,b,c)            (p)->GetOrientation(a,b,c)
   1834 #define IDirect3DRMFrame3_GetVisuals(p,a,b)                  (p)->GetVisuals(a,b)
   1835 #define IDirect3DRMFrame3_InverseTransform(p,a,b)            (p)->InverseTransform(a,b)
   1836 #define IDirect3DRMFrame3_Load(p,a,b,c,d,e)                  (p)->Load(a,b,c,d,e)
   1837 #define IDirect3DRMFrame3_LookAt(p,a,b,c)                    (p)->LookAt(a,b,c)
   1838 #define IDirect3DRMFrame3_Move(p,a)                          (p)->Move(a)
   1839 #define IDirect3DRMFrame3_DeleteChild(p,a)                   (p)->DeleteChild(a)
   1840 #define IDirect3DRMFrame3_DeleteLight(p,a)                   (p)->DeleteLight(a)
   1841 #define IDirect3DRMFrame3_DeleteMoveCallback(p,a,b)          (p)->DeleteMoveCallback(a,b)
   1842 #define IDirect3DRMFrame3_DeleteVisual(p,a)                  (p)->DeleteVisual(a)
   1843 #define IDirect3DRMFrame3_GetSceneBackground(p)              (p)->GetSceneBackground()
   1844 #define IDirect3DRMFrame3_GetSceneBackgroundDepth(p,a)       (p)->GetSceneBackgroundDepth(a)
   1845 #define IDirect3DRMFrame3_GetSceneFogColor(p)                (p)->GetSceneFogColor()
   1846 #define IDirect3DRMFrame3_GetSceneFogEnable(p)               (p)->GetSceneFogEnable()
   1847 #define IDirect3DRMFrame3_GetSceneFogMode(p)                 (p)->GetSceneFogMode()
   1848 #define IDirect3DRMFrame3_GetSceneFogParams(p,a,b,c)         (p)->GetSceneFogParams(a,b,c)
   1849 #define IDirect3DRMFrame3_SetSceneBackground(p,a)            (p)->SetSceneBackground(a)
   1850 #define IDirect3DRMFrame3_SetSceneBackgroundRGB(p,a,b,c)     (p)->SetSceneBackgroundRGB(a,b,c)
   1851 #define IDirect3DRMFrame3_SetSceneBackgroundDepth(p,a)       (p)->SetSceneBackgroundDepth(a)
   1852 #define IDirect3DRMFrame3_SetSceneBackgroundImage(p,a)       (p)->SetSceneBackgroundImage(a)
   1853 #define IDirect3DRMFrame3_SetSceneFogEnable(p,a)             (p)->SetSceneFogEnable(a)
   1854 #define IDirect3DRMFrame3_SetSceneFogColor(p,a)              (p)->SetSceneFogColor(a)
   1855 #define IDirect3DRMFrame3_SetSceneFogMode(p,a)               (p)->SetSceneFogMode(a)
   1856 #define IDirect3DRMFrame3_SetSceneFogParams(p,a,b,c)         (p)->SetSceneFogParams(a,b,c)
   1857 #define IDirect3DRMFrame3_SetColor(p,a)                      (p)->SetColor(a)
   1858 #define IDirect3DRMFrame3_SetColorRGB(p,a,b,c)               (p)->SetColorRGB(a,b,c)
   1859 #define IDirect3DRMFrame3_GetZbufferMode(p)                  (p)->GetZbufferMode()
   1860 #define IDirect3DRMFrame3_SetMaterialMode(p,a)               (p)->SetMaterialMode(a)
   1861 #define IDirect3DRMFrame3_SetOrientation(p,a,b,c,d,e,f,g)    (p)->SetOrientation(a,b,c,d,e,f,g)
   1862 #define IDirect3DRMFrame3_SetPosition(p,a,b,c,d)             (p)->SetPosition(a,b,c,d)
   1863 #define IDirect3DRMFrame3_SetRotation(p,a,b,c,d,e)           (p)->SetRotation(a,b,c,d,e)
   1864 #define IDirect3DRMFrame3_SetSortMode(p,a)                   (p)->SetSortMode(a)
   1865 #define IDirect3DRMFrame3_SetTexture(p,a)                    (p)->SetTexture(a)
   1866 #define IDirect3DRMFrame3_SetVelocity(p,a,b,c,d,e)           (p)->SetVelocity(a,b,c,d,e)
   1867 #define IDirect3DRMFrame3_SetZbufferMode(p,a)                (p)->SetZbufferMode(a)
   1868 #define IDirect3DRMFrame3_Transform(p,a,b)                   (p)->Transform(a,b)
   1869 #define IDirect3DRMFrame3_GetBox(p,a)                        (p)->GetBox(a)
   1870 #define IDirect3DRMFrame3_GetBoxEnable(p)                    (p)->GetBoxEnable()
   1871 #define IDirect3DRMFrame3_GetAxes(p,a,b)                     (p)->GetAxes(a,b)
   1872 #define IDirect3DRMFrame3_GetMaterial(p,a)                   (p)->GetMaterial(a)
   1873 #define IDirect3DRMFrame3_GetInheritAxes(p)                  (p)->GetInheritAxes()
   1874 #define IDirect3DRMFrame3_GetHierarchyBox(p,a)               (p)->GetHierarchyBox(a)
   1875 #define IDirect3DRMFrame3_SetBox(p,a)                        (p)->SetBox(a)
   1876 #define IDirect3DRMFrame3_SetBoxEnable(p,a)                  (p)->SetBoxEnable(a)
   1877 #define IDirect3DRMFrame3_SetAxes(p,a,b,c,d,e,f)             (p)->SetAxes(a,b,c,d,e,f)
   1878 #define IDirect3DRMFrame3_SetInheritAxes(p,a)                (p)->SetInheritAxes(a)
   1879 #define IDirect3DRMFrame3_SetMaterial(p,a)                   (p)->SetMaterial(a)
   1880 #define IDirect3DRMFrame3_SetQuaternion(p,a,b)               (p)->SetQuaternion(a,b)
   1881 #define IDirect3DRMFrame3_RayPick(p,a,b,c,d)                 (p)->RayPick(a,b,c,d)
   1882 #define IDirect3DRMFrame3_Save(p,a,b,c)                      (p)->Save(a,b,c)
   1883 #define IDirect3DRMFrame3_TransformVectors(p,a,b,c,d)        (p)->TransformVectors(a,b,c,d)
   1884 #define IDirect3DRMFrame3_InverseTransformVectors(p,a,b,c,d) (p)->InverseTransformVectors(a,b,c,d)
   1885 #define IDirect3DRMFrame3_SetTraversalOptions(p,a)           (p)->SetTraversalOptions(a)
   1886 #define IDirect3DRMFrame3_GetTraversalOptions(p,a)           (p)->GetTraversalOptions(a)
   1887 #define IDirect3DRMFrame3_SetSceneFogMethod(p,a)             (p)->SetSceneFogMethod(a)
   1888 #define IDirect3DRMFrame3_GetSceneFogMethod(p,a)             (p)->GetSceneFogMethod(a)
   1889 #define IDirect3DRMFrame3_SetMaterialOverride(p,a)           (p)->SetMaterialOverride(a)
   1890 #define IDirect3DRMFrame3_GetMaterialOverride(p,a)           (p)->GetMaterialOverride(a)
   1891 #endif
   1892 
   1893 /*****************************************************************************
   1894  * IDirect3DRMMesh interface
   1895  */
   1896 #define INTERFACE IDirect3DRMMesh
   1897 DECLARE_INTERFACE_(IDirect3DRMMesh,IDirect3DRMVisual)
   1898 {
   1899     /*** IUnknown methods ***/
   1900     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
   1901     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
   1902     STDMETHOD_(ULONG,Release)(THIS) PURE;
   1903     /*** IDirect3DRMObject methods ***/
   1904     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
   1905     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
   1906     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
   1907     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
   1908     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
   1909     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
   1910     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
   1911     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
   1912     /*** IDirect3DRMMesh methods ***/
   1913     STDMETHOD(Scale)(THIS_ D3DVALUE sx, D3DVALUE sy, D3DVALUE sz) PURE;
   1914     STDMETHOD(Translate)(THIS_ D3DVALUE tx, D3DVALUE ty, D3DVALUE tz) PURE;
   1915     STDMETHOD(GetBox)(THIS_ D3DRMBOX *) PURE;
   1916     STDMETHOD(AddGroup)(THIS_ unsigned vCount, unsigned fCount, unsigned vPerFace, unsigned *fData,
   1917         D3DRMGROUPINDEX *returnId) PURE;
   1918     STDMETHOD(SetVertices)(THIS_ D3DRMGROUPINDEX id, unsigned index, unsigned count,
   1919         D3DRMVERTEX *values) PURE;
   1920     STDMETHOD(SetGroupColor)(THIS_ D3DRMGROUPINDEX id, D3DCOLOR value) PURE;
   1921     STDMETHOD(SetGroupColorRGB)(THIS_ D3DRMGROUPINDEX id, D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
   1922     STDMETHOD(SetGroupMapping)(THIS_ D3DRMGROUPINDEX id, D3DRMMAPPING value) PURE;
   1923     STDMETHOD(SetGroupQuality)(THIS_ D3DRMGROUPINDEX id, D3DRMRENDERQUALITY value) PURE;
   1924     STDMETHOD(SetGroupMaterial)(THIS_ D3DRMGROUPINDEX id, LPDIRECT3DRMMATERIAL value) PURE;
   1925     STDMETHOD(SetGroupTexture)(THIS_ D3DRMGROUPINDEX id, LPDIRECT3DRMTEXTURE value) PURE;
   1926     STDMETHOD_(unsigned, GetGroupCount)(THIS) PURE;
   1927     STDMETHOD(GetGroup)(THIS_ D3DRMGROUPINDEX id, unsigned *vCount, unsigned *fCount, unsigned *vPerFace,
   1928         DWORD *fDataSize, unsigned *fData) PURE;
   1929     STDMETHOD(GetVertices)(THIS_ D3DRMGROUPINDEX id, DWORD index, DWORD count, D3DRMVERTEX *returnPtr) PURE;
   1930     STDMETHOD_(D3DCOLOR, GetGroupColor)(THIS_ D3DRMGROUPINDEX id) PURE;
   1931     STDMETHOD_(D3DRMMAPPING, GetGroupMapping)(THIS_ D3DRMGROUPINDEX id) PURE;
   1932     STDMETHOD_(D3DRMRENDERQUALITY, GetGroupQuality)(THIS_ D3DRMGROUPINDEX id) PURE;
   1933     STDMETHOD(GetGroupMaterial)(THIS_ D3DRMGROUPINDEX id, LPDIRECT3DRMMATERIAL *returnPtr) PURE;
   1934     STDMETHOD(GetGroupTexture)(THIS_ D3DRMGROUPINDEX id, LPDIRECT3DRMTEXTURE *returnPtr) PURE;
   1935 };
   1936 #undef INTERFACE
   1937 
   1938 #if !defined(__cplusplus) || defined(CINTERFACE)
   1939 /*** IUnknown methods ***/
   1940 #define IDirect3DRMMesh_QueryInterface(p,a,b)              (p)->lpVtbl->QueryInterface(p,a,b)
   1941 #define IDirect3DRMMesh_AddRef(p)                          (p)->lpVtbl->AddRef(p)
   1942 #define IDirect3DRMMesh_Release(p)                         (p)->lpVtbl->Release(p)
   1943 /*** IDirect3DRMObject methods ***/
   1944 #define IDirect3DRMMesh_Clone(p,a,b,c)                     (p)->lpVtbl->Clone(p,a,b,c)
   1945 #define IDirect3DRMMesh_AddDestroyCallback(p,a,b)          (p)->lpVtbl->AddDestroyCallback(p,a,b)
   1946 #define IDirect3DRMMesh_DeleteDestroyCallback(p,a,b)       (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
   1947 #define IDirect3DRMMesh_SetAppData(p,a)                    (p)->lpVtbl->SetAppData(p,a)
   1948 #define IDirect3DRMMesh_GetAppData(p)                      (p)->lpVtbl->GetAppData(p)
   1949 #define IDirect3DRMMesh_SetName(p,a)                       (p)->lpVtbl->SetName(p,a)
   1950 #define IDirect3DRMMesh_GetName(p,a,b)                     (p)->lpVtbl->GetName(p,a,b)
   1951 #define IDirect3DRMMesh_GetClassName(p,a,b)                (p)->lpVtbl->GetClassName(p,a,b)
   1952 /*** IDirect3DRMMesh methods ***/
   1953 #define IDirect3DRMMesh_Scale(p,a,b,c)                     (p)->lpVtbl->Scale(p,a,b,c)
   1954 #define IDirect3DRMMesh_Translate(p,a,b,c)                 (p)->lpVtbl->Translate(p,a,b,c)
   1955 #define IDirect3DRMMesh_GetBox(p,a)                        (p)->lpVtbl->GetBox(p,a)
   1956 #define IDirect3DRMMesh_AddGroup(p,a,b,c,d,e)              (p)->lpVtbl->AddGroup(p,a,b,c,d,e)
   1957 #define IDirect3DRMMesh_SetVertices(p,a,b,c,d)             (p)->lpVtbl->SetVertices(p,a,b,c,d)
   1958 #define IDirect3DRMMesh_SetGroupColor(p,a,b)               (p)->lpVtbl->SetGroupColor(p,a,b)
   1959 #define IDirect3DRMMesh_SetGroupColorRGB(p,a,b,c,d)        (p)->lpVtbl->SetGroupColorRGB(p,a,b,c,d)
   1960 #define IDirect3DRMMesh_SetGroupMapping(p,a,b)             (p)->lpVtbl->SetGroupMapping(p,a,b)
   1961 #define IDirect3DRMMesh_SetGroupQuality(p,a,b)             (p)->lpVtbl->SetGroupQuality(p,a,b)
   1962 #define IDirect3DRMMesh_SetGroupMaterial(p,a,b)            (p)->lpVtbl->SetGroupMaterial(p,a,b)
   1963 #define IDirect3DRMMesh_SetGroupTexture(p,a,b)             (p)->lpVtbl->SetGroupTexture(p,a,b)
   1964 #define IDirect3DRMMesh_GetGroupCount(p)                   (p)->lpVtbl->GetGroupCount(p)
   1965 #define IDirect3DRMMesh_GetGroup(p,a,b,c,d,e,f)            (p)->lpVtbl->GetGroup(p,a,b,c,d,e,f)
   1966 #define IDirect3DRMMesh_GetVertices(p,a,b,c,d)             (p)->lpVtbl->GetVertices(p,a,b,c,d)
   1967 #define IDirect3DRMMesh_GetGroupColor(p,a)                 (p)->lpVtbl->GetGroupColor(p,a)
   1968 #define IDirect3DRMMesh_GetGroupMapping(p,a)               (p)->lpVtbl->GetGroupMapping(p,a)
   1969 #define IDirect3DRMMesh_GetGroupQuality(p,a)               (p)->lpVtbl->GetGroupQuality(p,a)
   1970 #define IDirect3DRMMesh_GetGroupMaterial(p,a,b)            (p)->lpVtbl->GetGroupMaterial(p,a,b)
   1971 #define IDirect3DRMMesh_GetGroupTexture(p,a,b)             (p)->lpVtbl->GetGroupTexture(p,a,b)
   1972 #else
   1973 /*** IUnknown methods ***/
   1974 #define IDirect3DRMMesh_QueryInterface(p,a,b)              (p)->QueryInterface(a,b)
   1975 #define IDirect3DRMMesh_AddRef(p)                          (p)->AddRef()
   1976 #define IDirect3DRMMesh_Release(p)                         (p)->Release()
   1977 /*** IDirect3DRMObject methods ***/
   1978 #define IDirect3DRMMesh_Clone(p,a,b,c)                     (p)->Clone(a,b,c)
   1979 #define IDirect3DRMMesh_AddDestroyCallback(p,a,b)          (p)->AddDestroyCallback(a,b)
   1980 #define IDirect3DRMMesh_DeleteDestroyCallback(p,a,b)       (p)->DeleteDestroyCallback(a,b)
   1981 #define IDirect3DRMMesh_SetAppData(p,a)                    (p)->SetAppData(a)
   1982 #define IDirect3DRMMesh_GetAppData(p)                      (p)->GetAppData()
   1983 #define IDirect3DRMMesh_SetName(p,a)                       (p)->SetName(a)
   1984 #define IDirect3DRMMesh_GetName(p,a,b)                     (p)->GetName(a,b)
   1985 #define IDirect3DRMMesh_GetClassName(p,a,b)                (p)->GetClassName(a,b)
   1986 /*** IDirect3DRMMesh methods ***/
   1987 #define IDirect3DRMMesh_Scale(p,a,b,c)                     (p)->Scale(a,b,c)
   1988 #define IDirect3DRMMesh_Translate(p,a,b,c)                 (p)->Translate(a,b,c)
   1989 #define IDirect3DRMMesh_GetBox(p,a)                        (p)->GetBox(a)
   1990 #define IDirect3DRMMesh_AddGroup(p,a,b,c,d,e)              (p)->AddGroup(a,b,c,d,e)
   1991 #define IDirect3DRMMesh_SetVertices(p,a,b,c,d)             (p)->SetVertices(a,b,c,d)
   1992 #define IDirect3DRMMesh_SetGroupColor(p,a,b)               (p)->SetGroupColor(a,b)
   1993 #define IDirect3DRMMesh_SetGroupColorRGB(p,a,b,c,d)        (p)->SetGroupColorRGB(a,b,c,d)
   1994 #define IDirect3DRMMesh_SetGroupMapping(p,a,b)             (p)->SetGroupMapping(a,b)
   1995 #define IDirect3DRMMesh_SetGroupQuality(p,a,b)             (p)->SetGroupQuality(a,b)
   1996 #define IDirect3DRMMesh_SetGroupMaterial(p,a,b)            (p)->SetGroupMaterial(a,b)
   1997 #define IDirect3DRMMesh_SetGroupTexture(p,a,b)             (p)->SetGroupTexture(a,b)
   1998 #define IDirect3DRMMesh_GetGroupCount(p)                   (p)->GetGroupCount()
   1999 #define IDirect3DRMMesh_GetGroup(p,a,b,c,d,e,f)            (p)->GetGroup(a,b,c,d,e,f)
   2000 #define IDirect3DRMMesh_GetVertices(p,a,b,c,d)             (p)->GetVertices(a,b,c,d)
   2001 #define IDirect3DRMMesh_GetGroupColor(p,a)                 (p)->GetGroupColor(a)
   2002 #define IDirect3DRMMesh_GetGroupMapping(p,a)               (p)->GetGroupMapping(a)
   2003 #define IDirect3DRMMesh_GetGroupQuality(p,a)               (p)->GetGroupQuality(a)
   2004 #define IDirect3DRMMesh_GetGroupMaterial(p,a,b)            (p)->GetGroupMaterial(a,b)
   2005 #define IDirect3DRMMesh_GetGroupTexture(p,a,b)             (p)->GetGroupTexture(a,b)
   2006 #endif
   2007 
   2008 /*****************************************************************************
   2009  * IDirect3DRMProgressiveMesh interface
   2010  */
   2011 #define INTERFACE IDirect3DRMProgressiveMesh
   2012 DECLARE_INTERFACE_(IDirect3DRMProgressiveMesh,IDirect3DRMVisual)
   2013 {
   2014     /*** IUnknown methods ***/
   2015     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
   2016     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
   2017     STDMETHOD_(ULONG,Release)(THIS) PURE;
   2018     /*** IDirect3DRMObject methods ***/
   2019     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
   2020     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
   2021     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
   2022     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
   2023     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
   2024     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
   2025     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
   2026     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
   2027     /*** IDirect3DRMProgressiveMesh methods ***/
   2028     STDMETHOD(Load) (THIS_ LPVOID pObjLocation, LPVOID pObjId, D3DRMLOADOPTIONS dloLoadflags,
   2029         D3DRMLOADTEXTURECALLBACK pCallback, LPVOID lpArg) PURE;
   2030     STDMETHOD(GetLoadStatus) (THIS_ D3DRMPMESHLOADSTATUS *status) PURE;
   2031     STDMETHOD(SetMinRenderDetail) (THIS_ D3DVALUE d3dVal) PURE;
   2032     STDMETHOD(Abort) (THIS_ DWORD flags) PURE;
   2033     STDMETHOD(GetFaceDetail) (THIS_ LPDWORD pCount) PURE;
   2034     STDMETHOD(GetVertexDetail) (THIS_ LPDWORD pCount) PURE;
   2035     STDMETHOD(SetFaceDetail) (THIS_ DWORD count) PURE;
   2036     STDMETHOD(SetVertexDetail) (THIS_ DWORD count) PURE;
   2037     STDMETHOD(GetFaceDetailRange) (THIS_ LPDWORD pMin, LPDWORD pMax) PURE;
   2038     STDMETHOD(GetVertexDetailRange) (THIS_ LPDWORD pMin, LPDWORD pMax) PURE;
   2039     STDMETHOD(GetDetail) (THIS_ D3DVALUE *pdvVal) PURE;
   2040     STDMETHOD(SetDetail) (THIS_ D3DVALUE d3dVal) PURE;
   2041     STDMETHOD(RegisterEvents) (THIS_ HANDLE event, DWORD flags, DWORD reserved) PURE;
   2042     STDMETHOD(CreateMesh) (THIS_ IDirect3DRMMesh **mesh) PURE;
   2043     STDMETHOD(Duplicate) (THIS_ LPDIRECT3DRMPROGRESSIVEMESH *ppD3DRMPMesh) PURE;
   2044     STDMETHOD(GetBox) (THIS_ D3DRMBOX *box) PURE;
   2045     STDMETHOD(SetQuality) (THIS_ D3DRMRENDERQUALITY quality) PURE;
   2046     STDMETHOD(GetQuality) (THIS_ D3DRMRENDERQUALITY *quality) PURE;
   2047 };
   2048 #undef INTERFACE
   2049 
   2050 #if !defined(__cplusplus) || defined(CINTERFACE)
   2051 /*** IUnknown methods ***/
   2052 #define IDirect3DRMProgressiveMesh_QueryInterface(p,a,b)          (p)->lpVtbl->QueryInterface(p,a,b)
   2053 #define IDirect3DRMProgressiveMesh_AddRef(p)                      (p)->lpVtbl->AddRef(p)
   2054 #define IDirect3DRMProgressiveMesh_Release(p)                     (p)->lpVtbl->Release(p)
   2055 /*** IDirect3DRMObject methods ***/
   2056 #define IDirect3DRMProgressiveMesh_Clone(p,a,b,c)                 (p)->lpVtbl->Clone(p,a,b,c)
   2057 #define IDirect3DRMProgressiveMesh_AddDestroyCallback(p,a,b)      (p)->lpVtbl->AddDestroyCallback(p,a,b)
   2058 #define IDirect3DRMProgressiveMesh_DeleteDestroyCallback(p,a,b)   (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
   2059 #define IDirect3DRMProgressiveMesh_SetAppData(p,a)                (p)->lpVtbl->SetAppData(p,a)
   2060 #define IDirect3DRMProgressiveMesh_GetAppData(p)                  (p)->lpVtbl->GetAppData(p)
   2061 #define IDirect3DRMProgressiveMesh_SetName(p,a)                   (p)->lpVtbl->SetName(p,a)
   2062 #define IDirect3DRMProgressiveMesh_GetName(p,a,b)                 (p)->lpVtbl->GetName(p,a,b)
   2063 #define IDirect3DRMProgressiveMesh_GetClassName(p,a,b)            (p)->lpVtbl->GetClassName(p,a,b)
   2064 /*** IDirect3DRMProgressiveMesh methods ***/
   2065 #define IDirect3DRMProgressiveMesh_Load(p,a,b,c,d,e)              (p)->lpVtbl->Load(p,a,b,c,d,e)
   2066 #define IDirect3DRMProgressiveMesh_GetLoadStatus(p,a)             (p)->lpVtbl->GetLoadStatus(p,a)
   2067 #define IDirect3DRMProgressiveMesh_SetMinRenderDetail(p,a)        (p)->lpVtbl->SetMinRenderDetail(p,a)
   2068 #define IDirect3DRMProgressiveMesh_Abort(p,a)                     (p)->lpVtbl->Abort(p,a)
   2069 #define IDirect3DRMProgressiveMesh_GetFaceDetail(p,a)             (p)->lpVtbl->GetFaceDetail(p,a)
   2070 #define IDirect3DRMProgressiveMesh_GetVertexDetail(p,a)           (p)->lpVtbl->GetVertexDetail(p,a)
   2071 #define IDirect3DRMProgressiveMesh_SetFaceDetail(p,a)             (p)->lpVtbl->SetFaceDetail(p,a)
   2072 #define IDirect3DRMProgressiveMesh_SetVertexDetail(p,a)           (p)->lpVtbl->SetVertexDetail(p,a)
   2073 #define IDirect3DRMProgressiveMesh_GetFaceDetailRange(p,a,b)      (p)->lpVtbl->GetFaceDetailRange(p,a,b)
   2074 #define IDirect3DRMProgressiveMesh_GetVertexDetailRange(p,a,b)    (p)->lpVtbl->GetVertexDetailRange(p,a,b)
   2075 #define IDirect3DRMProgressiveMesh_GetDetail(p,a)                 (p)->lpVtbl->GetDetail(p,a)
   2076 #define IDirect3DRMProgressiveMesh_SetDetail(p,a)                 (p)->lpVtbl->SetDetail(p,a)
   2077 #define IDirect3DRMProgressiveMesh_RegisterEvents(p,a,b,c)        (p)->lpVtbl->RegisterEvents(p,a,b,c)
   2078 #define IDirect3DRMProgressiveMesh_CreateMesh(p,a)                (p)->lpVtbl->CreateMesh(p,a)
   2079 #define IDirect3DRMProgressiveMesh_Duplicate(p,a)                 (p)->lpVtbl->Duplicate(p,a)
   2080 #define IDirect3DRMProgressiveMesh_GetBox(p,a)                    (p)->lpVtbl->GetBox(p,a)
   2081 #define IDirect3DRMProgressiveMesh_SetQuality(p,a)                (p)->lpVtbl->SetQuality(p,a)
   2082 #define IDirect3DRMProgressiveMesh_GetQuality(p,a)                (p)->lpVtbl->GetQuality(p,a)
   2083 #else
   2084 /*** IUnknown methods ***/
   2085 #define IDirect3DRMProgressiveMesh_QueryInterface(p,a,b)          (p)->QueryInterface(a,b)
   2086 #define IDirect3DRMProgressiveMesh_AddRef(p)                      (p)->AddRef()
   2087 #define IDirect3DRMProgressiveMesh_Release(p)                     (p)->Release()
   2088 /*** IDirect3DRMObject methods ***/
   2089 #define IDirect3DRMProgressiveMesh_Clone(p,a,b,c)                 (p)->Clone(a,b,c)
   2090 #define IDirect3DRMProgressiveMesh_AddDestroyCallback(p,a,b)      (p)->AddDestroyCallback(a,b)
   2091 #define IDirect3DRMProgressiveMesh_DeleteDestroyCallback(p,a,b)   (p)->DeleteDestroyCallback(a,b)
   2092 #define IDirect3DRMProgressiveMesh_SetAppData(p,a)                (p)->SetAppData(a)
   2093 #define IDirect3DRMProgressiveMesh_GetAppData(p)                  (p)->GetAppData()
   2094 #define IDirect3DRMProgressiveMesh_SetName(p,a)                   (p)->SetName(a)
   2095 #define IDirect3DRMProgressiveMesh_GetName(p,a,b)                 (p)->GetName(a,b)
   2096 #define IDirect3DRMProgressiveMesh_GetClassName(p,a,b)            (p)->GetClassName(a,b)
   2097 /*** IDirect3DRMProgressiveMesh methods ***/
   2098 #define IDirect3DRMProgressiveMesh_Load(p,a,b,c,d,e)              (p)->Load(a,b,c,d,e)
   2099 #define IDirect3DRMProgressiveMesh_GetLoadStatus(p,a)             (p)->GetLoadStatus(a)
   2100 #define IDirect3DRMProgressiveMesh_SetMinRenderDetail(p,a)        (p)->SetMinRenderDetail(a)
   2101 #define IDirect3DRMProgressiveMesh_Abort(p,a)                     (p)->Abort(a)
   2102 #define IDirect3DRMProgressiveMesh_GetFaceDetail(p,a)             (p)->GetFaceDetail(a)
   2103 #define IDirect3DRMProgressiveMesh_GetVertexDetail(p,a)           (p)->GetVertexDetail(a)
   2104 #define IDirect3DRMProgressiveMesh_SetFaceDetail(p,a)             (p)->SetFaceDetail(a)
   2105 #define IDirect3DRMProgressiveMesh_SetVertexDetail(p,a)           (p)->SetVertexDetail(a)
   2106 #define IDirect3DRMProgressiveMesh_GetFaceDetailRange(p,a,b)      (p)->GetFaceDetailRange(a,b)
   2107 #define IDirect3DRMProgressiveMesh_GetVertexDetailRange(p,a,b)    (p)->GetVertexDetailRange(a,b)
   2108 #define IDirect3DRMProgressiveMesh_GetDetail(p,a)                 (p)->GetDetail(a)
   2109 #define IDirect3DRMProgressiveMesh_SetDetail(p,a)                 (p)->SetDetail(a)
   2110 #define IDirect3DRMProgressiveMesh_RegisterEvents(p,a,b,c)        (p)->RegisterEvents(a,b,c)
   2111 #define IDirect3DRMProgressiveMesh_CreateMesh(p,a)                (p)->CreateMesh(a)
   2112 #define IDirect3DRMProgressiveMesh_Duplicate(p,a)                 (p)->Duplicate(a)
   2113 #define IDirect3DRMProgressiveMesh_GetBox(p,a)                    (p)->GetBox(a)
   2114 #define IDirect3DRMProgressiveMesh_SetQuality(p,a)                (p)->SetQuality(a)
   2115 #define IDirect3DRMProgressiveMesh_GetQuality(p,a)                (p)->GetQuality(a)
   2116 #endif
   2117 
   2118 /*****************************************************************************
   2119  * IDirect3DRMShadow interface
   2120  */
   2121 #define INTERFACE IDirect3DRMShadow
   2122 DECLARE_INTERFACE_(IDirect3DRMShadow,IDirect3DRMVisual)
   2123 {
   2124     /*** IUnknown methods ***/
   2125     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
   2126     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
   2127     STDMETHOD_(ULONG,Release)(THIS) PURE;
   2128     /*** IDirect3DRMObject methods ***/
   2129     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
   2130     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
   2131     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
   2132     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
   2133     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
   2134     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
   2135     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
   2136     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
   2137     /*** IDirect3DRMShadow methods ***/
   2138     STDMETHOD(Init)(THIS_ IDirect3DRMVisual *visual, struct IDirect3DRMLight *light,
   2139             D3DVALUE px, D3DVALUE py, D3DVALUE pz, D3DVALUE nx, D3DVALUE ny, D3DVALUE nz) PURE;
   2140 };
   2141 #undef INTERFACE
   2142 
   2143 #if !defined(__cplusplus) || defined(CINTERFACE)
   2144 /*** IUnknown methods ***/
   2145 #define IDirect3DRMShadow_QueryInterface(p,a,b)          (p)->lpVtbl->QueryInterface(p,a,b)
   2146 #define IDirect3DRMShadow_AddRef(p)                      (p)->lpVtbl->AddRef(p)
   2147 #define IDirect3DRMShadow_Release(p)                     (p)->lpVtbl->Release(p)
   2148 /*** IDirect3DRMObject methods ***/
   2149 #define IDirect3DRMShadow_Clone(p,a,b,c)                 (p)->lpVtbl->Clone(p,a,b,c)
   2150 #define IDirect3DRMShadow_AddDestroyCallback(p,a,b)      (p)->lpVtbl->AddDestroyCallback(p,a,b)
   2151 #define IDirect3DRMShadow_DeleteDestroyCallback(p,a,b)   (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
   2152 #define IDirect3DRMShadow_SetAppData(p,a)                (p)->lpVtbl->SetAppData(p,a)
   2153 #define IDirect3DRMShadow_GetAppData(p)                  (p)->lpVtbl->GetAppData(p)
   2154 #define IDirect3DRMShadow_SetName(p,a)                   (p)->lpVtbl->SetName(p,a)
   2155 #define IDirect3DRMShadow_GetName(p,a,b)                 (p)->lpVtbl->GetName(p,a,b)
   2156 #define IDirect3DRMShadow_GetClassName(p,a,b)            (p)->lpVtbl->GetClassName(p,a,b)
   2157 /*** IDirect3DRMShadow methods ***/
   2158 #define IDirect3DRMShadow_Init(p,a,b,c,d,e,f,g)          (p)->lpVtbl->Load(p,a,b,c,d,e,f,g)
   2159 #else
   2160 /*** IUnknown methods ***/
   2161 #define IDirect3DRMShadow_QueryInterface(p,a,b)          (p)->QueryInterface(a,b)
   2162 #define IDirect3DRMShadow_AddRef(p)                      (p)->AddRef()
   2163 #define IDirect3DRMShadow_Release(p)                     (p)->Release()
   2164 /*** IDirect3DRMObject methods ***/
   2165 #define IDirect3DRMShadow_Clone(p,a,b,c)                 (p)->Clone(a,b,c)
   2166 #define IDirect3DRMShadow_AddDestroyCallback(p,a,b)      (p)->AddDestroyCallback(a,b)
   2167 #define IDirect3DRMShadow_DeleteDestroyCallback(p,a,b)   (p)->DeleteDestroyCallback(a,b)
   2168 #define IDirect3DRMShadow_SetAppData(p,a)                (p)->SetAppData(a)
   2169 #define IDirect3DRMShadow_GetAppData(p)                  (p)->GetAppData()
   2170 #define IDirect3DRMShadow_SetName(p,a)                   (p)->SetName(a)
   2171 #define IDirect3DRMShadow_GetName(p,a,b)                 (p)->GetName(a,b)
   2172 #define IDirect3DRMShadow_GetClassName(p,a,b)            (p)->GetClassName(a,b)
   2173 /*** IDirect3DRMShadow methods ***/
   2174 #define IDirect3DRMShadow_Init(p,a,b,c,d,e,f,g)          (p)->Load(a,b,c,d,e,f,g)
   2175 #endif
   2176 
   2177 /*****************************************************************************
   2178  * IDirect3DRMShadow2 interface
   2179  */
   2180 #define INTERFACE IDirect3DRMShadow2
   2181 DECLARE_INTERFACE_(IDirect3DRMShadow2,IDirect3DRMVisual)
   2182 {
   2183     /*** IUnknown methods ***/
   2184     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
   2185     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
   2186     STDMETHOD_(ULONG,Release)(THIS) PURE;
   2187     /*** IDirect3DRMObject methods ***/
   2188     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
   2189     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
   2190     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
   2191     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
   2192     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
   2193     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
   2194     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
   2195     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
   2196     /*** IDirect3DRMShadow methods ***/
   2197     STDMETHOD(Init)(THIS_ IUnknown *object, struct IDirect3DRMLight *light,
   2198             D3DVALUE px, D3DVALUE py, D3DVALUE pz, D3DVALUE nx, D3DVALUE ny, D3DVALUE nz) PURE;
   2199     /*** IDirect3DRMShadow2 methods ***/
   2200     STDMETHOD(GetVisual)(THIS_ IDirect3DRMVisual **visual) PURE;
   2201     STDMETHOD(SetVisual)(THIS_ LPUNKNOWN pUNK, DWORD) PURE;
   2202     STDMETHOD(GetLight)(THIS_ struct IDirect3DRMLight **light) PURE;
   2203     STDMETHOD(SetLight)(THIS_ struct IDirect3DRMLight *light, DWORD flags) PURE;
   2204     STDMETHOD(GetPlane)(THIS_ D3DVALUE *px, D3DVALUE *py, D3DVALUE *pz,
   2205             D3DVALUE *nx, D3DVALUE *ny, D3DVALUE *nz) PURE;
   2206     STDMETHOD(SetPlane)(THIS_ D3DVALUE px, D3DVALUE py, D3DVALUE pz,
   2207         D3DVALUE nx, D3DVALUE ny, D3DVALUE nz, DWORD) PURE;
   2208     STDMETHOD(GetOptions)(THIS_ LPDWORD) PURE;
   2209     STDMETHOD(SetOptions)(THIS_ DWORD) PURE;
   2210 };
   2211 #undef INTERFACE
   2212 
   2213 #if !defined(__cplusplus) || defined(CINTERFACE)
   2214 /*** IUnknown methods ***/
   2215 #define IDirect3DRMShadow2_QueryInterface(p,a,b)          (p)->lpVtbl->QueryInterface(p,a,b)
   2216 #define IDirect3DRMShadow2_AddRef(p)                      (p)->lpVtbl->AddRef(p)
   2217 #define IDirect3DRMShadow2_Release(p)                     (p)->lpVtbl->Release(p)
   2218 /*** IDirect3DRMObject methods ***/
   2219 #define IDirect3DRMShadow2_Clone(p,a,b,c)                 (p)->lpVtbl->Clone(p,a,b,c)
   2220 #define IDirect3DRMShadow2_AddDestroyCallback(p,a,b)      (p)->lpVtbl->AddDestroyCallback(p,a,b)
   2221 #define IDirect3DRMShadow2_DeleteDestroyCallback(p,a,b)   (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
   2222 #define IDirect3DRMShadow2_SetAppData(p,a)                (p)->lpVtbl->SetAppData(p,a)
   2223 #define IDirect3DRMShadow2_GetAppData(p)                  (p)->lpVtbl->GetAppData(p)
   2224 #define IDirect3DRMShadow2_SetName(p,a)                   (p)->lpVtbl->SetName(p,a)
   2225 #define IDirect3DRMShadow2_GetName(p,a,b)                 (p)->lpVtbl->GetName(p,a,b)
   2226 #define IDirect3DRMShadow2_GetClassName(p,a,b)            (p)->lpVtbl->GetClassName(p,a,b)
   2227 /*** IDirect3DRMShadow methods ***/
   2228 #define IDirect3DRMShadow2_Init(p,a,b,c,d,e,f,g)          (p)->lpVtbl->Init(p,a,b,c,d,e,f,g)
   2229 /*** IDirect3DRMShadow2 methods ***/
   2230 #define IDirect3DRMShadow2_GetVisual(p,a)                 (p)->lpVtbl->GetVisual(p,a)
   2231 #define IDirect3DRMShadow2_SetVisual(p,a,b)               (p)->lpVtbl->SetVisual(p,a,b)
   2232 #define IDirect3DRMShadow2_GetLight(p,a)                  (p)->lpVtbl->GetLight(p,a)
   2233 #define IDirect3DRMShadow2_SetLight(p,a,b)                (p)->lpVtbl->SetLight(p,a,b)
   2234 #define IDirect3DRMShadow2_GetPlane(p,a,b,c,d,e,f)        (p)->lpVtbl->GetPlane(p,a,b,c,d,e,f)
   2235 #define IDirect3DRMShadow2_SetPlane(p,a,b,c,d,e,f)        (p)->lpVtbl->SetPlane(p,a,b,c,d,e,f)
   2236 #define IDirect3DRMShadow2_GetOptions(p,a)                (p)->lpVtbl->GetOptions(p,a)
   2237 #define IDirect3DRMShadow2_SetOptions(p,a)                (p)->lpVtbl->SetOptions(p,a)
   2238 #else
   2239 /*** IUnknown methods ***/
   2240 #define IDirect3DRMShadow2_QueryInterface(p,a,b)          (p)->QueryInterface(a,b)
   2241 #define IDirect3DRMShadow2_AddRef(p)                      (p)->AddRef()
   2242 #define IDirect3DRMShadow2_Release(p)                     (p)->Release()
   2243 /*** IDirect3DRMObject methods ***/
   2244 #define IDirect3DRMShadow2_Clone(p,a,b,c)                 (p)->Clone(a,b,c)
   2245 #define IDirect3DRMShadow2_AddDestroyCallback(p,a,b)      (p)->AddDestroyCallback(a,b)
   2246 #define IDirect3DRMShadow2_DeleteDestroyCallback(p,a,b)   (p)->DeleteDestroyCallback(a,b)
   2247 #define IDirect3DRMShadow2_SetAppData(p,a)                (p)->SetAppData(a)
   2248 #define IDirect3DRMShadow2_GetAppData(p)                  (p)->GetAppData()
   2249 #define IDirect3DRMShadow2_SetName(p,a)                   (p)->SetName(a)
   2250 #define IDirect3DRMShadow2_GetName(p,a,b)                 (p)->GetName(a,b)
   2251 #define IDirect3DRMShadow2_GetClassName(p,a,b)            (p)->GetClassName(a,b)
   2252 /*** IDirect3DRMShadow methods ***/
   2253 #define IDirect3DRMShadow2_Init(p,a,b,c,d,e,f,g)          (p)->Init(a,b,c,d,e,f,g)
   2254 /*** IDirect3DRMShadow2 methods ***/
   2255 #define IDirect3DRMShadow2_GetVisual(p,a)                 (p)->GetVisual(a)
   2256 #define IDirect3DRMShadow2_SetVisual(p,a,b)               (p)->SetVisual(a,b)
   2257 #define IDirect3DRMShadow2_GetLight(p,a)                  (p)->GetLight(a)
   2258 #define IDirect3DRMShadow2_SetLight(p,a,b)                (p)->SetLight(a,b)
   2259 #define IDirect3DRMShadow2_GetPlane(p,a,b,c,d,e,f)        (p)->GetPlane(a,b,c,d,e,f)
   2260 #define IDirect3DRMShadow2_SetPlane(p,a,b,c,d,e,f)        (p)->SetPlane(a,b,c,d,e,f)
   2261 #define IDirect3DRMShadow2_GetOptions(p,a)                (p)->GetOptions(a)
   2262 #define IDirect3DRMShadow2_SetOptions(p,a)                (p)->SetOptions(a)
   2263 #endif
   2264 
   2265 /*****************************************************************************
   2266  * IDirect3DRMFace interface
   2267  */
   2268 #define INTERFACE IDirect3DRMFace
   2269 DECLARE_INTERFACE_(IDirect3DRMFace,IDirect3DRMObject)
   2270 {
   2271     /*** IUnknown methods ***/
   2272     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
   2273     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
   2274     STDMETHOD_(ULONG,Release)(THIS) PURE;
   2275     /*** IDirect3DRMObject methods ***/
   2276     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
   2277     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
   2278     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
   2279     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
   2280     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
   2281     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
   2282     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
   2283     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
   2284     /*** IDirect3DRMFace methods ***/
   2285     STDMETHOD(AddVertex)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
   2286     STDMETHOD(AddVertexAndNormalIndexed)(THIS_ DWORD vertex, DWORD normal) PURE;
   2287     STDMETHOD(SetColorRGB)(THIS_ D3DVALUE, D3DVALUE, D3DVALUE) PURE;
   2288     STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE;
   2289     STDMETHOD(SetTexture)(THIS_ LPDIRECT3DRMTEXTURE) PURE;
   2290     STDMETHOD(SetTextureCoordinates)(THIS_ DWORD vertex, D3DVALUE u, D3DVALUE v) PURE;
   2291     STDMETHOD(SetMaterial)(THIS_ LPDIRECT3DRMMATERIAL) PURE;
   2292     STDMETHOD(SetTextureTopology)(THIS_ WINBOOL wrap_u, WINBOOL wrap_v) PURE;
   2293     STDMETHOD(GetVertex)(THIS_ DWORD index, D3DVECTOR *vertex, D3DVECTOR *normal) PURE;
   2294     STDMETHOD(GetVertices)(THIS_ DWORD *vertex_count, D3DVECTOR *coords, D3DVECTOR *normals);
   2295     STDMETHOD(GetTextureCoordinates)(THIS_ DWORD vertex, D3DVALUE *u, D3DVALUE *v) PURE;
   2296     STDMETHOD(GetTextureTopology)(THIS_ WINBOOL *wrap_u, WINBOOL *wrap_v) PURE;
   2297     STDMETHOD(GetNormal)(THIS_ D3DVECTOR *) PURE;
   2298     STDMETHOD(GetTexture)(THIS_ LPDIRECT3DRMTEXTURE *) PURE;
   2299     STDMETHOD(GetMaterial)(THIS_ LPDIRECT3DRMMATERIAL *) PURE;
   2300     STDMETHOD_(int, GetVertexCount)(THIS) PURE;
   2301     STDMETHOD_(int, GetVertexIndex)(THIS_ DWORD which) PURE;
   2302     STDMETHOD_(int, GetTextureCoordinateIndex)(THIS_ DWORD which) PURE;
   2303     STDMETHOD_(D3DCOLOR, GetColor)(THIS) PURE;
   2304 };
   2305 #undef INTERFACE
   2306 
   2307 #if !defined(__cplusplus) || defined(CINTERFACE)
   2308 /*** IUnknown methods ***/
   2309 #define IDirect3DRMFace_QueryInterface(p,a,b)             (p)->lpVtbl->QueryInterface(p,a,b)
   2310 #define IDirect3DRMFace_AddRef(p)                         (p)->lpVtbl->AddRef(p)
   2311 #define IDirect3DRMFace_Release(p)                        (p)->lpVtbl->Release(p)
   2312 /*** IDirect3DRMObject methods ***/
   2313 #define IDirect3DRMFace_Clone(p,a,b,c)                    (p)->lpVtbl->Clone(p,a,b,c)
   2314 #define IDirect3DRMFace_AddDestroyCallback(p,a,b)         (p)->lpVtbl->AddDestroyCallback(p,a,b)
   2315 #define IDirect3DRMFace_DeleteDestroyCallback(p,a,b)      (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
   2316 #define IDirect3DRMFace_SetAppData(p,a)                   (p)->lpVtbl->SetAppData(p,a)
   2317 #define IDirect3DRMFace_GetAppData(p)                     (p)->lpVtbl->GetAppData(p)
   2318 #define IDirect3DRMFace_SetName(p,a)                      (p)->lpVtbl->SetName(p,a)
   2319 #define IDirect3DRMFace_GetName(p,a,b)                    (p)->lpVtbl->GetName(p,a,b)
   2320 #define IDirect3DRMFace_GetClassName(p,a,b)               (p)->lpVtbl->GetClassName(p,a,b)
   2321 /*** IDirect3DRMFace methods ***/
   2322 #define IDirect3DRMFace_AddVertex(p,a,b,c)                (p)->lpVtbl->AddVertex(p,a,b,c)
   2323 #define IDirect3DRMFace_AddVertexAndNormalIndexed(p,a,b)  (p)->lpVtbl->AddVertexAndNormalIndexed(p,a,b)
   2324 #define IDirect3DRMFace_SetColorRGB(p,a,b,c)              (p)->lpVtbl->SetColorRGB(p,a,b,c)
   2325 #define IDirect3DRMFace_SetColor(p,a)                     (p)->lpVtbl->SetColor(p,a)
   2326 #define IDirect3DRMFace_SetTexture(p,a)                   (p)->lpVtbl->SetTexture(p,a)
   2327 #define IDirect3DRMFace_SetTextureCoordinates(p,a,b,c)    (p)->lpVtbl->SetTextureCoordinates(p,a,b,c)
   2328 #define IDirect3DRMFace_SetMaterial(p,a)                  (p)->lpVtbl->SetMaterial(p,a)
   2329 #define IDirect3DRMFace_SetTextureTopology(p,a,b)         (p)->lpVtbl->SetTextureTopology(p,a,b)
   2330 #define IDirect3DRMFace_GetVertex(p,a,b,c)                (p)->lpVtbl->GetVertex(p,a,b,c)
   2331 #define IDirect3DRMFace_GetVertices(p,a,b,c)              (p)->lpVtbl->GetVertices(p,a,b,c)
   2332 #define IDirect3DRMFace_GetTextureCoordinates(p,a,b,c)    (p)->lpVtbl->GetTextureCoordinates(p,a,b,c)
   2333 #define IDirect3DRMFace_GetTextureTopology(p,a,b)         (p)->lpVtbl->GetTextureTopology(p,a,b)
   2334 #define IDirect3DRMFace_GetNormal(p,a)                    (p)->lpVtbl->GetNormal(p,a)
   2335 #define IDirect3DRMFace_GetTexture(p,a)                   (p)->lpVtbl->GetTexture(p,a)
   2336 #define IDirect3DRMFace_GetVertexCount(p)                 (p)->lpVtbl->GetVertexCount(p)
   2337 #define IDirect3DRMFace_GetVertexIndex(p,a)               (p)->lpVtbl->GetVertexIndex(p,a)
   2338 #define IDirect3DRMFace_GetTextureCoordinateIndex(p,a)    (p)->lpVtbl->GetTextureCoordinateIndex(p,a)
   2339 #define IDirect3DRMFace_GetColor(p,a)                     (p)->lpVtbl->GetColor(p,a)
   2340 #else
   2341 /*** IUnknown methods ***/
   2342 #define IDirect3DRMFace_QueryInterface(p,a,b)             (p)->QueryInterface(a,b)
   2343 #define IDirect3DRMFace_AddRef(p)                         (p)->AddRef()
   2344 #define IDirect3DRMFace_Release(p)                        (p)->Release()
   2345 /*** IDirect3DRMObject methods ***/
   2346 #define IDirect3DRMFace_Clone(p,a,b,c)                    (p)->Clone(a,b,c)
   2347 #define IDirect3DRMFace_AddDestroyCallback(p,a,b)         (p)->AddDestroyCallback(a,b)
   2348 #define IDirect3DRMFace_DeleteDestroyCallback(p,a,b)      (p)->DeleteDestroyCallback(a,b)
   2349 #define IDirect3DRMFace_SetAppData(p,a)                   (p)->SetAppData(a)
   2350 #define IDirect3DRMFace_GetAppData(p)                     (p)->GetAppData()
   2351 #define IDirect3DRMFace_SetName(p,a)                      (p)->SetName(a)
   2352 #define IDirect3DRMFace_GetName(p,a,b)                    (p)->GetName(a,b)
   2353 #define IDirect3DRMFace_GetClassName(p,a,b)               (p)->GetClassName(a,b)
   2354 /*** IDirect3DRMFace methods ***/
   2355 #define IDirect3DRMFace_AddVertex(p,a,b,c)                (p)->AddVertex(a,b,c)
   2356 #define IDirect3DRMFace_AddVertexAndNormalIndexed(p,a,b)  (p)->AddVertexAndNormalIndexed(a,b)
   2357 #define IDirect3DRMFace_SetColorRGB(p,a,b,c)              (p)->SetColorRGB(a,b,c)
   2358 #define IDirect3DRMFace_SetColor(p,a)                     (p)->SetColor(a)
   2359 #define IDirect3DRMFace_SetTexture(p,a)                   (p)->SetTexture(a)
   2360 #define IDirect3DRMFace_SetTextureCoordinates(p,a,b,c)    (p)->SetTextureCoordinates(a,b,c)
   2361 #define IDirect3DRMFace_SetMaterial(p,a)                  (p)->SetMaterial(a)
   2362 #define IDirect3DRMFace_SetTextureTopology(p,a,b)         (p)->SetTextureTopology(a,b)
   2363 #define IDirect3DRMFace_GetVertex(p,a,b,c)                (p)->GetVertex(a,b,c)
   2364 #define IDirect3DRMFace_GetVertices(p,a,b,c)              (p)->GetVertices(a,b,c)
   2365 #define IDirect3DRMFace_GetTextureCoordinates(p,a,b,c)    (p)->GetTextureCoordinates(a,b,c)
   2366 #define IDirect3DRMFace_GetTextureTopology(p,a,b)         (p)->GetTextureTopology(a,b)
   2367 #define IDirect3DRMFace_GetNormal(p,a)                    (p)->GetNormal(a)
   2368 #define IDirect3DRMFace_GetTexture(p,a)                   (p)->GetTexture(a)
   2369 #define IDirect3DRMFace_GetVertexCount(p)                 (p)->GetVertexCount()
   2370 #define IDirect3DRMFace_GetVertexIndex(p,a)               (p)->GetVertexIndex(a)
   2371 #define IDirect3DRMFace_GetTextureCoordinateIndex(p,a)    (p)->GetTextureCoordinateIndex(a)
   2372 #define IDirect3DRMFace_GetColor(p,a)                     (p)->GetColor(a)
   2373 #endif
   2374 
   2375 /*****************************************************************************
   2376  * IDirect3DRMFace2 interface
   2377  */
   2378 #define INTERFACE IDirect3DRMFace2
   2379 DECLARE_INTERFACE_(IDirect3DRMFace2,IDirect3DRMObject)
   2380 {
   2381     /*** IUnknown methods ***/
   2382     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
   2383     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
   2384     STDMETHOD_(ULONG,Release)(THIS) PURE;
   2385     /*** IDirect3DRMObject methods ***/
   2386     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
   2387     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
   2388     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
   2389     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
   2390     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
   2391     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
   2392     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
   2393     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
   2394     /*** IDirect3DRMFace methods ***/
   2395     STDMETHOD(AddVertex)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
   2396     STDMETHOD(AddVertexAndNormalIndexed)(THIS_ DWORD vertex, DWORD normal) PURE;
   2397     STDMETHOD(SetColorRGB)(THIS_ D3DVALUE, D3DVALUE, D3DVALUE) PURE;
   2398     STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE;
   2399     STDMETHOD(SetTexture)(THIS_ LPDIRECT3DRMTEXTURE3) PURE;
   2400     STDMETHOD(SetTextureCoordinates)(THIS_ DWORD vertex, D3DVALUE u, D3DVALUE v) PURE;
   2401     STDMETHOD(SetMaterial)(THIS_ LPDIRECT3DRMMATERIAL2) PURE;
   2402     STDMETHOD(SetTextureTopology)(THIS_ WINBOOL wrap_u, WINBOOL wrap_v) PURE;
   2403     STDMETHOD(GetVertex)(THIS_ DWORD index, D3DVECTOR *vertex, D3DVECTOR *normal) PURE;
   2404     STDMETHOD(GetVertices)(THIS_ DWORD *vertex_count, D3DVECTOR *coords, D3DVECTOR *normals);
   2405     STDMETHOD(GetTextureCoordinates)(THIS_ DWORD vertex, D3DVALUE *u, D3DVALUE *v) PURE;
   2406     STDMETHOD(GetTextureTopology)(THIS_ WINBOOL *wrap_u, WINBOOL *wrap_v) PURE;
   2407     STDMETHOD(GetNormal)(THIS_ D3DVECTOR *) PURE;
   2408     STDMETHOD(GetTexture)(THIS_ LPDIRECT3DRMTEXTURE3 *) PURE;
   2409     STDMETHOD(GetMaterial)(THIS_ LPDIRECT3DRMMATERIAL2 *) PURE;
   2410     STDMETHOD_(int, GetVertexCount)(THIS) PURE;
   2411     STDMETHOD_(int, GetVertexIndex)(THIS_ DWORD which) PURE;
   2412     STDMETHOD_(int, GetTextureCoordinateIndex)(THIS_ DWORD which) PURE;
   2413     STDMETHOD_(D3DCOLOR, GetColor)(THIS) PURE;
   2414 };
   2415 #undef INTERFACE
   2416 
   2417 #if !defined(__cplusplus) || defined(CINTERFACE)
   2418 /*** IUnknown methods ***/
   2419 #define IDirect3DRMFace2_QueryInterface(p,a,b)             (p)->lpVtbl->QueryInterface(p,a,b)
   2420 #define IDirect3DRMFace2_AddRef(p)                         (p)->lpVtbl->AddRef(p)
   2421 #define IDirect3DRMFace2_Release(p)                        (p)->lpVtbl->Release(p)
   2422 /*** IDirect3DRMObject methods ***/
   2423 #define IDirect3DRMFace2_Clone(p,a,b,c)                    (p)->lpVtbl->Clone(p,a,b,c)
   2424 #define IDirect3DRMFace2_AddDestroyCallback(p,a,b)         (p)->lpVtbl->AddDestroyCallback(p,a,b)
   2425 #define IDirect3DRMFace2_DeleteDestroyCallback(p,a,b)      (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
   2426 #define IDirect3DRMFace2_SetAppData(p,a)                   (p)->lpVtbl->SetAppData(p,a)
   2427 #define IDirect3DRMFace2_GetAppData(p)                     (p)->lpVtbl->GetAppData(p)
   2428 #define IDirect3DRMFace2_SetName(p,a)                      (p)->lpVtbl->SetName(p,a)
   2429 #define IDirect3DRMFace2_GetName(p,a,b)                    (p)->lpVtbl->GetName(p,a,b)
   2430 #define IDirect3DRMFace2_GetClassName(p,a,b)               (p)->lpVtbl->GetClassName(p,a,b)
   2431 /*** IDirect3DRMFace methods ***/
   2432 #define IDirect3DRMFace2_AddVertex(p,a,b,c)                (p)->lpVtbl->AddVertex(p,a,b,c)
   2433 #define IDirect3DRMFace2_AddVertexAndNormalIndexed(p,a,b)  (p)->lpVtbl->AddVertexAndNormalIndexed(p,a,b)
   2434 #define IDirect3DRMFace2_SetColorRGB(p,a,b,c)              (p)->lpVtbl->SetColorRGB(p,a,b,c)
   2435 #define IDirect3DRMFace2_SetColor(p,a)                     (p)->lpVtbl->SetColor(p,a)
   2436 #define IDirect3DRMFace2_SetTexture(p,a)                   (p)->lpVtbl->SetTexture(p,a)
   2437 #define IDirect3DRMFace2_SetTextureCoordinates(p,a,b,c)    (p)->lpVtbl->SetTextureCoordinates(p,a,b,c)
   2438 #define IDirect3DRMFace2_SetMaterial(p,a)                  (p)->lpVtbl->SetMaterial(p,a)
   2439 #define IDirect3DRMFace2_SetTextureTopology(p,a,b)         (p)->lpVtbl->SetTextureTopology(p,a,b)
   2440 #define IDirect3DRMFace2_GetVertex(p,a,b,c)                (p)->lpVtbl->GetVertex(p,a,b,c)
   2441 #define IDirect3DRMFace2_GetVertices(p,a,b,c)              (p)->lpVtbl->GetVertices(p,a,b,c)
   2442 #define IDirect3DRMFace2_GetTextureCoordinates(p,a,b,c)    (p)->lpVtbl->GetTextureCoordinates(p,a,b,c)
   2443 #define IDirect3DRMFace2_GetTextureTopology(p,a,b)         (p)->lpVtbl->GetTextureTopology(p,a,b)
   2444 #define IDirect3DRMFace2_GetNormal(p,a)                    (p)->lpVtbl->GetNormal(p,a)
   2445 #define IDirect3DRMFace2_GetTexture(p,a)                   (p)->lpVtbl->GetTexture(p,a)
   2446 #define IDirect3DRMFace2_GetVertexCount(p)                 (p)->lpVtbl->GetVertexCount(p)
   2447 #define IDirect3DRMFace2_GetVertexIndex(p,a)               (p)->lpVtbl->GetVertexIndex(p,a)
   2448 #define IDirect3DRMFace2_GetTextureCoordinateIndex(p,a)    (p)->lpVtbl->GetTextureCoordinateIndex(p,a)
   2449 #define IDirect3DRMFace2_GetColor(p,a)                     (p)->lpVtbl->GetColor(p,a)
   2450 #else
   2451 /*** IUnknown methods ***/
   2452 #define IDirect3DRMFace2_QueryInterface(p,a,b)             (p)->QueryInterface(a,b)
   2453 #define IDirect3DRMFace2_AddRef(p)                         (p)->AddRef()
   2454 #define IDirect3DRMFace2_Release(p)                        (p)->Release()
   2455 /*** IDirect3DRMObject methods ***/
   2456 #define IDirect3DRMFace2_Clone(p,a,b,c)                    (p)->Clone(a,b,c)
   2457 #define IDirect3DRMFace2_AddDestroyCallback(p,a,b)         (p)->AddDestroyCallback(a,b)
   2458 #define IDirect3DRMFace2_DeleteDestroyCallback(p,a,b)      (p)->DeleteDestroyCallback(a,b)
   2459 #define IDirect3DRMFace2_SetAppData(p,a)                   (p)->SetAppData(a)
   2460 #define IDirect3DRMFace2_GetAppData(p)                     (p)->GetAppData()
   2461 #define IDirect3DRMFace2_SetName(p,a)                      (p)->SetName(a)
   2462 #define IDirect3DRMFace2_GetName(p,a,b)                    (p)->GetName(a,b)
   2463 #define IDirect3DRMFace2_GetClassName(p,a,b)               (p)->GetClassName(a,b)
   2464 /*** IDirect3DRMFace methods ***/
   2465 #define IDirect3DRMFace2_AddVertex(p,a,b,c)                (p)->AddVertex(a,b,c)
   2466 #define IDirect3DRMFace2_AddVertexAndNormalIndexed(p,a,b)  (p)->AddVertexAndNormalIndexed(a,b)
   2467 #define IDirect3DRMFace2_SetColorRGB(p,a,b,c)              (p)->SetColorRGB(a,b,c)
   2468 #define IDirect3DRMFace2_SetColor(p,a)                     (p)->SetColor(a)
   2469 #define IDirect3DRMFace2_SetTexture(p,a)                   (p)->SetTexture(a)
   2470 #define IDirect3DRMFace2_SetTextureCoordinates(p,a,b,c)    (p)->SetTextureCoordinates(a,b,c)
   2471 #define IDirect3DRMFace2_SetMaterial(p,a)                  (p)->SetMaterial(a)
   2472 #define IDirect3DRMFace2_SetTextureTopology(p,a,b)         (p)->SetTextureTopology(a,b)
   2473 #define IDirect3DRMFace2_GetVertex(p,a,b,c)                (p)->GetVertex(a,b,c)
   2474 #define IDirect3DRMFace2_GetVertices(p,a,b,c)              (p)->GetVertices(a,b,c)
   2475 #define IDirect3DRMFace2_GetTextureCoordinates(p,a,b,c)    (p)->GetTextureCoordinates(a,b,c)
   2476 #define IDirect3DRMFace2_GetTextureTopology(p,a,b)         (p)->GetTextureTopology(a,b)
   2477 #define IDirect3DRMFace2_GetNormal(p,a)                    (p)->GetNormal(a)
   2478 #define IDirect3DRMFace2_GetTexture(p,a)                   (p)->GetTexture(a)
   2479 #define IDirect3DRMFace2_GetVertexCount(p)                 (p)->GetVertexCount()
   2480 #define IDirect3DRMFace2_GetVertexIndex(p,a)               (p)->GetVertexIndex(a)
   2481 #define IDirect3DRMFace2_GetTextureCoordinateIndex(p,a)    (p)->GetTextureCoordinateIndex(a)
   2482 #define IDirect3DRMFace2_GetColor(p,a)                     (p)->GetColor(a)
   2483 #endif
   2484 
   2485 /*****************************************************************************
   2486  * IDirect3DRMMeshBuilder interface
   2487  */
   2488 #define INTERFACE IDirect3DRMMeshBuilder
   2489 DECLARE_INTERFACE_(IDirect3DRMMeshBuilder,IDirect3DRMVisual)
   2490 {
   2491     /*** IUnknown methods ***/
   2492     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
   2493     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
   2494     STDMETHOD_(ULONG,Release)(THIS) PURE;
   2495     /*** IDirect3DRMObject methods ***/
   2496     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
   2497     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
   2498     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
   2499     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
   2500     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
   2501     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
   2502     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
   2503     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
   2504     /*** IDirect3DRMMeshBuilder methods ***/
   2505     STDMETHOD(Load)(THIS_ LPVOID filename, LPVOID name, D3DRMLOADOPTIONS loadflags, D3DRMLOADTEXTURECALLBACK, LPVOID pArg) PURE;
   2506     STDMETHOD(Save)(THIS_ const char *filename, D3DRMXOFFORMAT, D3DRMSAVEOPTIONS save) PURE;
   2507     STDMETHOD(Scale)(THIS_ D3DVALUE sx, D3DVALUE sy, D3DVALUE sz) PURE;
   2508     STDMETHOD(Translate)(THIS_ D3DVALUE tx, D3DVALUE ty, D3DVALUE tz) PURE;
   2509     STDMETHOD(SetColorSource)(THIS_ D3DRMCOLORSOURCE) PURE;
   2510     STDMETHOD(GetBox)(THIS_ D3DRMBOX *) PURE;
   2511     STDMETHOD(GenerateNormals)(THIS) PURE;
   2512     STDMETHOD_(D3DRMCOLORSOURCE, GetColorSource)(THIS) PURE;
   2513     STDMETHOD(AddMesh)(THIS_ IDirect3DRMMesh *mesh) PURE;
   2514     STDMETHOD(AddMeshBuilder)(THIS_ IDirect3DRMMeshBuilder *mesh_builder) PURE;
   2515     STDMETHOD(AddFrame)(THIS_ IDirect3DRMFrame *frame) PURE;
   2516     STDMETHOD(AddFace)(THIS_ IDirect3DRMFace *face) PURE;
   2517     STDMETHOD(AddFaces)(THIS_ DWORD vcount, D3DVECTOR *vertices, DWORD ncount, D3DVECTOR *normals, DWORD *data,
   2518         LPDIRECT3DRMFACEARRAY*) PURE;
   2519     STDMETHOD(ReserveSpace)(THIS_ DWORD vertex_Count, DWORD normal_count, DWORD face_count) PURE;
   2520     STDMETHOD(SetColorRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
   2521     STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE;
   2522     STDMETHOD(SetTexture)(THIS_ LPDIRECT3DRMTEXTURE) PURE;
   2523     STDMETHOD(SetMaterial)(THIS_ LPDIRECT3DRMMATERIAL) PURE;
   2524     STDMETHOD(SetTextureTopology)(THIS_ WINBOOL wrap_u, WINBOOL wrap_v) PURE;
   2525     STDMETHOD(SetQuality)(THIS_ D3DRMRENDERQUALITY) PURE;
   2526     STDMETHOD(SetPerspective)(THIS_ WINBOOL) PURE;
   2527     STDMETHOD(SetVertex)(THIS_ DWORD index, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
   2528     STDMETHOD(SetNormal)(THIS_ DWORD index, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
   2529     STDMETHOD(SetTextureCoordinates)(THIS_ DWORD index, D3DVALUE u, D3DVALUE v) PURE;
   2530     STDMETHOD(SetVertexColor)(THIS_ DWORD index, D3DCOLOR) PURE;
   2531     STDMETHOD(SetVertexColorRGB)(THIS_ DWORD index, D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
   2532     STDMETHOD(GetFaces)(THIS_ LPDIRECT3DRMFACEARRAY*) PURE;
   2533     STDMETHOD(GetVertices)(THIS_ DWORD *vcount, D3DVECTOR *vertices, DWORD *ncount, D3DVECTOR *normals,
   2534         DWORD *face_data_size, DWORD *face_data) PURE;
   2535     STDMETHOD(GetTextureCoordinates)(THIS_ DWORD index, D3DVALUE *u, D3DVALUE *v) PURE;
   2536     STDMETHOD_(int, AddVertex)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
   2537     STDMETHOD_(int, AddNormal)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
   2538     STDMETHOD(CreateFace)(THIS_ IDirect3DRMFace **face) PURE;
   2539     STDMETHOD_(D3DRMRENDERQUALITY, GetQuality)(THIS) PURE;
   2540     STDMETHOD_(WINBOOL, GetPerspective)(THIS) PURE;
   2541     STDMETHOD_(int, GetFaceCount)(THIS) PURE;
   2542     STDMETHOD_(int, GetVertexCount)(THIS) PURE;
   2543     STDMETHOD_(D3DCOLOR, GetVertexColor)(THIS_ DWORD index) PURE;
   2544     STDMETHOD(CreateMesh)(THIS_ IDirect3DRMMesh **mesh) PURE;
   2545 };
   2546 #undef INTERFACE
   2547 
   2548 #if !defined(__cplusplus) || defined(CINTERFACE)
   2549 /*** IUnknown methods ***/
   2550 #define IDirect3DRMMeshBuilder_QueryInterface(p,a,b)             (p)->lpVtbl->QueryInterface(p,a,b)
   2551 #define IDirect3DRMMeshBuilder_AddRef(p)                         (p)->lpVtbl->AddRef(p)
   2552 #define IDirect3DRMMeshBuilder_Release(p)                        (p)->lpVtbl->Release(p)
   2553 /*** IDirect3DRMObject methods ***/
   2554 #define IDirect3DRMMeshBuilder_Clone(p,a,b,c)                    (p)->lpVtbl->Clone(p,a,b,c)
   2555 #define IDirect3DRMMeshBuilder_AddDestroyCallback(p,a,b)         (p)->lpVtbl->AddDestroyCallback(p,a,b)
   2556 #define IDirect3DRMMeshBuilder_DeleteDestroyCallback(p,a,b)      (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
   2557 #define IDirect3DRMMeshBuilder_SetAppData(p,a)                   (p)->lpVtbl->SetAppData(p,a)
   2558 #define IDirect3DRMMeshBuilder_GetAppData(p)                     (p)->lpVtbl->GetAppData(p)
   2559 #define IDirect3DRMMeshBuilder_SetName(p,a)                      (p)->lpVtbl->SetName(p,a)
   2560 #define IDirect3DRMMeshBuilder_GetName(p,a,b)                    (p)->lpVtbl->GetName(p,a,b)
   2561 #define IDirect3DRMMeshBuilder_GetClassName(p,a,b)               (p)->lpVtbl->GetClassName(p,a,b)
   2562 /*** IDirect3DRMMeshBuilder methods ***/
   2563 #define IDirect3DRMMeshBuilder_Load(p,a,b,c,d,e)                 (p)->lpVtbl->Load(p,a,b,c,d,e)
   2564 #define IDirect3DRMMeshBuilder_Save(p,a,b,c)                     (p)->lpVtbl->Save(p,a,b,c)
   2565 #define IDirect3DRMMeshBuilder_Scale(p,a,b,c)                    (p)->lpVtbl->Scale(p,a,b,c)
   2566 #define IDirect3DRMMeshBuilder_Translate(p,a,b,c)                (p)->lpVtbl->Translate(p,a)
   2567 #define IDirect3DRMMeshBuilder_SetColorSource(p,a)               (p)->lpVtbl->SetColorSource(p,a,b,c)
   2568 #define IDirect3DRMMeshBuilder_GetBox(p,a)                       (p)->lpVtbl->GetBox(p,a)
   2569 #define IDirect3DRMMeshBuilder_GenerateNormals(p)                (p)->lpVtbl->GenerateNormals(p)
   2570 #define IDirect3DRMMeshBuilder_GetColorSource(p)                 (p)->lpVtbl->GetColorSource(p)
   2571 #define IDirect3DRMMeshBuilder_AddMesh(p,a)                      (p)->lpVtbl->AddMesh(p,a)
   2572 #define IDirect3DRMMeshBuilder_AddMeshBuilder(p,a)               (p)->lpVtbl->AddMeshBuilder(p,a)
   2573 #define IDirect3DRMMeshBuilder_AddFrame(p,a)                     (p)->lpVtbl->AddFrame(p,a)
   2574 #define IDirect3DRMMeshBuilder_AddFace(p,a)                      (p)->lpVtbl->AddFace(p,a)
   2575 #define IDirect3DRMMeshBuilder_AddFaces(p,a,b,c,d,e,f)           (p)->lpVtbl->AddFaces(p,a,b,c,d,e,f)
   2576 #define IDirect3DRMMeshBuilder_ReserveSpace(p,a,b,c)             (p)->lpVtbl->ReserveSpace(p,a,b,c)
   2577 #define IDirect3DRMMeshBuilder_SetColorRGB(p,a,b,c)              (p)->lpVtbl->SetColorRGB(p,a,b,c)
   2578 #define IDirect3DRMMeshBuilder_SetColor(p,a)                     (p)->lpVtbl->SetColor(p,a)
   2579 #define IDirect3DRMMeshBuilder_SetTexture(p,a)                   (p)->lpVtbl->SetTexture(p,a)
   2580 #define IDirect3DRMMeshBuilder_SetMaterial(p,a)                  (p)->lpVtbl->SetMaterial(p,a)
   2581 #define IDirect3DRMMeshBuilder_SetTextureTopology(p,a,b)         (p)->lpVtbl->SetTextureTopology(p,a,b)
   2582 #define IDirect3DRMMeshBuilder_SetQuality(p,a)                   (p)->lpVtbl->SetQuality(p,a)
   2583 #define IDirect3DRMMeshBuilder_SetPerspective(p,a)               (p)->lpVtbl->SetPerspective(p,a)
   2584 #define IDirect3DRMMeshBuilder_SetVertex(p,a,b,c,d)              (p)->lpVtbl->SetVertex(p,a,b,c,d)
   2585 #define IDirect3DRMMeshBuilder_SetNormal(p,a,b,c,d)              (p)->lpVtbl->SetNormal(p,a,b,c,d)
   2586 #define IDirect3DRMMeshBuilder_SetTextureCoordinates(p,a,b,c)    (p)->lpVtbl->SetTextureCoordinates(p,a,b,c)
   2587 #define IDirect3DRMMeshBuilder_SetVertexColor(p,a,b)             (p)->lpVtbl->SetVertexColor(p,a,b)
   2588 #define IDirect3DRMMeshBuilder_SetVertexColorRGB(p,a,b,c,d)      (p)->lpVtbl->SetVertexColorRGB(p,a,b,c,d)
   2589 #define IDirect3DRMMeshBuilder_GetFaces(p,a)                     (p)->lpVtbl->GetFaces(p,a)
   2590 #define IDirect3DRMMeshBuilder_GetVertices(p,a,b,c,d,e,f)        (p)->lpVtbl->GetVertices(p,a,b,c,d,e,f)
   2591 #define IDirect3DRMMeshBuilder_GetTextureCoordinates(p,a,b,c)    (p)->lpVtbl->GetTextureCoordinates(p,a,b,c)
   2592 #define IDirect3DRMMeshBuilder_AddVertex(p,a,b,c)                (p)->lpVtbl->AddVertex(p,a,b,c)
   2593 #define IDirect3DRMMeshBuilder_AddNormal(p,a,b,c)                (p)->lpVtbl->AddNormal(p,a,b,c)
   2594 #define IDirect3DRMMeshBuilder_CreateFace(p,a)                   (p)->lpVtbl->CreateFace(p,a)
   2595 #define IDirect3DRMMeshBuilder_GetQuality(p)                     (p)->lpVtbl->GetQuality(p)
   2596 #define IDirect3DRMMeshBuilder_GetPerspective(p)                 (p)->lpVtbl->GetPerspective(p)
   2597 #define IDirect3DRMMeshBuilder_GetFaceCount(p)                   (p)->lpVtbl->GetFaceCount(p)
   2598 #define IDirect3DRMMeshBuilder_GetVertexCount(p)                 (p)->lpVtbl->GetVertexCount(p)
   2599 #define IDirect3DRMMeshBuilder_GetVertexColor(p,a)               (p)->lpVtbl->GetVertexColor(p,a)
   2600 #define IDirect3DRMMeshBuilder_CreateMesh(p,a)                   (p)->lpVtbl->CreateMesh(p,a)
   2601 #else
   2602 /*** IUnknown methods ***/
   2603 #define IDirect3DRMMeshBuilder_QueryInterface(p,a,b)             (p)->QueryInterface(a,b)
   2604 #define IDirect3DRMMeshBuilder_AddRef(p)                         (p)->AddRef()
   2605 #define IDirect3DRMMeshBuilder_Release(p)                        (p)->Release()
   2606 /*** IDirect3DRMObject methods ***/
   2607 #define IDirect3DRMMeshBuilder_Clone(p,a,b,c)                    (p)->Clone(a,b,c)
   2608 #define IDirect3DRMMeshBuilder_AddDestroyCallback(p,a,b)         (p)->AddDestroyCallback(a,b)
   2609 #define IDirect3DRMMeshBuilder_DeleteDestroyCallback(p,a,b)      (p)->DeleteDestroyCallback(a,b)
   2610 #define IDirect3DRMMeshBuilder_SetAppData(p,a)                   (p)->SetAppData(a)
   2611 #define IDirect3DRMMeshBuilder_GetAppData(p)                     (p)->GetAppData()
   2612 #define IDirect3DRMMeshBuilder_SetName(p,a)                      (p)->SetName(a)
   2613 #define IDirect3DRMMeshBuilder_GetName(p,a,b)                    (p)->GetName(a,b)
   2614 #define IDirect3DRMMeshBuilder_GetClassName(p,a,b)               (p)->GetClassName(a,b)
   2615 /*** IDirect3DRMMeshBuilder methods ***/
   2616 #define IDirect3DRMMeshBuilder_Load(p,a,b,c,d,e)                 (p)->Load(a,b,c,d,e)
   2617 #define IDirect3DRMMeshBuilder_Save(p,a,b,c)                     (p)->Save(a,b,c)
   2618 #define IDirect3DRMMeshBuilder_Scale(p,a,b,c)                    (p)->Scale(a,b,c)
   2619 #define IDirect3DRMMeshBuilder_Translate(p,a,b,c)                (p)->Translate(a)
   2620 #define IDirect3DRMMeshBuilder_SetColorSource(p,a)               (p)->SetColorSource(a,b,c)
   2621 #define IDirect3DRMMeshBuilder_GetBox(p,a)                       (p)->GetBox(a)
   2622 #define IDirect3DRMMeshBuilder_GenerateNormals(p)                (p)->GenerateNormals()
   2623 #define IDirect3DRMMeshBuilder_GetColorSource(p)                 (p)->GetColorSource()
   2624 #define IDirect3DRMMeshBuilder_AddMesh(p,a)                      (p)-->AddMesh(a)
   2625 #define IDirect3DRMMeshBuilder_AddMeshBuilder(p,a)               (p)->AddMeshBuilder(a)
   2626 #define IDirect3DRMMeshBuilder_AddFrame(p,a)                     (p)->AddFrame(a)
   2627 #define IDirect3DRMMeshBuilder_AddFace(p,a)                      (p)->AddFace(a)
   2628 #define IDirect3DRMMeshBuilder_AddFaces(p,a,b,c,d,e,f)           (p)->AddFaces(a,b,c,d,e,f)
   2629 #define IDirect3DRMMeshBuilder_ReserveSpace(p,a,b,c)             (p)->ReserveSpace(a,b,c)
   2630 #define IDirect3DRMMeshBuilder_SetColorRGB(p,a,b,c)              (p)->SetColorRGB(a,b,c)
   2631 #define IDirect3DRMMeshBuilder_SetColor(p,a)                     (p)->SetColor(a)
   2632 #define IDirect3DRMMeshBuilder_SetTexture(p,a)                   (p)->SetTexture(a)
   2633 #define IDirect3DRMMeshBuilder_SetMaterial(p,a)                  (p)->SetMaterial(a)
   2634 #define IDirect3DRMMeshBuilder_SetTextureTopology(p,a,b)         (p)->SetTextureTopology(a,b)
   2635 #define IDirect3DRMMeshBuilder_SetQuality(p,a)                   (p)->SetQuality(a)
   2636 #define IDirect3DRMMeshBuilder_SetPerspective(p,a)               (p)->SetPerspective(a)
   2637 #define IDirect3DRMMeshBuilder_SetVertex(p,a,b,c,d)              (p)->SetVertex(a,b,c,d)
   2638 #define IDirect3DRMMeshBuilder_SetNormal(p,a,b,c,d)              (p)->SetNormal(a,b,c,d)
   2639 #define IDirect3DRMMeshBuilder_SetTextureCoordinates(p,a,b,c)    (p)->SetTextureCoordinates(a,b,c)
   2640 #define IDirect3DRMMeshBuilder_SetVertexColor(p,a,b)             (p)->SetVertexColor(a,b)
   2641 #define IDirect3DRMMeshBuilder_SetVertexColorRGB(p,a,b,c,d)      (p)->SetVertexColorRGB(a,b,c,d)
   2642 #define IDirect3DRMMeshBuilder_GetFaces(p,a)                     (p)->GetFaces(a)
   2643 #define IDirect3DRMMeshBuilder_GetVertices(p,a,b,c,d,e,f)        (p)->GetVertices(a,b,c,d,e,f)
   2644 #define IDirect3DRMMeshBuilder_GetTextureCoordinates(p,a,b,c)    (p)->GetTextureCoordinates(a,b,c)
   2645 #define IDirect3DRMMeshBuilder_AddVertex(p,a,b,c)                (p)->AddVertex(a,b,c)
   2646 #define IDirect3DRMMeshBuilder_AddNormal(p,a,b,c)                (p)->AddNormal(a,b,c)
   2647 #define IDirect3DRMMeshBuilder_CreateFace(p,a)                   (p)->CreateFace(a)
   2648 #define IDirect3DRMMeshBuilder_GetQuality(p)                     (p)->GetQuality()
   2649 #define IDirect3DRMMeshBuilder_GetPerspective(p)                 (p)->GetPerspective()
   2650 #define IDirect3DRMMeshBuilder_GetFaceCount(p)                   (p)->GetFaceCount()
   2651 #define IDirect3DRMMeshBuilder_GetVertexCount(p)                 (p)->GetVertexCount()
   2652 #define IDirect3DRMMeshBuilder_GetVertexColor(p,a)               (p)->GetVertexColor(a)
   2653 #define IDirect3DRMMeshBuilder_CreateMesh(p,a)                   (p)->CreateMesh(a)
   2654 #endif
   2655 
   2656 /*****************************************************************************
   2657  * IDirect3DRMMeshBuilder2 interface
   2658  */
   2659 #define INTERFACE IDirect3DRMMeshBuilder2
   2660 DECLARE_INTERFACE_(IDirect3DRMMeshBuilder2,IDirect3DRMMeshBuilder)
   2661 {
   2662     /*** IUnknown methods ***/
   2663     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
   2664     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
   2665     STDMETHOD_(ULONG,Release)(THIS) PURE;
   2666     /*** IDirect3DRMObject methods ***/
   2667     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
   2668     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
   2669     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
   2670     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
   2671     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
   2672     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
   2673     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
   2674     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
   2675     /*** IDirect3DRMMeshBuilder methods ***/
   2676     STDMETHOD(Load)(THIS_ LPVOID filename, LPVOID name, D3DRMLOADOPTIONS loadflags, D3DRMLOADTEXTURECALLBACK, LPVOID pArg) PURE;
   2677     STDMETHOD(Save)(THIS_ const char *filename, D3DRMXOFFORMAT, D3DRMSAVEOPTIONS save) PURE;
   2678     STDMETHOD(Scale)(THIS_ D3DVALUE sx, D3DVALUE sy, D3DVALUE sz) PURE;
   2679     STDMETHOD(Translate)(THIS_ D3DVALUE tx, D3DVALUE ty, D3DVALUE tz) PURE;
   2680     STDMETHOD(SetColorSource)(THIS_ D3DRMCOLORSOURCE) PURE;
   2681     STDMETHOD(GetBox)(THIS_ D3DRMBOX *) PURE;
   2682     STDMETHOD(GenerateNormals)(THIS) PURE;
   2683     STDMETHOD_(D3DRMCOLORSOURCE, GetColorSource)(THIS) PURE;
   2684     STDMETHOD(AddMesh)(THIS_ IDirect3DRMMesh *mesh) PURE;
   2685     STDMETHOD(AddMeshBuilder)(THIS_ IDirect3DRMMeshBuilder *mesh_builder) PURE;
   2686     STDMETHOD(AddFrame)(THIS_ IDirect3DRMFrame *frame) PURE;
   2687     STDMETHOD(AddFace)(THIS_ IDirect3DRMFace *face) PURE;
   2688     STDMETHOD(AddFaces)(THIS_ DWORD vcount, D3DVECTOR *vertices, DWORD ncount, D3DVECTOR *normals, DWORD *data,
   2689         LPDIRECT3DRMFACEARRAY*) PURE;
   2690     STDMETHOD(ReserveSpace)(THIS_ DWORD vertex_Count, DWORD normal_count, DWORD face_count) PURE;
   2691     STDMETHOD(SetColorRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
   2692     STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE;
   2693     STDMETHOD(SetTexture)(THIS_ LPDIRECT3DRMTEXTURE) PURE;
   2694     STDMETHOD(SetMaterial)(THIS_ LPDIRECT3DRMMATERIAL) PURE;
   2695     STDMETHOD(SetTextureTopology)(THIS_ WINBOOL wrap_u, WINBOOL wrap_v) PURE;
   2696     STDMETHOD(SetQuality)(THIS_ D3DRMRENDERQUALITY) PURE;
   2697     STDMETHOD(SetPerspective)(THIS_ WINBOOL) PURE;
   2698     STDMETHOD(SetVertex)(THIS_ DWORD index, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
   2699     STDMETHOD(SetNormal)(THIS_ DWORD index, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
   2700     STDMETHOD(SetTextureCoordinates)(THIS_ DWORD index, D3DVALUE u, D3DVALUE v) PURE;
   2701     STDMETHOD(SetVertexColor)(THIS_ DWORD index, D3DCOLOR) PURE;
   2702     STDMETHOD(SetVertexColorRGB)(THIS_ DWORD index, D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
   2703     STDMETHOD(GetFaces)(THIS_ LPDIRECT3DRMFACEARRAY*) PURE;
   2704     STDMETHOD(GetVertices)(THIS_ DWORD *vcount, D3DVECTOR *vertices, DWORD *ncount, D3DVECTOR *normals,
   2705         DWORD *face_data_size, DWORD *face_data) PURE;
   2706     STDMETHOD(GetTextureCoordinates)(THIS_ DWORD index, D3DVALUE *u, D3DVALUE *v) PURE;
   2707     STDMETHOD_(int, AddVertex)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
   2708     STDMETHOD_(int, AddNormal)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
   2709     STDMETHOD(CreateFace)(THIS_ IDirect3DRMFace **face) PURE;
   2710     STDMETHOD_(D3DRMRENDERQUALITY, GetQuality)(THIS) PURE;
   2711     STDMETHOD_(WINBOOL, GetPerspective)(THIS) PURE;
   2712     STDMETHOD_(int, GetFaceCount)(THIS) PURE;
   2713     STDMETHOD_(int, GetVertexCount)(THIS) PURE;
   2714     STDMETHOD_(D3DCOLOR, GetVertexColor)(THIS_ DWORD index) PURE;
   2715     STDMETHOD(CreateMesh)(THIS_ IDirect3DRMMesh **mesh) PURE;
   2716     /*** IDirect3DRMMeshBuilder2 methods ***/
   2717     STDMETHOD(GenerateNormals2)(THIS_ D3DVALUE crease, DWORD flags) PURE;
   2718     STDMETHOD(GetFace)(THIS_ DWORD index, IDirect3DRMFace **face) PURE;
   2719 };
   2720 #undef INTERFACE
   2721 
   2722 #if !defined(__cplusplus) || defined(CINTERFACE)
   2723 /*** IUnknown methods ***/
   2724 #define IDirect3DRMMeshBuilder2_QueryInterface(p,a,b)            (p)->lpVtbl->QueryInterface(p,a,b)
   2725 #define IDirect3DRMMeshBuilder2_AddRef(p)                        (p)->lpVtbl->AddRef(p)
   2726 #define IDirect3DRMMeshBuilder2_Release(p)                       (p)->lpVtbl->Release(p)
   2727 /*** IDirect3DRMObject methods ***/
   2728 #define IDirect3DRMMeshBuilder2_Clone(p,a,b,c)                   (p)->lpVtbl->Clone(p,a,b,c)
   2729 #define IDirect3DRMMeshBuilder2_AddDestroyCallback(p,a,b)        (p)->lpVtbl->AddDestroyCallback(p,a,b)
   2730 #define IDirect3DRMMeshBuilder2_DeleteDestroyCallback(p,a,b)     (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
   2731 #define IDirect3DRMMeshBuilder2_SetAppData(p,a)                  (p)->lpVtbl->SetAppData(p,a)
   2732 #define IDirect3DRMMeshBuilder2_GetAppData(p)                    (p)->lpVtbl->GetAppData(p)
   2733 #define IDirect3DRMMeshBuilder2_SetName(p,a)                     (p)->lpVtbl->SetName(p,a)
   2734 #define IDirect3DRMMeshBuilder2_GetName(p,a,b)                   (p)->lpVtbl->GetName(p,a,b)
   2735 #define IDirect3DRMMeshBuilder2_GetClassName(p,a,b)              (p)->lpVtbl->GetClassName(p,a,b)
   2736 /*** IDirect3DRMMeshBuilder methods ***/
   2737 #define IDirect3DRMMeshBuilder2_Load(p,a,b,c,d,e)                (p)->lpVtbl->Load(p,a,b,c,d,e)
   2738 #define IDirect3DRMMeshBuilder2_Save(p,a,b,c)                    (p)->lpVtbl->Save(p,a,b,c)
   2739 #define IDirect3DRMMeshBuilder2_Scale(p,a,b,c)                   (p)->lpVtbl->Scale(p,a,b,c)
   2740 #define IDirect3DRMMeshBuilder2_Translate(p,a,b,c)               (p)->lpVtbl->Translate(p,a)
   2741 #define IDirect3DRMMeshBuilder2_SetColorSource(p,a)              (p)->lpVtbl->SetColorSource(p,a,b,c)
   2742 #define IDirect3DRMMeshBuilder2_GetBox(p,a)                      (p)->lpVtbl->GetBox(p,a)
   2743 #define IDirect3DRMMeshBuilder2_GenerateNormals(p)               (p)->lpVtbl->GenerateNormals(p)
   2744 #define IDirect3DRMMeshBuilder2_GetColorSource(p)                (p)->lpVtbl->GetColorSource(p)
   2745 #define IDirect3DRMMeshBuilder2_AddMesh(p,a)                     (p)->lpVtbl->AddMesh(p,a)
   2746 #define IDirect3DRMMeshBuilder2_AddMeshBuilder(p,a)              (p)->lpVtbl->AddMeshBuilder(p,a)
   2747 #define IDirect3DRMMeshBuilder2_AddFrame(p,a)                    (p)->lpVtbl->AddFrame(p,a)
   2748 #define IDirect3DRMMeshBuilder2_AddFace(p,a)                     (p)->lpVtbl->AddFace(p,a)
   2749 #define IDirect3DRMMeshBuilder2_AddFaces(p,a,b,c,d,e,f)          (p)->lpVtbl->AddFaces(p,a,b,c,d,e,f)
   2750 #define IDirect3DRMMeshBuilder2_ReserveSpace(p,a,b,c)            (p)->lpVtbl->ReserveSpace(p,a,b,c)
   2751 #define IDirect3DRMMeshBuilder2_SetColorRGB(p,a,b,c)             (p)->lpVtbl->SetColorRGB(p,a,b,c)
   2752 #define IDirect3DRMMeshBuilder2_SetColor(p,a)                    (p)->lpVtbl->SetColor(p,a)
   2753 #define IDirect3DRMMeshBuilder2_SetTexture(p,a)                  (p)->lpVtbl->SetTexture(p,a)
   2754 #define IDirect3DRMMeshBuilder2_SetMaterial(p,a)                 (p)->lpVtbl->SetMaterial(p,a)
   2755 #define IDirect3DRMMeshBuilder2_SetTextureTopology(p,a,b)        (p)->lpVtbl->SetTextureTopology(p,a,b)
   2756 #define IDirect3DRMMeshBuilder2_SetQuality(p,a)                  (p)->lpVtbl->SetQuality(p,a)
   2757 #define IDirect3DRMMeshBuilder2_SetPerspective(p,a)              (p)->lpVtbl->SetPerspective(p,a)
   2758 #define IDirect3DRMMeshBuilder2_SetVertex(p,a,b,c,d)             (p)->lpVtbl->SetVertex(p,a,b,c,d)
   2759 #define IDirect3DRMMeshBuilder2_SetNormal(p,a,b,c,d)             (p)->lpVtbl->SetNormal(p,a,b,c,d)
   2760 #define IDirect3DRMMeshBuilder2_SetTextureCoordinates(p,a,b,c)   (p)->lpVtbl->SetTextureCoordinates(p,a,b,c)
   2761 #define IDirect3DRMMeshBuilder2_SetVertexColor(p,a,b)            (p)->lpVtbl->SetVertexColor(p,a,b)
   2762 #define IDirect3DRMMeshBuilder2_SetVertexColorRGB(p,a,b,c,d)     (p)->lpVtbl->SetVertexColorRGB(p,a,b,c,d)
   2763 #define IDirect3DRMMeshBuilder2_GetFaces(p,a)                    (p)->lpVtbl->GetFaces(p,a)
   2764 #define IDirect3DRMMeshBuilder2_GetVertices(p,a,b,c,d,e,f)       (p)->lpVtbl->GetVertices(p,a,b,c,d,e,f)
   2765 #define IDirect3DRMMeshBuilder2_GetTextureCoordinates(p,a,b,c)   (p)->lpVtbl->GetTextureCoordinates(p,a,b,c)
   2766 #define IDirect3DRMMeshBuilder2_AddVertex(p,a,b,c)               (p)->lpVtbl->AddVertex(p,a,b,c)
   2767 #define IDirect3DRMMeshBuilder2_AddNormal(p,a,b,c)               (p)->lpVtbl->AddNormal(p,a,b,c)
   2768 #define IDirect3DRMMeshBuilder2_CreateFace(p,a)                  (p)->lpVtbl->CreateFace(p,a)
   2769 #define IDirect3DRMMeshBuilder2_GetQuality(p)                    (p)->lpVtbl->GetQuality(p)
   2770 #define IDirect3DRMMeshBuilder2_GetPerspective(p)                (p)->lpVtbl->GetPerspective(p)
   2771 #define IDirect3DRMMeshBuilder2_GetFaceCount(p)                  (p)->lpVtbl->GetFaceCount(p)
   2772 #define IDirect3DRMMeshBuilder2_GetVertexCount(p)                (p)->lpVtbl->GetVertexCount(p)
   2773 #define IDirect3DRMMeshBuilder2_GetVertexColor(p,a)              (p)->lpVtbl->GetVertexColor(p,a)
   2774 #define IDirect3DRMMeshBuilder2_CreateMesh(p,a)                  (p)->lpVtbl->CreateMesh(p,a)
   2775 /*** IDirect3DRMMeshBuilder2 methods ***/
   2776 #define IDirect3DRMMeshBuilder2_GenerateNormals2(p,a,b)          (p)->lpVtbl->GenerateNormals2(p,a,b)
   2777 #define IDirect3DRMMeshBuilder2_GetFace(p,a,b)                   (p)->lpVtbl->GetFace(p,a,b)
   2778 #else
   2779 /*** IUnknown methods ***/
   2780 #define IDirect3DRMMeshBuilder2_QueryInterface(p,a,b)            (p)->QueryInterface(a,b)
   2781 #define IDirect3DRMMeshBuilder2_AddRef(p)                        (p)->AddRef()
   2782 #define IDirect3DRMMeshBuilder2_Release(p)                       (p)->Release()
   2783 /*** IDirect3DRMObject methods ***/
   2784 #define IDirect3DRMMeshBuilder2_Clone(p,a,b,c)                   (p)->Clone(a,b,c)
   2785 #define IDirect3DRMMeshBuilder2_AddDestroyCallback(p,a,b)        (p)->AddDestroyCallback(a,b)
   2786 #define IDirect3DRMMeshBuilder2_DeleteDestroyCallback(p,a,b)     (p)->DeleteDestroyCallback(a,b)
   2787 #define IDirect3DRMMeshBuilder2_SetAppData(p,a)                  (p)->SetAppData(a)
   2788 #define IDirect3DRMMeshBuilder2_GetAppData(p)                    (p)->GetAppData()
   2789 #define IDirect3DRMMeshBuilder2_SetName(p,a)                     (p)->SetName(a)
   2790 #define IDirect3DRMMeshBuilder2_GetName(p,a,b)                   (p)->GetName(a,b)
   2791 #define IDirect3DRMMeshBuilder2_GetClassName(p,a,b)              (p)->GetClassName(a,b)
   2792 /*** IDirect3DRMMeshBuilder methods ***/
   2793 #define IDirect3DRMMeshBuilder2_Load(p,a,b,c,d,e)                (p)->Load(a,b,c,d,e)
   2794 #define IDirect3DRMMeshBuilder2_Save(p,a,b,c)                    (p)->Save(a,b,c)
   2795 #define IDirect3DRMMeshBuilder2_Scale(p,a,b,c)                   (p)->Scale(a,b,c)
   2796 #define IDirect3DRMMeshBuilder2_Translate(p,a,b,c)               (p)->Translate(a)
   2797 #define IDirect3DRMMeshBuilder2_SetColorSource(p,a)              (p)->SetColorSource(a,b,c)
   2798 #define IDirect3DRMMeshBuilder2_GetBox(p,a)                      (p)->GetBox(a)
   2799 #define IDirect3DRMMeshBuilder2_GenerateNormals(p)               (p)->GenerateNormals()
   2800 #define IDirect3DRMMeshBuilder2_GetColorSource(p)                (p)->GetColorSource()
   2801 #define IDirect3DRMMeshBuilder2_AddMesh(p,a)                     (p)-->AddMesh(a)
   2802 #define IDirect3DRMMeshBuilder2_AddMeshBuilder(p,a)              (p)->AddMeshBuilder(a)
   2803 #define IDirect3DRMMeshBuilder2_AddFrame(p,a)                    (p)->AddFrame(a)
   2804 #define IDirect3DRMMeshBuilder2_AddFace(p,a)                     (p)->AddFace(a)
   2805 #define IDirect3DRMMeshBuilder2_AddFaces(p,a,b,c,d,e,f)          (p)->AddFaces(a,b,c,d,e,f)
   2806 #define IDirect3DRMMeshBuilder2_ReserveSpace(p,a,b,c)            (p)->ReserveSpace(a,b,c)
   2807 #define IDirect3DRMMeshBuilder2_SetColorRGB(p,a,b,c)             (p)->SetColorRGB(a,b,c)
   2808 #define IDirect3DRMMeshBuilder2_SetColor(p,a)                    (p)->SetColor(a)
   2809 #define IDirect3DRMMeshBuilder2_SetTexture(p,a)                  (p)->SetTexture(a)
   2810 #define IDirect3DRMMeshBuilder2_SetMaterial(p,a)                 (p)->SetMaterial(a)
   2811 #define IDirect3DRMMeshBuilder2_SetTextureTopology(p,a,b)        (p)->SetTextureTopology(a,b)
   2812 #define IDirect3DRMMeshBuilder2_SetQuality(p,a)                  (p)->SetQuality(a)
   2813 #define IDirect3DRMMeshBuilder2_SetPerspective(p,a)              (p)->SetPerspective(a)
   2814 #define IDirect3DRMMeshBuilder2_SetVertex(p,a,b,c,d)             (p)->SetVertex(a,b,c,d)
   2815 #define IDirect3DRMMeshBuilder2_SetNormal(p,a,b,c,d)             (p)->SetNormal(a,b,c,d)
   2816 #define IDirect3DRMMeshBuilder2_SetTextureCoordinates(p,a,b,c)   (p)->SetTextureCoordinates(a,b,c)
   2817 #define IDirect3DRMMeshBuilder2_SetVertexColor(p,a,b)            (p)->SetVertexColor(a,b)
   2818 #define IDirect3DRMMeshBuilder2_SetVertexColorRGB(p,a,b,c,d)     (p)->SetVertexColorRGB(a,b,c,d)
   2819 #define IDirect3DRMMeshBuilder2_GetFaces(p,a)                    (p)->GetFaces(a)
   2820 #define IDirect3DRMMeshBuilder2_GetVertices(p,a,b,c,d,e,f)       (p)->GetVertices(a,b,c,d,e,f)
   2821 #define IDirect3DRMMeshBuilder2_GetTextureCoordinates(p,a,b,c)   (p)->GetTextureCoordinates(a,b,c)
   2822 #define IDirect3DRMMeshBuilder2_AddVertex(p,a,b,c)               (p)->AddVertex(a,b,c)
   2823 #define IDirect3DRMMeshBuilder2_AddNormal(p,a,b,c)               (p)->AddNormal(a,b,c)
   2824 #define IDirect3DRMMeshBuilder2_CreateFace(p,a)                  (p)->CreateFace(a)
   2825 #define IDirect3DRMMeshBuilder2_GetQuality(p)                    (p)->GetQuality()
   2826 #define IDirect3DRMMeshBuilder2_GetPerspective(p)                (p)->GetPerspective()
   2827 #define IDirect3DRMMeshBuilder2_GetFaceCount(p)                  (p)->GetFaceCount()
   2828 #define IDirect3DRMMeshBuilder2_GetVertexCount(p)                (p)->GetVertexCount()
   2829 #define IDirect3DRMMeshBuilder2_GetVertexColor(p,a)              (p)->GetVertexColor(a)
   2830 #define IDirect3DRMMeshBuilder2_CreateMesh(p,a)                  (p)->CreateMesh(a)
   2831 /*** IDirect3DRMMeshBuilder2 methods ***/
   2832 #define IDirect3DRMMeshBuilder2_GenerateNormals2(p,a,b)          (p)->GenerateNormals2(a,b)
   2833 #define IDirect3DRMMeshBuilder2_GetFace(p,a,b)                   (p)->GetFace(a,b)
   2834 #endif
   2835 
   2836 /*****************************************************************************
   2837  * IDirect3DRMMeshBuilder3 interface
   2838  */
   2839 #define INTERFACE IDirect3DRMMeshBuilder3
   2840 DECLARE_INTERFACE_(IDirect3DRMMeshBuilder3,IDirect3DRMVisual)
   2841 {
   2842     /*** IUnknown methods ***/
   2843     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
   2844     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
   2845     STDMETHOD_(ULONG,Release)(THIS) PURE;
   2846     /*** IDirect3DRMObject methods ***/
   2847     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
   2848     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
   2849     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
   2850     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
   2851     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
   2852     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
   2853     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
   2854     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
   2855     /*** IDirect3DRMMeshBuilder3 methods ***/
   2856     STDMETHOD(Load)(THIS_ LPVOID filename, LPVOID name, D3DRMLOADOPTIONS loadflags, D3DRMLOADTEXTURE3CALLBACK, LPVOID pArg) PURE;
   2857     STDMETHOD(Save)(THIS_ const char *filename, D3DRMXOFFORMAT, D3DRMSAVEOPTIONS save) PURE;
   2858     STDMETHOD(Scale)(THIS_ D3DVALUE sx, D3DVALUE sy, D3DVALUE sz) PURE;
   2859     STDMETHOD(Translate)(THIS_ D3DVALUE tx, D3DVALUE ty, D3DVALUE tz) PURE;
   2860     STDMETHOD(SetColorSource)(THIS_ D3DRMCOLORSOURCE) PURE;
   2861     STDMETHOD(GetBox)(THIS_ D3DRMBOX *) PURE;
   2862     STDMETHOD(GenerateNormals)(THIS_ D3DVALUE crease, DWORD flags) PURE;
   2863     STDMETHOD_(D3DRMCOLORSOURCE, GetColorSource)(THIS) PURE;
   2864     STDMETHOD(AddMesh)(THIS_ IDirect3DRMMesh *mesh) PURE;
   2865     STDMETHOD(AddMeshBuilder)(THIS_ IDirect3DRMMeshBuilder3 *mesh_builder, DWORD flags) PURE;
   2866     STDMETHOD(AddFrame)(THIS_ IDirect3DRMFrame3 *frame) PURE;
   2867     STDMETHOD(AddFace)(THIS_ IDirect3DRMFace2 *face) PURE;
   2868     STDMETHOD(AddFaces)(THIS_ DWORD vcount, D3DVECTOR *vertices, DWORD ncount, D3DVECTOR *normals, DWORD *data,
   2869         LPDIRECT3DRMFACEARRAY*) PURE;
   2870     STDMETHOD(ReserveSpace)(THIS_ DWORD vertex_Count, DWORD normal_count, DWORD face_count) PURE;
   2871     STDMETHOD(SetColorRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
   2872     STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE;
   2873     STDMETHOD(SetTexture)(THIS_ LPDIRECT3DRMTEXTURE3) PURE;
   2874     STDMETHOD(SetMaterial)(THIS_ LPDIRECT3DRMMATERIAL2) PURE;
   2875     STDMETHOD(SetTextureTopology)(THIS_ WINBOOL wrap_u, WINBOOL wrap_v) PURE;
   2876     STDMETHOD(SetQuality)(THIS_ D3DRMRENDERQUALITY) PURE;
   2877     STDMETHOD(SetPerspective)(THIS_ WINBOOL) PURE;
   2878     STDMETHOD(SetVertex)(THIS_ DWORD index, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
   2879     STDMETHOD(SetNormal)(THIS_ DWORD index, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
   2880     STDMETHOD(SetTextureCoordinates)(THIS_ DWORD index, D3DVALUE u, D3DVALUE v) PURE;
   2881     STDMETHOD(SetVertexColor)(THIS_ DWORD index, D3DCOLOR) PURE;
   2882     STDMETHOD(SetVertexColorRGB)(THIS_ DWORD index, D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
   2883     STDMETHOD(GetFaces)(THIS_ LPDIRECT3DRMFACEARRAY*) PURE;
   2884     STDMETHOD(GetGeometry)(THIS_ DWORD *vcount, D3DVECTOR *vertices, DWORD *ncount, D3DVECTOR *normals,
   2885         DWORD *face_data_size, DWORD *face_data) PURE;
   2886     STDMETHOD(GetTextureCoordinates)(THIS_ DWORD index, D3DVALUE *u, D3DVALUE *v) PURE;
   2887     STDMETHOD_(int, AddVertex)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
   2888     STDMETHOD_(int, AddNormal)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
   2889     STDMETHOD(CreateFace)(THIS_ IDirect3DRMFace2 **face) PURE;
   2890     STDMETHOD_(D3DRMRENDERQUALITY, GetQuality)(THIS) PURE;
   2891     STDMETHOD_(WINBOOL, GetPerspective)(THIS) PURE;
   2892     STDMETHOD_(int, GetFaceCount)(THIS) PURE;
   2893     STDMETHOD_(int, GetVertexCount)(THIS) PURE;
   2894     STDMETHOD_(D3DCOLOR, GetVertexColor)(THIS_ DWORD index) PURE;
   2895     STDMETHOD(CreateMesh)(THIS_ IDirect3DRMMesh **mesh) PURE;
   2896     STDMETHOD(GetFace)(THIS_ DWORD index, IDirect3DRMFace2 **face) PURE;
   2897     STDMETHOD(GetVertex)(THIS_ DWORD index, D3DVECTOR *vector) PURE;
   2898     STDMETHOD(GetNormal)(THIS_ DWORD index, D3DVECTOR *vector) PURE;
   2899     STDMETHOD(DeleteVertices)(THIS_ DWORD IndexFirst, DWORD count) PURE;
   2900     STDMETHOD(DeleteNormals)(THIS_ DWORD IndexFirst, DWORD count) PURE;
   2901     STDMETHOD(DeleteFace)(THIS_ IDirect3DRMFace2 *face) PURE;
   2902     STDMETHOD(Empty)(THIS_ DWORD flags) PURE;
   2903     STDMETHOD(Optimize)(THIS_ DWORD flags) PURE;
   2904     STDMETHOD(AddFacesIndexed)(THIS_ DWORD flags, DWORD *pvIndices, DWORD *pIndexFirst, DWORD *pCount) PURE;
   2905     STDMETHOD(CreateSubMesh)(THIS_ LPUNKNOWN *) PURE;
   2906     STDMETHOD(GetParentMesh)(THIS_ DWORD, LPUNKNOWN *) PURE;
   2907     STDMETHOD(GetSubMeshes)(THIS_ LPDWORD pCount, LPUNKNOWN *) PURE;
   2908     STDMETHOD(DeleteSubMesh)(THIS_ LPUNKNOWN) PURE;
   2909     STDMETHOD(Enable)(THIS_ DWORD) PURE;
   2910     STDMETHOD(GetEnable)(THIS_ DWORD *) PURE;
   2911     STDMETHOD(AddTriangles)(THIS_ DWORD flags, DWORD format, DWORD VertexCount, LPVOID pvData) PURE;
   2912     STDMETHOD(SetVertices)(THIS_ DWORD start_idx, DWORD count, D3DVECTOR *v) PURE;
   2913     STDMETHOD(GetVertices)(THIS_ DWORD start_idx, DWORD *count, D3DVECTOR *v) PURE;
   2914     STDMETHOD(SetNormals)(THIS_ DWORD start_idx, DWORD count, D3DVECTOR *v) PURE;
   2915     STDMETHOD(GetNormals)(THIS_ DWORD start_idx, DWORD *count, D3DVECTOR *v) PURE;
   2916     STDMETHOD_(int, GetNormalCount)(THIS) PURE;
   2917 };
   2918 #undef INTERFACE
   2919 
   2920 #if !defined(__cplusplus) || defined(CINTERFACE)
   2921 /*** IUnknown methods ***/
   2922 #define IDirect3DRMMeshBuilder3_QueryInterface(p,a,b)            (p)->lpVtbl->QueryInterface(p,a,b)
   2923 #define IDirect3DRMMeshBuilder3_AddRef(p)                        (p)->lpVtbl->AddRef(p)
   2924 #define IDirect3DRMMeshBuilder3_Release(p)                       (p)->lpVtbl->Release(p)
   2925 /*** IDirect3DRMObject methods ***/
   2926 #define IDirect3DRMMeshBuilder3_Clone(p,a,b,c)                   (p)->lpVtbl->Clone(p,a,b,c)
   2927 #define IDirect3DRMMeshBuilder3_AddDestroyCallback(p,a,b)        (p)->lpVtbl->AddDestroyCallback(p,a,b)
   2928 #define IDirect3DRMMeshBuilder3_DeleteDestroyCallback(p,a,b)     (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
   2929 #define IDirect3DRMMeshBuilder3_SetAppData(p,a)                  (p)->lpVtbl->SetAppData(p,a)
   2930 #define IDirect3DRMMeshBuilder3_GetAppData(p)                    (p)->lpVtbl->GetAppData(p)
   2931 #define IDirect3DRMMeshBuilder3_SetName(p,a)                     (p)->lpVtbl->SetName(p,a)
   2932 #define IDirect3DRMMeshBuilder3_GetName(p,a,b)                   (p)->lpVtbl->GetName(p,a,b)
   2933 #define IDirect3DRMMeshBuilder3_GetClassName(p,a,b)              (p)->lpVtbl->GetClassName(p,a,b)
   2934 
   2935 /*** IDirect3DRMMeshBuilder3 methods ***/
   2936 #define IDirect3DRMMeshBuilder3_Load(p,a,b,c,d,e)                (p)->lpVtbl->Load(p,a,b,c,d,e)
   2937 #define IDirect3DRMMeshBuilder3_Save(p,a,b,c)                    (p)->lpVtbl->Save(p,a,b,c)
   2938 #define IDirect3DRMMeshBuilder3_Scale(p,a,b,c)                   (p)->lpVtbl->Scale(p,a,b,c)
   2939 #define IDirect3DRMMeshBuilder3_Translate(p,a,b,c)               (p)->lpVtbl->Translate(p,a)
   2940 #define IDirect3DRMMeshBuilder3_SetColorSource(p,a)              (p)->lpVtbl->SetColorSource(p,a,b,c)
   2941 #define IDirect3DRMMeshBuilder3_GetBox(p,a)                      (p)->lpVtbl->GetBox(p,a)
   2942 #define IDirect3DRMMeshBuilder3_GenerateNormals(p,a,b)           (p)->lpVtbl->GenerateNormals(p,a,b)
   2943 #define IDirect3DRMMeshBuilder3_GetColorSource(p)                (p)->lpVtbl->GetColorSource(p)
   2944 #define IDirect3DRMMeshBuilder3_AddMesh(p,a)                     (p)->lpVtbl->AddMesh(p,a)
   2945 #define IDirect3DRMMeshBuilder3_AddMeshBuilder(p,a)              (p)->lpVtbl->AddMeshBuilder(p,a)
   2946 #define IDirect3DRMMeshBuilder3_AddFrame(p,a)                    (p)->lpVtbl->AddFrame(p,a)
   2947 #define IDirect3DRMMeshBuilder3_AddFace(p,a)                     (p)->lpVtbl->AddFace(p,a)
   2948 #define IDirect3DRMMeshBuilder3_AddFaces(p,a,b,c,d,e,f)          (p)->lpVtbl->AddFaces(p,a,b,c,d,e,f)
   2949 #define IDirect3DRMMeshBuilder3_ReserveSpace(p,a,b,c)            (p)->lpVtbl->ReserveSpace(p,a,b,c)
   2950 #define IDirect3DRMMeshBuilder3_SetColorRGB(p,a,b,c)             (p)->lpVtbl->SetColorRGB(p,a,b,c)
   2951 #define IDirect3DRMMeshBuilder3_SetColor(p,a)                    (p)->lpVtbl->SetColor(p,a)
   2952 #define IDirect3DRMMeshBuilder3_SetTexture(p,a)                  (p)->lpVtbl->SetTexture(p,a)
   2953 #define IDirect3DRMMeshBuilder3_SetMaterial(p,a)                 (p)->lpVtbl->SetMaterial(p,a)
   2954 #define IDirect3DRMMeshBuilder3_SetTextureTopology(p,a,b)        (p)->lpVtbl->SetTextureTopology(p,a,b)
   2955 #define IDirect3DRMMeshBuilder3_SetQuality(p,a)                  (p)->lpVtbl->SetQuality(p,a)
   2956 #define IDirect3DRMMeshBuilder3_SetPerspective(p,a)              (p)->lpVtbl->SetPerspective(p,a)
   2957 #define IDirect3DRMMeshBuilder3_SetVertex(p,a,b,c,d)             (p)->lpVtbl->SetVertex(p,a,b,c,d)
   2958 #define IDirect3DRMMeshBuilder3_SetNormal(p,a,b,c,d)             (p)->lpVtbl->SetNormal(p,a,b,c,d)
   2959 #define IDirect3DRMMeshBuilder3_SetTextureCoordinates(p,a,b,c)   (p)->lpVtbl->SetTextureCoordinates(p,a,b,c)
   2960 #define IDirect3DRMMeshBuilder3_SetVertexColor(p,a,b)            (p)->lpVtbl->SetVertexColor(p,a,b)
   2961 #define IDirect3DRMMeshBuilder3_SetVertexColorRGB(p,a,b,c,d)     (p)->lpVtbl->SetVertexColorRGB(p,a,b,c,d)
   2962 #define IDirect3DRMMeshBuilder3_GetFaces(p,a)                    (p)->lpVtbl->GetFaces(p,a)
   2963 #define IDirect3DRMMeshBuilder3_GetGeometry(p,a,b,c,d,e,f)       (p)->lpVtbl->GetGeometry(p,a,b,c,d,e,f)
   2964 #define IDirect3DRMMeshBuilder3_GetTextureCoordinates(p,a,b,c)   (p)->lpVtbl->GetTextureCoordinates(p,a,b,c)
   2965 #define IDirect3DRMMeshBuilder3_AddVertex(p,a,b,c)               (p)->lpVtbl->AddVertex(p,a,b,c)
   2966 #define IDirect3DRMMeshBuilder3_AddNormal(p,a,b,c)               (p)->lpVtbl->AddNormal(p,a,b,c)
   2967 
   2968 #define IDirect3DRMMeshBuilder3_CreateFace(p,a)                  (p)->lpVtbl->CreateFace(p,a)
   2969 #define IDirect3DRMMeshBuilder3_GetQuality(p)                    (p)->lpVtbl->GetQuality(p)
   2970 #define IDirect3DRMMeshBuilder3_GetPerspective(p)                (p)->lpVtbl->GetPerspective(p)
   2971 
   2972 #define IDirect3DRMMeshBuilder3_GetFaceCount(p)                  (p)->lpVtbl->GetFaceCount(p)
   2973 #define IDirect3DRMMeshBuilder3_GetVertexCount(p)                (p)->lpVtbl->GetVertexCount(p)
   2974 #define IDirect3DRMMeshBuilder3_GetVertexColor(p,a)              (p)->lpVtbl->GetVertexColor(p,a)
   2975 #define IDirect3DRMMeshBuilder3_CreateMesh(p,a)                  (p)->lpVtbl->CreateMesh(p,a)
   2976 #define IDirect3DRMMeshBuilder3_GetFace(p,a,b)                   (p)->lpVtbl->GetFace(p,a,b)
   2977 #define IDirect3DRMMeshBuilder3_GetVertex(p,a,b)                 (p)->lpVtbl->GetVertex(p,a,b)
   2978 #define IDirect3DRMMeshBuilder3_GetNormal(p,a,b)                 (p)->lpVtbl->GetNormal(p,a,b)
   2979 #define IDirect3DRMMeshBuilder3_DeleteVertices(p,a,b)            (p)->lpVtbl->DeleteVertices(p,a,b)
   2980 #define IDirect3DRMMeshBuilder3_DeleteNormals(p,a,b)             (p)->lpVtbl->DeleteNormals(p,a,b)
   2981 #define IDirect3DRMMeshBuilder3_DeleteFace(p,a)                  (p)->lpVtbl->DeleteFace(p,a)
   2982 #define IDirect3DRMMeshBuilder3_Empty(p,a)                       (p)->lpVtbl->Empty(p,a)
   2983 #define IDirect3DRMMeshBuilder3_Optimize(p,a)                    (p)->lpVtbl->Optimize(p,a)
   2984 #define IDirect3DRMMeshBuilder3_AddFacesIndexed(p,a,b,c,d)       (p)->lpVtbl->AddFacesIndexed(p,a,b,c,d)
   2985 #define IDirect3DRMMeshBuilder3_CreateSubMesh(p,a)               (p)->lpVtbl->CreateSubMesh(p,a)
   2986 #define IDirect3DRMMeshBuilder3_GetParentMesh(p,a,b)             (p)->lpVtbl->GetParentMesh(p,a,b)
   2987 #define IDirect3DRMMeshBuilder3_GetSubMeshes(p,a,b)              (p)->lpVtbl->GetSubMeshes(p,a,b)
   2988 #define IDirect3DRMMeshBuilder3_DeleteSubMesh(p,a)               (p)->lpVtbl->DeleteSubMesh(p,a)
   2989 #define IDirect3DRMMeshBuilder3_Enable(p,a)                      (p)->lpVtbl->Enable(p,a)
   2990 #define IDirect3DRMMeshBuilder3_AddTriangles(p,a,b,c,d)          (p)->lpVtbl->AddTriangles(p,a,b,c,d)
   2991 #define IDirect3DRMMeshBuilder3_SetVertices(p,a,b,c)             (p)->lpVtbl->SetVertices(p,a,b,c)
   2992 #define IDirect3DRMMeshBuilder3_GetVertices(p,a,b,c)             (p)->lpVtbl->GetVertices(p,a,b,c)
   2993 #define IDirect3DRMMeshBuilder3_SetNormals(p,a,b,c)              (p)->lpVtbl->SetNormals(p,a,b,c)
   2994 #define IDirect3DRMMeshBuilder3_GetNormals(p,a,b,c)              (p)->lpVtbl->GetNormals(p,a,b,c)
   2995 #define IDirect3DRMMeshBuilder3_GetNormalCount(p)                (p)->lpVtbl->GetNormalCount(p)
   2996 #else
   2997 /*** IUnknown methods ***/
   2998 #define IDirect3DRMMeshBuilder3_QueryInterface(p,a,b)            (p)->QueryInterface(a,b)
   2999 #define IDirect3DRMMeshBuilder3_AddRef(p)                        (p)->AddRef()
   3000 #define IDirect3DRMMeshBuilder3_Release(p)                       (p)->Release()
   3001 /*** IDirect3DRMObject methods ***/
   3002 #define IDirect3DRMMeshBuilder3_Clone(p,a,b,c)                   (p)->Clone(a,b,c)
   3003 #define IDirect3DRMMeshBuilder3_AddDestroyCallback(p,a,b)        (p)->AddDestroyCallback(a,b)
   3004 #define IDirect3DRMMeshBuilder3_DeleteDestroyCallback(p,a,b)     (p)->DeleteDestroyCallback(a,b)
   3005 #define IDirect3DRMMeshBuilder3_SetAppData(p,a)                  (p)->SetAppData(a)
   3006 #define IDirect3DRMMeshBuilder3_GetAppData(p)                    (p)->GetAppData()
   3007 #define IDirect3DRMMeshBuilder3_SetName(p,a)                     (p)->SetName(a)
   3008 #define IDirect3DRMMeshBuilder3_GetName(p,a,b)                   (p)->GetName(a,b)
   3009 #define IDirect3DRMMeshBuilder3_GetClassName(p,a,b)              (p)->GetClassName(a,b)
   3010 /*** IDirect3DRMMeshBuilder3 methods ***/
   3011 #define IDirect3DRMMeshBuilder3_Load(p,a,b,c,d,e)                (p)->Load(a,b,c,d,e)
   3012 #define IDirect3DRMMeshBuilder3_Save(p,a,b,c)                    (p)->Save(a,b,c)
   3013 #define IDirect3DRMMeshBuilder3_Scale(p,a,b,c)                   (p)->Scale(a,b,c)
   3014 #define IDirect3DRMMeshBuilder3_Translate(p,a,b,c)               (p)->Translate(a)
   3015 #define IDirect3DRMMeshBuilder3_SetColorSource(p,a)              (p)->SetColorSource(a,b,c)
   3016 #define IDirect3DRMMeshBuilder3_GetBox(p,a)                      (p)->GetBox(a)
   3017 #define IDirect3DRMMeshBuilder3_GenerateNormals(p,a,b)           (p)->GenerateNormals(a,b)
   3018 #define IDirect3DRMMeshBuilder3_GetColorSource(p)                (p)->GetColorSource()
   3019 #define IDirect3DRMMeshBuilder3_AddMesh(p,a)                     (p)-->AddMesh(a)
   3020 #define IDirect3DRMMeshBuilder3_AddMeshBuilder(p,a)              (p)->AddMeshBuilder(a)
   3021 #define IDirect3DRMMeshBuilder3_AddFrame(p,a)                    (p)->AddFrame(a)
   3022 #define IDirect3DRMMeshBuilder3_AddFace(p,a)                     (p)->AddFace(a)
   3023 #define IDirect3DRMMeshBuilder3_AddFaces(p,a,b,c,d,e,f)          (p)->AddFaces(a,b,c,d,e,f)
   3024 #define IDirect3DRMMeshBuilder3_ReserveSpace(p,a,b,c)            (p)->ReserveSpace(a,b,c)
   3025 #define IDirect3DRMMeshBuilder3_SetColorRGB(p,a,b,c)             (p)->SetColorRGB(a,b,c)
   3026 #define IDirect3DRMMeshBuilder3_SetColor(p,a)                    (p)->SetColor(a)
   3027 #define IDirect3DRMMeshBuilder3_SetTexture(p,a)                  (p)->SetTexture(a)
   3028 #define IDirect3DRMMeshBuilder3_SetMaterial(p,a)                 (p)->SetMaterial(a)
   3029 #define IDirect3DRMMeshBuilder3_SetTextureTopology(p,a,b)        (p)->SetTextureTopology(a,b)
   3030 #define IDirect3DRMMeshBuilder3_SetQuality(p,a)                  (p)->SetQuality(a)
   3031 #define IDirect3DRMMeshBuilder3_SetPerspective(p,a)              (p)->SetPerspective(a)
   3032 #define IDirect3DRMMeshBuilder3_SetVertex(p,a,b,c,d)             (p)->SetVertex(a,b,c,d)
   3033 #define IDirect3DRMMeshBuilder3_SetNormal(p,a,b,c,d)             (p)->SetNormal(a,b,c,d)
   3034 #define IDirect3DRMMeshBuilder3_SetTextureCoordinates(p,a,b,c)   (p)->SetTextureCoordinates(a,b,c)
   3035 #define IDirect3DRMMeshBuilder3_SetVertexColor(p,a,b)            (p)->SetVertexColor(a,b)
   3036 #define IDirect3DRMMeshBuilder3_SetVertexColorRGB(p,a,b,c,d)     (p)->SetVertexColorRGB(a,b,c,d)
   3037 #define IDirect3DRMMeshBuilder3_GetFaces(p,a)                    (p)->GetFaces(a)
   3038 #define IDirect3DRMMeshBuilder3_GetGeometry(p,a,b,c,d,e,f)       (p)->GetGeometry(a,b,c,d,e,f)
   3039 #define IDirect3DRMMeshBuilder3_GetTextureCoordinates(p,a,b,c)   (p)->GetTextureCoordinates(a,b,c)
   3040 #define IDirect3DRMMeshBuilder3_AddVertex(p,a,b,c)               (p)->AddVertex(a,b,c)
   3041 #define IDirect3DRMMeshBuilder3_AddNormal(p,a,b,c)               (p)->AddNormal(a,b,c)
   3042 #define IDirect3DRMMeshBuilder3_CreateFace(p,a)                  (p)->CreateFace(a)
   3043 
   3044 #define IDirect3DRMMeshBuilder3_GetQuality(p)                    (p)->GetQuality()
   3045 #define IDirect3DRMMeshBuilder3_GetPerspective(p)                (p)->GetPerspective()
   3046 #define IDirect3DRMMeshBuilder3_GetFaceCount(p)                  (p)->GetFaceCount()
   3047 #define IDirect3DRMMeshBuilder3_GetVertexCount(p)                (p)->GetVertexCount()
   3048 #define IDirect3DRMMeshBuilder3_GetVertexColor(p,a)              (p)->GetVertexColor(a)
   3049 #define IDirect3DRMMeshBuilder3_CreateMesh(p,a)                  (p)->CreateMesh(a)
   3050 #define IDirect3DRMMeshBuilder3_GetFace(p,a,b)                   (p)->GetFace(a,b)
   3051 #define IDirect3DRMMeshBuilder3_GetVertex(p,a,b)                 (p)->GetVertex(a,b)
   3052 #define IDirect3DRMMeshBuilder3_GetNormal(p,a,b)                 (p)->GetNormal(a,b)
   3053 #define IDirect3DRMMeshBuilder3_DeleteVertices(p,a,b)            (p)->DeleteVertices(a,b)
   3054 #define IDirect3DRMMeshBuilder3_DeleteNormals(p,a,b)             (p)->DeleteNormals(a,b)
   3055 #define IDirect3DRMMeshBuilder3_DeleteFace(p,a)                  (p)->DeleteFace(a)
   3056 #define IDirect3DRMMeshBuilder3_Empty(p,a)                       (p)->Empty(a)
   3057 #define IDirect3DRMMeshBuilder3_Optimize(p,a)                    (p)->Optimize(a)
   3058 #define IDirect3DRMMeshBuilder3_AddFacesIndexed(p,a,b,c,d)       (p)->AddFacesIndexed(a,b,c,d)
   3059 #define IDirect3DRMMeshBuilder3_CreateSubMesh(p,a)               (p)->CreateSubMesh(a)
   3060 #define IDirect3DRMMeshBuilder3_GetParentMesh(p,a,b)             (p)->GetParentMesh(a,b)
   3061 #define IDirect3DRMMeshBuilder3_GetSubMeshes(p,a,b)              (p)->GetSubMeshes(a,b)
   3062 #define IDirect3DRMMeshBuilder3_DeleteSubMesh(p,a)               (p)->DeleteSubMesh(a)
   3063 #define IDirect3DRMMeshBuilder3_Enable(p,a)                      (p)->Enable(a)
   3064 #define IDirect3DRMMeshBuilder3_AddTriangles(p,a,b,c,d)          (p)->AddTriangles(a,b,c,d)
   3065 #define IDirect3DRMMeshBuilder3_SetVertices(p,a,b,c)             (p)->SetVertices(a,b,c)
   3066 #define IDirect3DRMMeshBuilder3_GetVertices(p,a,b,c)             (p)->GetVertices(a,b,c)
   3067 #define IDirect3DRMMeshBuilder3_SetNormals(p,a,b,c)              (p)->SetNormals(a,b,c)
   3068 #define IDirect3DRMMeshBuilder3_GetNormals(p,a,b,c)              (p)->GetNormals(a,b,c)
   3069 #define IDirect3DRMMeshBuilder3_GetNormalCount(p)                (p)->GetNormalCount()
   3070 #endif
   3071 
   3072 /*****************************************************************************
   3073  * IDirect3DRMLight interface
   3074  */
   3075 #define INTERFACE IDirect3DRMLight
   3076 DECLARE_INTERFACE_(IDirect3DRMLight,IDirect3DRMObject)
   3077 {
   3078     /*** IUnknown methods ***/
   3079     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
   3080     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
   3081     STDMETHOD_(ULONG,Release)(THIS) PURE;
   3082     /*** IDirect3DRMObject methods ***/
   3083     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
   3084     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
   3085     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
   3086     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
   3087     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
   3088     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
   3089     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
   3090     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
   3091     /*** IDirect3DRMLight methods ***/
   3092     STDMETHOD(SetType)(THIS_ D3DRMLIGHTTYPE) PURE;
   3093     STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE;
   3094     STDMETHOD(SetColorRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE;
   3095     STDMETHOD(SetRange)(THIS_ D3DVALUE) PURE;
   3096     STDMETHOD(SetUmbra)(THIS_ D3DVALUE) PURE;
   3097     STDMETHOD(SetPenumbra)(THIS_ D3DVALUE) PURE;
   3098     STDMETHOD(SetConstantAttenuation)(THIS_ D3DVALUE) PURE;
   3099     STDMETHOD(SetLinearAttenuation)(THIS_ D3DVALUE) PURE;
   3100     STDMETHOD(SetQuadraticAttenuation)(THIS_ D3DVALUE) PURE;
   3101     STDMETHOD_(D3DVALUE, GetRange)(THIS) PURE;
   3102     STDMETHOD_(D3DVALUE, GetUmbra)(THIS) PURE;
   3103     STDMETHOD_(D3DVALUE, GetPenumbra)(THIS) PURE;
   3104     STDMETHOD_(D3DVALUE, GetConstantAttenuation)(THIS) PURE;
   3105     STDMETHOD_(D3DVALUE, GetLinearAttenuation)(THIS) PURE;
   3106     STDMETHOD_(D3DVALUE, GetQuadraticAttenuation)(THIS) PURE;
   3107     STDMETHOD_(D3DCOLOR, GetColor)(THIS) PURE;
   3108     STDMETHOD_(D3DRMLIGHTTYPE, GetType)(THIS) PURE;
   3109     STDMETHOD(SetEnableFrame)(THIS_ IDirect3DRMFrame *frame) PURE;
   3110     STDMETHOD(GetEnableFrame)(THIS_ IDirect3DRMFrame **frame) PURE;
   3111 };
   3112 #undef INTERFACE
   3113 
   3114 #if !defined(__cplusplus) || defined(CINTERFACE)
   3115 /*** IUnknown methods ***/
   3116 #define IDirect3DRMLight_QueryInterface(p,a,b)            (p)->lpVtbl->QueryInterface(p,a,b)
   3117 #define IDirect3DRMLight_AddRef(p)                        (p)->lpVtbl->AddRef(p)
   3118 #define IDirect3DRMLight_Release(p)                       (p)->lpVtbl->Release(p)
   3119 /*** IDirect3DRMObject methods ***/
   3120 #define IDirect3DRMLight_Clone(p,a,b,c)                   (p)->lpVtbl->Clone(p,a,b,c)
   3121 #define IDirect3DRMLight_AddDestroyCallback(p,a,b)        (p)->lpVtbl->AddDestroyCallback(p,a,b)
   3122 #define IDirect3DRMLight_DeleteDestroyCallback(p,a,b)     (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
   3123 #define IDirect3DRMLight_SetAppData(p,a)                  (p)->lpVtbl->SetAppData(p,a)
   3124 #define IDirect3DRMLight_GetAppData(p)                    (p)->lpVtbl->GetAppData(p)
   3125 #define IDirect3DRMLight_SetName(p,a)                     (p)->lpVtbl->SetName(p,a)
   3126 #define IDirect3DRMLight_GetName(p,a,b)                   (p)->lpVtbl->GetName(p,a,b)
   3127 #define IDirect3DRMLight_GetClassName(p,a,b)              (p)->lpVtbl->GetClassName(p,a,b)
   3128 /*** IDirect3DRMLight methods ***/
   3129 #define IDirect3DRMLight_SetType(p,a)                     (p)->lpVtbl->SetType(p,a)
   3130 #define IDirect3DRMLight_SetColor(p,a)                    (p)->lpVtbl->SetColor(p,a)
   3131 #define IDirect3DRMLight_SetColorRGB(p,a,b,c)             (p)->lpVtbl->SetColorRGB(p,a,b,c)
   3132 #define IDirect3DRMLight_SetRange(p,a)                    (p)->lpVtbl->SetRange(p,a)
   3133 #define IDirect3DRMLight_SetUmbra(p,a)                    (p)->lpVtbl->SetUmbra(p,a)
   3134 #define IDirect3DRMLight_SetPenumbra(p,a)                 (p)->lpVtbl->SetPenumbra(p,a)
   3135 #define IDirect3DRMLight_SetConstantAttenuation(p,a)      (p)->lpVtbl->SetConstantAttenuation(p,a)
   3136 #define IDirect3DRMLight_SetLinearAttenuation(p,a)        (p)->lpVtbl->SetLinearAttenuation(p,a)
   3137 #define IDirect3DRMLight_SetQuadraticAttenuation(p,a)     (p)->lpVtbl->SetQuadraticAttenuation(p,a)
   3138 #define IDirect3DRMLight_GetRange(p)                      (p)->lpVtbl->GetRange(p)
   3139 #define IDirect3DRMLight_GetUmbra(p)                      (p)->lpVtbl->GetUmbra(p)
   3140 #define IDirect3DRMLight_GetPenumbra(p)                   (p)->lpVtbl->GetPenumbra(p)
   3141 #define IDirect3DRMLight_GetConstantAttenuation(p)        (p)->lpVtbl->GetConstantAttenuation(p)
   3142 #define IDirect3DRMLight_GetLinearAttenuation(p)          (p)->lpVtbl->GetLinearAttenuation(p)
   3143 #define IDirect3DRMLight_GetQuadraticAttenuation(p)       (p)->lpVtbl->GetQuadraticAttenuation(p)
   3144 #define IDirect3DRMLight_GetColor(p)                      (p)->lpVtbl->GetColor(p)
   3145 #define IDirect3DRMLight_GetType(p)                       (p)->lpVtbl->GetType(p)
   3146 #define IDirect3DRMLight_SetEnableFrame(p,a)              (p)->lpVtbl->SetEnableFrame(p,a)
   3147 #define IDirect3DRMLight_GetEnableFrame(p,a)              (p)->lpVtbl->GetEnableFrame(p,a)
   3148 #else
   3149 /*** IUnknown methods ***/
   3150 #define IDirect3DRMLight_QueryInterface(p,a,b)            (p)->QueryInterface(a,b)
   3151 #define IDirect3DRMLight_AddRef(p)                        (p)->AddRef()
   3152 #define IDirect3DRMLight_Release(p)                       (p)->Release()
   3153 /*** IDirect3DRMObject methods ***/
   3154 #define IDirect3DRMLight_Clone(p,a,b,c)                   (p)->Clone(a,b,c)
   3155 #define IDirect3DRMLight_AddDestroyCallback(p,a,b)        (p)->AddDestroyCallback(a,b)
   3156 #define IDirect3DRMLight_DeleteDestroyCallback(p,a,b)     (p)->DeleteDestroyCallback(a,b)
   3157 #define IDirect3DRMLight_SetAppData(p,a)                  (p)->SetAppData(a)
   3158 #define IDirect3DRMLight_GetAppData(p)                    (p)->GetAppData()
   3159 #define IDirect3DRMLight_SetName(p,a)                     (p)->SetName(a)
   3160 #define IDirect3DRMLight_GetName(p,a,b)                   (p)->GetName(a,b)
   3161 #define IDirect3DRMLight_GetClassName(p,a,b)              (p)->GetClassName(a,b)
   3162 /*** IDirect3DRMLight methods ***/
   3163 #define IDirect3DRMLight_SetType(p,a)                     (p)->SetType(a)
   3164 #define IDirect3DRMLight_SetColor(p,a)                    (p)->SetColor(a)
   3165 #define IDirect3DRMLight_SetColorRGB(p,a,b,c)             (p)->SetColorRGB(a,b,c)
   3166 #define IDirect3DRMLight_SetRange(p,a)                    (p)->SetRange(a)
   3167 #define IDirect3DRMLight_SetUmbra(p,a)                    (p)->SetUmbra(a)
   3168 #define IDirect3DRMLight_SetPenumbra(p,a)                 (p)->SetPenumbra(a)
   3169 #define IDirect3DRMLight_SetConstantAttenuation(p,a)      (p)->SetConstantAttenuation(a)
   3170 #define IDirect3DRMLight_SetLinearAttenuation(p,a)        (p)->SetLinearAttenuation(a)
   3171 #define IDirect3DRMLight_SetQuadraticAttenuation(p,a)     (p)->SetQuadraticAttenuation(a)
   3172 #define IDirect3DRMLight_GetRange(p)                      (p)->GetRange()
   3173 #define IDirect3DRMLight_GetUmbra(p)                      (p)->GetUmbra()
   3174 #define IDirect3DRMLight_GetPenumbra(p)                   (p)->GetPenumbra()
   3175 #define IDirect3DRMLight_GetConstantAttenuation(p)        (p)->GetConstantAttenuation()
   3176 #define IDirect3DRMLight_GetLinearAttenuation(p)          (p)->GetLinearAttenuation()
   3177 #define IDirect3DRMLight_GetQuadraticAttenuation(p)       (p)->GetQuadraticAttenuation()
   3178 #define IDirect3DRMLight_GetColor(p)                      (p)->GetColor()
   3179 #define IDirect3DRMLight_GetType(p)                       (p)->GetType()
   3180 #define IDirect3DRMLight_SetEnableFrame(p,a)              (p)->SetEnableFrame(a)
   3181 #define IDirect3DRMLight_GetEnableFrame(p,a)              (p)->GetEnableFrame(a)
   3182 #endif
   3183 
   3184 /*****************************************************************************
   3185  * IDirect3DRMTexture interface
   3186  */
   3187 #define INTERFACE IDirect3DRMTexture
   3188 DECLARE_INTERFACE_(IDirect3DRMTexture, IDirect3DRMVisual)
   3189 {
   3190     /*** IUnknown methods ***/
   3191     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
   3192     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
   3193     STDMETHOD_(ULONG,Release)(THIS) PURE;
   3194     /*** IDirect3DRMObject methods ***/
   3195     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
   3196     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
   3197     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
   3198     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
   3199     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
   3200     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
   3201     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
   3202     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
   3203     /*** IDirect3DRMTexture methods ***/
   3204     STDMETHOD(InitFromFile)(THIS_ const char *filename) PURE;
   3205     STDMETHOD(InitFromSurface)(THIS_ IDirectDrawSurface *surface) PURE;
   3206     STDMETHOD(InitFromResource)(THIS_ HRSRC) PURE;
   3207     STDMETHOD(Changed)(THIS_ WINBOOL pixels, WINBOOL palette) PURE;
   3208     STDMETHOD(SetColors)(THIS_ DWORD) PURE;
   3209     STDMETHOD(SetShades)(THIS_ DWORD) PURE;
   3210     STDMETHOD(SetDecalSize)(THIS_ D3DVALUE width, D3DVALUE height) PURE;
   3211     STDMETHOD(SetDecalOrigin)(THIS_ LONG x, LONG y) PURE;
   3212     STDMETHOD(SetDecalScale)(THIS_ DWORD) PURE;
   3213     STDMETHOD(SetDecalTransparency)(THIS_ WINBOOL) PURE;
   3214     STDMETHOD(SetDecalTransparentColor)(THIS_ D3DCOLOR) PURE;
   3215     STDMETHOD(GetDecalSize)(THIS_ D3DVALUE *width_return, D3DVALUE *height_return) PURE;
   3216     STDMETHOD(GetDecalOrigin)(THIS_ LONG *x_return, LONG *y_return) PURE;
   3217     STDMETHOD_(D3DRMIMAGE *, GetImage)(THIS) PURE;
   3218     STDMETHOD_(DWORD, GetShades)(THIS) PURE;
   3219     STDMETHOD_(DWORD, GetColors)(THIS) PURE;
   3220     STDMETHOD_(DWORD, GetDecalScale)(THIS) PURE;
   3221     STDMETHOD_(WINBOOL, GetDecalTransparency)(THIS) PURE;
   3222     STDMETHOD_(D3DCOLOR, GetDecalTransparentColor)(THIS) PURE;
   3223 };
   3224 #undef INTERFACE
   3225 
   3226 #if !defined(__cplusplus) || defined(CINTERFACE)
   3227 /*** IUnknown methods ***/
   3228 #define IDirect3DRMTexture_QueryInterface(p,a,b)            (p)->lpVtbl->QueryInterface(p,a,b)
   3229 #define IDirect3DRMTexture_AddRef(p)                        (p)->lpVtbl->AddRef(p)
   3230 #define IDirect3DRMTexture_Release(p)                       (p)->lpVtbl->Release(p)
   3231 /*** IDirect3DRMObject methods ***/
   3232 #define IDirect3DRMTexture_Clone(p,a,b,c)                   (p)->lpVtbl->Clone(p,a,b,c)
   3233 #define IDirect3DRMTexture_AddDestroyCallback(p,a,b)        (p)->lpVtbl->AddDestroyCallback(p,a,b)
   3234 #define IDirect3DRMTexture_DeleteDestroyCallback(p,a,b)     (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
   3235 #define IDirect3DRMTexture_SetAppData(p,a)                  (p)->lpVtbl->SetAppData(p,a)
   3236 #define IDirect3DRMTexture_GetAppData(p)                    (p)->lpVtbl->GetAppData(p)
   3237 #define IDirect3DRMTexture_SetName(p,a)                     (p)->lpVtbl->SetName(p,a)
   3238 #define IDirect3DRMTexture_GetName(p,a,b)                   (p)->lpVtbl->GetName(p,a,b)
   3239 #define IDirect3DRMTexture_GetClassName(p,a,b)              (p)->lpVtbl->GetClassName(p,a,b)
   3240 /*** IDirect3DRMTexture methods ***/
   3241 #define IDirect3DRMTexture_InitFromFile(p,a)                (p)->lpVtbl->InitFromFile(p,a)
   3242 #define IDirect3DRMTexture_InitFromSurface(p,a)             (p)->lpVtbl->InitFromSurface(p,a)
   3243 #define IDirect3DRMTexture_InitFromResource(p,a)            (p)->lpVtbl->InitFromResource(p,a)
   3244 #define IDirect3DRMTexture_Changed(p,a,b)                   (p)->lpVtbl->Changed(p,a,b)
   3245 #define IDirect3DRMTexture_SetColors(p,a)                   (p)->lpVtbl->SetColors(p,a)
   3246 #define IDirect3DRMTexture_SetShades(p,a)                   (p)->lpVtbl->SetShades(p,a)
   3247 #define IDirect3DRMTexture_SetDecalSize(p,a,b)              (p)->lpVtbl->SetDecalSize(p,a,b)
   3248 #define IDirect3DRMTexture_SetDecalOrigin(p,a,b)            (p)->lpVtbl->SetDecalOrigin(p,a,b)
   3249 #define IDirect3DRMTexture_SetDecalScale(p,a)               (p)->lpVtbl->SetDecalScale(p,a)
   3250 #define IDirect3DRMTexture_SetDecalTransparency(p,a)        (p)->lpVtbl->SetDecalTransparency(p,a)
   3251 #define IDirect3DRMTexture_SetDecalTransparencyColor(p,a)   (p)->lpVtbl->SetDecalTransparentColor(p,a)
   3252 #define IDirect3DRMTexture_GetDecalSize(p,a,b)              (p)->lpVtbl->GetDecalSize(p,a,b)
   3253 #define IDirect3DRMTexture_GetDecalOrigin(p,a,b)            (p)->lpVtbl->GetDecalOrigin(p,a,b)
   3254 #define IDirect3DRMTexture_GetImage(p)                      (p)->lpVtbl->GetImage(p)
   3255 #define IDirect3DRMTexture_GetShades(p)                     (p)->lpVtbl->GetShades(p)
   3256 #define IDirect3DRMTexture_GetColors(p)                     (p)->lpVtbl->GetColors(p)
   3257 #define IDirect3DRMTexture_GetDecalScale(p)                 (p)->lpVtbl->GetDecalScale(p)
   3258 #define IDirect3DRMTexture_GetDecalTransparency(p)          (p)->lpVtbl->GetDecalTransparency(p)
   3259 #define IDirect3DRMTexture_GetDecalTransparencyColor(p)     (p)->lpVtbl->GetDecalTransparencyColor(p)
   3260 #else
   3261 /*** IUnknown methods ***/
   3262 #define IDirect3DRMTexture_QueryInterface(p,a,b)            (p)->QueryInterface(a,b)
   3263 #define IDirect3DRMTexture_AddRef(p)                        (p)->AddRef()
   3264 #define IDirect3DRMTexture_Release(p)                       (p)->Release()
   3265 /*** IDirect3DRMObject methods ***/
   3266 #define IDirect3DRMTexture_Clone(p,a,b,c)                   (p)->Clone(a,b,c)
   3267 #define IDirect3DRMTexture_AddDestroyCallback(p,a,b)        (p)->AddDestroyCallback(a,b)
   3268 #define IDirect3DRMTexture_DeleteDestroyCallback(p,a,b)     (p)->DeleteDestroyCallback(a,b)
   3269 #define IDirect3DRMTexture_SetAppData(p,a)                  (p)->SetAppData(a)
   3270 #define IDirect3DRMTexture_GetAppData(p)                    (p)->GetAppData()
   3271 #define IDirect3DRMTexture_SetName(p,a)                     (p)->SetName(a)
   3272 #define IDirect3DRMTexture_GetName(p,a,b)                   (p)->GetName(a,b)
   3273 #define IDirect3DRMTexture_GetClassName(p,a,b)              (p)->GetClassName(a,b)
   3274 /*** IDirect3DRMTexture methods ***/
   3275 #define IDirect3DRMTexture_InitFromFile(p,a)                (p)->InitFromFile(a)
   3276 #define IDirect3DRMTexture_InitFromSurface(p,a)             (p)->InitFromSurface(a)
   3277 #define IDirect3DRMTexture_InitFromResource(p,a)            (p)->InitFromResource(a)
   3278 #define IDirect3DRMTexture_Changed(p,a,b)                   (p)->Changed(a,b)
   3279 #define IDirect3DRMTexture_SetColors(p,a)                   (p)->SetColors(a)
   3280 #define IDirect3DRMTexture_SetShades(p,a)                   (p)->SetShades(a)
   3281 #define IDirect3DRMTexture_SetDecalSize(p,a,b)              (p)->SetDecalSize(a,b)
   3282 #define IDirect3DRMTexture_SetDecalOrigin(p,a,b)            (p)->SetDecalOrigin(a,b)
   3283 #define IDirect3DRMTexture_SetDecalScale(p,a)               (p)->SetDecalScale(a)
   3284 #define IDirect3DRMTexture_SetDecalTransparency(p,a)        (p)->SetDecalTransparency(a)
   3285 #define IDirect3DRMTexture_SetDecalTransparencyColor(p,a)   (p)->SetDecalTransparentColor(a)
   3286 #define IDirect3DRMTexture_GetDecalSize(p,a,b)              (p)->GetDecalSize(a,b)
   3287 #define IDirect3DRMTexture_GetDecalOrigin(p,a,b)            (p)->GetDecalOrigin(a,b)
   3288 #define IDirect3DRMTexture_GetImage(p)                      (p)->GetImage()
   3289 #define IDirect3DRMTexture_GetShades(p)                     (p)->GetShades()
   3290 #define IDirect3DRMTexture_GetColors(p)                     (p)->GetColors()
   3291 #define IDirect3DRMTexture_GetDecalScale(p)                 (p)->GetDecalScale()
   3292 #define IDirect3DRMTexture_GetDecalTransparency(p)          (p)->GetDecalTransparency()
   3293 #define IDirect3DRMTexture_GetDecalTransparencyColor(p)     (p)->GetDecalTransparencyColor()
   3294 #endif
   3295 
   3296 /*****************************************************************************
   3297  * IDirect3DRMTexture2 interface
   3298  */
   3299 #define INTERFACE IDirect3DRMTexture2
   3300 DECLARE_INTERFACE_(IDirect3DRMTexture2, IDirect3DRMTexture)
   3301 {
   3302     /*** IUnknown methods ***/
   3303     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
   3304     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
   3305     STDMETHOD_(ULONG,Release)(THIS) PURE;
   3306     /*** IDirect3DRMObject methods ***/
   3307     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
   3308     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
   3309     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
   3310     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
   3311     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
   3312     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
   3313     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
   3314     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
   3315     /*** IDirect3DRMTexture methods ***/
   3316     STDMETHOD(InitFromFile)(THIS_ const char *filename) PURE;
   3317     STDMETHOD(InitFromSurface)(THIS_ IDirectDrawSurface *surface) PURE;
   3318     STDMETHOD(InitFromResource)(THIS_ HRSRC) PURE;
   3319     STDMETHOD(Changed)(THIS_ WINBOOL pixels, WINBOOL palette) PURE;
   3320     STDMETHOD(SetColors)(THIS_ DWORD) PURE;
   3321     STDMETHOD(SetShades)(THIS_ DWORD) PURE;
   3322     STDMETHOD(SetDecalSize)(THIS_ D3DVALUE width, D3DVALUE height) PURE;
   3323     STDMETHOD(SetDecalOrigin)(THIS_ LONG x, LONG y) PURE;
   3324     STDMETHOD(SetDecalScale)(THIS_ DWORD) PURE;
   3325     STDMETHOD(SetDecalTransparency)(THIS_ WINBOOL) PURE;
   3326     STDMETHOD(SetDecalTransparentColor)(THIS_ D3DCOLOR) PURE;
   3327     STDMETHOD(GetDecalSize)(THIS_ D3DVALUE *width_return, D3DVALUE *height_return) PURE;
   3328     STDMETHOD(GetDecalOrigin)(THIS_ LONG *x_return, LONG *y_return) PURE;
   3329     STDMETHOD_(D3DRMIMAGE *, GetImage)(THIS) PURE;
   3330     STDMETHOD_(DWORD, GetShades)(THIS) PURE;
   3331     STDMETHOD_(DWORD, GetColors)(THIS) PURE;
   3332     STDMETHOD_(DWORD, GetDecalScale)(THIS) PURE;
   3333     STDMETHOD_(WINBOOL, GetDecalTransparency)(THIS) PURE;
   3334     STDMETHOD_(D3DCOLOR, GetDecalTransparentColor)(THIS) PURE;
   3335     /*** IDirect3DRMTexture2 methods ***/
   3336     STDMETHOD(InitFromImage)(THIS_ D3DRMIMAGE *image) PURE;
   3337     STDMETHOD(InitFromResource2)(THIS_ HMODULE hModule, LPCSTR /* LPCTSTR */ strName, LPCSTR /* LPCTSTR */ strType) PURE;
   3338     STDMETHOD(GenerateMIPMap)(THIS_ DWORD) PURE;
   3339 };
   3340 #undef INTERFACE
   3341 
   3342 #if !defined(__cplusplus) || defined(CINTERFACE)
   3343 /*** IUnknown methods ***/
   3344 #define IDirect3DRMTexture2_QueryInterface(p,a,b)            (p)->lpVtbl->QueryInterface(p,a,b)
   3345 #define IDirect3DRMTexture2_AddRef(p)                        (p)->lpVtbl->AddRef(p)
   3346 #define IDirect3DRMTexture2_Release(p)                       (p)->lpVtbl->Release(p)
   3347 /*** IDirect3DRMObject methods ***/
   3348 #define IDirect3DRMTexture2_Clone(p,a,b,c)                   (p)->lpVtbl->Clone(p,a,b,c)
   3349 #define IDirect3DRMTexture2_AddDestroyCallback(p,a,b)        (p)->lpVtbl->AddDestroyCallback(p,a,b)
   3350 #define IDirect3DRMTexture2_DeleteDestroyCallback(p,a,b)     (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
   3351 #define IDirect3DRMTexture2_SetAppData(p,a)                  (p)->lpVtbl->SetAppData(p,a)
   3352 #define IDirect3DRMTexture2_GetAppData(p)                    (p)->lpVtbl->GetAppData(p)
   3353 #define IDirect3DRMTexture2_SetName(p,a)                     (p)->lpVtbl->SetName(p,a)
   3354 #define IDirect3DRMTexture2_GetName(p,a,b)                   (p)->lpVtbl->GetName(p,a,b)
   3355 #define IDirect3DRMTexture2_GetClassName(p,a,b)              (p)->lpVtbl->GetClassName(p,a,b)
   3356 /*** IDirect3DRMTexture methods ***/
   3357 #define IDirect3DRMTexture2_InitFromFile(p,a)                (p)->lpVtbl->InitFromFile(p,a)
   3358 #define IDirect3DRMTexture2_InitFromSurface(p,a)             (p)->lpVtbl->InitFromSurface(p,a)
   3359 #define IDirect3DRMTexture2_InitFromResource(p,a)            (p)->lpVtbl->InitFromResource(p,a)
   3360 #define IDirect3DRMTexture2_Changed(p,a,b)                   (p)->lpVtbl->Changed(p,a,b)
   3361 #define IDirect3DRMTexture2_SetColors(p,a)                   (p)->lpVtbl->SetColors(p,a)
   3362 #define IDirect3DRMTexture2_SetShades(p,a)                   (p)->lpVtbl->SetShades(p,a)
   3363 #define IDirect3DRMTexture2_SetDecalSize(p,a,b)              (p)->lpVtbl->SetDecalSize(p,a,b)
   3364 #define IDirect3DRMTexture2_SetDecalOrigin(p,a,b)            (p)->lpVtbl->SetDecalOrigin(p,a,b)
   3365 #define IDirect3DRMTexture2_SetDecalScale(p,a)               (p)->lpVtbl->SetDecalScale(p,a)
   3366 #define IDirect3DRMTexture2_SetDecalTransparency(p,a)        (p)->lpVtbl->SetDecalTransparency(p,a)
   3367 #define IDirect3DRMTexture2_SetDecalTransparencyColor(p,a)   (p)->lpVtbl->SetDecalTransparentColor(p,a)
   3368 #define IDirect3DRMTexture2_GetDecalSize(p,a,b)              (p)->lpVtbl->GetDecalSize(p,a,b)
   3369 #define IDirect3DRMTexture2_GetDecalOrigin(p,a,b)            (p)->lpVtbl->GetDecalOrigin(p,a,b)
   3370 #define IDirect3DRMTexture2_GetImage(p)                      (p)->lpVtbl->GetImage(p)
   3371 #define IDirect3DRMTexture2_GetShades(p)                     (p)->lpVtbl->GetShades(p)
   3372 #define IDirect3DRMTexture2_GetColors(p)                     (p)->lpVtbl->GetColors(p)
   3373 #define IDirect3DRMTexture2_GetDecalScale(p)                 (p)->lpVtbl->GetDecalScale(p)
   3374 #define IDirect3DRMTexture2_GetDecalTransparency(p)          (p)->lpVtbl->GetDecalTransparency(p)
   3375 #define IDirect3DRMTexture2_GetDecalTransparencyColor(p)     (p)->lpVtbl->GetDecalTransparencyColor(p)
   3376 /*** IDirect3DRMTexture2 methods ***/
   3377 #define IDirect3DRMTexture2_InitFromImage(p,a)               (p)->lpVtbl->InitFromImage(p,a)
   3378 #define IDirect3DRMTexture2_InitFromResource2(p,a,b,c)       (p)->lpVtbl->InitFromResource2(p,a,b,c)
   3379 #define IDirect3DRMTexture2_GenerateMIPMap(p,a)              (p)->lpVtbl->GenerateMIPMap(p,a)
   3380 #else
   3381 /*** IUnknown methods ***/
   3382 #define IDirect3DRMTexture2_QueryInterface(p,a,b)            (p)->QueryInterface(a,b)
   3383 #define IDirect3DRMTexture2_AddRef(p)                        (p)->AddRef()
   3384 #define IDirect3DRMTexture2_Release(p)                       (p)->Release()
   3385 /*** IDirect3DRMObject methods ***/
   3386 #define IDirect3DRMTexture2_Clone(p,a,b,c)                   (p)->Clone(a,b,c)
   3387 #define IDirect3DRMTexture2_AddDestroyCallback(p,a,b)        (p)->AddDestroyCallback(a,b)
   3388 #define IDirect3DRMTexture2_DeleteDestroyCallback(p,a,b)     (p)->DeleteDestroyCallback(a,b)
   3389 #define IDirect3DRMTexture2_SetAppData(p,a)                  (p)->SetAppData(a)
   3390 #define IDirect3DRMTexture2_GetAppData(p)                    (p)->GetAppData()
   3391 #define IDirect3DRMTexture2_SetName(p,a)                     (p)->SetName(a)
   3392 #define IDirect3DRMTexture2_GetName(p,a,b)                   (p)->GetName(a,b)
   3393 #define IDirect3DRMTexture2_GetClassName(p,a,b)              (p)->GetClassName(a,b)
   3394 /*** IDirect3DRMTexture methods ***/
   3395 #define IDirect3DRMTexture2_InitFromFile(p,a)                (p)->InitFromFile(a)
   3396 #define IDirect3DRMTexture2_InitFromSurface(p,a)             (p)->InitFromSurface(a)
   3397 #define IDirect3DRMTexture2_InitFromResource(p,a)            (p)->InitFromResource(a)
   3398 #define IDirect3DRMTexture2_Changed(p,a,b)                   (p)->Changed(a,b)
   3399 #define IDirect3DRMTexture2_SetColors(p,a)                   (p)->SetColors(a)
   3400 #define IDirect3DRMTexture2_SetShades(p,a)                   (p)->SetShades(a)
   3401 #define IDirect3DRMTexture2_SetDecalSize(p,a,b)              (p)->SetDecalSize(a,b)
   3402 #define IDirect3DRMTexture2_SetDecalOrigin(p,a,b)            (p)->SetDecalOrigin(a,b)
   3403 #define IDirect3DRMTexture2_SetDecalScale(p,a)               (p)->SetDecalScale(a)
   3404 #define IDirect3DRMTexture2_SetDecalTransparency(p,a)        (p)->SetDecalTransparency(a)
   3405 #define IDirect3DRMTexture2_SetDecalTransparencyColor(p,a)   (p)->SetDecalTransparentColor(a)
   3406 #define IDirect3DRMTexture2_GetDecalSize(p,a,b)              (p)->GetDecalSize(a,b)
   3407 #define IDirect3DRMTexture2_GetDecalOrigin(p,a,b)            (p)->GetDecalOrigin(a,b)
   3408 #define IDirect3DRMTexture2_GetImage(p)                      (p)->GetImage()
   3409 #define IDirect3DRMTexture2_GetShades(p)                     (p)->GetShades()
   3410 #define IDirect3DRMTexture2_GetColors(p)                     (p)->GetColors()
   3411 #define IDirect3DRMTexture2_GetDecalScale(p)                 (p)->GetDecalScale()
   3412 #define IDirect3DRMTexture2_GetDecalTransparency(p)          (p)->GetDecalTransparency()
   3413 #define IDirect3DRMTexture2_GetDecalTransparencyColor(p)     (p)->GetDecalTransparencyColor()
   3414 /*** IDirect3DRMTexture2 methods ***/
   3415 #define IDirect3DRMTexture2_InitFromImage(p,a)               (p)->InitFromImage(a)
   3416 #define IDirect3DRMTexture2_InitFromResource2(p,a,b,c)       (p)->InitFromResource2(a,b,c)
   3417 #define IDirect3DRMTexture2_GenerateMIPMap(p,a)              (p)->GenerateMIPMap(a)
   3418 #endif
   3419 
   3420 /*****************************************************************************
   3421  * IDirect3DRMTexture3 interface
   3422  */
   3423 #define INTERFACE IDirect3DRMTexture3
   3424 DECLARE_INTERFACE_(IDirect3DRMTexture3, IDirect3DRMVisual)
   3425 {
   3426     /*** IUnknown methods ***/
   3427     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
   3428     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
   3429     STDMETHOD_(ULONG,Release)(THIS) PURE;
   3430     /*** IDirect3DRMObject methods ***/
   3431     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
   3432     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
   3433     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
   3434     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
   3435     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
   3436     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
   3437     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
   3438     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
   3439     /*** IDirect3DRMTexture3 methods ***/
   3440     STDMETHOD(InitFromFile)(THIS_ const char *filename) PURE;
   3441     STDMETHOD(InitFromSurface)(THIS_ IDirectDrawSurface *surface) PURE;
   3442     STDMETHOD(InitFromResource)(THIS_ HRSRC) PURE;
   3443     STDMETHOD(Changed)(THIS_ DWORD dwFlags, DWORD dwcRects, LPRECT pRects) PURE;
   3444     STDMETHOD(SetColors)(THIS_ DWORD) PURE;
   3445     STDMETHOD(SetShades)(THIS_ DWORD) PURE;
   3446     STDMETHOD(SetDecalSize)(THIS_ D3DVALUE width, D3DVALUE height) PURE;
   3447     STDMETHOD(SetDecalOrigin)(THIS_ LONG x, LONG y) PURE;
   3448     STDMETHOD(SetDecalScale)(THIS_ DWORD) PURE;
   3449     STDMETHOD(SetDecalTransparency)(THIS_ WINBOOL) PURE;
   3450     STDMETHOD(SetDecalTransparentColor)(THIS_ D3DCOLOR) PURE;
   3451     STDMETHOD(GetDecalSize)(THIS_ D3DVALUE *width_return, D3DVALUE *height_return) PURE;
   3452     STDMETHOD(GetDecalOrigin)(THIS_ LONG *x_return, LONG *y_return) PURE;
   3453     STDMETHOD_(D3DRMIMAGE *, GetImage)(THIS) PURE;
   3454     STDMETHOD_(DWORD, GetShades)(THIS) PURE;
   3455     STDMETHOD_(DWORD, GetColors)(THIS) PURE;
   3456     STDMETHOD_(DWORD, GetDecalScale)(THIS) PURE;
   3457     STDMETHOD_(WINBOOL, GetDecalTransparency)(THIS) PURE;
   3458     STDMETHOD_(D3DCOLOR, GetDecalTransparentColor)(THIS) PURE;
   3459     STDMETHOD(InitFromImage)(THIS_ D3DRMIMAGE *image) PURE;
   3460     STDMETHOD(InitFromResource2)(THIS_ HMODULE hModule, LPCSTR /* LPCTSTR */ strName, LPCSTR /* LPCTSTR */ strType) PURE;
   3461     STDMETHOD(GenerateMIPMap)(THIS_ DWORD) PURE;
   3462     STDMETHOD(GetSurface)(THIS_ DWORD flags, IDirectDrawSurface **surface) PURE;
   3463     STDMETHOD(SetCacheOptions)(THIS_ LONG lImportance, DWORD dwFlags) PURE;
   3464     STDMETHOD(GetCacheOptions)(THIS_ LPLONG lplImportance, LPDWORD lpdwFlags) PURE;
   3465     STDMETHOD(SetDownsampleCallback)(THIS_ D3DRMDOWNSAMPLECALLBACK pCallback, LPVOID pArg) PURE;
   3466     STDMETHOD(SetValidationCallback)(THIS_ D3DRMVALIDATIONCALLBACK pCallback, LPVOID pArg) PURE;
   3467 };
   3468 #undef INTERFACE
   3469 
   3470 #if !defined(__cplusplus) || defined(CINTERFACE)
   3471 /*** IUnknown methods ***/
   3472 #define IDirect3DRMTexture3_QueryInterface(p,a,b)            (p)->lpVtbl->QueryInterface(p,a,b)
   3473 #define IDirect3DRMTexture3_AddRef(p)                        (p)->lpVtbl->AddRef(p)
   3474 #define IDirect3DRMTexture3_Release(p)                       (p)->lpVtbl->Release(p)
   3475 /*** IDirect3DRMObject methods ***/
   3476 #define IDirect3DRMTexture3_Clone(p,a,b,c)                   (p)->lpVtbl->Clone(p,a,b,c)
   3477 #define IDirect3DRMTexture3_AddDestroyCallback(p,a,b)        (p)->lpVtbl->AddDestroyCallback(p,a,b)
   3478 #define IDirect3DRMTexture3_DeleteDestroyCallback(p,a,b)     (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
   3479 #define IDirect3DRMTexture3_SetAppData(p,a)                  (p)->lpVtbl->SetAppData(p,a)
   3480 #define IDirect3DRMTexture3_GetAppData(p)                    (p)->lpVtbl->GetAppData(p)
   3481 #define IDirect3DRMTexture3_SetName(p,a)                     (p)->lpVtbl->SetName(p,a)
   3482 #define IDirect3DRMTexture3_GetName(p,a,b)                   (p)->lpVtbl->GetName(p,a,b)
   3483 #define IDirect3DRMTexture3_GetClassName(p,a,b)              (p)->lpVtbl->GetClassName(p,a,b)
   3484 /*** IDirect3DRMTexture3 methods ***/
   3485 #define IDirect3DRMTexture3_InitFromFile(p,a)                (p)->lpVtbl->InitFromFile(p,a)
   3486 #define IDirect3DRMTexture3_InitFromSurface(p,a)             (p)->lpVtbl->InitFromSurface(p,a)
   3487 #define IDirect3DRMTexture3_InitFromResource(p,a)            (p)->lpVtbl->InitFromResource(p,a)
   3488 #define IDirect3DRMTexture3_Changed(p,a,b,c)                 (p)->lpVtbl->Changed(p,a,b,c)
   3489 #define IDirect3DRMTexture3_SetColors(p,a)                   (p)->lpVtbl->SetColors(p,a)
   3490 #define IDirect3DRMTexture3_SetShades(p,a)                   (p)->lpVtbl->SetShades(p,a)
   3491 #define IDirect3DRMTexture3_SetDecalSize(p,a,b)              (p)->lpVtbl->SetDecalSize(p,a,b)
   3492 #define IDirect3DRMTexture3_SetDecalOrigin(p,a,b)            (p)->lpVtbl->SetDecalOrigin(p,a,b)
   3493 #define IDirect3DRMTexture3_SetDecalScale(p,a)               (p)->lpVtbl->SetDecalScale(p,a)
   3494 #define IDirect3DRMTexture3_SetDecalTransparency(p,a)        (p)->lpVtbl->SetDecalTransparency(p,a)
   3495 #define IDirect3DRMTexture3_SetDecalTransparencyColor(p,a)   (p)->lpVtbl->SetDecalTransparentColor(p,a)
   3496 #define IDirect3DRMTexture3_GetDecalSize(p,a,b)              (p)->lpVtbl->GetDecalSize(p,a,b)
   3497 #define IDirect3DRMTexture3_GetDecalOrigin(p,a,b)            (p)->lpVtbl->GetDecalOrigin(p,a,b)
   3498 #define IDirect3DRMTexture3_GetImage(p)                      (p)->lpVtbl->GetImage(p)
   3499 #define IDirect3DRMTexture3_GetShades(p)                     (p)->lpVtbl->GetShades(p)
   3500 #define IDirect3DRMTexture3_GetColors(p)                     (p)->lpVtbl->GetColors(p)
   3501 #define IDirect3DRMTexture3_GetDecalScale(p)                 (p)->lpVtbl->GetDecalScale(p)
   3502 #define IDirect3DRMTexture3_GetDecalTransparency(p)          (p)->lpVtbl->GetDecalTransparency(p)
   3503 #define IDirect3DRMTexture3_GetDecalTransparencyColor(p)     (p)->lpVtbl->GetDecalTransparencyColor(p)
   3504 #define IDirect3DRMTexture3_InitFromImage(p,a)               (p)->lpVtbl->InitFromImage(p,a)
   3505 #define IDirect3DRMTexture3_InitFromResource2(p,a,b,c)       (p)->lpVtbl->InitFromResource2(p,a,b,c)
   3506 #define IDirect3DRMTexture3_GenerateMIPMap(p,a)              (p)->lpVtbl->GenerateMIPMap(p,a)
   3507 #define IDirect3DRMTexture3_GetSurface(p,a,b)                (p)->lpVtbl->GetSurface(p,a,b)
   3508 #define IDirect3DRMTexture3_SetCacheOptions(p,a,b)           (p)->lpVtbl->SetCacheOptions(p,a,b)
   3509 #define IDirect3DRMTexture3_GetCacheOptions(p,a,b)           (p)->lpVtbl->GetCacheOptions(p,a,b)
   3510 #define IDirect3DRMTexture3_SetDownsampleCallback(p,a,b)     (p)->lpVtbl->SetDownsampleCallback(p,a,b)
   3511 #define IDirect3DRMTexture3_SetValidationCallback(p,a,b)     (p)->lpVtbl->SetValidationCallback(p,a,b)
   3512 #else
   3513 /*** IUnknown methods ***/
   3514 #define IDirect3DRMTexture3_QueryInterface(p,a,b)            (p)->QueryInterface(a,b)
   3515 #define IDirect3DRMTexture3_AddRef(p)                        (p)->AddRef()
   3516 #define IDirect3DRMTexture3_Release(p)                       (p)->Release()
   3517 /*** IDirect3DRMObject methods ***/
   3518 #define IDirect3DRMTexture3_Clone(p,a,b,c)                   (p)->Clone(a,b,c)
   3519 #define IDirect3DRMTexture3_AddDestroyCallback(p,a,b)        (p)->AddDestroyCallback(a,b)
   3520 #define IDirect3DRMTexture3_DeleteDestroyCallback(p,a,b)     (p)->DeleteDestroyCallback(a,b)
   3521 #define IDirect3DRMTexture3_SetAppData(p,a)                  (p)->SetAppData(a)
   3522 #define IDirect3DRMTexture3_GetAppData(p)                    (p)->GetAppData()
   3523 #define IDirect3DRMTexture3_SetName(p,a)                     (p)->SetName(a)
   3524 #define IDirect3DRMTexture3_GetName(p,a,b)                   (p)->GetName(a,b)
   3525 #define IDirect3DRMTexture3_GetClassName(p,a,b)              (p)->GetClassName(a,b)
   3526 /*** IDirect3DRMTexture3 methods ***/
   3527 #define IDirect3DRMTexture3_InitFromFile(p,a)                (p)->InitFromFile(a)
   3528 #define IDirect3DRMTexture3_InitFromSurface(p,a)             (p)->InitFromSurface(a)
   3529 #define IDirect3DRMTexture3_InitFromResource(p,a)            (p)->InitFromResource(a)
   3530 #define IDirect3DRMTexture3_Changed(p,a,b,c)                 (p)->Changed(a,b,c)
   3531 #define IDirect3DRMTexture3_SetColors(p,a)                   (p)->SetColors(a)
   3532 #define IDirect3DRMTexture3_SetShades(p,a)                   (p)->SetShades(a)
   3533 #define IDirect3DRMTexture3_SetDecalSize(p,a,b)              (p)->SetDecalSize(a,b)
   3534 #define IDirect3DRMTexture3_SetDecalOrigin(p,a,b)            (p)->SetDecalOrigin(a,b)
   3535 #define IDirect3DRMTexture3_SetDecalScale(p,a)               (p)->SetDecalScale(a)
   3536 #define IDirect3DRMTexture3_SetDecalTransparency(p,a)        (p)->SetDecalTransparency(a)
   3537 #define IDirect3DRMTexture3_SetDecalTransparencyColor(p,a)   (p)->SetDecalTransparentColor(a)
   3538 #define IDirect3DRMTexture3_GetDecalSize(p,a,b)              (p)->GetDecalSize(a,b)
   3539 #define IDirect3DRMTexture3_GetDecalOrigin(p,a,b)            (p)->GetDecalOrigin(a,b)
   3540 #define IDirect3DRMTexture3_GetImage(p)                      (p)->GetImage()
   3541 #define IDirect3DRMTexture3_GetShades(p)                     (p)->GetShades()
   3542 #define IDirect3DRMTexture3_GetColors(p)                     (p)->GetColors()
   3543 #define IDirect3DRMTexture3_GetDecalScale(p)                 (p)->GetDecalScale()
   3544 #define IDirect3DRMTexture3_GetDecalTransparency(p)          (p)->GetDecalTransparency()
   3545 #define IDirect3DRMTexture3_GetDecalTransparencyColor(p)     (p)->GetDecalTransparencyColor()
   3546 #define IDirect3DRMTexture3_InitFromImage(p,a)               (p)->InitFromImage(a)
   3547 #define IDirect3DRMTexture3_InitFromResource2(p,a,b,c)       (p)->InitFromResource2(a,b,c)
   3548 #define IDirect3DRMTexture3_GenerateMIPMap(p,a)              (p)->GenerateMIPMap(a)
   3549 #define IDirect3DRMTexture3_GetSurface(p,a,b)                (p)->GetSurface(a,b)
   3550 #define IDirect3DRMTexture3_SetCacheOptions(p,a,b)           (p)->SetCacheOptions(a,b)
   3551 #define IDirect3DRMTexture3_GetCacheOptions(p,a,b)           (p)->GetCacheOptions(a,b)
   3552 #define IDirect3DRMTexture3_SetDownsampleCallback(p,a,b)     (p)->SetDownsampleCallback(a,b)
   3553 #define IDirect3DRMTexture3_SetValidationCallback(p,a,b)     (p)->SetValidationCallback(a,b)
   3554 #endif
   3555 
   3556 /*****************************************************************************
   3557  * IDirect3DRMWrap interface
   3558  */
   3559 #define INTERFACE IDirect3DRMWrap
   3560 DECLARE_INTERFACE_(IDirect3DRMWrap, IDirect3DRMObject)
   3561 {
   3562     /*** IUnknown methods ***/
   3563     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
   3564     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
   3565     STDMETHOD_(ULONG,Release)(THIS) PURE;
   3566     /*** IDirect3DRMObject methods ***/
   3567     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
   3568     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
   3569     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
   3570     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
   3571     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
   3572     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
   3573     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
   3574     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
   3575     /*** IDirect3DRMWrap methods ***/
   3576     STDMETHOD(Init)(THIS_ D3DRMWRAPTYPE type, IDirect3DRMFrame *reference, D3DVALUE ox, D3DVALUE oy, D3DVALUE oz,
   3577             D3DVALUE dx, D3DVALUE dy, D3DVALUE dz, D3DVALUE ux, D3DVALUE uy, D3DVALUE uz,
   3578             D3DVALUE ou, D3DVALUE ov, D3DVALUE su, D3DVALUE sv) PURE;
   3579     STDMETHOD(Apply)(THIS_ IDirect3DRMObject *object) PURE;
   3580     STDMETHOD(ApplyRelative)(THIS_ IDirect3DRMFrame *frame, IDirect3DRMObject *object) PURE;
   3581 };
   3582 #undef INTERFACE
   3583 
   3584 #if !defined(__cplusplus) || defined(CINTERFACE)
   3585 /*** IUnknown methods ***/
   3586 #define IDirect3DRMWrap_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
   3587 #define IDirect3DRMWrap_AddRef(p)                               (p)->lpVtbl->AddRef(p)
   3588 #define IDirect3DRMWrap_Release(p)                              (p)->lpVtbl->Release(p)
   3589 /*** IDirect3DRMObject methods ***/
   3590 #define IDirect3DRMWrap_Clone(p,a,b,c)                          (p)->lpVtbl->Clone(p,a,b,c)
   3591 #define IDirect3DRMWrap_AddDestroyCallback(p,a,b)               (p)->lpVtbl->AddDestroyCallback(p,a,b)
   3592 #define IDirect3DRMWrap_DeleteDestroyCallback(p,a,b)            (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
   3593 #define IDirect3DRMWrap_SetAppData(p,a)                         (p)->lpVtbl->SetAppData(p,a)
   3594 #define IDirect3DRMWrap_GetAppData(p)                           (p)->lpVtbl->GetAppData(p)
   3595 #define IDirect3DRMWrap_SetName(p,a)                            (p)->lpVtbl->SetName(p,a)
   3596 #define IDirect3DRMWrap_GetName(p,a,b)                          (p)->lpVtbl->GetName(p,a,b)
   3597 #define IDirect3DRMWrap_GetClassName(p,a,b)                     (p)->lpVtbl->GetClassName(p,a,b)
   3598 /*** IDirect3DRMWrap methods ***/
   3599 #define IDirect3DRMWrap_Init(p,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o)   (p)->lpVtbl->Init(p,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o)
   3600 #define IDirect3DRMWrap_Apply(p,a)                              (p)->lpVtbl->Apply(p,a)
   3601 #define IDirect3DRMWrap_ApplyRelative(p,a,b)                    (p)->lpVtbl->ApplyRelative(p,a,b)
   3602 #else
   3603 /*** IUnknown methods ***/
   3604 #define IDirect3DRMWrap_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
   3605 #define IDirect3DRMWrap_AddRef(p)                               (p)->AddRef()
   3606 #define IDirect3DRMWrap_Release(p)                              (p)->Release()
   3607 /*** IDirect3DRMObject methods ***/
   3608 #define IDirect3DRMWrap_Clone(p,a,b,c)                          (p)->Clone(a,b,c)
   3609 #define IDirect3DRMWrap_AddDestroyCallback(p,a,b)               (p)->AddDestroyCallback(a,b)
   3610 #define IDirect3DRMWrap_DeleteDestroyCallback(p,a,b)            (p)->DeleteDestroyCallback(a,b)
   3611 #define IDirect3DRMWrap_SetAppData(p,a)                         (p)->SetAppData(a)
   3612 #define IDirect3DRMWrap_GetAppData(p)                           (p)->GetAppData()
   3613 #define IDirect3DRMWrap_SetName(p,a)                            (p)->SetName(a)
   3614 #define IDirect3DRMWrap_GetName(p,a,b)                          (p)->GetName(a,b)
   3615 #define IDirect3DRMWrap_GetClassName(p,a,b)                     (p)->GetClassName(a,b)
   3616 /*** IDirect3DRMWrap methods ***/
   3617 #define IDirect3DRMWrap_Init(p,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o)   (p)->Init(p,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o)
   3618 #define IDirect3DRMWrap_Apply(p,a)                              (p)->Apply(p,a)
   3619 #define IDirect3DRMWrap_ApplyRelative(p,a,b)                    (p)->ApplyRelative(p,a,b)
   3620 #endif
   3621 
   3622 /*****************************************************************************
   3623  * IDirect3DRMMaterial interface
   3624  */
   3625 #define INTERFACE IDirect3DRMMaterial
   3626 DECLARE_INTERFACE_(IDirect3DRMMaterial, IDirect3DRMObject)
   3627 {
   3628     /*** IUnknown methods ***/
   3629     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
   3630     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
   3631     STDMETHOD_(ULONG,Release)(THIS) PURE;
   3632     /*** IDirect3DRMObject methods ***/
   3633     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
   3634     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
   3635     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
   3636     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
   3637     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
   3638     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
   3639     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
   3640     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
   3641     /*** IDirect3DRMMaterial methods ***/
   3642     STDMETHOD(SetPower)(THIS_ D3DVALUE power) PURE;
   3643     STDMETHOD(SetSpecular)(THIS_ D3DVALUE r, D3DVALUE g, D3DVALUE b) PURE;
   3644     STDMETHOD(SetEmissive)(THIS_ D3DVALUE r, D3DVALUE g, D3DVALUE b) PURE;
   3645     STDMETHOD_(D3DVALUE, GetPower)(THIS) PURE;
   3646     STDMETHOD(GetSpecular)(THIS_ D3DVALUE* r, D3DVALUE* g, D3DVALUE* b) PURE;
   3647     STDMETHOD(GetEmissive)(THIS_ D3DVALUE* r, D3DVALUE* g, D3DVALUE* b) PURE;
   3648 };
   3649 #undef INTERFACE
   3650 
   3651 #if !defined(__cplusplus) || defined(CINTERFACE)
   3652 /*** IUnknown methods ***/
   3653 #define IDirect3DRMMaterial_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
   3654 #define IDirect3DRMMaterial_AddRef(p)                               (p)->lpVtbl->AddRef(p)
   3655 #define IDirect3DRMMaterial_Release(p)                              (p)->lpVtbl->Release(p)
   3656 /*** IDirect3DRMObject methods ***/
   3657 #define IDirect3DRMMaterial_Clone(p,a,b,c)                          (p)->lpVtbl->Clone(p,a,b,c)
   3658 #define IDirect3DRMMaterial_AddDestroyCallback(p,a,b)               (p)->lpVtbl->AddDestroyCallback(p,a,b)
   3659 #define IDirect3DRMMaterial_DeleteDestroyCallback(p,a,b)            (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
   3660 #define IDirect3DRMMaterial_SetAppData(p,a)                         (p)->lpVtbl->SetAppData(p,a)
   3661 #define IDirect3DRMMaterial_GetAppData(p)                           (p)->lpVtbl->GetAppData(p)
   3662 #define IDirect3DRMMaterial_SetName(p,a)                            (p)->lpVtbl->SetName(p,a)
   3663 #define IDirect3DRMMaterial_GetName(p,a,b)                          (p)->lpVtbl->GetName(p,a,b)
   3664 #define IDirect3DRMMaterial_GetClassName(p,a,b)                     (p)->lpVtbl->GetClassName(p,a,b)
   3665 /*** IDirect3DRMMaterial methods ***/
   3666 #define IDirect3DRMMaterial_SetPower(p,a)                           (p)->lpVtbl->SetPower(p,a)
   3667 #define IDirect3DRMMaterial_SetSpecular(p,a,b,c)                    (p)->lpVtbl->SetSpecular(p,a,b,c)
   3668 #define IDirect3DRMMaterial_SetEmissive(p,a,b,c)                    (p)->lpVtbl->SetEmissive(p,a,b,c)
   3669 #define IDirect3DRMMaterial_GetPower(p)                             (p)->lpVtbl->GetPower(p)
   3670 #define IDirect3DRMMaterial_GetSpecular(p,a,b,c)                    (p)->lpVtbl->GetSpecular(p,a,b,c)
   3671 #define IDirect3DRMMaterial_GetEmissive(p,a,b,c)                    (p)->lpVtbl->GetEmissive(p,a,b,c)
   3672 #else
   3673 /*** IUnknown methods ***/
   3674 #define IDirect3DRMMaterial_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
   3675 #define IDirect3DRMMaterial_AddRef(p)                               (p)->AddRef()
   3676 #define IDirect3DRMMaterial_Release(p)                              (p)->Release()
   3677 /*** IDirect3DRMObject methods ***/
   3678 #define IDirect3DRMMaterial_Clone(p,a,b,c)                          (p)->Clone(a,b,c)
   3679 #define IDirect3DRMMaterial_AddDestroyCallback(p,a,b)               (p)->AddDestroyCallback(a,b)
   3680 #define IDirect3DRMMaterial_DeleteDestroyCallback(p,a,b)            (p)->DeleteDestroyCallback(a,b)
   3681 #define IDirect3DRMMaterial_SetAppData(p,a)                         (p)->SetAppData(a)
   3682 #define IDirect3DRMMaterial_GetAppData(p)                           (p)->GetAppData()
   3683 #define IDirect3DRMMaterial_SetName(p,a)                            (p)->SetName(a)
   3684 #define IDirect3DRMMaterial_GetName(p,a,b)                          (p)->GetName(a,b)
   3685 #define IDirect3DRMMaterial_GetClassName(p,a,b)                     (p)->GetClassName(a,b)
   3686 /*** IDirect3DRMMaterial methods ***/
   3687 #define IDirect3DRMMaterial_SetPower(p,a)                           (p)->SetPower(a)
   3688 #define IDirect3DRMMaterial_SetSpecular(p,a,b,c)                    (p)->SetSpecular(a,b,c)
   3689 #define IDirect3DRMMaterial_SetEmissive(p,a,b,c)                    (p)->SetEmissive(a,b,c)
   3690 #define IDirect3DRMMaterial_GetPower(p)                             (p)->GetPower()
   3691 #define IDirect3DRMMaterial_GetSpecular(p,a,b,c)                    (p)->GetSpecular(a,b,c)
   3692 #define IDirect3DRMMaterial_GetEmissive(p,a,b,c)                    (p)->GetEmissive(a,b,c)
   3693 #endif
   3694 
   3695 /*****************************************************************************
   3696  * IDirect3DRMMaterial2 interface
   3697  */
   3698 #define INTERFACE IDirect3DRMMaterial2
   3699 DECLARE_INTERFACE_(IDirect3DRMMaterial2, IDirect3DRMObject)
   3700 {
   3701     /*** IUnknown methods ***/
   3702     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
   3703     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
   3704     STDMETHOD_(ULONG,Release)(THIS) PURE;
   3705     /*** IDirect3DRMObject methods ***/
   3706     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
   3707     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
   3708     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
   3709     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
   3710     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
   3711     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
   3712     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
   3713     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
   3714     /*** IDirect3DRMMaterial2 methods ***/
   3715     STDMETHOD(SetPower)(THIS_ D3DVALUE power) PURE;
   3716     STDMETHOD(SetSpecular)(THIS_ D3DVALUE r, D3DVALUE g, D3DVALUE b) PURE;
   3717     STDMETHOD(SetEmissive)(THIS_ D3DVALUE r, D3DVALUE g, D3DVALUE b) PURE;
   3718     STDMETHOD_(D3DVALUE, GetPower)(THIS) PURE;
   3719     STDMETHOD(GetSpecular)(THIS_ D3DVALUE* r, D3DVALUE* g, D3DVALUE* b) PURE;
   3720     STDMETHOD(GetEmissive)(THIS_ D3DVALUE* r, D3DVALUE* g, D3DVALUE* b) PURE;
   3721     STDMETHOD(GetAmbient)(THIS_ D3DVALUE* r, D3DVALUE* g, D3DVALUE* b) PURE;
   3722     STDMETHOD(SetAmbient)(THIS_ D3DVALUE r, D3DVALUE g, D3DVALUE b) PURE;
   3723 };
   3724 #undef INTERFACE
   3725 
   3726 #if !defined(__cplusplus) || defined(CINTERFACE)
   3727 /*** IUnknown methods ***/
   3728 #define IDirect3DRMMaterial2_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
   3729 #define IDirect3DRMMaterial2_AddRef(p)                               (p)->lpVtbl->AddRef(p)
   3730 #define IDirect3DRMMaterial2_Release(p)                              (p)->lpVtbl->Release(p)
   3731 /*** IDirect3DRMObject methods ***/
   3732 #define IDirect3DRMMaterial2_Clone(p,a,b,c)                          (p)->lpVtbl->Clone(p,a,b,c)
   3733 #define IDirect3DRMMaterial2_AddDestroyCallback(p,a,b)               (p)->lpVtbl->AddDestroyCallback(p,a,b)
   3734 #define IDirect3DRMMaterial2_DeleteDestroyCallback(p,a,b)            (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
   3735 #define IDirect3DRMMaterial2_SetAppData(p,a)                         (p)->lpVtbl->SetAppData(p,a)
   3736 #define IDirect3DRMMaterial2_GetAppData(p)                           (p)->lpVtbl->GetAppData(p)
   3737 #define IDirect3DRMMaterial2_SetName(p,a)                            (p)->lpVtbl->SetName(p,a)
   3738 #define IDirect3DRMMaterial2_GetName(p,a,b)                          (p)->lpVtbl->GetName(p,a,b)
   3739 #define IDirect3DRMMaterial2_GetClassName(p,a,b)                     (p)->lpVtbl->GetClassName(p,a,b)
   3740 /*** IDirect3DRMMaterial2 methods ***/
   3741 #define IDirect3DRMMaterial2_SetPower(p,a)                           (p)->lpVtbl->SetPower(p,a)
   3742 #define IDirect3DRMMaterial2_SetSpecular(p,a,b,c)                    (p)->lpVtbl->SetSpecular(p,a,b,c)
   3743 #define IDirect3DRMMaterial2_SetEmissive(p,a,b,c)                    (p)->lpVtbl->SetEmissive(p,a,b,c)
   3744 #define IDirect3DRMMaterial2_GetPower(p)                             (p)->lpVtbl->GetPower(p)
   3745 #define IDirect3DRMMaterial2_GetSpecular(p,a,b,c)                    (p)->lpVtbl->GetSpecular(p,a,b,c)
   3746 #define IDirect3DRMMaterial2_GetEmissive(p,a,b,c)                    (p)->lpVtbl->GetEmissive(p,a,b,c)
   3747 #define IDirect3DRMMaterial2_SetAmbient(p,a,b,c)                     (p)->lpVtbl->SetAmbient(p,a,b,c)
   3748 #define IDirect3DRMMaterial2_GetAmbient(p,a,b,c)                     (p)->lpVtbl->GetAmbient(p,a,b,c)
   3749 #else
   3750 /*** IUnknown methods ***/
   3751 #define IDirect3DRMMaterial2_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
   3752 #define IDirect3DRMMaterial2_AddRef(p)                               (p)->AddRef()
   3753 #define IDirect3DRMMaterial2_Release(p)                              (p)->Release()
   3754 /*** IDirect3DRMObject methods ***/
   3755 #define IDirect3DRMMaterial2_Clone(p,a,b,c)                          (p)->Clone(a,b,c)
   3756 #define IDirect3DRMMaterial2_AddDestroyCallback(p,a,b)               (p)->AddDestroyCallback(a,b)
   3757 #define IDirect3DRMMaterial2_DeleteDestroyCallback(p,a,b)            (p)->DeleteDestroyCallback(a,b)
   3758 #define IDirect3DRMMaterial2_SetAppData(p,a)                         (p)->SetAppData(a)
   3759 #define IDirect3DRMMaterial2_GetAppData(p)                           (p)->GetAppData()
   3760 #define IDirect3DRMMaterial2_SetName(p,a)                            (p)->SetName(a)
   3761 #define IDirect3DRMMaterial2_GetName(p,a,b)                          (p)->GetName(a,b)
   3762 #define IDirect3DRMMaterial2_GetClassName(p,a,b)                     (p)->GetClassName(a,b)
   3763 /*** IDirect3DRMMaterial2 methods ***/
   3764 #define IDirect3DRMMaterial2_SetPower(p,a)                           (p)->SetPower(a)
   3765 #define IDirect3DRMMaterial2_SetSpecular(p,a,b,c)                    (p)->SetSpecular(a,b,c)
   3766 #define IDirect3DRMMaterial2_SetEmissive(p,a,b,c)                    (p)->SetEmissive(a,b,c)
   3767 #define IDirect3DRMMaterial2_GetPower(p)                             (p)->GetPower()
   3768 #define IDirect3DRMMaterial2_GetSpecular(p,a,b,c)                    (p)->GetSpecular(a,b,c)
   3769 #define IDirect3DRMMaterial2_GetEmissive(p,a,b,c)                    (p)->GetEmissive(a,b,c)
   3770 #define IDirect3DRMMaterial2_SetAmbient(p,a,b,c)                     (p)->SetAmbient(a,b,c)
   3771 #define IDirect3DRMMaterial2_GetAmbient(p,a,b,c)                     (p)->GetAmbient(a,b,c)
   3772 #endif
   3773 
   3774 /*****************************************************************************
   3775  * IDirect3DRMAnimation interface
   3776  */
   3777 #define INTERFACE IDirect3DRMAnimation
   3778 DECLARE_INTERFACE_(IDirect3DRMAnimation, IDirect3DRMObject)
   3779 {
   3780     /*** IUnknown methods ***/
   3781     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
   3782     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
   3783     STDMETHOD_(ULONG,Release)(THIS) PURE;
   3784     /*** IDirect3DRMObject methods ***/
   3785     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
   3786     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
   3787     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
   3788     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
   3789     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
   3790     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
   3791     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
   3792     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
   3793     /*** IDirect3DRMAnimation methods ***/
   3794     STDMETHOD(SetOptions)(THIS_ D3DRMANIMATIONOPTIONS flags) PURE;
   3795     STDMETHOD(AddRotateKey)(THIS_ D3DVALUE time, D3DRMQUATERNION *q) PURE;
   3796     STDMETHOD(AddPositionKey)(THIS_ D3DVALUE time, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
   3797     STDMETHOD(AddScaleKey)(THIS_ D3DVALUE time, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
   3798     STDMETHOD(DeleteKey)(THIS_ D3DVALUE time) PURE;
   3799     STDMETHOD(SetFrame)(THIS_ IDirect3DRMFrame *frame) PURE;
   3800     STDMETHOD(SetTime)(THIS_ D3DVALUE time) PURE;
   3801     STDMETHOD_(D3DRMANIMATIONOPTIONS, GetOptions)(THIS) PURE;
   3802 };
   3803 #undef INTERFACE
   3804 
   3805 #if !defined(__cplusplus) || defined(CINTERFACE)
   3806 /*** IUnknown methods ***/
   3807 #define IDirect3DRMAnimation_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
   3808 #define IDirect3DRMAnimation_AddRef(p)                               (p)->lpVtbl->AddRef(p)
   3809 #define IDirect3DRMAnimation_Release(p)                              (p)->lpVtbl->Release(p)
   3810 /*** IDirect3DRMObject methods ***/
   3811 #define IDirect3DRMAnimation_Clone(p,a,b,c)                          (p)->lpVtbl->Clone(p,a,b,c)
   3812 #define IDirect3DRMAnimation_AddDestroyCallback(p,a,b)               (p)->lpVtbl->AddDestroyCallback(p,a,b)
   3813 #define IDirect3DRMAnimation_DeleteDestroyCallback(p,a,b)            (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
   3814 #define IDirect3DRMAnimation_SetAppData(p,a)                         (p)->lpVtbl->SetAppData(p,a)
   3815 #define IDirect3DRMAnimation_GetAppData(p)                           (p)->lpVtbl->GetAppData(p)
   3816 #define IDirect3DRMAnimation_SetName(p,a)                            (p)->lpVtbl->SetName(p,a)
   3817 #define IDirect3DRMAnimation_GetName(p,a,b)                          (p)->lpVtbl->GetName(p,a,b)
   3818 #define IDirect3DRMAnimation_GetClassName(p,a,b)                     (p)->lpVtbl->GetClassName(p,a,b)
   3819 /*** IDirect3DRMAnimation methods ***/
   3820 #define IDirect3DRMAnimation_SetOptions(p,a)                         (p)->lpVtbl->SetOptions(p,a)
   3821 #define IDirect3DRMAnimation_AddRotateKey(p,a,b)                     (p)->lpVtbl->AddRotateKey(p,a,b)
   3822 #define IDirect3DRMAnimation_AddPositionKey(p,a,b,c,d)               (p)->lpVtbl->AddPositionKey(p,a,b,c,d)
   3823 #define IDirect3DRMAnimation_AddScaleKey(p,a,b,c,d)                  (p)->lpVtbl->AddScaleKey(p,a,b,c,d)
   3824 #define IDirect3DRMAnimation_DeleteKey(p,a)                          (p)->lpVtbl->DeleteKey(p,a)
   3825 #define IDirect3DRMAnimation_SetFrame(p,a)                           (p)->lpVtbl->SetFrame(p,a)
   3826 #define IDirect3DRMAnimation_SetTime(p,a)                            (p)->lpVtbl->SetTime(p,a)
   3827 #define IDirect3DRMAnimation_GetOptions(p)                           (p)->lpVtbl->GetOptions(p)
   3828 #else
   3829 /*** IUnknown methods ***/
   3830 #define IDirect3DRMAnimation_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
   3831 #define IDirect3DRMAnimation_AddRef(p)                               (p)->AddRef()
   3832 #define IDirect3DRMAnimation_Release(p)                              (p)->Release()
   3833 /*** IDirect3DRMObject methods ***/
   3834 #define IDirect3DRMAnimation_Clone(p,a,b,c)                          (p)->Clone(a,b,c)
   3835 #define IDirect3DRMAnimation_AddDestroyCallback(p,a,b)               (p)->AddDestroyCallback(a,b)
   3836 #define IDirect3DRMAnimation_DeleteDestroyCallback(p,a,b)            (p)->DeleteDestroyCallback(a,b)
   3837 #define IDirect3DRMAnimation_SetAppData(p,a)                         (p)->SetAppData(a)
   3838 #define IDirect3DRMAnimation_GetAppData(p)                           (p)->GetAppData()
   3839 #define IDirect3DRMAnimation_SetName(p,a)                            (p)->SetName(a)
   3840 #define IDirect3DRMAnimation_GetName(p,a,b)                          (p)->GetName(a,b)
   3841 #define IDirect3DRMAnimation_GetClassName(p,a,b)                     (p)->GetClassName(a,b)
   3842 /*** IDirect3DRMAnimation methods ***/
   3843 #define IDirect3DRMAnimation_SetOptions(p,a)                         (p)->SetOptions(a)
   3844 #define IDirect3DRMAnimation_AddRotateKey(p,a,b)                     (p)->AddRotateKey(a,b)
   3845 #define IDirect3DRMAnimation_AddPositionKey(p,a,b,c,d)               (p)->AddPositionKey(a,b,c,d)
   3846 #define IDirect3DRMAnimation_AddScaleKey(p,a,b,c,d)                  (p)->AddScaleKey(a,b,c,d)
   3847 #define IDirect3DRMAnimation_DeleteKey(p,a)                          (p)->DeleteKey(a)
   3848 #define IDirect3DRMAnimation_SetFrame(p,a)                           (p)->SetFrame(a)
   3849 #define IDirect3DRMAnimation_SetTime(p,a)                            (p)->SetTime(a)
   3850 #define IDirect3DRMAnimation_GetOptions(p)                           (p)->GetOptions()
   3851 #endif
   3852 
   3853 /*****************************************************************************
   3854  * IDirect3DRMAnimation2 interface
   3855  */
   3856 #define INTERFACE IDirect3DRMAnimation2
   3857 DECLARE_INTERFACE_(IDirect3DRMAnimation2, IDirect3DRMObject)
   3858 {
   3859     /*** IUnknown methods ***/
   3860     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
   3861     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
   3862     STDMETHOD_(ULONG,Release)(THIS) PURE;
   3863     /*** IDirect3DRMObject methods ***/
   3864     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
   3865     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
   3866     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
   3867     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
   3868     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
   3869     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
   3870     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
   3871     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
   3872     /*** IDirect3DRMAnimation2 methods ***/
   3873     STDMETHOD(SetOptions)(THIS_ D3DRMANIMATIONOPTIONS flags) PURE;
   3874     STDMETHOD(AddRotateKey)(THIS_ D3DVALUE time, D3DRMQUATERNION *q) PURE;
   3875     STDMETHOD(AddPositionKey)(THIS_ D3DVALUE time, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
   3876     STDMETHOD(AddScaleKey)(THIS_ D3DVALUE time, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE;
   3877     STDMETHOD(DeleteKey)(THIS_ D3DVALUE time) PURE;
   3878     STDMETHOD(SetFrame)(THIS_ IDirect3DRMFrame3 *frame) PURE;
   3879     STDMETHOD(SetTime)(THIS_ D3DVALUE time) PURE;
   3880     STDMETHOD_(D3DRMANIMATIONOPTIONS, GetOptions)(THIS) PURE;
   3881     STDMETHOD(GetFrame)(THIS_ IDirect3DRMFrame3 **frame) PURE;
   3882     STDMETHOD(DeleteKeyByID)(THIS_ DWORD dwID) PURE;
   3883     STDMETHOD(AddKey)(THIS_ D3DRMANIMATIONKEY *key) PURE;
   3884     STDMETHOD(ModifyKey)(THIS_ D3DRMANIMATIONKEY *key) PURE;
   3885     STDMETHOD(GetKeys)(THIS_ D3DVALUE time_min, D3DVALUE time_max, DWORD *key_count, D3DRMANIMATIONKEY *keys);
   3886 };
   3887 #undef INTERFACE
   3888 
   3889 #if !defined(__cplusplus) || defined(CINTERFACE)
   3890 /*** IUnknown methods ***/
   3891 #define IDirect3DRMAnimation2_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
   3892 #define IDirect3DRMAnimation2_AddRef(p)                               (p)->lpVtbl->AddRef(p)
   3893 #define IDirect3DRMAnimation2_Release(p)                              (p)->lpVtbl->Release(p)
   3894 /*** IDirect3DRMObject methods ***/
   3895 #define IDirect3DRMAnimation2_Clone(p,a,b,c)                          (p)->lpVtbl->Clone(p,a,b,c)
   3896 #define IDirect3DRMAnimation2_AddDestroyCallback(p,a,b)               (p)->lpVtbl->AddDestroyCallback(p,a,b)
   3897 #define IDirect3DRMAnimation2_DeleteDestroyCallback(p,a,b)            (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
   3898 #define IDirect3DRMAnimation2_SetAppData(p,a)                         (p)->lpVtbl->SetAppData(p,a)
   3899 #define IDirect3DRMAnimation2_GetAppData(p)                           (p)->lpVtbl->GetAppData(p)
   3900 #define IDirect3DRMAnimation2_SetName(p,a)                            (p)->lpVtbl->SetName(p,a)
   3901 #define IDirect3DRMAnimation2_GetName(p,a,b)                          (p)->lpVtbl->GetName(p,a,b)
   3902 #define IDirect3DRMAnimation2_GetClassName(p,a,b)                     (p)->lpVtbl->GetClassName(p,a,b)
   3903 /*** IDirect3DRMAnimation2 methods ***/
   3904 #define IDirect3DRMAnimation2_SetOptions(p,a)                         (p)->lpVtbl->SetOptions(p,a)
   3905 #define IDirect3DRMAnimation2_AddRotateKey(p,a,b)                     (p)->lpVtbl->AddRotateKey(p,a,b)
   3906 #define IDirect3DRMAnimation2_AddPositionKey(p,a,b,c,d)               (p)->lpVtbl->AddPositionKey(p,a,b,c,d)
   3907 #define IDirect3DRMAnimation2_AddScaleKey(p,a,b,c,d)                  (p)->lpVtbl->AddScaleKey(p,a,b,c,d)
   3908 #define IDirect3DRMAnimation2_DeleteKey(p,a)                          (p)->lpVtbl->DeleteKey(p,a)
   3909 #define IDirect3DRMAnimation2_SetFrame(p,a)                           (p)->lpVtbl->SetFrame(p,a)
   3910 #define IDirect3DRMAnimation2_SetTime(p,a)                            (p)->lpVtbl->SetTime(p,a)
   3911 #define IDirect3DRMAnimation2_GetOptions(p)                           (p)->lpVtbl->GetOptions(p)
   3912 #define IDirect3DRMAnimation2_GetFrame(p,a)                           (p)->lpVtbl->GetFrame(p,a)
   3913 #define IDirect3DRMAnimation2_DeleteKeyByID(p,a)                      (p)->lpVtbl->DeleteKeyByID(p,a)
   3914 #define IDirect3DRMAnimation2_AddKey(p,a)                             (p)->lpVtbl->AddKey(p,a)
   3915 #define IDirect3DRMAnimation2_ModifyKey(p,a)                          (p)->lpVtbl->ModifyKey(p,a)
   3916 #define IDirect3DRMAnimation2_GetKeys(p,a,b,c,d)                      (p)->lpVtbl->GetKeys(p,a,b,c,d)
   3917 #else
   3918 /*** IUnknown methods ***/
   3919 #define IDirect3DRMAnimation2_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
   3920 #define IDirect3DRMAnimation2_AddRef(p)                               (p)->AddRef()
   3921 #define IDirect3DRMAnimation2_Release(p)                              (p)->Release()
   3922 /*** IDirect3DRMObject methods ***/
   3923 #define IDirect3DRMAnimation2_Clone(p,a,b,c)                          (p)->Clone(a,b,c)
   3924 #define IDirect3DRMAnimation2_AddDestroyCallback(p,a,b)               (p)->AddDestroyCallback(a,b)
   3925 #define IDirect3DRMAnimation2_DeleteDestroyCallback(p,a,b)            (p)->DeleteDestroyCallback(a,b)
   3926 #define IDirect3DRMAnimation2_SetAppData(p,a)                         (p)->SetAppData(a)
   3927 #define IDirect3DRMAnimation2_GetAppData(p)                           (p)->GetAppData()
   3928 #define IDirect3DRMAnimation2_SetName(p,a)                            (p)->SetName(a)
   3929 #define IDirect3DRMAnimation2_GetName(p,a,b)                          (p)->GetName(a,b)
   3930 #define IDirect3DRMAnimation2_GetClassName(p,a,b)                     (p)->GetClassName(a,b)
   3931 /*** IDirect3DRMAnimation2 methods ***/
   3932 #define IDirect3DRMAnimation2_SetOptions(p,a)                         (p)->SetOptions(a)
   3933 #define IDirect3DRMAnimation2_AddRotateKey(p,a,b)                     (p)->AddRotateKey(a,b)
   3934 #define IDirect3DRMAnimation2_AddPositionKey(p,a,b,c,d)               (p)->AddPositionKey(a,b,c,d)
   3935 #define IDirect3DRMAnimation2_AddScaleKey(p,a,b,c,d)                  (p)->AddScaleKey(a,b,c,d)
   3936 #define IDirect3DRMAnimation2_DeleteKey(p,a)                          (p)->DeleteKey(a)
   3937 #define IDirect3DRMAnimation2_SetFrame(p,a)                           (p)->SetFrame(a)
   3938 #define IDirect3DRMAnimation2_SetTime(p,a)                            (p)->SetTime(a)
   3939 #define IDirect3DRMAnimation2_GetOptions(p)                           (p)->GetOptions()
   3940 #define IDirect3DRMAnimation2_GetFrame(p,a)                           (p)->GetFrame(a)
   3941 #define IDirect3DRMAnimation2_DeleteKeyByID(p,a)                      (p)->DeleteKeyByID(a)
   3942 #define IDirect3DRMAnimation2_AddKey(p,a)                             (p)->AddKey(a)
   3943 #define IDirect3DRMAnimation2_ModifyKey(p,a)                          (p)->ModifyKey(a)
   3944 #define IDirect3DRMAnimation2_GetKeys(p,a,b,c,d)                      (p)->GetKeys(a,b,c,d)
   3945 #endif
   3946 
   3947 /*****************************************************************************
   3948  * IDirect3DRMAnimationSet interface
   3949  */
   3950 #define INTERFACE IDirect3DRMAnimationSet
   3951 DECLARE_INTERFACE_(IDirect3DRMAnimationSet, IDirect3DRMObject)
   3952 {
   3953     /*** IUnknown methods ***/
   3954     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
   3955     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
   3956     STDMETHOD_(ULONG,Release)(THIS) PURE;
   3957     /*** IDirect3DRMObject methods ***/
   3958     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
   3959     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
   3960     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
   3961     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
   3962     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
   3963     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
   3964     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
   3965     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
   3966     /*** IDirect3DRMAnimationSet methods ***/
   3967     STDMETHOD(AddAnimation)(THIS_ LPDIRECT3DRMANIMATION aid) PURE;
   3968     STDMETHOD(Load)(THIS_ void *filename, void *name, D3DRMLOADOPTIONS flags,
   3969             D3DRMLOADTEXTURECALLBACK cb, void *ctx, IDirect3DRMFrame *parent)PURE;
   3970     STDMETHOD(DeleteAnimation)(THIS_ LPDIRECT3DRMANIMATION aid) PURE;
   3971     STDMETHOD(SetTime)(THIS_ D3DVALUE time) PURE;
   3972 };
   3973 #undef INTERFACE
   3974 
   3975 #if !defined(__cplusplus) || defined(CINTERFACE)
   3976 /*** IUnknown methods ***/
   3977 #define IDirect3DRMAnimationSet_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
   3978 #define IDirect3DRMAnimationSet_AddRef(p)                               (p)->lpVtbl->AddRef(p)
   3979 #define IDirect3DRMAnimationSet_Release(p)                              (p)->lpVtbl->Release(p)
   3980 /*** IDirect3DRMObject methods ***/
   3981 #define IDirect3DRMAnimationSet_Clone(p,a,b,c)                          (p)->lpVtbl->Clone(p,a,b,c)
   3982 #define IDirect3DRMAnimationSet_AddDestroyCallback(p,a,b)               (p)->lpVtbl->AddDestroyCallback(p,a,b)
   3983 #define IDirect3DRMAnimationSet_DeleteDestroyCallback(p,a,b)            (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
   3984 #define IDirect3DRMAnimationSet_SetAppData(p,a)                         (p)->lpVtbl->SetAppData(p,a)
   3985 #define IDirect3DRMAnimationSet_GetAppData(p)                           (p)->lpVtbl->GetAppData(p)
   3986 #define IDirect3DRMAnimationSet_SetName(p,a)                            (p)->lpVtbl->SetName(p,a)
   3987 #define IDirect3DRMAnimationSet_GetName(p,a,b)                          (p)->lpVtbl->GetName(p,a,b)
   3988 #define IDirect3DRMAnimationSet_GetClassName(p,a,b)                     (p)->lpVtbl->GetClassName(p,a,b)
   3989 /*** IDirect3DRMAnimationSet methods ***/
   3990 #define IDirect3DRMAnimationSet_AddAnimation(p,a)                       (p)->lpVtbl->AddAnimation(p,a)
   3991 #define IDirect3DRMAnimationSet_Load(p,a,b,c,d,e,f)                     (p)->lpVtbl->Load(p,a,b,c,d,e,f)
   3992 #define IDirect3DRMAnimationSet_DeleteAnimation(p,a)                    (p)->lpVtbl->DeleteAnimation(p,a)
   3993 #define IDirect3DRMAnimationSet_SetTime(p,a)                            (p)->lpVtbl->SetTime(p,a)
   3994 #else
   3995 /*** IUnknown methods ***/
   3996 #define IDirect3DRMAnimationSet_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
   3997 #define IDirect3DRMAnimationSet_AddRef(p)                               (p)->AddRef()
   3998 #define IDirect3DRMAnimationSet_Release(p)                              (p)->Release()
   3999 /*** IDirect3DRMObject methods ***/
   4000 #define IDirect3DRMAnimationSet_Clone(p,a,b,c)                          (p)->Clone(a,b,c)
   4001 #define IDirect3DRMAnimationSet_AddDestroyCallback(p,a,b)               (p)->AddDestroyCallback(a,b)
   4002 #define IDirect3DRMAnimationSet_DeleteDestroyCallback(p,a,b)            (p)->DeleteDestroyCallback(a,b)
   4003 #define IDirect3DRMAnimationSet_SetAppData(p,a)                         (p)->SetAppData(a)
   4004 #define IDirect3DRMAnimationSet_GetAppData(p)                           (p)->GetAppData()
   4005 #define IDirect3DRMAnimationSet_SetName(p,a)                            (p)->SetName(a)
   4006 #define IDirect3DRMAnimationSet_GetName(p,a,b)                          (p)->GetName(a,b)
   4007 #define IDirect3DRMAnimationSet_GetClassName(p,a,b)                     (p)->GetClassName(a,b)
   4008 /*** IDirect3DRMAnimationSet methods ***/
   4009 #define IDirect3DRMAnimationSet_AddAnimation(p,a)                       (p)->AddAnimation(a)
   4010 #define IDirect3DRMAnimationSet_Load(p,a,b,c,d,e,f)                     (p)->Load(a,b,c,d,e,f)
   4011 #define IDirect3DRMAnimationSet_DeleteAnimation(p,a)                    (p)->DeleteAnimation(a)
   4012 #define IDirect3DRMAnimationSet_SetTime(p,a)                            (p)->SetTime(a)
   4013 #endif
   4014 
   4015 /*****************************************************************************
   4016  * IDirect3DRMAnimationSet2 interface
   4017  */
   4018 #define INTERFACE IDirect3DRMAnimationSet2
   4019 DECLARE_INTERFACE_(IDirect3DRMAnimationSet2, IDirect3DRMObject)
   4020 {
   4021     /*** IUnknown methods ***/
   4022     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
   4023     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
   4024     STDMETHOD_(ULONG,Release)(THIS) PURE;
   4025     /*** IDirect3DRMObject methods ***/
   4026     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
   4027     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
   4028     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
   4029     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
   4030     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
   4031     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
   4032     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
   4033     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
   4034     /*** IDirect3DRMAnimationSet2 methods ***/
   4035     STDMETHOD(AddAnimation)(THIS_ LPDIRECT3DRMANIMATION2 aid) PURE;
   4036     STDMETHOD(Load)(THIS_ void *source, void *object_id, D3DRMLOADOPTIONS flags,
   4037             D3DRMLOADTEXTURE3CALLBACK cb, void *ctx, IDirect3DRMFrame3 *parent_frame)PURE;
   4038     STDMETHOD(DeleteAnimation)(THIS_ LPDIRECT3DRMANIMATION2 aid) PURE;
   4039     STDMETHOD(SetTime)(THIS_ D3DVALUE time) PURE;
   4040     STDMETHOD(GetAnimations)(THIS_ LPDIRECT3DRMANIMATIONARRAY *) PURE;
   4041 };
   4042 #undef INTERFACE
   4043 
   4044 #if !defined(__cplusplus) || defined(CINTERFACE)
   4045 /*** IUnknown methods ***/
   4046 #define IDirect3DRMAnimationSet2_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
   4047 #define IDirect3DRMAnimationSet2_AddRef(p)                               (p)->lpVtbl->AddRef(p)
   4048 #define IDirect3DRMAnimationSet2_Release(p)                              (p)->lpVtbl->Release(p)
   4049 /*** IDirect3DRMObject methods ***/
   4050 #define IDirect3DRMAnimationSet2_Clone(p,a,b,c)                          (p)->lpVtbl->Clone(p,a,b,c)
   4051 #define IDirect3DRMAnimationSet2_AddDestroyCallback(p,a,b)               (p)->lpVtbl->AddDestroyCallback(p,a,b)
   4052 #define IDirect3DRMAnimationSet2_DeleteDestroyCallback(p,a,b)            (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
   4053 #define IDirect3DRMAnimationSet2_SetAppData(p,a)                         (p)->lpVtbl->SetAppData(p,a)
   4054 #define IDirect3DRMAnimationSet2_GetAppData(p)                           (p)->lpVtbl->GetAppData(p)
   4055 #define IDirect3DRMAnimationSet2_SetName(p,a)                            (p)->lpVtbl->SetName(p,a)
   4056 #define IDirect3DRMAnimationSet2_GetName(p,a,b)                          (p)->lpVtbl->GetName(p,a,b)
   4057 #define IDirect3DRMAnimationSet2_GetClassName(p,a,b)                     (p)->lpVtbl->GetClassName(p,a,b)
   4058 /*** IDirect3DRMAnimationSet2 methods ***/
   4059 #define IDirect3DRMAnimationSet2_AddAnimation(p,a)                       (p)->lpVtbl->AddAnimation(p,a)
   4060 #define IDirect3DRMAnimationSet2_Load(p,a,b,c,d,e,f)                     (p)->lpVtbl->Load(p,a,b,c,d,e,f)
   4061 #define IDirect3DRMAnimationSet2_DeleteAnimation(p,a)                    (p)->lpVtbl->DeleteAnimation(p,a)
   4062 #define IDirect3DRMAnimationSet2_SetTime(p,a)                            (p)->lpVtbl->SetTime(p,a)
   4063 #define IDirect3DRMAnimationSet2_GetAnimations(p,a)                      (p)->lpVtbl->GetAnimations(p,a)
   4064 #else
   4065 /*** IUnknown methods ***/
   4066 #define IDirect3DRMAnimationSet2_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
   4067 #define IDirect3DRMAnimationSet2_AddRef(p)                               (p)->AddRef()
   4068 #define IDirect3DRMAnimationSet2_Release(p)                              (p)->Release()
   4069 /*** IDirect3DRMObject methods ***/
   4070 #define IDirect3DRMAnimationSet2_Clone(p,a,b,c)                          (p)->Clone(a,b,c)
   4071 #define IDirect3DRMAnimationSet2_AddDestroyCallback(p,a,b)               (p)->AddDestroyCallback(a,b)
   4072 #define IDirect3DRMAnimationSet2_DeleteDestroyCallback(p,a,b)            (p)->DeleteDestroyCallback(a,b)
   4073 #define IDirect3DRMAnimationSet2_SetAppData(p,a)                         (p)->SetAppData(a)
   4074 #define IDirect3DRMAnimationSet2_GetAppData(p)                           (p)->GetAppData()
   4075 #define IDirect3DRMAnimationSet2_SetName(p,a)                            (p)->SetName(a)
   4076 #define IDirect3DRMAnimationSet2_GetName(p,a,b)                          (p)->GetName(a,b)
   4077 #define IDirect3DRMAnimationSet2_GetClassName(p,a,b)                     (p)->GetClassName(a,b)
   4078 /*** IDirect3DRMAnimationSet2 methods ***/
   4079 #define IDirect3DRMAnimationSet2_AddAnimation(p,a)                       (p)->AddAnimation(a)
   4080 #define IDirect3DRMAnimationSet2_Load(p,a,b,c,d,e,f)                     (p)->Load(a,b,c,d,e,f)
   4081 #define IDirect3DRMAnimationSet2_DeleteAnimation(p,a)                    (p)->DeleteAnimation(a)
   4082 #define IDirect3DRMAnimationSet2_SetTime(p,a)                            (p)->SetTime(a)
   4083 #define IDirect3DRMAnimationSet2_GetAnimations(p,a)                      (p)->GetAnimations(a)
   4084 #endif
   4085 
   4086 /*****************************************************************************
   4087  * IDirect3DRMUserVisual interface
   4088  */
   4089 #define INTERFACE IDirect3DRMUserVisual
   4090 DECLARE_INTERFACE_(IDirect3DRMUserVisual, IDirect3DRMVisual)
   4091 {
   4092     /*** IUnknown methods ***/
   4093     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
   4094     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
   4095     STDMETHOD_(ULONG,Release)(THIS) PURE;
   4096     /*** IDirect3DRMObject methods ***/
   4097     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
   4098     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
   4099     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
   4100     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
   4101     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
   4102     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
   4103     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
   4104     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
   4105     /*** IDirect3DRMUserVisual methods ***/
   4106     STDMETHOD(Init)(THIS_ D3DRMUSERVISUALCALLBACK fn, void *arg) PURE;
   4107 };
   4108 #undef INTERFACE
   4109 
   4110 #if !defined(__cplusplus) || defined(CINTERFACE)
   4111 /*** IUnknown methods ***/
   4112 #define IDirect3DRMUserVisual_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
   4113 #define IDirect3DRMUserVisual_AddRef(p)                               (p)->lpVtbl->AddRef(p)
   4114 #define IDirect3DRMUserVisual_Release(p)                              (p)->lpVtbl->Release(p)
   4115 /*** IDirect3DRMObject methods ***/
   4116 #define IDirect3DRMUserVisual_Clone(p,a,b,c)                          (p)->lpVtbl->Clone(p,a,b,c)
   4117 #define IDirect3DRMUserVisual_AddDestroyCallback(p,a,b)               (p)->lpVtbl->AddDestroyCallback(p,a,b)
   4118 #define IDirect3DRMUserVisual_DeleteDestroyCallback(p,a,b)            (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
   4119 #define IDirect3DRMUserVisual_SetAppData(p,a)                         (p)->lpVtbl->SetAppData(p,a)
   4120 #define IDirect3DRMUserVisual_GetAppData(p)                           (p)->lpVtbl->GetAppData(p)
   4121 #define IDirect3DRMUserVisual_SetName(p,a)                            (p)->lpVtbl->SetName(p,a)
   4122 #define IDirect3DRMUserVisual_GetName(p,a,b)                          (p)->lpVtbl->GetName(p,a,b)
   4123 #define IDirect3DRMUserVisual_GetClassName(p,a,b)                     (p)->lpVtbl->GetClassName(p,a,b)
   4124 /*** IDirect3DRMUserVisual methods ***/
   4125 #define IDirect3DRMUserVisual_Init(p,a,b)                             (p)->lpVtbl->Init(p,a,b)
   4126 #else
   4127 /*** IUnknown methods ***/
   4128 #define IDirect3DRMUserVisual_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
   4129 #define IDirect3DRMUserVisual_AddRef(p)                               (p)->AddRef()
   4130 #define IDirect3DRMUserVisual_Release(p)                              (p)->Release()
   4131 /*** IDirect3DRMObject methods ***/
   4132 #define IDirect3DRMUserVisual_Clone(p,a,b,c)                          (p)->Clone(a,b,c)
   4133 #define IDirect3DRMUserVisual_AddDestroyCallback(p,a,b)               (p)->AddDestroyCallback(a,b)
   4134 #define IDirect3DRMUserVisual_DeleteDestroyCallback(p,a,b)            (p)->DeleteDestroyCallback(a,b)
   4135 #define IDirect3DRMUserVisual_SetAppData(p,a)                         (p)->SetAppData(a)
   4136 #define IDirect3DRMUserVisual_GetAppData(p)                           (p)->GetAppData()
   4137 #define IDirect3DRMUserVisual_SetName(p,a)                            (p)->SetName(a)
   4138 #define IDirect3DRMUserVisual_GetName(p,a,b)                          (p)->GetName(a,b)
   4139 #define IDirect3DRMUserVisual_GetClassName(p,a,b)                     (p)->GetClassName(a,b)
   4140 /*** IDirect3DRMUserVisual methods ***/
   4141 #define IDirect3DRMUserVisual_Init(p,a,b)                             (p)->Init(a,b)
   4142 #endif
   4143 
   4144 /*****************************************************************************
   4145  * IDirect3DRMArray interface
   4146  */
   4147 #define INTERFACE IDirect3DRMArray
   4148 DECLARE_INTERFACE_(IDirect3DRMArray, IUnknown)
   4149 {
   4150     /*** IUnknown methods ***/
   4151     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
   4152     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
   4153     STDMETHOD_(ULONG,Release)(THIS) PURE;
   4154     /*** IDirect3DRMArray methods ***/
   4155     STDMETHOD_(DWORD, GetSize)(THIS) PURE;
   4156 };
   4157 #undef INTERFACE
   4158 
   4159 #if !defined(__cplusplus) || defined(CINTERFACE)
   4160 /*** IUnknown methods ***/
   4161 #define IDirect3DRMArray_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
   4162 #define IDirect3DRMArray_AddRef(p)                               (p)->lpVtbl->AddRef(p)
   4163 #define IDirect3DRMArray_Release(p)                              (p)->lpVtbl->Release(p)
   4164 /*** IDirect3DRMArray methods ***/
   4165 #define IDirect3DRMArray_GetSize(p)                              (p)->lpVtbl->GetSize(p)
   4166 #else
   4167 /*** IUnknown methods ***/
   4168 #define IDirect3DRMArray_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
   4169 #define IDirect3DRMArray_AddRef(p)                               (p)->AddRef()
   4170 #define IDirect3DRMArray_Release(p)                              (p)->Release()
   4171 /*** IDirect3DRMArray methods ***/
   4172 #define IDirect3DRMArray_GetSize(p)                              (p)->GetSize()
   4173 #endif
   4174 
   4175 /*****************************************************************************
   4176  * IDirect3DRMObjectArray interface
   4177  */
   4178 #define INTERFACE IDirect3DRMObjectArray
   4179 DECLARE_INTERFACE_(IDirect3DRMObjectArray, IDirect3DRMArray)
   4180 {
   4181     /*** IUnknown methods ***/
   4182     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
   4183     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
   4184     STDMETHOD_(ULONG,Release)(THIS) PURE;
   4185     /*** IDirect3DRMArray methods ***/
   4186     STDMETHOD_(DWORD, GetSize)(THIS) PURE;
   4187     /*** IDirect3DRMObjectArray methods ***/
   4188     STDMETHOD(GetElement)(THIS_ DWORD index, IDirect3DRMObject **element) PURE;
   4189 };
   4190 #undef INTERFACE
   4191 
   4192 #if !defined(__cplusplus) || defined(CINTERFACE)
   4193 /*** IUnknown methods ***/
   4194 #define IDirect3DRMObjectArray_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
   4195 #define IDirect3DRMObjectArray_AddRef(p)                               (p)->lpVtbl->AddRef(p)
   4196 #define IDirect3DRMObjectArray_Release(p)                              (p)->lpVtbl->Release(p)
   4197 /*** IDirect3DRMArray methods ***/
   4198 #define IDirect3DRMObjectArray_GetSize(p)                              (p)->lpVtbl->GetSize(p)
   4199 /*** IDirect3DRMObjectArray methods ***/
   4200 #define IDirect3DRMObjectArray_GetElement(p,a,b)                       (p)->lpVtbl->GetElement(p,a,b)
   4201 #else
   4202 /*** IUnknown methods ***/
   4203 #define IDirect3DRMObjectArray_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
   4204 #define IDirect3DRMObjectArray_AddRef(p)                               (p)->AddRef()
   4205 #define IDirect3DRMObjectArray_Release(p)                              (p)->Release()
   4206 /*** IDirect3DRMArray methods ***/
   4207 #define IDirect3DRMObjectArray_GetSize(p)                              (p)->GetSize()
   4208 /*** IDirect3DRMObjectArray methods ***/
   4209 #define IDirect3DRMObjectArray_GetElement(p,a,b)                       (p)->GetElement(a,b)
   4210 #endif
   4211 
   4212 /*****************************************************************************
   4213  * IDirect3DRMDeviceArray interface
   4214  */
   4215 #define INTERFACE IDirect3DRMDeviceArray
   4216 DECLARE_INTERFACE_(IDirect3DRMDeviceArray, IDirect3DRMArray)
   4217 {
   4218     /*** IUnknown methods ***/
   4219     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
   4220     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
   4221     STDMETHOD_(ULONG,Release)(THIS) PURE;
   4222     /*** IDirect3DRMArray methods ***/
   4223     STDMETHOD_(DWORD, GetSize)(THIS) PURE;
   4224     /*** IDirect3DRMDeviceArray methods ***/
   4225     STDMETHOD(GetElement)(THIS_ DWORD index, IDirect3DRMDevice **element) PURE;
   4226 };
   4227 #undef INTERFACE
   4228 
   4229 #if !defined(__cplusplus) || defined(CINTERFACE)
   4230 /*** IUnknown methods ***/
   4231 #define IDirect3DRMDeviceArray_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
   4232 #define IDirect3DRMDeviceArray_AddRef(p)                               (p)->lpVtbl->AddRef(p)
   4233 #define IDirect3DRMDeviceArray_Release(p)                              (p)->lpVtbl->Release(p)
   4234 /*** IDirect3DRMArray methods ***/
   4235 #define IDirect3DRMDeviceArray_GetSize(p)                              (p)->lpVtbl->GetSize(p)
   4236 /*** IDirect3DRMDeviceArray methods ***/
   4237 #define IDirect3DRMDeviceArray_GetElement(p,a,b)                       (p)->lpVtbl->GetElement(p,a,b)
   4238 #else
   4239 /*** IUnknown methods ***/
   4240 #define IDirect3DRMDeviceArray_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
   4241 #define IDirect3DRMDeviceArray_AddRef(p)                               (p)->AddRef()
   4242 #define IDirect3DRMDeviceArray_Release(p)                              (p)->Release()
   4243 /*** IDirect3DRMArray methods ***/
   4244 #define IDirect3DRMDeviceArray_GetSize(p)                              (p)->GetSize()
   4245 /*** IDirect3DRMDeviceArray methods ***/
   4246 #define IDirect3DRMDeviceArray_GetElement(p,a,b)                       (p)->GetElement(a,b)
   4247 #endif
   4248 
   4249 /*****************************************************************************
   4250  * IDirect3DRMFrameArray interface
   4251  */
   4252 #define INTERFACE IDirect3DRMFrameArray
   4253 DECLARE_INTERFACE_(IDirect3DRMFrameArray, IDirect3DRMArray)
   4254 {
   4255     /*** IUnknown methods ***/
   4256     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
   4257     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
   4258     STDMETHOD_(ULONG,Release)(THIS) PURE;
   4259     /*** IDirect3DRMArray methods ***/
   4260     STDMETHOD_(DWORD, GetSize)(THIS) PURE;
   4261     /*** IDirect3DRMFrameArray methods ***/
   4262     STDMETHOD(GetElement)(THIS_ DWORD index, IDirect3DRMFrame **element) PURE;
   4263 };
   4264 #undef INTERFACE
   4265 
   4266 #if !defined(__cplusplus) || defined(CINTERFACE)
   4267 /*** IUnknown methods ***/
   4268 #define IDirect3DRMFrameArray_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
   4269 #define IDirect3DRMFrameArray_AddRef(p)                               (p)->lpVtbl->AddRef(p)
   4270 #define IDirect3DRMFrameArray_Release(p)                              (p)->lpVtbl->Release(p)
   4271 /*** IDirect3DRMArray methods ***/
   4272 #define IDirect3DRMFrameArray_GetSize(p)                              (p)->lpVtbl->GetSize(p)
   4273 /*** IDirect3DRMFrameArray methods ***/
   4274 #define IDirect3DRMFrameArray_GetElement(p,a,b)                       (p)->lpVtbl->GetElement(p,a,b)
   4275 #else
   4276 /*** IUnknown methods ***/
   4277 #define IDirect3DRMFrameArray_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
   4278 #define IDirect3DRMFrameArray_AddRef(p)                               (p)->AddRef()
   4279 #define IDirect3DRMFrameArray_Release(p)                              (p)->Release()
   4280 /*** IDirect3DRMArray methods ***/
   4281 #define IDirect3DRMFrameArray_GetSize(p)                              (p)->GetSize()
   4282 /*** IDirect3DRMFrameArray methods ***/
   4283 #define IDirect3DRMFrameArray_GetElement(p,a,b)                       (p)->GetElement(a,b)
   4284 #endif
   4285 
   4286 /*****************************************************************************
   4287  * IDirect3DRMViewportArray interface
   4288  */
   4289 #define INTERFACE IDirect3DRMViewportArray
   4290 DECLARE_INTERFACE_(IDirect3DRMViewportArray, IDirect3DRMArray)
   4291 {
   4292     /*** IUnknown methods ***/
   4293     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
   4294     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
   4295     STDMETHOD_(ULONG,Release)(THIS) PURE;
   4296     /*** IDirect3DRMArray methods ***/
   4297     STDMETHOD_(DWORD, GetSize)(THIS) PURE;
   4298     /*** IDirect3DRMViewportArray methods ***/
   4299     STDMETHOD(GetElement)(THIS_ DWORD index, IDirect3DRMViewport **element) PURE;
   4300 };
   4301 #undef INTERFACE
   4302 
   4303 #if !defined(__cplusplus) || defined(CINTERFACE)
   4304 /*** IUnknown methods ***/
   4305 #define IDirect3DRMViewportArray_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
   4306 #define IDirect3DRMViewportArray_AddRef(p)                               (p)->lpVtbl->AddRef(p)
   4307 #define IDirect3DRMViewportArray_Release(p)                              (p)->lpVtbl->Release(p)
   4308 /*** IDirect3DRMArray methods ***/
   4309 #define IDirect3DRMViewportArray_GetSize(p)                              (p)->lpVtbl->GetSize(p)
   4310 /*** IDirect3DRMViewportArray methods ***/
   4311 #define IDirect3DRMViewportArray_GetElement(p,a,b)                       (p)->lpVtbl->GetElement(p,a,b)
   4312 #else
   4313 /*** IUnknown methods ***/
   4314 #define IDirect3DRMViewportArray_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
   4315 #define IDirect3DRMViewportArray_AddRef(p)                               (p)->AddRef()
   4316 #define IDirect3DRMViewportArray_Release(p)                              (p)->Release()
   4317 /*** IDirect3DRMArray methods ***/
   4318 #define IDirect3DRMViewportArray_GetSize(p)                              (p)->GetSize()
   4319 /*** IDirect3DRMViewportArray methods ***/
   4320 #define IDirect3DRMviewportArray_GetElement(p,a,b)                       (p)->GetElement(a,b)
   4321 #endif
   4322 
   4323 /*****************************************************************************
   4324  * IDirect3DRMVisualArray interface
   4325  */
   4326 #define INTERFACE IDirect3DRMVisualArray
   4327 DECLARE_INTERFACE_(IDirect3DRMVisualArray, IDirect3DRMArray)
   4328 {
   4329     /*** IUnknown methods ***/
   4330     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
   4331     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
   4332     STDMETHOD_(ULONG,Release)(THIS) PURE;
   4333     /*** IDirect3DRMArray methods ***/
   4334     STDMETHOD_(DWORD, GetSize)(THIS) PURE;
   4335     /*** IDirect3DRMVisualArray methods ***/
   4336     STDMETHOD(GetElement)(THIS_ DWORD index, IDirect3DRMVisual **element) PURE;
   4337 };
   4338 #undef INTERFACE
   4339 
   4340 #if !defined(__cplusplus) || defined(CINTERFACE)
   4341 /*** IUnknown methods ***/
   4342 #define IDirect3DRMVisualArray_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
   4343 #define IDirect3DRMVisualArray_AddRef(p)                               (p)->lpVtbl->AddRef(p)
   4344 #define IDirect3DRMVisualArray_Release(p)                              (p)->lpVtbl->Release(p)
   4345 /*** IDirect3DRMArray methods ***/
   4346 #define IDirect3DRMVisualArray_GetSize(p)                              (p)->lpVtbl->GetSize(p)
   4347 /*** IDirect3DRMVisualArray methods ***/
   4348 #define IDirect3DRMVisualArray_GetElement(p,a,b)                       (p)->lpVtbl->GetElement(p,a,b)
   4349 #else
   4350 /*** IUnknown methods ***/
   4351 #define IDirect3DRMVisualArray_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
   4352 #define IDirect3DRMVisualArray_AddRef(p)                               (p)->AddRef()
   4353 #define IDirect3DRMVisualArray_Release(p)                              (p)->Release()
   4354 /*** IDirect3DRMArray methods ***/
   4355 #define IDirect3DRMVisualArray_GetSize(p)                              (p)->GetSize()
   4356 /*** IDirect3DRMVisualArray methods ***/
   4357 #define IDirect3DRMVisualArray_GetElement(p,a,b)                       (p)->GetElement(a,b)
   4358 #endif
   4359 
   4360 /*****************************************************************************
   4361  * IDirect3DRMAnimationArray interface
   4362  */
   4363 #define INTERFACE IDirect3DRMAnimationArray
   4364 DECLARE_INTERFACE_(IDirect3DRMAnimationArray, IDirect3DRMArray)
   4365 {
   4366     /*** IUnknown methods ***/
   4367     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
   4368     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
   4369     STDMETHOD_(ULONG,Release)(THIS) PURE;
   4370     /*** IDirect3DRMArray methods ***/
   4371     STDMETHOD_(DWORD, GetSize)(THIS) PURE;
   4372     /*** IDirect3DRMAnimationArray methods ***/
   4373     STDMETHOD(GetElement)(THIS_ DWORD index, LPDIRECT3DRMANIMATION2 *) PURE;
   4374 };
   4375 #undef INTERFACE
   4376 
   4377 #if !defined(__cplusplus) || defined(CINTERFACE)
   4378 /*** IUnknown methods ***/
   4379 #define IDirect3DRMAnimationArray_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
   4380 #define IDirect3DRMAnimationArray_AddRef(p)                               (p)->lpVtbl->AddRef(p)
   4381 #define IDirect3DRMAnimationArray_Release(p)                              (p)->lpVtbl->Release(p)
   4382 /*** IDirect3DRMArray methods ***/
   4383 #define IDirect3DRMAnimationArray_GetSize(p)                              (p)->lpVtbl->GetSize(p)
   4384 /*** IDirect3DRMAnimationArray methods ***/
   4385 #define IDirect3DRMAnimationArray_GetElement(p,a,b)                       (p)->lpVtbl->GetElement(p,a,b)
   4386 #else
   4387 /*** IUnknown methods ***/
   4388 #define IDirect3DRMAnimationArray_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
   4389 #define IDirect3DRMAnimationArray_AddRef(p)                               (p)->AddRef()
   4390 #define IDirect3DRMAnimationArray_Release(p)                              (p)->Release()
   4391 /*** IDirect3DRMArray methods ***/
   4392 #define IDirect3DRMAnimationArray_GetSize(p)                              (p)->GetSize()
   4393 /*** IDirect3DRMAnimationArray methods ***/
   4394 #define IDirect3DRMAnimationArray_GetElement(p,a,b)                       (p)->GetElement(a,b)
   4395 #endif
   4396 
   4397 /*****************************************************************************
   4398  * IDirect3DRMPickedArray interface
   4399  */
   4400 #define INTERFACE IDirect3DRMPickedArray
   4401 DECLARE_INTERFACE_(IDirect3DRMPickedArray, IDirect3DRMArray)
   4402 {
   4403     /*** IUnknown methods ***/
   4404     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
   4405     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
   4406     STDMETHOD_(ULONG,Release)(THIS) PURE;
   4407     /*** IDirect3DRMArray methods ***/
   4408     STDMETHOD_(DWORD, GetSize)(THIS) PURE;
   4409     /*** IDirect3DRMPickedArray methods ***/
   4410     STDMETHOD(GetPick)(THIS_ DWORD index, IDirect3DRMVisual **visual,
   4411             IDirect3DRMFrameArray **frame_array, D3DRMPICKDESC *pick_desc) PURE;
   4412 };
   4413 #undef INTERFACE
   4414 
   4415 #if !defined(__cplusplus) || defined(CINTERFACE)
   4416 /*** IUnknown methods ***/
   4417 #define IDirect3DRMPickedArray_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
   4418 #define IDirect3DRMPickedArray_AddRef(p)                               (p)->lpVtbl->AddRef(p)
   4419 #define IDirect3DRMPickedArray_Release(p)                              (p)->lpVtbl->Release(p)
   4420 /*** IDirect3DRMArray methods ***/
   4421 #define IDirect3DRMPickedArray_GetSize(p)                              (p)->lpVtbl->GetSize(p)
   4422 /*** IDirect3DRMPickedArray methods ***/
   4423 #define IDirect3DRMPickedArray_GetPick(p,a,b,c,d)                      (p)->lpVtbl->GetPick(p,a,b,c,d)
   4424 #else
   4425 /*** IUnknown methods ***/
   4426 #define IDirect3DRMPickedArray_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
   4427 #define IDirect3DRMPickedArray_AddRef(p)                               (p)->AddRef()
   4428 #define IDirect3DRMPickedArray_Release(p)                              (p)->Release()
   4429 /*** IDirect3DRMArray methods ***/
   4430 #define IDirect3DRMPickedArray_GetSize(p)                              (p)->GetSize()
   4431 /*** IDirect3DRMPickedArray methods ***/
   4432 #define IDirect3DRMPickedArray_GetPick(p,a,b,c,d)                      (p)->GetPick(a,b,c,d)
   4433 #endif
   4434 
   4435 /*****************************************************************************
   4436  * IDirect3DRMLightArray interface
   4437  */
   4438 #define INTERFACE IDirect3DRMLightArray
   4439 DECLARE_INTERFACE_(IDirect3DRMLightArray, IDirect3DRMArray)
   4440 {
   4441     /*** IUnknown methods ***/
   4442     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
   4443     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
   4444     STDMETHOD_(ULONG,Release)(THIS) PURE;
   4445     /*** IDirect3DRMArray methods ***/
   4446     STDMETHOD_(DWORD, GetSize)(THIS) PURE;
   4447     /*** IDirect3DRMLightArray methods ***/
   4448     STDMETHOD(GetElement)(THIS_ DWORD index, IDirect3DRMLight **element) PURE;
   4449 };
   4450 #undef INTERFACE
   4451 
   4452 #if !defined(__cplusplus) || defined(CINTERFACE)
   4453 /*** IUnknown methods ***/
   4454 #define IDirect3DRMLightArray_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
   4455 #define IDirect3DRMLightArray_AddRef(p)                               (p)->lpVtbl->AddRef(p)
   4456 #define IDirect3DRMLightArray_Release(p)                              (p)->lpVtbl->Release(p)
   4457 /*** IDirect3DRMArray methods ***/
   4458 #define IDirect3DRMLightArray_GetSize(p)                              (p)->lpVtbl->GetSize(p)
   4459 /*** IDirect3DRMLightArray methods ***/
   4460 #define IDirect3DRMLightArray_GetElement(p,a,b)                       (p)->lpVtbl->GetElement(p,a,b)
   4461 #else
   4462 /*** IUnknown methods ***/
   4463 #define IDirect3DRMLightArray_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
   4464 #define IDirect3DRMLightArray_AddRef(p)                               (p)->AddRef()
   4465 #define IDirect3DRMLightArray_Release(p)                              (p)->Release()
   4466 /*** IDirect3DRMArray methods ***/
   4467 #define IDirect3DRMLightArray_GetSize(p)                              (p)->GetSize()
   4468 /*** IDirect3DRMLightArray methods ***/
   4469 #define IDirect3DRMLightArray_GetElement(p,a,b)                       (p)->GetElement(a,b)
   4470 #endif
   4471 
   4472 /*****************************************************************************
   4473  * IDirect3DRMFaceArray interface
   4474  */
   4475 #define INTERFACE IDirect3DRMFaceArray
   4476 DECLARE_INTERFACE_(IDirect3DRMFaceArray, IDirect3DRMArray)
   4477 {
   4478     /*** IUnknown methods ***/
   4479     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
   4480     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
   4481     STDMETHOD_(ULONG,Release)(THIS) PURE;
   4482     /*** IDirect3DRMArray methods ***/
   4483     STDMETHOD_(DWORD, GetSize)(THIS) PURE;
   4484     /*** IDirect3DRMFaceArray methods ***/
   4485     STDMETHOD(GetElement)(THIS_ DWORD index, IDirect3DRMFace **element) PURE;
   4486 };
   4487 #undef INTERFACE
   4488 
   4489 #if !defined(__cplusplus) || defined(CINTERFACE)
   4490 /*** IUnknown methods ***/
   4491 #define IDirect3DRMFaceArray_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
   4492 #define IDirect3DRMFaceArray_AddRef(p)                               (p)->lpVtbl->AddRef(p)
   4493 #define IDirect3DRMFaceArray_Release(p)                              (p)->lpVtbl->Release(p)
   4494 /*** IDirect3DRMArray methods ***/
   4495 #define IDirect3DRMFaceArray_GetSize(p)                              (p)->lpVtbl->GetSize(p)
   4496 /*** IDirect3DRMFaceArray methods ***/
   4497 #define IDirect3DRMFaceArray_GetElement(p,a,b)                       (p)->lpVtbl->GetElement(p,a,b)
   4498 #else
   4499 /*** IUnknown methods ***/
   4500 #define IDirect3DRMFaceArray_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
   4501 #define IDirect3DRMFaceArray_AddRef(p)                               (p)->AddRef()
   4502 #define IDirect3DRMFaceArray_Release(p)                              (p)->Release()
   4503 /*** IDirect3DRMArray methods ***/
   4504 #define IDirect3DRMFaceArray_GetSize(p)                              (p)->GetSize()
   4505 /*** IDirect3DRMFaceArray methods ***/
   4506 #define IDirect3DRMFaceArray_GetElement(p,a,b)                       (p)->GetElement(a,b)
   4507 #endif
   4508 
   4509 /*****************************************************************************
   4510  * IDirect3DRMPicked2Array interface
   4511  */
   4512 #define INTERFACE IDirect3DRMPicked2Array
   4513 DECLARE_INTERFACE_(IDirect3DRMPicked2Array, IDirect3DRMArray)
   4514 {
   4515     /*** IUnknown methods ***/
   4516     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
   4517     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
   4518     STDMETHOD_(ULONG,Release)(THIS) PURE;
   4519     /*** IDirect3DRMArray methods ***/
   4520     STDMETHOD_(DWORD, GetSize)(THIS) PURE;
   4521     /*** IDirect3DRMPicked2Array methods ***/
   4522     STDMETHOD(GetPick)(THIS_ DWORD index, IDirect3DRMVisual **visual,
   4523             IDirect3DRMFrameArray **frame_array, D3DRMPICKDESC2 *pick_desc) PURE;
   4524 };
   4525 #undef INTERFACE
   4526 
   4527 #if !defined(__cplusplus) || defined(CINTERFACE)
   4528 /*** IUnknown methods ***/
   4529 #define IDirect3DRMPicked2Array_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
   4530 #define IDirect3DRMPicked2Array_AddRef(p)                               (p)->lpVtbl->AddRef(p)
   4531 #define IDirect3DRMPicked2Array_Release(p)                              (p)->lpVtbl->Release(p)
   4532 /*** IDirect3DRMArray methods ***/
   4533 #define IDirect3DRMPicked2Array_GetSize(p)                              (p)->lpVtbl->GetSize(p)
   4534 /*** IDirect3DRMPicked2Array methods ***/
   4535 #define IDirect3DRMPicked2Array_GetPick(p,a,b,c,d)                      (p)->lpVtbl->GetPick(p,a,b,c,d)
   4536 #else
   4537 /*** IUnknown methods ***/
   4538 #define IDirect3DRMPicked2Array_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
   4539 #define IDirect3DRMPicked2Array_AddRef(p)                               (p)->AddRef()
   4540 #define IDirect3DRMPicked2Array_Release(p)                              (p)->Release()
   4541 /*** IDirect3DRMArray methods ***/
   4542 #define IDirect3DRMPicked2Array_GetSize(p)                              (p)->GetSize()
   4543 /*** IDirect3DRMPicked2Array methods ***/
   4544 #define IDirect3DRMPicked2Array_GetPick(p,a,b,c,d)                      (p)->GetPick(a,b,c,d)
   4545 #endif
   4546 
   4547 /*****************************************************************************
   4548  * IDirect3DRMInterpolator interface
   4549  */
   4550 #define INTERFACE IDirect3DRMInterpolator
   4551 DECLARE_INTERFACE_(IDirect3DRMInterpolator, IDirect3DRMObject)
   4552 {
   4553     /*** IUnknown methods ***/
   4554     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
   4555     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
   4556     STDMETHOD_(ULONG,Release)(THIS) PURE;
   4557     /*** IDirect3DRMObject methods ***/
   4558     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
   4559     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
   4560     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
   4561     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
   4562     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
   4563     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
   4564     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
   4565     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
   4566     /*** IDirect3DRMInterpolator methods ***/
   4567     STDMETHOD(AttachObject)(THIS_ IDirect3DRMObject *object) PURE;
   4568     STDMETHOD(GetAttachedObjects)(THIS_ LPDIRECT3DRMOBJECTARRAY *) PURE;
   4569     STDMETHOD(DetachObject)(THIS_ IDirect3DRMObject *object) PURE;
   4570     STDMETHOD(SetIndex)(THIS_ D3DVALUE) PURE;
   4571     STDMETHOD_(D3DVALUE, GetIndex)(THIS) PURE;
   4572     STDMETHOD(Interpolate)(THIS_ D3DVALUE index, IDirect3DRMObject *object, D3DRMINTERPOLATIONOPTIONS flags) PURE;
   4573 };
   4574 #undef INTERFACE
   4575 
   4576 #if !defined(__cplusplus) || defined(CINTERFACE)
   4577 /*** IUnknown methods ***/
   4578 #define IDirect3DRMInterpolator_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
   4579 #define IDirect3DRMInterpolator_AddRef(p)                               (p)->lpVtbl->AddRef(p)
   4580 #define IDirect3DRMInterpolator_Release(p)                              (p)->lpVtbl->Release(p)
   4581 /*** IDirect3DRMObject methods ***/
   4582 #define IDirect3DRMInterpolator_Clone(p,a,b,c)                          (p)->lpVtbl->Clone(p,a,b,c)
   4583 #define IDirect3DRMInterpolator_AddDestroyCallback(p,a,b)               (p)->lpVtbl->AddDestroyCallback(p,a,b)
   4584 #define IDirect3DRMInterpolator_DeleteDestroyCallback(p,a,b)            (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
   4585 #define IDirect3DRMInterpolator_SetAppData(p,a)                         (p)->lpVtbl->SetAppData(p,a)
   4586 #define IDirect3DRMInterpolator_GetAppData(p)                           (p)->lpVtbl->GetAppData(p)
   4587 #define IDirect3DRMInterpolator_SetName(p,a)                            (p)->lpVtbl->SetName(p,a)
   4588 #define IDirect3DRMInterpolator_GetName(p,a,b)                          (p)->lpVtbl->GetName(p,a,b)
   4589 #define IDirect3DRMInterpolator_GetClassName(p,a,b)                     (p)->lpVtbl->GetClassName(p,a,b)
   4590 /*** IDirect3DRMInterpolator methods ***/
   4591 #define IDirect3DRMInterpolator_AttachObject(p,a)                       (p)->lpVtbl->AttachObject(p,a)
   4592 #define IDirect3DRMInterpolator_GetAttachedObjects(p,a)                 (p)->lpVtbl->GetAttachedObjects(p,a)
   4593 #define IDirect3DRMInterpolator_DetachObject(p,a)                       (p)->lpVtbl->DetachObject(p,a)
   4594 #define IDirect3DRMInterpolator_SetIndex(p,a)                           (p)->lpVtbl->SetIndex(p,a)
   4595 #define IDirect3DRMInterpolator_GetIndex(p)                             (p)->lpVtbl->GetIndex(p)
   4596 #define IDirect3DRMInterpolator_Interpolate(p,a,b,c)                    (p)->lpVtbl->Interpolate(p,a,b,c)
   4597 #else
   4598 /*** IUnknown methods ***/
   4599 #define IDirect3DRMInterpolator_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
   4600 #define IDirect3DRMInterpolator_AddRef(p)                               (p)->AddRef()
   4601 #define IDirect3DRMInterpolator_Release(p)                              (p)->Release()
   4602 /*** IDirect3DRMObject methods ***/
   4603 #define IDirect3DRMInterpolator_Clone(p,a,b,c)                          (p)->Clone(a,b,c)
   4604 #define IDirect3DRMInterpolator_AddDestroyCallback(p,a,b)               (p)->AddDestroyCallback(a,b)
   4605 #define IDirect3DRMInterpolator_DeleteDestroyCallback(p,a,b)            (p)->DeleteDestroyCallback(a,b)
   4606 #define IDirect3DRMInterpolator_SetAppData(p,a)                         (p)->SetAppData(a)
   4607 #define IDirect3DRMInterpolator_GetAppData(p)                           (p)->GetAppData()
   4608 #define IDirect3DRMInterpolator_SetName(p,a)                            (p)->SetName(a)
   4609 #define IDirect3DRMInterpolator_GetName(p,a,b)                          (p)->GetName(a,b)
   4610 #define IDirect3DRMInterpolator_GetClassName(p,a,b)                     (p)->GetClassName(a,b)
   4611 /*** IDirect3DRMInterpolator methods ***/
   4612 #define IDirect3DRMInterpolator_AttachObject(p,a)                       (p)->AttachObject(a)
   4613 #define IDirect3DRMInterpolator_GetAttachedObjects(p,a)                 (p)->GetAttachedObjects(a)
   4614 #define IDirect3DRMInterpolator_DetachObject(p,a)                       (p)->DetachObject(a)
   4615 #define IDirect3DRMInterpolator_SetIndex(p,a)                           (p)->SetIndex(a)
   4616 #define IDirect3DRMInterpolator_GetIndex(p)                             (p)->GetIndex()
   4617 #define IDirect3DRMInterpolator_Interpolate(p,a,b,c)                    (p)->Interpolate(a,b,c)
   4618 #endif
   4619 
   4620 /*****************************************************************************
   4621  * IDirect3DRMClippedVisual interface
   4622  */
   4623 #define INTERFACE IDirect3DRMClippedVisual
   4624 DECLARE_INTERFACE_(IDirect3DRMClippedVisual, IDirect3DRMVisual)
   4625 {
   4626     /*** IUnknown methods ***/
   4627     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
   4628     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
   4629     STDMETHOD_(ULONG,Release)(THIS) PURE;
   4630     /*** IDirect3DRMObject methods ***/
   4631     STDMETHOD(Clone)(THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) PURE;
   4632     STDMETHOD(AddDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
   4633     STDMETHOD(DeleteDestroyCallback)(THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) PURE;
   4634     STDMETHOD(SetAppData)(THIS_ DWORD data) PURE;
   4635     STDMETHOD_(DWORD, GetAppData)(THIS) PURE;
   4636     STDMETHOD(SetName)(THIS_ LPCSTR) PURE;
   4637     STDMETHOD(GetName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
   4638     STDMETHOD(GetClassName)(THIS_ LPDWORD lpdwSize, LPSTR lpName) PURE;
   4639     /*** IDirect3DRMClippedVisual methods ***/
   4640     STDMETHOD(Init) (THIS_ IDirect3DRMVisual *visual) PURE;
   4641     STDMETHOD(AddPlane) (THIS_ IDirect3DRMFrame3 *reference, D3DVECTOR *point,
   4642             D3DVECTOR *normal, DWORD flags, DWORD *id) PURE;
   4643     STDMETHOD(DeletePlane)(THIS_ DWORD, DWORD) PURE;
   4644     STDMETHOD(GetPlaneIDs)(THIS_ LPDWORD, LPDWORD, DWORD) PURE;
   4645     STDMETHOD(GetPlane) (THIS_ DWORD id, IDirect3DRMFrame3 *reference, D3DVECTOR *point,
   4646             D3DVECTOR *normal, DWORD flags) PURE;
   4647     STDMETHOD(SetPlane) (THIS_ DWORD id, IDirect3DRMFrame3 *reference, D3DVECTOR *point,
   4648             D3DVECTOR *normal, DWORD flags) PURE;
   4649 };
   4650 #undef INTERFACE
   4651 
   4652 #if !defined(__cplusplus) || defined(CINTERFACE)
   4653 /*** IUnknown methods ***/
   4654 #define IDirect3DRMClippedVisual_QueryInterface(p,a,b)                   (p)->lpVtbl->QueryInterface(p,a,b)
   4655 #define IDirect3DRMClippedVisual_AddRef(p)                               (p)->lpVtbl->AddRef(p)
   4656 #define IDirect3DRMClippedVisual_Release(p)                              (p)->lpVtbl->Release(p)
   4657 /*** IDirect3DRMObject methods ***/
   4658 #define IDirect3DRMClippedVisual_Clone(p,a,b,c)                          (p)->lpVtbl->Clone(p,a,b,c)
   4659 #define IDirect3DRMClippedVisual_AddDestroyCallback(p,a,b)               (p)->lpVtbl->AddDestroyCallback(p,a,b)
   4660 #define IDirect3DRMClippedVisual_DeleteDestroyCallback(p,a,b)            (p)->lpVtbl->DeleteDestroyCallback(p,a,b)
   4661 #define IDirect3DRMClippedVisual_SetAppData(p,a)                         (p)->lpVtbl->SetAppData(p,a)
   4662 #define IDirect3DRMClippedVisual_GetAppData(p)                           (p)->lpVtbl->GetAppData(p)
   4663 #define IDirect3DRMClippedVisual_SetName(p,a)                            (p)->lpVtbl->SetName(p,a)
   4664 #define IDirect3DRMClippedVisual_GetName(p,a,b)                          (p)->lpVtbl->GetName(p,a,b)
   4665 #define IDirect3DRMClippedVisual_GetClassName(p,a,b)                     (p)->lpVtbl->GetClassName(p,a,b)
   4666 /*** IDirect3DRMClippedVisual methods ***/
   4667 #define IDirect3DRMClippedVisual_Init(p,a)                               (p)->lpVtbl->Init(p,a)
   4668 #define IDirect3DRMClippedVisual_AddPlane(p,a,b,c,d,e)                   (p)->lpVtbl->AddPlane(p,a,b,c,d,e)
   4669 #define IDirect3DRMClippedVisual_DeletePlane(p,a,b)                      (p)->lpVtbl->DeletePlane(p,a,b)
   4670 #define IDirect3DRMClippedVisual_GetPlaneIDs(p,a,b,c)                    (p)->lpVtbl->GetPlaneIDs(p,a,b,c)
   4671 #define IDirect3DRMClippedVisual_GetPlane(p,a,b,c,d,e)                   (p)->lpVtbl->GetPlane(p,a,b,c,d,e)
   4672 #define IDirect3DRMClippedVisual_SetPlane(p,a,b,c,d,e)                   (p)->lpVtbl->SetPlane(p,a,b,c,d,e)
   4673 #else
   4674 /*** IUnknown methods ***/
   4675 #define IDirect3DRMClippedVisual_QueryInterface(p,a,b)                   (p)->QueryInterface(a,b)
   4676 #define IDirect3DRMClippedVisual_AddRef(p)                               (p)->AddRef()
   4677 #define IDirect3DRMClippedVisual_Release(p)                              (p)->Release()
   4678 /*** IDirect3DRMObject methods ***/
   4679 #define IDirect3DRMClippedVisual_Clone(p,a,b,c)                          (p)->Clone(a,b,c)
   4680 #define IDirect3DRMClippedVisual_AddDestroyCallback(p,a,b)               (p)->AddDestroyCallback(a,b)
   4681 #define IDirect3DRMClippedVisual_DeleteDestroyCallback(p,a,b)            (p)->DeleteDestroyCallback(a,b)
   4682 #define IDirect3DRMClippedVisual_SetAppData(p,a)                         (p)->SetAppData(a)
   4683 #define IDirect3DRMClippedVisual_GetAppData(p)                           (p)->GetAppData()
   4684 #define IDirect3DRMClippedVisual_SetName(p,a)                            (p)->SetName(a)
   4685 #define IDirect3DRMClippedVisual_GetName(p,a,b)                          (p)->GetName(a,b)
   4686 #define IDirect3DRMClippedVisual_GetClassName(p,a,b)                     (p)->GetClassName(a,b)
   4687 /*** IDirect3DRMClippedVisual methods ***/
   4688 #define IDirect3DRMClippedVisual_Init(p,a)                               (p)->Init(a)
   4689 #define IDirect3DRMClippedVisual_AddPlane(p,a,b,c,d,e)                   (p)->AddPlane(a,b,c,d,e)
   4690 #define IDirect3DRMClippedVisual_DeletePlane(p,a,b)                      (p)->DeletePlane(a,b)
   4691 #define IDirect3DRMClippedVisual_GetPlaneIDs(p,a,b,c)                    (p)->GetPlaneIDs(a,b,c)
   4692 #define IDirect3DRMClippedVisual_GetPlane(p,a,b,c,d,e)                   (p)->GetPlane(a,b,c,d,e)
   4693 #define IDirect3DRMClippedVisual_SetPlane(p,a,b,c,d,e)                   (p)->SetPlane(a,b,c,d,e)
   4694 #endif
   4695 
   4696 #ifdef __cplusplus
   4697 };
   4698 #endif
   4699 
   4700 #endif /* __D3DRMOBJ_H__ */
   4701