Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
27
Добавлен:
01.05.2014
Размер:
45.11 Кб
Скачать
// oglshvw.cpp : implementation of the COglshapeView class
//

#include "stdafx.h"
#include "oglshape.h"

#include "oglshdoc.h"
#include "oglshvw.h"

#include "ScissorSqr.h"
#include "AlphaDlg.h"

#ifdef _DEBUG
#undef THIS_FILE
static char BASED_CODE THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// COglshapeView

IMPLEMENT_DYNCREATE(COglshapeView, CView)

BEGIN_MESSAGE_MAP(COglshapeView, CView)
	//{{AFX_MSG_MAP(COglshapeView)
	ON_WM_CREATE()
	ON_WM_DESTROY()
	ON_COMMAND(ID_DRAW_LINELOOP, OnDrawLineloop)
	ON_UPDATE_COMMAND_UI(ID_DRAW_LINELOOP, OnUpdateDrawLineloop)
	ON_COMMAND(ID_DRAW_LINES, OnDrawLines)
	ON_UPDATE_COMMAND_UI(ID_DRAW_LINES, OnUpdateDrawLines)
	ON_COMMAND(ID_DRAW_LINESTRIP, OnDrawLinestrip)
	ON_UPDATE_COMMAND_UI(ID_DRAW_LINESTRIP, OnUpdateDrawLinestrip)
	ON_COMMAND(ID_DRAW_NONCONVEX, OnDrawNonconvex)
	ON_UPDATE_COMMAND_UI(ID_DRAW_NONCONVEX, OnUpdateDrawNonconvex)
	ON_COMMAND(ID_DRAW_POINTS, OnDrawPoints)
	ON_UPDATE_COMMAND_UI(ID_DRAW_POINTS, OnUpdateDrawPoints)
	ON_COMMAND(ID_DRAW_POLYGONS, OnDrawPolygons)
	ON_UPDATE_COMMAND_UI(ID_DRAW_POLYGONS, OnUpdateDrawPolygons)
	ON_COMMAND(ID_DRAW_QUADRILATERALS, OnDrawQuadrilaterals)
	ON_UPDATE_COMMAND_UI(ID_DRAW_QUADRILATERALS, OnUpdateDrawQuadrilaterals)
	ON_COMMAND(ID_DRAW_QUADSTRIP, OnDrawQuadstrip)
	ON_UPDATE_COMMAND_UI(ID_DRAW_QUADSTRIP, OnUpdateDrawQuadstrip)
	ON_COMMAND(ID_DRAW_TRIANGLEFAN, OnDrawTrianglefan)
	ON_UPDATE_COMMAND_UI(ID_DRAW_TRIANGLEFAN, OnUpdateDrawTrianglefan)
	ON_COMMAND(ID_DRAW_TRIANGLES, OnDrawTriangles)
	ON_UPDATE_COMMAND_UI(ID_DRAW_TRIANGLES, OnUpdateDrawTriangles)
	ON_COMMAND(ID_DRAW_TRIANGLESTRIP, OnDrawTrianglestrip)
	ON_UPDATE_COMMAND_UI(ID_DRAW_TRIANGLESTRIP, OnUpdateDrawTrianglestrip)
	ON_COMMAND(ID_TEST_SCISSOR_BEGIN, OnTestScissorBegin)
	ON_UPDATE_COMMAND_UI(ID_TEST_SCISSOR_BEGIN, OnUpdateTestScissorBegin)
	ON_COMMAND(ID_TEST_SCISSOR_CREATE, OnTestScissorCreate)
	ON_COMMAND(ID_TEST_SCISSOR_END, OnTestScissorEnd)
	ON_UPDATE_COMMAND_UI(ID_TEST_SCISSOR_END, OnUpdateTestScissorEnd)
	ON_COMMAND(ID_TEST_ALPHA_GLNEVER, OnTestAlphaGlnever)
	ON_UPDATE_COMMAND_UI(ID_TEST_ALPHA_GLNEVER, OnUpdateTestAlphaGlnever)
	ON_COMMAND(ID_TEST_ALPHA_GLLESS, OnTestAlphaGlless)
	ON_UPDATE_COMMAND_UI(ID_TEST_ALPHA_GLLESS, OnUpdateTestAlphaGlless)
	ON_COMMAND(ID_TEST_ALPHA_GLEQUAL, OnTestAlphaGlequal)
	ON_UPDATE_COMMAND_UI(ID_TEST_ALPHA_GLEQUAL, OnUpdateTestAlphaGlequal)
	ON_COMMAND(ID_TEST_ALPHA_GLLEQUAL, OnTestAlphaGllequal)
	ON_UPDATE_COMMAND_UI(ID_TEST_ALPHA_GLLEQUAL, OnUpdateTestAlphaGllequal)
	ON_COMMAND(ID_TEST_ALPHA_GLGREATER, OnTestAlphaGlgreater)
	ON_UPDATE_COMMAND_UI(ID_TEST_ALPHA_GLGREATER, OnUpdateTestAlphaGlgreater)
	ON_COMMAND(ID_TEST_ALPHA_GLNOTEQUAL, OnTestAlphaGlnotequal)
	ON_COMMAND(ID_TEST_ALPHA_GLGEQUAL, OnTestAlphaGlgequal)
	ON_UPDATE_COMMAND_UI(ID_TEST_ALPHA_GLGEQUAL, OnUpdateTestAlphaGlgequal)
	ON_COMMAND(ID_TEST_ALPHA_GLALWAYS, OnTestAlphaGlalways)		
	ON_UPDATE_COMMAND_UI(ID_TEST_ALPHA_GLALWAYS, OnUpdateTestAlphaGlalways)
	ON_COMMAND(ID_TEST_ALPHA_START, OnTestAlphaStart)
	ON_COMMAND(ID_TEST_BLEND_SFACTOR_GLZERO, OnTestBlendSfactorGlzero)
	ON_UPDATE_COMMAND_UI(ID_TEST_BLEND_SFACTOR_GLZERO, OnUpdateTestBlendSfactorGlzero)
	ON_COMMAND(ID_TEST_BLEND_SFACTOR_GLSRCALPHASATURATE, OnTestBlendSfactorGlsrcalphasaturate)
	ON_UPDATE_COMMAND_UI(ID_TEST_BLEND_SFACTOR_GLSRCALPHASATURATE, OnUpdateTestBlendSfactorGlsrcalphasaturate)
	ON_COMMAND(ID_TEST_BLEND_SFACTOR_GLSRCALPHA, OnTestBlendSfactorGlsrcalpha)
	ON_UPDATE_COMMAND_UI(ID_TEST_BLEND_SFACTOR_GLSRCALPHA, OnUpdateTestBlendSfactorGlsrcalpha)
	ON_COMMAND(ID_TEST_BLEND_SFACTOR_GLONEMINUSSRCALPHA, OnTestBlendSfactorGloneminussrcalpha)
	ON_UPDATE_COMMAND_UI(ID_TEST_BLEND_SFACTOR_GLONEMINUSSRCALPHA, OnUpdateTestBlendSfactorGloneminussrcalpha)
	ON_COMMAND(ID_TEST_BLEND_SFACTOR_GLONEMINUSDSTCOLOR, OnTestBlendSfactorGloneminusdstcolor)
	ON_UPDATE_COMMAND_UI(ID_TEST_BLEND_SFACTOR_GLONEMINUSDSTCOLOR, OnUpdateTestBlendSfactorGloneminusdstcolor)
	ON_COMMAND(ID_TEST_BLEND_SFACTOR_GLONEMINUSDSTALPHA, OnTestBlendSfactorGloneminusdstalpha)
	ON_UPDATE_COMMAND_UI(ID_TEST_BLEND_SFACTOR_GLONEMINUSDSTALPHA, OnUpdateTestBlendSfactorGloneminusdstalpha)
	ON_COMMAND(ID_TEST_BLEND_SFACTOR_GLONE, OnTestBlendSfactorGlone)
	ON_UPDATE_COMMAND_UI(ID_TEST_BLEND_SFACTOR_GLONE, OnUpdateTestBlendSfactorGlone)
	ON_COMMAND(ID_TEST_BLEND_SFACTOR_GLDSTCOLOR, OnTestBlendSfactorGldstcolor)
	ON_UPDATE_COMMAND_UI(ID_TEST_BLEND_SFACTOR_GLDSTCOLOR, OnUpdateTestBlendSfactorGldstcolor)
	ON_COMMAND(ID_TEST_BLEND_SFACTOR_GLDSTALPHA, OnTestBlendSfactorGldstalpha)
	ON_UPDATE_COMMAND_UI(ID_TEST_BLEND_SFACTOR_GLDSTALPHA, OnUpdateTestBlendSfactorGldstalpha)
	ON_COMMAND(ID_TEST_BLEND_DFACTOR_GLZERO, OnTestBlendDfactorGlzero)
	ON_UPDATE_COMMAND_UI(ID_TEST_BLEND_DFACTOR_GLZERO, OnUpdateTestBlendDfactorGlzero)
	ON_COMMAND(ID_TEST_BLEND_DFACTOR_GLSRCCOLOR, OnTestBlendDfactorGlsrccolor)
	ON_UPDATE_COMMAND_UI(ID_TEST_BLEND_DFACTOR_GLSRCCOLOR, OnUpdateTestBlendDfactorGlsrccolor)
	ON_COMMAND(ID_TEST_BLEND_DFACTOR_GLSRCALPHA, OnTestBlendDfactorGlsrcalpha)
	ON_UPDATE_COMMAND_UI(ID_TEST_BLEND_DFACTOR_GLSRCALPHA, OnUpdateTestBlendDfactorGlsrcalpha)
	ON_COMMAND(ID_TEST_BLEND_DFACTOR_GLONEMINUSSRCCOLOR, OnTestBlendDfactorGloneminussrccolor)
	ON_UPDATE_COMMAND_UI(ID_TEST_BLEND_DFACTOR_GLONEMINUSSRCCOLOR, OnUpdateTestBlendDfactorGloneminussrccolor)
	ON_COMMAND(ID_TEST_BLEND_DFACTOR_GLONEMINUSSRCALPHA, OnTestBlendDfactorGloneminussrcalpha)
	ON_UPDATE_COMMAND_UI(ID_TEST_BLEND_DFACTOR_GLONEMINUSSRCALPHA, OnUpdateTestBlendDfactorGloneminussrcalpha)
	ON_COMMAND(ID_TEST_BLEND_DFACTOR_GLONEMINUSDSTALPHA, OnTestBlendDfactorGloneminusdstalpha)
	ON_UPDATE_COMMAND_UI(ID_TEST_BLEND_DFACTOR_GLONEMINUSDSTALPHA, OnUpdateTestBlendDfactorGloneminusdstalpha)
	ON_COMMAND(ID_TEST_BLEND_DFACTOR_GLONE, OnTestBlendDfactorGlone)
	ON_UPDATE_COMMAND_UI(ID_TEST_BLEND_DFACTOR_GLONE, OnUpdateTestBlendDfactorGlone)
	ON_COMMAND(ID_TEST_BLEND_DFACTOR_GLDSTALPHA, OnTestBlendDfactorGldstalpha)
	ON_UPDATE_COMMAND_UI(ID_TEST_BLEND_DFACTOR_GLDSTALPHA, OnUpdateTestBlendDfactorGldstalpha)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// COglshapeView construction/destruction

