FINFO3D.H

#ifndef __FILEINFO3D_H__ 
#define __FILEINFO3D_H__

#include "FileInfo.h"

#define CONEVOL_MIN-10000
#define CONEVOL_MAX0
#define CONEVOL_SLIDER_FACTOR100
#define CONEVOL_SLIDER_SHIFT10000
#define CONEVOL_SLIDER_PAGE500

#define X_SLIDER_FACTOR1
#define Y_SLIDER_FACTOR1
#define Z_SLIDER_FACTOR1
#define MUTEMAX_SLIDER_FACTOR1
#define MINDIST_SLIDER_FACTOR1

#define POS_SLIDER_MIN-50// Centimeters
#define POS_SLIDER_MAX50// Centimeters
#define POS_SLIDER_SHIFT50// Shift so min is 0

#define MUTEMAX_SLIDER_MIN0// Centimeters
#define MUTEMAX_SLIDER_MAX100// Centimeters
#define MINDIST_SLIDER_MIN0// Centimeters
#define MINDIST_SLIDER_MAX100// Centimeters

#define FI3D_DEFAULT_INNER_ANGLE 90
#define FI3D_DEFAULT_OUTER_ANGLE 120

typedef struct tag_ht3d
{
HWND hXSlider, hYSlider, hZSlider;
HWND hVxSlider, hVySlider, hVzSlider;
HWND hXText, hYText, hZText;
HWND hVxText, hVyText, hVzText;
HWND hOuterVolText, hOuterVolSlider;
HWND hInnerAngleEdit, hInnerAngleSpin;
HWND hOuterAngleEdit, hOuterAngleSpin;
HWND hMaxDistSlider, hMaxDistText, hMinDistSlider, hMinDistText, hCurDistText;
HWND hDisable3D;
} HWNDTABLE3D;



class FileInfo3D : public FileInfo
{
friend BOOL CALLBACK FileInfo3DDlgProc( HWND, UINT, WPARAM, LPARAM );

public:
FileInfo3D( MainWnd *pmw = NULL );
virtual ~FileInfo3D();

virtual int NewDirectSoundBuffer( void );

virtual void Duplicate( FileInfo * );

virtual void UpdateUI( void );
virtual void UpdateFileName( void );

// Useful protected member functions
protected:
virtual BOOL OnInitDialog( HWND, WPARAM );
virtual BOOL OnCommand( WPARAM, LPARAM );
virtual BOOL OnHScroll( WORD, LONG, HWND );
virtual BOOL OnContextMenu( HWND, int, int );
virtual void OnDestroy();

virtual BOOL CreateInterface( HWND );
virtual void SetSliders( void );

void HandleOuterVolSliderScroll( WORD, LONG );
void HandleXSliderScroll( WORD, LONG );
void HandleYSliderScroll( WORD, LONG );
void HandleZSliderScroll( WORD, LONG );
void HandleVxSliderScroll( WORD, LONG );
void HandleVySliderScroll( WORD, LONG );
void HandleVzSliderScroll( WORD, LONG );
void HandleMaxDistSliderScroll( WORD, LONG );
void HandleMinDistSliderScroll( WORD, LONG );

BOOL HandleConeInnerEditNotify( WPARAM, LPARAM );
BOOL HandleConeOuterEditNotify( WPARAM, LPARAM );

BOOL HandleDisableNotify( WPARAM, LPARAM );

BOOL HandleOuterVolContext( WPARAM );
BOOL HandlePositionContext( WPARAM );
BOOL HandleVelocityContext( WPARAM );

void UpdateOuterVolUI( LONG, BOOL );
void UpdateXSliderUI( LONG, BOOL );
void UpdateYSliderUI( LONG, BOOL );
void UpdateZSliderUI( LONG, BOOL );
void UpdateVxSliderUI( LONG, BOOL );
void UpdateVySliderUI( LONG, BOOL );
void UpdateVzSliderUI( LONG, BOOL );
void UpdateMuteMaxSliderUI( LONG, BOOL );
void UpdateMinDistSliderUI( LONG, BOOL );
public:
void UpdateCurrentDistUI( void );
void UpdatePosAndVelo( void );

protected:
HWNDTABLE3D m_ht3d;
D3DVECTOR m_vPos;
D3DVECTOR m_vVelo;
D3DVALUE m_flMaxDistance;
D3DVALUE m_flMinDistance;
DWORD m_dwInnerAngle, m_dwOuterAngle;

LPDIRECTSOUND3DBUFFER m_pDSB3D;// DirectSound 3D buffer interface
};


typedef FileInfo3D *PFILEINFO3D;

BOOL CALLBACK FileInfo3DDlgProc( HWND, UINT, WPARAM, LPARAM );

#endif