// Lighting03View.h : interface of the CLighting03View class
//
/////////////////////////////////////////////////////////////////////////////

#include <gl\gl.h>
#include <gl\glu.h>

enum {Cube, Sphere};

#if !defined(AFX_LIGHTING03VIEW_H__1F4D4EAC_75A6_11D7_B5B9_00106090150C__INCLUDED_)
#define AFX_LIGHTING03VIEW_H__1F4D4EAC_75A6_11D7_B5B9_00106090150C__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000


class CLighting03View : public CView
{
protected: // create from serialization only
        CLighting03View();
        DECLARE_DYNCREATE(CLighting03View)

// Attributes
public:
        CLighting03Doc* GetDocument();

protected:
    HGLRC m_hRC;
    GLfloat m_materialAmbient[4];
    GLfloat m_materialSpecular[4];
    GLfloat m_materialEmitted[4];
    GLfloat m_ambientLight0[4];
    GLfloat m_diffuseLight0[4];
    GLfloat m_specularLight0[4];
    GLfloat m_positionLight0[4];
    GLfloat m_shininess;
    UINT m_currentObject;

// Operations
public:

// Overrides
        // ClassWizard generated virtual function overrides
        //{{AFX_VIRTUAL(CLighting03View)
        public:
        virtual void OnDraw(CDC* pDC);  // overridden to draw this view
        virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
        protected:
        //}}AFX_VIRTUAL

// Implementation
public:
        virtual ~CLighting03View();
#ifdef _DEBUG
        virtual void AssertValid() const;
        virtual void Dump(CDumpContext& dc) const;
#endif

protected:

// Generated message map functions
protected:
        void CalcNormal(double *p1,double *p2, double *p3, double *n);
        void DrawSphere();
        void DrawCube();
        void DrawWithOpenGL();
        //{{AFX_MSG(CLighting03View)
        afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
        afx_msg void OnDestroy();
        afx_msg void OnSize(UINT nType, int cx, int cy);
        afx_msg void OnObjectCube();
        afx_msg void OnObjectSphere();
        //}}AFX_MSG
        DECLARE_MESSAGE_MAP()
};

#ifndef _DEBUG  // debug version in Lighting03View.cpp
inline CLighting03Doc* CLighting03View::GetDocument()
   { return (CLighting03Doc*)m_pDocument; }
#endif

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

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_LIGHTING03VIEW_H__1F4D4EAC_75A6_11D7_B5B9_00106090150C__INCLUDED_)