COglshapeView::COglshapeView()
{
	// TODO: add construction code here
	m_SqrS = NULL;
	m_Scissored = false;
	m_Alpha_func = GL_ALWAYS; 
	m_Alpha_ref = 0.0f;
	m_BlendSFactor = GL_ZERO;
	m_BlendDFactor = GL_ZERO;
//	m_Alpha_blend = 0.0f;

}

COglshapeView::~COglshapeView()
{
	if (m_SqrS != NULL)
		delete m_SqrS;
}

/////////////////////////////////////////////////////////////////////////////
// COglshapeView drawing

void COglshapeView::OnDraw(CDC* pDC)
{
	COglshapeDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);

	// TODO: add draw code for native data here

	///////////////////////////////////////
	///////////////////////////////////////
	// START CUSTOM CODE
	///////////////////////////////////////
	///////////////////////////////////////
	
    wglMakeCurrent(pDC->m_hDC, m_hRC);
    DrawWithOpenGL();
    wglMakeCurrent(pDC->m_hDC, NULL);

	///////////////////////////////////////
	///////////////////////////////////////
	// END CUSTOM CODE
	///////////////////////////////////////
	///////////////////////////////////////
}

/////////////////////////////////////////////////////////////////////////////
// COglshapeView diagnostics

#ifdef _DEBUG
void COglshapeView::AssertValid() const
{
	CView::AssertValid();
}

void COglshapeView::Dump(CDumpContext& dc) const
{
	CView::Dump(dc);
}

COglshapeDoc* COglshapeView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(COglshapeDoc)));
	return (COglshapeDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// COglshapeView message handlers

int COglshapeView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CView::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	// TODO: Add your specialized creation code here
	
	///////////////////////////////////////
	///////////////////////////////////////
	// START CUSTOM CODE
	///////////////////////////////////////
	///////////////////////////////////////
	
    PIXELFORMATDESCRIPTOR pfd =
    {
        sizeof(PIXELFORMATDESCRIPTOR), // Structure size.
        1,                             // Structure version number.
        PFD_DRAW_TO_WINDOW |           // Property flags.
            PFD_SUPPORT_OPENGL,
        PFD_TYPE_RGBA,
        24,                            // 24-bit color.
        0, 0, 0, 0, 0, 0,              // Not concerned with these.
        0, 0, 0, 0, 0, 0, 0,           // No alpha or accum buffer.
        32,                            // 32-bit depth buffer.
        0, 0,                          // No stencil or aux buffer.
        PFD_MAIN_PLANE,                // Main layer type.
        0,                             // Reserved.
        0, 0, 0                        // Unsupported.
    };

    CClientDC clientDC(this);

    int pixelFormat =
        ChoosePixelFormat(clientDC.m_hDC, &pfd);
    BOOL success =
        SetPixelFormat(clientDC.m_hDC, pixelFormat, &pfd);

    m_hRC = wglCreateContext(clientDC.m_hDC);

	///////////////////////////////////////
	///////////////////////////////////////
	// END CUSTOM CODE
	///////////////////////////////////////
	///////////////////////////////////////

	return 0;
}

