www.pudn.com > drawpad.zip > etext.cpp
#include "stdafx.h"
#include "etext.h"
// This file gives implementation of following class
// ETEXT
// ************************************************************
// implementation of ETEXT
// ************************************************************
IMPLEMENT_SERIAL(ETEXT, ENTITY, 0);
void ETEXT::Serialize(CArchive &ar)
{
ENTITY::Serialize(ar);
if (ar.IsStoring())
{
ar << m_nStart << m_nEnd;
}
else
{
ar >> m_nStart >> m_nEnd;
}
}
// copy data from another entity.
int ETEXT::CopyData(ENT *another)
{
if( !another ) return 0;
ASSERT(another->IsKindOf(RUNTIME_CLASS(ETEXT)));
ETEXT *other = (ETEXT *)another;
ENTITY::CopyData(another);
m_nStart = other->get_start();
m_nEnd = other->get_end();
return 1;
}
ETEXT::ETEXT()
{
}
ETEXT::ETEXT(const CPoint &p1, const CPoint &p2,CString str,COLORREF color,LOGFONT font)
{
m_nStart = p1;
m_nEnd = p2;
set_string(str);
set_color(color);
set_font(font);
}
int ETEXT::GetGripper(int iGrip, CPoint &pnt)
{
switch( iGrip ) {
case 1:
pnt = m_nStart;
return 1;
case 2:
pnt = m_nEnd;
return 1;
default:
return 0;
}
}
void ETEXT::Draw(CDC *pDC, int state)
{
SetPen(pDC, state);
// set_TEXT_width(2);
CPen pen(get_line_style(),get_line_width(),get_color());
CPen *oldpen = pDC->SelectObject(&pen);
// pDC->MoveTo(m_nStart);
// pDC->TextOut(10,10,"fdsafdsa");
pDC->SetTextColor(get_color());
pDC->SetBkMode(TRANSPARENT);
CFont fnt;
fnt.CreateFontIndirect(&(get_font()));
CFont *oldfont = pDC->SelectObject(&fnt);
pDC->TextOut(m_nStart.x,m_nStart.y,get_string());
pDC->SelectObject(oldfont);
// pDC->LineTo(m_nEnd);
pDC->SelectObject(oldpen);
ENTITY::Draw(pDC, state);
}
int ETEXT::HitTest(CDC *pDC, const PICK_EVENT& pe)
{
return 0;
}