text: //+-------------------------------------------------------------------------
  //
  //  Microsoft Windows
  //
  //  Copyright (C) Microsoft Corporation, 1998 - 1998
  //
  //  File:       d3drmclippedvisualobj.cpp
  //
  //--------------------------------------------------------------------------
  
  // d3dRMClippedVisualObj.cpp : Implementation of CDirectApp and DLL registration.
  
  #include "stdafx.h"
  #include "Direct.h"
  #include "dms.h"
  #include "d3dRMClippedVisualObj.h"
  
  CONSTRUCTOR(_dxj_Direct3dRMClippedVisual, {});
  DESTRUCTOR(_dxj_Direct3dRMClippedVisual, {});
  GETSET_OBJECT(_dxj_Direct3dRMClippedVisual);
  
  CLONE_R(_dxj_Direct3dRMClippedVisual,Direct3DRMClippedVisual);
  GETNAME_R(_dxj_Direct3dRMClippedVisual);
  SETNAME_R(_dxj_Direct3dRMClippedVisual);
  GETCLASSNAME_R(_dxj_Direct3dRMClippedVisual);
  ADDDESTROYCALLBACK_R(_dxj_Direct3dRMClippedVisual);
  DELETEDESTROYCALLBACK_R(_dxj_Direct3dRMClippedVisual);
  PASS_THROUGH_CAST_1_R(_dxj_Direct3dRMClippedVisual, setAppData, SetAppData, long,(DWORD));
  GET_DIRECT_R(_dxj_Direct3dRMClippedVisual, getAppData, GetAppData, long);
  
  
  //PASS_THROUGH_CAST_2_R(_dxj_Direct3dRMClippedVisual, deletePlane, DeletePlane, long,(DWORD),long,(DWORD));
  
  
  
  STDMETHODIMP C_dxj_Direct3dRMClippedVisualObject::deletePlane( long id) {
  	HRESULT hr;
  	hr = m__dxj_Direct3dRMClippedVisual->DeletePlane(id,0);
  	return hr;
  }
  
  
  /////////////////////////////////////////////////////////////////////////////
  STDMETHODIMP C_dxj_Direct3dRMClippedVisualObject::addPlane( 
              /* [in] */ I_dxj_Direct3dRMFrame3 __RPC_FAR *ref,
              /* [out][in] */ D3dVector __RPC_FAR *point,
              /* [out][in] */ D3dVector __RPC_FAR *normal,
              ///* [in] */ long flags,
              /* [retval][out] */ long __RPC_FAR *ret)
  {
  	HRESULT hr;
  	if (!point) return E_INVALIDARG;
  	if (!normal) return E_INVALIDARG;
  
  	DO_GETOBJECT_NOTNULL(LPDIRECT3DRMFRAME3,lpFrame,ref);
  
  	hr = m__dxj_Direct3dRMClippedVisual->AddPlane(
  			lpFrame,
  			(D3DVECTOR*) point,
  			(D3DVECTOR*) normal,
  			(DWORD) 0,
  			(DWORD*)ret);
  
  	return hr;			
  }
  
  /////////////////////////////////////////////////////////////////////////////
  STDMETHODIMP C_dxj_Direct3dRMClippedVisualObject::getPlane( 
  			/* [in] */ long id,											
              /* [in] */ I_dxj_Direct3dRMFrame3 __RPC_FAR *ref,
              /* [out][in] */ D3dVector __RPC_FAR *point,
              /* [out][in] */ D3dVector __RPC_FAR *normal
              ///* [in] */ long flags
  			)
  {
  	HRESULT hr;
  	if (!point) return E_INVALIDARG;
  	if (!normal) return E_INVALIDARG;
  
  	DO_GETOBJECT_NOTNULL(LPDIRECT3DRMFRAME3,lpFrame,ref);
  
  	hr = m__dxj_Direct3dRMClippedVisual->GetPlane(
  			(DWORD)id,
  			lpFrame,
  			(D3DVECTOR*) point,
  			(D3DVECTOR*) normal,
  			(DWORD) 0);	
  
  	return hr;			
  }
  
  
  /////////////////////////////////////////////////////////////////////////////
  STDMETHODIMP C_dxj_Direct3dRMClippedVisualObject::setPlane( 
  			/* [in] */ long id,											
              /* [in] */ I_dxj_Direct3dRMFrame3 __RPC_FAR *ref,
              /* [out][in] */ D3dVector __RPC_FAR *point,
              /* [out][in] */ D3dVector __RPC_FAR *normal
              ///* [in] */ long flags
  			)
  {
  	HRESULT hr;
  	if (!point) return E_INVALIDARG;
  	if (!normal) return E_INVALIDARG;
  
  	DO_GETOBJECT_NOTNULL(LPDIRECT3DRMFRAME3,lpFrame,ref);
  
  	hr = m__dxj_Direct3dRMClippedVisual->SetPlane(
  			(DWORD)id,
  			lpFrame,
  			(D3DVECTOR*) point,
  			(D3DVECTOR*) normal,
  			(DWORD) 0);	
  
  	return hr;			
  }
  
  /////////////////////////////////////////////////////////////////////////////
  STDMETHODIMP C_dxj_Direct3dRMClippedVisualObject::getPlaneIdsCount( 
  			/* [in] */ long *count)	
  {
  	HRESULT hr;
  	hr = m__dxj_Direct3dRMClippedVisual->GetPlaneIDs((DWORD*)count,NULL,0);
  
  	return hr;			
  }
  
  
  
  /////////////////////////////////////////////////////////////////////////////
  STDMETHODIMP C_dxj_Direct3dRMClippedVisualObject::getPlaneIds( 
              /* [in] */ long count,
              /* [out][in] */ SAFEARRAY __RPC_FAR * __RPC_FAR *arrayOfIds) \
  {
  	HRESULT hr;
  	if (!ISSAFEARRAY1D(arrayOfIds,(DWORD)count)) return E_INVALIDARG;
  
  	hr = m__dxj_Direct3dRMClippedVisual->GetPlaneIDs((DWORD*)&count,
  			(DWORD*)(((SAFEARRAY *)*arrayOfIds)->pvData),0);
  
  	return hr;			
  	//getDibits
  }
  