void COglshapeView::OnDestroy() 
{
	CView::OnDestroy();
	
	// TODO: Add your message handler code here
	
	///////////////////////////////////////
	///////////////////////////////////////
	// START CUSTOM CODE
	///////////////////////////////////////
	///////////////////////////////////////
	
    wglDeleteContext(m_hRC);

	///////////////////////////////////////
	///////////////////////////////////////
	// END CUSTOM CODE
	///////////////////////////////////////
	///////////////////////////////////////
}

BOOL COglshapeView::PreCreateWindow(CREATESTRUCT& cs) 
{
	// TODO: Add your specialized code here and/or call the base class
	
	///////////////////////////////////////
	///////////////////////////////////////
	// START CUSTOM CODE
	///////////////////////////////////////
	///////////////////////////////////////
	
    cs.style |= WS_CLIPCHILDREN | WS_CLIPSIBLINGS;

	///////////////////////////////////////
	///////////////////////////////////////
	// END CUSTOM CODE
	///////////////////////////////////////
	///////////////////////////////////////

	return CView::PreCreateWindow(cs);
}

void COglshapeView::OnDrawLineloop() 
{
	// TODO: Add your command handler code here
	
	///////////////////////////////////////
	///////////////////////////////////////
	// START CUSTOM CODE
	///////////////////////////////////////
	///////////////////////////////////////
	
    m_shape = LineLoop;
    Invalidate();

	///////////////////////////////////////
	///////////////////////////////////////
	// END CUSTOM CODE
	///////////////////////////////////////
	///////////////////////////////////////
}

void COglshapeView::OnUpdateDrawLineloop(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	
	///////////////////////////////////////
	///////////////////////////////////////
	// START CUSTOM CODE
	///////////////////////////////////////
	///////////////////////////////////////
	
    if (m_shape == LineLoop)
        pCmdUI->SetCheck(TRUE);
    else
        pCmdUI->SetCheck(FALSE);

	///////////////////////////////////////
	///////////////////////////////////////
	// END CUSTOM CODE
	///////////////////////////////////////
	///////////////////////////////////////
}

void COglshapeView::OnDrawLines() 
{
	// TODO: Add your command handler code here
	
	///////////////////////////////////////
	///////////////////////////////////////
	// START CUSTOM CODE
	///////////////////////////////////////
	///////////////////////////////////////
	
    m_shape = Lines;
    Invalidate();

	///////////////////////////////////////
	///////////////////////////////////////
	// END CUSTOM CODE
	///////////////////////////////////////
	///////////////////////////////////////
}

void COglshapeView::OnUpdateDrawLines(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	
	///////////////////////////////////////
	///////////////////////////////////////
	// START CUSTOM CODE
	///////////////////////////////////////
	///////////////////////////////////////
	
    if (m_shape == Lines)
        pCmdUI->SetCheck(TRUE);
    else
        pCmdUI->SetCheck(FALSE);

	///////////////////////////////////////
	///////////////////////////////////////
	// END CUSTOM CODE
	///////////////////////////////////////
	///////////////////////////////////////
}

void COglshapeView::OnDrawLinestrip() 
{
	// TODO: Add your command handler code here
	
	///////////////////////////////////////
	///////////////////////////////////////
	// START CUSTOM CODE
	///////////////////////////////////////
	///////////////////////////////////////
	
    m_shape = LineStrip;
    Invalidate();

	///////////////////////////////////////
	///////////////////////////////////////
	// END CUSTOM CODE
	///////////////////////////////////////
	///////////////////////////////////////
}

void COglshapeView::OnUpdateDrawLinestrip(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	
	///////////////////////////////////////
	///////////////////////////////////////
	// START CUSTOM CODE
	///////////////////////////////////////
	///////////////////////////////////////
	
    if (m_shape == LineStrip)
        pCmdUI->SetCheck(TRUE);
    else
        pCmdUI->SetCheck(FALSE);

	///////////////////////////////////////
	///////////////////////////////////////
	// END CUSTOM CODE
	///////////////////////////////////////
	///////////////////////////////////////
}

void COglshapeView::OnDrawNonconvex() 
{
	// TODO: Add your command handler code here
	
	///////////////////////////////////////
	///////////////////////////////////////
	// START CUSTOM CODE
	///////////////////////////////////////
	///////////////////////////////////////
	
    m_shape = Nonconvex;
    Invalidate();

	///////////////////////////////////////
	///////////////////////////////////////
	// END CUSTOM CODE
	///////////////////////////////////////
	///////////////////////////////////////
}

void COglshapeView::OnUpdateDrawNonconvex(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	
	///////////////////////////////////////
	///////////////////////////////////////
	// START CUSTOM CODE
	///////////////////////////////////////
	///////////////////////////////////////
	
    if (m_shape == Nonconvex)
        pCmdUI->SetCheck(TRUE);
    else
        pCmdUI->SetCheck(FALSE);

	///////////////////////////////////////
	///////////////////////////////////////
	// END CUSTOM CODE
	///////////////////////////////////////
	///////////////////////////////////////
}

void COglshapeView::OnDrawPoints() 
{
	// TODO: Add your command handler code here
	
	///////////////////////////////////////
	///////////////////////////////////////
	// START CUSTOM CODE
	///////////////////////////////////////
	///////////////////////////////////////
	
    m_shape = Points;
    Invalidate();

	///////////////////////////////////////
	///////////////////////////////////////
	// END CUSTOM CODE
	///////////////////////////////////////
	///////////////////////////////////////
}

void COglshapeView::OnUpdateDrawPoints(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	
	///////////////////////////////////////
	///////////////////////////////////////
	// START CUSTOM CODE
	///////////////////////////////////////
	///////////////////////////////////////
	
    if (m_shape == Points)
        pCmdUI->SetCheck(TRUE);
    else
        pCmdUI->SetCheck(FALSE);

	///////////////////////////////////////
	///////////////////////////////////////
	// END CUSTOM CODE
	///////////////////////////////////////
	///////////////////////////////////////
}

void COglshapeView::OnDrawPolygons() 
{
	// TODO: Add your command handler code here
	
	///////////////////////////////////////
	///////////////////////////////////////
	// START CUSTOM CODE
	///////////////////////////////////////
	///////////////////////////////////////
	
    m_shape = Polygons;
    Invalidate();

	///////////////////////////////////////
	///////////////////////////////////////
	// END CUSTOM CODE
	///////////////////////////////////////
	///////////////////////////////////////
}

void COglshapeView::OnUpdateDrawPolygons(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	
	///////////////////////////////////////
	///////////////////////////////////////
	// START CUSTOM CODE
	///////////////////////////////////////
	///////////////////////////////////////
	
    if (m_shape == Polygons)
        pCmdUI->SetCheck(TRUE);
    else
        pCmdUI->SetCheck(FALSE);

	///////////////////////////////////////
	///////////////////////////////////////
	// END CUSTOM CODE
	///////////////////////////////////////
	///////////////////////////////////////
}

