// sketchView.cpp : implementation of the CSketchView class
// generated by AppWizard and modified with the help of ClassWizard
// sketching in color selected by user
//
// Bold statements entered by programmer.
// Italicized statements generated by ClassWizard.
//

#include "stdafx.h"
#include "sketch.h"

#include "sketchDoc.h"
#include "sketchView.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CSketchView

IMPLEMENT_DYNCREATE(CSketchView, CView)

BEGIN_MESSAGE_MAP(CSketchView, CView)
        //{{AFX_MSG_MAP(CSketchView)
        ON_WM_LBUTTONDOWN()
        ON_WM_LBUTTONUP()
        ON_WM_MOUSEMOVE()
        ON_COMMAND(IDM_BLUE, OnBlue)
        ON_COMMAND(IDM_GREEN, OnGreen)
        ON_COMMAND(IDM_RED, OnRed)
        ON_COMMAND(IDM_CLEAR, OnClear)
        //}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CSketchView construction/destruction

CSketchView::CSketchView()
{
        // TODO: add construction code here

        m_pt = m_ptold = CPoint(0,0);
        m_butdn = FALSE;
        m_color = RGB(0,0,0);

}

CSketchView::~CSketchView()
{
}

BOOL CSketchView::PreCreateWindow(CREATESTRUCT& cs)
{
        // TODO: Modify the Window class or styles here by modifying
        //  the CREATESTRUCT cs

        return CView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CSketchView drawing

void CSketchView::OnDraw(CDC* pDC)
{
        CSketchDoc* pDoc = GetDocument();
        ASSERT_VALID(pDoc);

        // TODO: add draw code for native data here
}

/////////////////////////////////////////////////////////////////////////////
// CSketchView diagnostics

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

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

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

/////////////////////////////////////////////////////////////////////////////
// CSketchView message handlers

void CSketchView::OnLButtonDown(UINT nFlags, CPoint point) 
{
        // TODO: Add your message handler code here and/or call default
        
        m_butdn = TRUE;
        m_ptold = point;

        CView::OnLButtonDown(nFlags, point);
}

void CSketchView::OnLButtonUp(UINT nFlags, CPoint point) 
{
        // TODO: Add your message handler code here and/or call default
        
        m_butdn = FALSE;
        
        CView::OnLButtonUp(nFlags, point);
}

void CSketchView::OnMouseMove(UINT nFlags, CPoint point) 
{
        // TODO: Add your message handler code here and/or call default
        
        if (m_butdn)
        {
                pDC = GetDC();
                m_pt = point;
                CPen pPen(PS_SOLID,1,m_color);
                CPen *pPenOld = pDC->SelectObject(&pPen);
                pDC->MoveTo(m_ptold);
                pDC->LineTo(m_pt);
                m_ptold = m_pt;
                pDC->SelectObject(pPenOld);
        }
        
        CView::OnMouseMove(nFlags, point);
}

void CSketchView::OnBlue() 
{
        // TODO: Add your command handler code here

        m_color = RGB(0,0,255);

}

void CSketchView::OnGreen() 
{
        // TODO: Add your command handler code here

        m_color = RGB(0,255,0);

}

void CSketchView::OnRed() 
{
        // TODO: Add your command handler code here

        m_color = RGB(255,0,0);

}

void CSketchView::OnClear() 
{
        // TODO: Add your command handler code here
        
        Invalidate(TRUE);

}