You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kev/Drawer/Module/GeoSigmaDraw/ItemPointCrossAdd.cpp

125 lines
2.5 KiB
C++

#include "StdAfx.h"
#include "ItemPointCrossAdd.h"
#include "SigmaDoc.h"
#include "SigmaView.h"
#include "DCHelp.h"
CItemPointCrossAdd::CItemPointCrossAdd(CSigmaDoc * ppDoc)
: CItemPointAdd(ppDoc)
{
this->SetType(ITEM_CROSSPOINT);
}
CItemPointCrossAdd::~CItemPointCrossAdd(void)
{
ClearDisplayPoint();
}
void CItemPointCrossAdd::UpdateOne(COne* pOne)
{
CPointCrossName* pPoint = (CPointCrossName*)pOne->GetValue();
pPoint->x0 = m_pt.x0;
pPoint->y0 = m_pt.y0;
pPoint->angle = m_angle;
pPoint->m_name1.SetName(m_name1);
pPoint->m_name2.SetName(m_name2);
pPoint->m_name3.SetName(m_name3);
pPoint->m_name4.SetName(m_name4);
}
void CItemPointCrossAdd::ClearDisplayPoint(void)
{
m_pt.x0 = m_pt.y0 = 0.0;
m_angle = 0;
m_name1.Empty();
m_name2.Empty();
m_name3.Empty();
m_name4.Empty();
//m_pointName.Empty();
if (m_pCurOne == NULL)
return;
delete m_pCurOne;
m_pCurOne = NULL;
}
void CItemPointCrossAdd::SetName1(CString name1)
{
m_name1 = name1;
//UpdateDraw();
}
void CItemPointCrossAdd::SetName2(CString name2)
{
m_name2 = name2;
//UpdateDraw();
}
void CItemPointCrossAdd::SetName3(CString name3)
{
m_name3 = name3;
//UpdateDraw();
}
void CItemPointCrossAdd::SetName4(CString name4)
{
m_name4 = name4;
//UpdateDraw();
}
COne* CItemPointCrossAdd::CreateOne()
{
CPointCrossName* pt = new CPointCrossName;
pt->x0 = m_pt.x0;
pt->y0 = m_pt.y0;
pt->angle = m_angle;
//pt->SetName(m_pointName);
pt->m_name1.SetName(m_name1);
pt->m_name2.SetName(m_name2);
pt->m_name3.SetName(m_name3);
pt->m_name4.SetName(m_name4);
return m_pDoc->GetDraw()->CreateOne(pt, DOUBLEFOX_CROSSPOINT);
}
void CItemPointCrossAdd::AddPoint(CPoint3D & point)
{
CPoint2D pt = GetDC()->GetReal(point);
m_pt.x0 = pt.x0;
m_pt.y0 = pt.y0;
m_pt.z0 = point.z0;
CPointCrossName * ptNameEx = CreateCrossPoint();
AddElement(ptNameEx, DOUBLEFOX_CROSSPOINT);
CPointCrossName * ptTmp = CreateCrossPoint();
COne* pOne = m_pDoc->GetDraw()->CreateOne(ptTmp, DOUBLEFOX_CROSSPOINT);
CRect rect = m_client;
CDC* pDC = m_pScreenDC;
GetDC()->Create(pDC);
pOne->Draw(*GetDC());
m_pDoc->GetDraw()->RemoveAt(pOne);
if (pOne != nullptr) {
delete pOne;
pOne = nullptr;
}
}
CPointCrossName* CItemPointCrossAdd::CreateCrossPoint(void)
{
CPointCrossName* pPoint = new CPointCrossName;
pPoint->x0 = m_pt.x0;
pPoint->y0 = m_pt.y0;
pPoint->angle = m_angle;
pPoint->m_name1.SetName(m_name1);
pPoint->m_name2.SetName(m_name2);
pPoint->m_name3.SetName(m_name3);
pPoint->m_name4.SetName(m_name4);
return pPoint;
}