void COglshapeView::OnDrawQuadrilaterals() 
{
	// TODO: Add your command handler code here
	
	///////////////////////////////////////
	///////////////////////////////////////
	// START CUSTOM CODE
	///////////////////////////////////////
	///////////////////////////////////////
	
    m_shape = Quads;
    Invalidate();

	///////////////////////////////////////
	///////////////////////////////////////
	// END CUSTOM CODE
	///////////////////////////////////////
	///////////////////////////////////////
}

void COglshapeView::OnUpdateDrawQuadrilaterals(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	
	///////////////////////////////////////
	///////////////////////////////////////
	// START CUSTOM CODE
	///////////////////////////////////////
	///////////////////////////////////////
	
    if (m_shape == Quads)
        pCmdUI->SetCheck(TRUE);
    else
        pCmdUI->SetCheck(FALSE);

	///////////////////////////////////////
	///////////////////////////////////////
	// END CUSTOM CODE
	///////////////////////////////////////
	///////////////////////////////////////
}

void COglshapeView::OnDrawQuadstrip() 
{
	// TODO: Add your command handler code here
	
	///////////////////////////////////////
	///////////////////////////////////////
	// START CUSTOM CODE
	///////////////////////////////////////
	///////////////////////////////////////
	
    m_shape = QuadStrip;
    Invalidate();

	///////////////////////////////////////
	///////////////////////////////////////
	// END CUSTOM CODE
	///////////////////////////////////////
	///////////////////////////////////////
}

void COglshapeView::OnUpdateDrawQuadstrip(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	
	///////////////////////////////////////
	///////////////////////////////////////
	// START CUSTOM CODE
	///////////////////////////////////////
	///////////////////////////////////////
	
    if (m_shape == QuadStrip)
        pCmdUI->SetCheck(TRUE);
    else
        pCmdUI->SetCheck(FALSE);

	///////////////////////////////////////
	///////////////////////////////////////
	// END CUSTOM CODE
	///////////////////////////////////////
	///////////////////////////////////////
}

void COglshapeView::OnDrawTrianglefan() 
{
	// TODO: Add your command handler code here
	
	///////////////////////////////////////
	///////////////////////////////////////
	// START CUSTOM CODE
	///////////////////////////////////////
	///////////////////////////////////////
	
    m_shape = TriangleFan;
    Invalidate();

	///////////////////////////////////////
	///////////////////////////////////////
	// END CUSTOM CODE
	///////////////////////////////////////
	///////////////////////////////////////
}

void COglshapeView::OnUpdateDrawTrianglefan(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	
	///////////////////////////////////////
	///////////////////////////////////////
	// START CUSTOM CODE
	///////////////////////////////////////
	///////////////////////////////////////
	
    if (m_shape == TriangleFan)
        pCmdUI->SetCheck(TRUE);
    else
        pCmdUI->SetCheck(FALSE);

	///////////////////////////////////////
	///////////////////////////////////////
	// END CUSTOM CODE
	///////////////////////////////////////
	///////////////////////////////////////
}

void COglshapeView::OnDrawTriangles() 
{
	// TODO: Add your command handler code here
	
	///////////////////////////////////////
	///////////////////////////////////////
	// START CUSTOM CODE
	///////////////////////////////////////
	///////////////////////////////////////
	
    m_shape = Triangles;
    Invalidate();

	///////////////////////////////////////
	///////////////////////////////////////
	// END CUSTOM CODE
	///////////////////////////////////////
	///////////////////////////////////////
}

void COglshapeView::OnUpdateDrawTriangles(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	
	///////////////////////////////////////
	///////////////////////////////////////
	// START CUSTOM CODE
	///////////////////////////////////////
	///////////////////////////////////////
	
    if (m_shape == Triangles)
        pCmdUI->SetCheck(TRUE);
    else
        pCmdUI->SetCheck(FALSE);

	///////////////////////////////////////
	///////////////////////////////////////
	// END CUSTOM CODE
	///////////////////////////////////////
	///////////////////////////////////////
}

void COglshapeView::OnDrawTrianglestrip() 
{
	// TODO: Add your command handler code here
	
	///////////////////////////////////////
	///////////////////////////////////////
	// START CUSTOM CODE
	///////////////////////////////////////
	///////////////////////////////////////
	
    m_shape = TriangleStrip;
    Invalidate();

	///////////////////////////////////////
	///////////////////////////////////////
	// END CUSTOM CODE
	///////////////////////////////////////
	///////////////////////////////////////
}

void COglshapeView::OnUpdateDrawTrianglestrip(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	
	///////////////////////////////////////
	///////////////////////////////////////
	// START CUSTOM CODE
	///////////////////////////////////////
	///////////////////////////////////////
	
    if (m_shape == TriangleStrip)
        pCmdUI->SetCheck(TRUE);
    else
        pCmdUI->SetCheck(FALSE);

	///////////////////////////////////////
	///////////////////////////////////////
	// END CUSTOM CODE
	///////////////////////////////////////
	///////////////////////////////////////
}

///////////////////////////////////////
///////////////////////////////////////
// START CUSTOM CODE
///////////////////////////////////////
///////////////////////////////////////

void COglshapeView::DrawWithOpenGL()
{
    glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
    glClear(GL_COLOR_BUFFER_BIT);

	glPolygonMode(GL_FRONT,GL_FILL);
	glPolygonMode(GL_BACK,GL_FILL);


	if ( m_Scissored && (m_SqrS != NULL))
	{
		glEnable(GL_SCISSOR_TEST);
		glScissor(m_SqrS->X,m_SqrS->Y,m_SqrS->Height,m_SqrS->Lenght);
	}

	glEnable(GL_ALPHA_TEST);
	glAlphaFunc(m_Alpha_func, m_Alpha_ref);

	glEnable(GL_BLEND);
	glBlendFunc(m_BlendSFactor,m_BlendDFactor);

    switch(m_shape)
    {
        case Points        : DrawPoints(); break;
        case Lines         : DrawLines(); break;
        case LineStrip     : DrawLineStrip(); break;
        case LineLoop      : DrawLineLoop(); break;
        case Polygons      : DrawPolygons(); break;
        case Triangles     : DrawTriangles(); break;
        case TriangleStrip : DrawTriangleStrip(); break;
        case TriangleFan   : DrawTriangleFan(); break;
        case Quads         : DrawQuads(); break;
        case QuadStrip     : DrawQuadStrip(); break;
    }


	glDisable(GL_SCISSOR_TEST); 
	glDisable(GL_ALPHA_TEST);
	glDisable(GL_BLEND);

    glFlush();
}

