// SpringCtl.cpp : Implementation of CSpringCtl


#include "stdafx.h"
#include "Spring.h"
#include "SpringCtl.h"
#include "SpringImpl.h"


/////////////////////////////////////////////////////////////////////////////
// CSpringCtl

CSpringCtl::CSpringCtl()
{
  width = 40.0;  height = 40.0;
  graph = new BRIDGE(this);
}


STDMETHODIMP CSpringCtl::get_Width(short *pVal)
{
    *pVal = width;
    return S_OK;
}

STDMETHODIMP CSpringCtl::put_Width(short newVal)
{
    width = newVal;
    return S_OK;
}
STDMETHODIMP CSpringCtl::get_Height(short *pVal)
{
    *pVal = height;
    return S_OK;
}

STDMETHODIMP CSpringCtl::put_Height(short newVal)
{
    height = newVal;
    return S_OK;
}


HRESULT CSpringCtl::OnDraw(ATL_DRAWINFO& di)
{
   RECT& rc = *(RECT *) di.prcBounds;
   HDC hdc  = di.hdcDraw;
  /* 
   Rectangle(hdc, rc.left, rc.top, rc.right, rc.bottom);

   MoveToEx(hdc, rc.left, rc.bottom, NULL);
   LineTo(hdc, rc.right, rc.top);
  */  
   
   graph->Draw(hdc, rc);
   return S_OK;
}


LRESULT CSpringCtl::OnMouseMove(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& /*bHandled*/)
{
  graph->NextStep();
  FireViewChange();
  
  return 0;
}

LRESULT CSpringCtl::OnLButtonDown(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& /*bHandled*/)
{
  delete graph;
  graph = new BRIDGE(this);
  FireViewChange();

  return 0;
}

