// WedgeDisplay.h: interface for the CWedgeDisplay class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_WEDGEDISPLAY_H__576C2F41_9EB5_4CAD_B93C_1EC81279BFC9__INCLUDED_)
#define AFX_WEDGEDISPLAY_H__576C2F41_9EB5_4CAD_B93C_1EC81279BFC9__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "OpenGLBase.h"

#define TRIANGLES 3

#define YAXIS_DIV	 6.0f
#define XAXIS_DIV	 10.0f

#define TOP_LT_X	-0.6f
#define TOP_LT_Y	 0.0f
#define TOP_RT_X	 0.7f
#define TOP_RT_Y	 TOP_LT_Y
#define BOT_RT_X	 TOP_RT_X
#define BOT_RT_Y	 -1.0f
#define BOT_LT_X	 TOP_LT_X
#define BOT_LT_Y	 BOT_RT_Y

//these provide the toggle function arguments
typedef enum tagLABELS
{
	RANGE = 0,
	TIME,
	SAMPLES

}LABELS;



class CWedgeDisplay : public COpenGLBase  
{
 
public:


				DECLARE_DYNCREATE(CWedgeDisplay);

								CWedgeDisplay		();
	virtual                     ~CWedgeDisplay		();


				DWORD			Render				(	BOOL flag );
				
				DWORD			SetOrtho			(	void );
				
				DWORD			ToggleGridLines		(	void );
				
				DWORD			SetGridLines		(	BOOL		bGridLines);

				DWORD			BathyPoints			(	BOOL		bOn);
				
				DWORD			SetFLS				(	BOOL		bFLS);

				DWORD			SetLabels			(	UINT		labeltype );
				
				DWORD			DrawBathy			(	void );
				
				DWORD			SetBathyData		(	BYTE		*pData, 
														double		dSoundVelocity );

				DWORD			CheckInsideSector	(	double		dAngle );

				DWORD			SetCurrentContext	(	void );

				DWORD			ResizeGL			(	int			x, 
														int			y );

				DWORD			SetPalette			(	DWORD		dwPalette );

				DWORD			SetWedgeGeometry	(	DWORD		dwBeams, 
														double		dFirstBeam, 
														double		dLastBeam, 
														float		*pAllBeams,
														DWORD		dwUniformSpacing);

				DWORD			SetRange			(	double		dRange );

				DWORD			SetTime				(	double		dTime );

				//

				DWORD			SetParent			(	CWnd		*pParentWnd, 
														CWnd		*pCtrlDlg );

				DWORD			SetRectangular		(	BOOL		bRectangular );

				DWORD			SetStave			(	BOOL		bStaveOn );

				DWORD			GridLinesRectangular(	void );

				DWORD			DrawRectangular		(	void );

				DWORD			SetFreeze			(	BOOL		bFreeze );

				DWORD			SetAScan			(	BOOL		bAScan );

				DWORD			SetFlip				(	BOOL		bFlip );

				DWORD			SetBrightness		(	BYTE		cBrightness );

				DWORD			SetContrast			(	BYTE		cContrast );

				DWORD			ApplyPalette		(	void );

				DWORD			AdjustPalette		(	BYTE		cBrightness, 
														BYTE		cContrast );

				DWORD			DownloadTexture		(	void );

                DWORD           SetInfo				(	WEDGEINFO	*stWedgeInfo,
														DWORD		devID,
														WORD		sysEnum );

				DWORD			SetSampleCount		(	DWORD		samples );

                DWORD           SetData				(	BYTE		*pData, 
														DWORD		dwWidth, 
														DWORD		dwHeight );
                  
//              DWORD           DrawMeasureLine();
      
                CWnd     *      m_pParentWnd;
                CWnd     *      m_pCtrlDlg;

  afx_msg       void            OnPaint				();
  
  afx_msg       BOOL            OnEraseBkgnd		(	CDC*		pDC);
  
  afx_msg       void            OnSize				(	UINT		nType, 
														int			cx, 
														int			cy );

  afx_msg       void            OnMouseMove			(	UINT		nFlags, 
														CPoint		point );
  
  afx_msg       void            OnLButtonDown		(	UINT, CPoint );
  
  afx_msg       void            OnTimer				(	UINT		uId );

  afx_msg		void			OnKeyDown			(	UINT		nChar, 
														UINT		nRepCnt, 
														UINT		nFlags );

  afx_msg		void			OnRButtonDown		(	UINT		nFlags, 
														CPoint		point );


  
  DECLARE_MESSAGE_MAP()
        
protected:

                  
                DWORD           InitWedge();

	            DWORD           DrawWedge();
                DWORD           GridLines(DWORD dwState);
                void            RampColor(int first, int last, int r1, int g1, int b1, int r2, int g2, int b2);
                
                double          m_fMouseCoordX;
                double          m_fMouseCoordY;
                double          m_fMouseCoordBDX;
                double          m_fMouseCoordBDY;

                double          m_dMinCoord;
                double          m_dMaxCoord;
                double          m_fZ;
                double          m_fX;
                double          m_fY;

public:
                BOOL            m_bFlip;
                BOOL            m_bRectangular;
				BOOL			m_bStave;
                BOOL            m_bGridLines;
                BOOL            m_bAScan;
                BOOL            m_bFreeze;
				BOOL			m_bBathy;
                DWORD           m_dwSelectedBeam;
                BOOL            m_bLMouseDown;
				
				DWORD           m_dwPalette;
                BYTE            m_cContrast;
                BYTE            m_cBrightness;

				BOOL            m_bFLS;                       // Forward looking sonar wedge.

				DWORD			m_dwUniformSpacing;
				DWORD           m_dwNonUniformStart;

protected:
				double          sin_array[4096];
                double          cos_array[4096];
                BYTE   *        m_pModifiedTexture;
                DWORD           m_dwWidth;
                DWORD           m_dwHeight;
				DWORD			m_dSamples;
				double			m_dTime;
				double			m_dLastRange;

				CPoint			m_lastPoint;
				UINT			m_flags;

	

                WEDGEINFO       m_stWedgeInfo;
                BYTE         *  m_pPalette;
				DWORD			m_dwDeviceId; 
				WORD			m_wEnumerator;

				LABELS			m_eLabelType;
                

                BOOL            m_bHardwarePalette;

                BOOL            m_bInitWedge;
                BOOL            m_bReceivedData;

                float           m_fBathyRanges[1024];
                double          m_dSoundVelocity;


                DWORD           m_dwVertices;
};

#endif // !defined(AFX_WEDGEDISPLAY_H__576C2F41_9EB5_4CAD_B93C_1EC81279BFC9__INCLUDED_)