void COglshapeView::DrawPoints()
{
 
	GLfloat ps[2];
    glGetFloatv(GL_POINT_SIZE_RANGE, ps);

    glPointSize(ps[1]);
	
    glBegin(GL_POINTS);
	    glColor4f(0.5f, 0.2f, 0.1f,0.0f);
 	    glVertex2f(0.0f, 0.0f);	
		glColor4f(0.6f, 0.7f, 0.8f,0.0f);
        glVertex2f(0.75f, 0.75f);	
		glColor4f(0.2f, 0.3f, 0.6f,0.0f);
        glVertex2f(-0.75f, -0.75f);	
		glColor4f(0.6f, 0.7f, 0.2f,0.0f);
        glVertex2f(-0.75f, 0.75f);	
		glColor4f(0.4f, 0.3f, 0.5f,0.0f);
        glVertex2f(0.75f, -0.75f);
    glEnd();
}

void COglshapeView::DrawLines()
{
 
	GLfloat lw[2];
    glGetFloatv(GL_LINE_WIDTH_RANGE, lw);

    if (lw[1] >= 4.0f)
        glLineWidth(4.0f);
    else
        glLineWidth(lw[1]);

    glBegin(GL_LINES);

	    glColor4f(0.7f, 0.6f, 0.3f,0.0f);
        glVertex2f(-0.75f, 0.75f);
		glColor4f(0.1f, 0.7f, 0.9f,0.0f);
        glVertex2f(0.75f, 0.75f);
            
        glColor4f(0.4f, 0.2f, 0.8f,0.0f);
		glVertex2f(-0.75f, 0.25f);
		glColor4f(0.1f, 0.9f, 0.6f,0.0f);
        glVertex2f(0.75f, 0.25f);

    glEnd();

    glLineStipple(1, 0x4444);
    glEnable(GL_LINE_STIPPLE);

    glBegin(GL_LINES);

		glColor4f(0.6f, 0.3f, 0.1f,0.0f);    
		glVertex2f(-0.75f, -0.25f);
		glColor4f(0.3f, 0.4f, 0.6f,0.0f);
        glVertex2f(0.75f, -0.25f);

		glColor4f(0.5f, 0.7f, 0.4f,0.0f);
        glVertex2f(-0.75f, -0.75f);
		glColor4f(0.8f, 0.1f, 0.2f,0.0f);
        glVertex2f(0.75f, -0.75f);

    glEnd();

    glDisable(GL_LINE_STIPPLE);
}

void COglshapeView::DrawLineStrip()
{
    /*glBegin(GL_LINE_STRIP);

		
        glVertex2f(-0.75f, 0.75f);
		glColor4f(0.1f, 0.4f, 0.8f,0.0f);
        glVertex2f(-0.5f, -0.5f);
		
		glVertex2f(0.0f, 0.0f);
		
        glVertex2f(0.5f, -0.5f);
		
        glVertex2f(0.75f, 0.75f);

        
    glEnd();	*/


	    GLfloat lw[2];
    glGetFloatv(GL_LINE_WIDTH_RANGE, lw);

    if (lw[1] >= 4.0f)
        glLineWidth(4.0f);
    else
        glLineWidth(lw[1]);

    glBegin(GL_LINE_STRIP);
		
		glColor4f(0.4f, 0.2f, 0.5f,0.0f);
        glVertex2f(-0.75f, 0.75f);
		glColor4f(0.5f, 0.2f, 0.6f,0.0f);
        glVertex2f(0.75f, 0.75f);
        glColor4f(0.3f, 0.6f, 0.9f,0.0f);   
        glVertex2f(-0.75f, 0.25f);
		glColor4f(0.1f, 0.2f, 0.3f,0.0f);
        glVertex2f(0.75f, 0.25f);

		glColor4f(0.1f, 0.7f, 0.3f,0.0f);
        glVertex2f(-0.75f, -0.25f);
		glColor4f(0.8f, 0.2f, 0.3f,0.0f);
        glVertex2f(0.75f, -0.25f);
		glColor4f(0.1f, 0.2f, 0.9f,0.0f);
        glVertex2f(-0.75f, -0.75f);
		glColor4f(0.5f, 0.4f, 0.3f,0.0f);
        glVertex2f(0.75f, -0.75f);



	glEnd();


}

void COglshapeView::DrawLineLoop()
{
	/*glBegin(GL_LINE_LOOP);
	
		glColor4f(0.1f, 0.4f, 0.5f,0.0f);
		glVertex2f(-0.75f, 0.75f);
		glColor4f(0.2f, 0.3f, 0.5f,0.0f);
        glVertex2f(-0.5f, -0.5f);
		glColor4f(0.6f, 0.4f, 0.7f,0.0f);
		glVertex2f(0.0f, 0.0f);
		glColor4f(0.8f, 0.2f, 0.7f,0.0f);
        glVertex2f(0.5f, -0.5f);
		glColor4f(0.9f, 0.3f, 0.9f,0.0f);
        glVertex2f(0.75f, 0.75f);
		glColor4f(0.2f, 0.6f, 0.1f,0.0f);
        glVertex2f(0.0f, 0.1f);
        
	glEnd();*/
	
	    GLfloat lw[2];
    glGetFloatv(GL_LINE_WIDTH_RANGE, lw);

    if (lw[1] >= 4.0f)
        glLineWidth(4.0f);
    else
        glLineWidth(lw[1]);

    glBegin(GL_LINE_LOOP);
		
		glColor4f(0.4f, 0.2f, 0.5f,0.0f);
        glVertex2f(-0.75f, 0.75f);
		glColor4f(0.5f, 0.2f, 0.6f,0.0f);
        glVertex2f(0.75f, 0.75f);
        glColor4f(0.3f, 0.6f, 0.9f,0.0f);   
        glVertex2f(-0.75f, 0.25f);
		glColor4f(0.1f, 0.2f, 0.3f,0.0f);
        glVertex2f(0.75f, 0.25f);

		glColor4f(0.1f, 0.7f, 0.3f,0.0f);
        glVertex2f(-0.75f, -0.25f);
		glColor4f(0.8f, 0.2f, 0.3f,0.0f);
        glVertex2f(0.75f, -0.25f);
		glColor4f(0.1f, 0.2f, 0.9f,0.0f);
        glVertex2f(-0.75f, -0.75f);
		glColor4f(0.5f, 0.4f, 0.3f,0.0f);
        glVertex2f(0.75f, -0.75f);



	glEnd();




}

void COglshapeView::DrawPolygons()
{

	glBegin(GL_POLYGON);
	
		glColor4f(0.7f, 0.5f, 0.5f,0.2f);
		glVertex2f(-0.2f, -0.2f);
		glColor4f(0.9f, 0.4f, 0.1f,0.2f);
        glVertex2f(-0.75f, -0.75f);
		glColor4f(0.7f, 0.8f, 0.6f,0.2f);
		glVertex2f(0.75f, -0.75f);
		glColor4f(0.3f, 0.4f, 0.5f,0.2f);
        glVertex2f(0.2f, -0.2f);
        
	glEnd();	
	

	glBegin(GL_POLYGON);

		glColor4f(0.1f, 0.5f, 0.7f,0.7f);
		glVertex2f(-0.2f, 0.2f);
		glColor4f(0.4f, 0.5f, 0.2f,0.7f);
        glVertex2f(-0.75f, 0.75f);
		glColor4f(0.5f, 0.9f, 0.8f,0.7f);
		glVertex2f(0.75f, 0.75f);
		glColor4f(0.4f, 0.4f, 0.5f,0.7f);
        glVertex2f(0.2f, 0.2f);
        
	glEnd();	
}


void COglshapeView::DrawTriangles()
{
//		glColor4f(0.1f, 0.3f, 0.6f,0.0f);
 //	glBegin(GL_TRIANGLES);

//		glVertex2f(-0.5f, 0.0f);
//		glVertex2f(-0.75f, 0.5f);
//		glVertex2f(-0.25f, 0.5f);    
   
//	glEnd();	
	
//        glColor4f(0.5f, 0.5f, 0.6f,0.0f);
//  glBegin(GL_TRIANGLES);

//		glVertex2f(0.5f, 0.0f);		
//      glVertex2f(0.75f, 0.5f);
//		glVertex2f(0.25f, 0.5f);    
   
//	glEnd();	
	
//      glColor4f(0.3f, 0.5f, 0.9f,0.5f);
//	glBegin(GL_TRIANGLES);

//		glVertex2f(0.0f, 0.0f);
//    	glVertex2f(-0.25f, -0.5f);
//		glVertex2f(0.25f, -0.5f);    
   
//	glEnd();		


	GLfloat lw[4];

	for (int i=1; i<10; i++)
	{
		glGetFloatv(GL_CURRENT_COLOR, lw);
		
		glColor4f(lw[0]*0.9f, lw[1]*0.9f, lw[2]*0.9f, lw[3]*0.9f);

		glBegin(GL_TRIANGLES);

		    glVertex2f((float)(-1.0/i), (float)(-1.0/i));
			glVertex2f((float)(1.0/i), (float)(-1.0/i));
			glVertex2f((float)0.0, (float)(1.0/i));
	            
	  	glEnd();

	}

}

void COglshapeView::DrawTriangleStrip()
{
	
	glBegin(GL_TRIANGLE_STRIP);

		glColor4f(0.1f, 0.4f, 0.2f,0.0f);
		glVertex2f(-1.0f, 0.0f);
		glColor4f(0.1f, 0.3f, 0.5f,0.0f);
        glVertex2f(0.0f, 0.0f);
		glColor4f(0.5f, 0.5f, 0.9f,0.0f);
		glVertex2f(-0.5f, 0.75f);   
		glColor4f(0.8f, 0.6f, 0.1f,0.0f);
        glVertex2f(0.5f, 0.75f);
	
	glEnd();		

	glBegin(GL_TRIANGLE_STRIP);

		glColor4f(0.1f, 0.2f, 0.3f,0.0f);
		glVertex2f(1.0f, 0.0f);
		glColor4f(0.4f, 0.3f, 0.2f,0.0f);
        glVertex2f(0.0f, 0.0f);
		glColor4f(0.4f, 0.5f, 0.7f,0.0f);
		glVertex2f(0.5f, -0.75f);   
		glColor4f(0.8f, 0.8f, 0.3f,0.0f);
        glVertex2f(-0.5f, -0.75f);
	
	glEnd();		

}

void COglshapeView::DrawTriangleFan()
{

	glBegin(GL_TRIANGLE_FAN);

		glColor4f(0.1f, 0.2f, 0.3f,0.0f);
		glVertex2f(0.0f, 0.0f);
		glColor4f(0.5f, 0.8f, 0.7f,0.0f);
		glVertex2f(-1.0f, 0.0f);
		glColor4f(0.2f, 0.9f, 0.8f,0.0f);
		glVertex2f(-0.5f, 0.75f);  
		glColor4f(0.9f, 0.8f, 0.8f,0.0f);
        glVertex2f(0.0f, 0.25f);
		glColor4f(0.5f, 0.4f, 0.2f,0.0f);
		glVertex2f(0.5f, 0.75f);
		glColor4f(0.1f, 0.1f, 0.7f,0.0f);
        glVertex2f(1.0f, 0.0f);    
		
	
		
		/*glColor4f(0.1f, 0.2f, 0.3f,0.0f);
		glVertex2f(0.0f, 0.0f);
		glColor4f(0.4f, 0.5f, 0.3f,0.0f);
		glVertex2f(-0.5f, -0.75f);
		glColor4f(0.5f, 0.8f, 0.7f,0.0f);
		glVertex2f(-1.0f, 0.0f);
		glColor4f(0.5f, 0.4f, 0.2f,0.0f);
		glVertex2f(-0.5f, 0.75f);   
		glColor4f(0.2f, 0.9f, 0.8f,0.0f);
        glVertex2f(0.5f, 0.75f);
		glColor4f(0.8f, 0.4f, 0.7f,0.0f);
		glVertex2f(1.0f, 0.0f);
		glColor4f(0.9f, 0.8f, 0.8f,0.0f);
        glVertex2f(0.5f, -0.75f);    */
		
	glEnd();		

}

void COglshapeView::DrawQuads()
{
	/*
	glBegin(GL_QUADS);
		
		glColor4f(0.5f, 0.4f, 0.6f,0.0f);
		glVertex2f(-0.5f, 0.5f);
		glColor4f(0.6f, 0.7f, 0.7f,0.0f);
		glVertex2f(-1.5f, 0.5f);
		glColor4f(0.2f, 0.6f, 0.7f,0.0f);
		glVertex2f(-1.5f, 1.5f);
		glColor4f(0.2f, 0.4f, 0.5f,0.0f);
		glVertex2f(-0.5f, 1.5f);            
		
	glEnd();		

	glBegin(GL_QUADS);

		glColor4f(0.7f, 0.7f, 0.8f,0.0f);
		glVertex2f(0.5f, -0.5f);
		glColor4f(0.5f, 0.6f, 0.5f,0.0f);
		glVertex2f(1.5f, -0.5f);
		glColor4f(0.8f, 0.5f, 0.8f,0.0f);
		glVertex2f(1.5f, -1.5f);
		glColor4f(0.4f, 0.3f, 0.6f,0.0f);
		glVertex2f(0.5f, -1.5f);            		
		
	glEnd();		*/
	 glBegin(GL_QUADS);

        glColor4f(0.0f, 0.0f, 1.0f,0.2f);
		glVertex2f(-0.25f, 0.75f);
		glColor4f(0.0f, 1.0f, 0.0f,0.2f);
        glVertex2f(0.25f, 0.75f);
		glColor4f(1.0f, 0.0f, 0.0f,0.2f);
        glVertex2f(0.25f, -0.75f);     
		glColor4f(0.7f, 0.7f, 0.8f,0.2f);
        glVertex2f(-0.25f, -0.75f);


		glColor4f(0.1f, 0.7f, 0.2f,0.7f);
        glVertex2f(-0.75f, 0.25f);
		glColor4f(0.7f, 0.2f, 0.8f,0.7f);
        glVertex2f(0.75f, 0.25f);
		glColor4f(0.1f, 0.2f, 0.8f,0.7f);
        glVertex2f(0.75f, -0.25f);
		glColor4f(0.7f, 0.2f, 0.5f,0.7f);
        glVertex2f(-0.75f, -0.25f);


	glEnd();
	
}

void COglshapeView::DrawQuadStrip()
{
	
	glBegin(GL_QUAD_STRIP);

		glColor4f(0.3f, 0.6f, 0.6f,0.0f);
		glVertex2f(-0.5f, 0.0f);
		glColor4f(0.5f, 0.6f, 0.9f,0.0f);
		glVertex2f(-0.75f, 0.75f);
		glColor4f(0.1f, 0.0f, 0.9f,0.0f);
		glVertex2f(-0.25f, 0.25f);  
		glColor4f(0.1f, 0.3f, 0.5f,0.0f);
		glVertex2f(-0.25f, 1.0f);
		glColor4f(0.4f, 0.6f, 0.8f,0.0f);
		glVertex2f(0.25f, 0.25f);   
		glColor4f(0.3f, 0.4f, 0.5f,0.0f);
		glVertex2f(0.25f, 1.0f);
		glColor4f(0.0f, 0.5f, 0.9f,0.0f);
		glVertex2f(0.5f, 0.0f);		
		glColor4f(0.0f, 0.3f, 0.5f,0.0f);
		glVertex2f(0.75f, 0.75f);
			
	glEnd();		

	
}


void COglshapeView::OnTestScissorBegin() 
{
	// TODO: Add your command handler code here
	m_Scissored = true;
	Invalidate();
}
	

void COglshapeView::OnUpdateTestScissorBegin(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	//m_Scissored = true;
	Invalidate();

	
}

void COglshapeView::OnTestScissorCreate() 
{
	// TODO: Add your command handler code here

		CScissorDlg dlgScissor;
	
	if (dlgScissor.DoModal() == IDOK)
	{
		if (m_SqrS != NULL)
			delete m_SqrS;

		m_SqrS = dlgScissor.GetSqr();
	}
	
}


void COglshapeView::OnTestScissorEnd() 
{
	// TODO: Add your command handler code here
	m_Scissored = false;
	Invalidate();
}

void COglshapeView::OnUpdateTestScissorEnd(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	if (m_Scissored == false)
		pCmdUI -> SetCheck(TRUE);
	else
		pCmdUI -> SetCheck(FALSE);
	
}

void COglshapeView::OnTestAlphaGlnever() 
{
	// TODO: Add your command handler code here
	m_Alpha_func = GL_NEVER;
	Invalidate();
	
}

void COglshapeView::OnTestAlphaGlless() 
{
	// TODO: Add your command handler code here
	m_Alpha_func = GL_LESS;
	Invalidate();
	
	
}

void COglshapeView::OnTestAlphaGlequal() 
{
	// TODO: Add your command handler code here
	m_Alpha_func = GL_EQUAL;
	Invalidate();
		
}

void COglshapeView::OnTestAlphaGllequal() 
{
	// TODO: Add your command handler code here
	m_Alpha_func = GL_LEQUAL;
	Invalidate();
	
}

void COglshapeView::OnTestAlphaGlgreater() 
{
	// TODO: Add your command handler code here
	m_Alpha_func = GL_GREATER;
	Invalidate();
		
}

void COglshapeView::OnTestAlphaGlnotequal() 
{
	// TODO: Add your command handler code here
	m_Alpha_func = GL_NOTEQUAL;
	Invalidate();
		
}

void COglshapeView::OnTestAlphaGlgequal() 
{
	// TODO: Add your command handler code here
	m_Alpha_func = GL_GEQUAL;
	Invalidate();
		
}

void COglshapeView::OnTestAlphaGlalways() 
{
	m_Alpha_func = GL_ALWAYS;
	Invalidate();
}

void COglshapeView::OnUpdateTestAlphaGlnever(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	if (m_Alpha_func == GL_NEVER)
		pCmdUI ->SetCheck(TRUE);
	else 
		pCmdUI ->SetCheck(FALSE);
}

void COglshapeView::OnUpdateTestAlphaGlless(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	if (m_Alpha_func == GL_LESS)
		pCmdUI ->SetCheck(TRUE);
	else 
		pCmdUI ->SetCheck(FALSE);
	
}

void COglshapeView::OnUpdateTestAlphaGlequal(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	if (m_Alpha_func == GL_EQUAL)
		pCmdUI ->SetCheck(TRUE);
	else 
		pCmdUI ->SetCheck(FALSE);
}

void COglshapeView::OnUpdateTestAlphaGllequal(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	if (m_Alpha_func == GL_LEQUAL)
		pCmdUI ->SetCheck(TRUE);
	else 
		pCmdUI ->SetCheck(FALSE);	
}

void COglshapeView::OnUpdateTestAlphaGlgreater(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	if (m_Alpha_func == GL_GREATER)
		pCmdUI ->SetCheck(TRUE);
	else 
		pCmdUI ->SetCheck(FALSE);
}

void COglshapeView::OnUpdateTestAlphaGlnotequal(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	if (m_Alpha_func == GL_NOTEQUAL)
		pCmdUI ->SetCheck(TRUE);
	else 
		pCmdUI ->SetCheck(FALSE);
}

void COglshapeView::OnUpdateTestAlphaGlgequal(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	if (m_Alpha_func == GL_GEQUAL)
		pCmdUI ->SetCheck(TRUE);
	else 
		pCmdUI ->SetCheck(FALSE);
}

void COglshapeView::OnUpdateTestAlphaGlalways(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	if (m_Alpha_func == GL_ALWAYS)
		pCmdUI ->SetCheck(TRUE);
	else 
		pCmdUI ->SetCheck(FALSE);
}

void COglshapeView::OnTestAlphaStart() 
{
	// TODO: Add your command handler code here

	CAlphaDlg dlgAlpha;

	if (dlgAlpha.DoModal()==IDOK)
		m_Alpha_ref = (float) dlgAlpha.GetAlpha();
}

void COglshapeView::OnTestBlendSfactorGlzero() 
{
	// TODO: Add your command handler code here
	m_BlendSFactor = GL_ZERO;
	Invalidate();
	
}

void COglshapeView::OnUpdateTestBlendSfactorGlzero(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
		if (m_BlendSFactor == GL_ZERO)
		pCmdUI ->SetCheck(TRUE);
	else 
		pCmdUI ->SetCheck(FALSE);
}

void COglshapeView::OnTestBlendSfactorGlsrcalphasaturate() 
{
	// TODO: Add your command handler code here
	m_BlendSFactor = GL_SRC_ALPHA_SATURATE;
	Invalidate();
	
	
}

void COglshapeView::OnUpdateTestBlendSfactorGlsrcalphasaturate(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
		if (m_BlendSFactor == GL_SRC_ALPHA_SATURATE)
		pCmdUI ->SetCheck(TRUE);
	else 
		pCmdUI ->SetCheck(FALSE);
	
}

void COglshapeView::OnTestBlendSfactorGlsrcalpha() 
{
	// TODO: Add your command handler code here
	m_BlendSFactor = GL_SRC_ALPHA;
	Invalidate();
	
}

void COglshapeView::OnUpdateTestBlendSfactorGlsrcalpha(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	if (m_BlendSFactor == GL_SRC_ALPHA)
		pCmdUI ->SetCheck(TRUE);
	else 
		pCmdUI ->SetCheck(FALSE);	
}

void COglshapeView::OnTestBlendSfactorGloneminussrcalpha() 
{
	// TODO: Add your command handler code here
	m_BlendSFactor = GL_ONE_MINUS_SRC_ALPHA;
	Invalidate();
	
}

void COglshapeView::OnUpdateTestBlendSfactorGloneminussrcalpha(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	if (m_BlendSFactor == GL_ONE_MINUS_SRC_ALPHA)
		pCmdUI ->SetCheck(TRUE);
	else 
		pCmdUI ->SetCheck(FALSE);
	
}

void COglshapeView::OnTestBlendSfactorGloneminusdstcolor() 
{
	// TODO: Add your command handler code here
	m_BlendSFactor = GL_ONE_MINUS_DST_COLOR;
	Invalidate();
	
}

void COglshapeView::OnUpdateTestBlendSfactorGloneminusdstcolor(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	if (m_BlendSFactor == GL_ONE_MINUS_DST_COLOR)
		pCmdUI ->SetCheck(TRUE);
	else 
		pCmdUI ->SetCheck(FALSE);	
}

void COglshapeView::OnTestBlendSfactorGloneminusdstalpha() 
{
	// TODO: Add your command handler code here
	m_BlendSFactor = GL_ONE_MINUS_DST_ALPHA;
	Invalidate();
	
}

void COglshapeView::OnUpdateTestBlendSfactorGloneminusdstalpha(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	if (m_BlendSFactor == GL_ONE_MINUS_DST_ALPHA)
		pCmdUI ->SetCheck(TRUE);
	else 
		pCmdUI ->SetCheck(FALSE);
	
}

void COglshapeView::OnTestBlendSfactorGlone() 
{
	// TODO: Add your command handler code here
	m_BlendSFactor = GL_ONE;
	Invalidate();
	
}

void COglshapeView::OnUpdateTestBlendSfactorGlone(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	if (m_BlendSFactor == GL_ONE)
		pCmdUI ->SetCheck(TRUE);
	else 
		pCmdUI ->SetCheck(FALSE);
	
}

void COglshapeView::OnTestBlendSfactorGldstcolor() 
{
	// TODO: Add your command handler code here
	m_BlendSFactor = GL_DST_COLOR;
	Invalidate();
	
}

void COglshapeView::OnUpdateTestBlendSfactorGldstcolor(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	if (m_BlendSFactor == GL_DST_COLOR)
		pCmdUI ->SetCheck(TRUE);
	else 
		pCmdUI ->SetCheck(FALSE);
	
}

void COglshapeView::OnTestBlendSfactorGldstalpha() 
{
	// TODO: Add your command handler code here
	m_BlendSFactor = GL_DST_ALPHA;
	Invalidate();
	
}

void COglshapeView::OnUpdateTestBlendSfactorGldstalpha(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	if (m_BlendSFactor == GL_DST_ALPHA)
		pCmdUI ->SetCheck(TRUE);
	else 
		pCmdUI ->SetCheck(FALSE);
	
}


void COglshapeView::OnTestBlendDfactorGlzero() 
{
	// TODO: Add your command handler code here
	m_BlendDFactor = GL_ZERO;
	Invalidate();
	
}

void COglshapeView::OnUpdateTestBlendDfactorGlzero(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	if (m_BlendDFactor == GL_ZERO)
		pCmdUI ->SetCheck(TRUE);
	else 
		pCmdUI ->SetCheck(FALSE);
	
}

void COglshapeView::OnTestBlendDfactorGlsrccolor() 
{
	// TODO: Add your command handler code here
	m_BlendDFactor = GL_SRC_COLOR;
	Invalidate();
	
}

void COglshapeView::OnUpdateTestBlendDfactorGlsrccolor(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	if (m_BlendDFactor == GL_SRC_COLOR)
		pCmdUI ->SetCheck(TRUE);
	else 
		pCmdUI ->SetCheck(FALSE);
	
}

void COglshapeView::OnTestBlendDfactorGlsrcalpha() 
{
	// TODO: Add your command handler code here
	m_BlendDFactor = GL_SRC_ALPHA;
	Invalidate();
	
}

void COglshapeView::OnUpdateTestBlendDfactorGlsrcalpha(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	if (m_BlendDFactor == GL_SRC_ALPHA)
		pCmdUI ->SetCheck(TRUE);
	else 
		pCmdUI ->SetCheck(FALSE);
	
}

void COglshapeView::OnTestBlendDfactorGloneminussrccolor() 
{
	// TODO: Add your command handler code here
	m_BlendDFactor = GL_ONE_MINUS_SRC_COLOR;
	Invalidate();
	
}

void COglshapeView::OnUpdateTestBlendDfactorGloneminussrccolor(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	if (m_BlendDFactor == GL_ONE_MINUS_SRC_COLOR)
		pCmdUI ->SetCheck(TRUE);
	else 
		pCmdUI ->SetCheck(FALSE);
	
}

void COglshapeView::OnTestBlendDfactorGloneminussrcalpha() 
{
	// TODO: Add your command handler code here
	m_BlendDFactor = GL_ONE_MINUS_SRC_ALPHA;
	Invalidate();
	
}

void COglshapeView::OnUpdateTestBlendDfactorGloneminussrcalpha(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	if (m_BlendDFactor == GL_ONE_MINUS_SRC_ALPHA)
		pCmdUI ->SetCheck(TRUE);
	else 
		pCmdUI ->SetCheck(FALSE);
	
}

void COglshapeView::OnTestBlendDfactorGloneminusdstalpha() 
{
	// TODO: Add your command handler code here
	m_BlendDFactor = GL_ONE_MINUS_DST_ALPHA;
	Invalidate();
	
}

void COglshapeView::OnUpdateTestBlendDfactorGloneminusdstalpha(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	if (m_BlendDFactor == GL_ONE_MINUS_DST_ALPHA)
		pCmdUI ->SetCheck(TRUE);
	else 
		pCmdUI ->SetCheck(FALSE);
	
}

void COglshapeView::OnTestBlendDfactorGlone() 
{
	// TODO: Add your command handler code here
	m_BlendDFactor = GL_ONE;
	Invalidate();	
}

void COglshapeView::OnUpdateTestBlendDfactorGlone(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	if (m_BlendDFactor == GL_ONE)
		pCmdUI ->SetCheck(TRUE);
	else 
		pCmdUI ->SetCheck(FALSE);
	
}

void COglshapeView::OnTestBlendDfactorGldstalpha() 
{
	// TODO: Add your command handler code here
	m_BlendDFactor = GL_DST_ALPHA;
	Invalidate();
}

void COglshapeView::OnUpdateTestBlendDfactorGldstalpha(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	if (m_BlendDFactor == GL_DST_ALPHA)
		pCmdUI ->SetCheck(TRUE);
	else 
		pCmdUI ->SetCheck(FALSE);	
}
Соседние файлы в папке Lab2