Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабораторная работа 25 / lab22 / TextTrapeziumEntity
.cpp#include "stdafx.h"
#include "TextTrapeziumEntity.h"
#include <iostream>
/********************************************************************************/
CTextTrapeziumEntity::CTextTrapeziumEntity( const CString iT, const int iC,
const int iB, const int iH,
const int iX, const int iY )
: CPointEntity(iX, iY),
CTriangleEntity(iB, iH, iX, iY),
CTrapeziumEntity(iC, iB, iH, iX, iY),
CTextEntity(iT, iX, iY)
{
// Разумного объяснения, почему надо делать как-то так, у меня нет. MSDN говорит,
// что необходимо явно инициализировать родительские классы сверх первого в случае
// виртуального наследования
}
/********************************************************************************/
CTextTrapeziumEntity::~CTextTrapeziumEntity()
{
}
void CTextTrapeziumEntity::setHeight( int iH )
{
CTriangleEntity::setHeight(iH);
}
int CTextTrapeziumEntity::getHeight() const
{
return CTriangleEntity::getHeight();
}
int CTextTrapeziumEntity::getNumType()
{ return 4;
}
/********************************************************************************/
void CTextTrapeziumEntity::Printfig(std::ostream& os)
{
os << "TextTrapezium:"<<std::endl;
os << " X=" << getX()<<std::endl;
os << " Y=" << getY()<<std::endl;
os << " B=" << mBase<<std::endl;
os << " H=" << mHeight<<std::endl;
os << " C=" << mCutoff<<std::endl;
os << " T=" << mText<<std::endl;
}
int CTextTrapeziumEntity::getX() const
{return CTrapeziumEntity::getX();}
int CTextTrapeziumEntity::getY() const
{return CTrapeziumEntity::getY();}
void CTextTrapeziumEntity::setX(int iX )
{CTrapeziumEntity::setX(iX);}
void CTextTrapeziumEntity::setY(int iY )
{CTrapeziumEntity::setY(iY);}
void CTextTrapeziumEntity::move(int dx,int dy)
{CTrapeziumEntity::move(dx,dy);}
void CTextTrapeziumEntity::Draw(CDC* pDC, Shape* figure)
{
CPen aPen;
COLORREF aColor=RGB(0,0,0);
if(this == figure)
aColor = RGB(255,0,0);
if(!aPen.CreatePen(PS_SOLID, 1, aColor))
{
AfxMessageBox("Pen creation failed drawing a rectangle", MB_OK);
AfxAbort();
}
CPen* pOldPen = pDC->SelectObject(&aPen);
CPoint Start(getX(),getY()+getHeight());
CPoint End(getX()+getCutoff(),getY());
pDC->MoveTo(Start);
pDC->LineTo(End);
Start=End;
End.x=getX()+getBase()-getCutoff();
End.y=getY();
pDC->MoveTo(Start);
pDC->LineTo(End);
Start=End;
End.x=getX()+getBase();
End.y=getY()+getHeight();
pDC->MoveTo(Start);
pDC->LineTo(End);
Start=End;
End.x=getX();
End.y=getY()+getHeight();
pDC->MoveTo(Start);
pDC->LineTo(End);
pDC->SelectObject(pOldPen);
pDC->SetTextColor(aColor);
pDC->TextOut(getX()+getCutoff()+1,getY()+2,getText());
}
CRect CTextTrapeziumEntity::GetBoundRect()
{
CRect BoundingRect(getX(),getY(),getX()+getBase(),getY()+getHeight()+2);
return BoundingRect;
}
void CTextTrapeziumEntity::writeAr(CArchive& ar)
{ar<<getNumType();
ar<<getX();
ar<<getY();
ar<<getBase();
ar<<getHeight();
ar<<getCutoff();
ar<<getText();
}
void CTextTrapeziumEntity::readAr(CArchive& ar)
{int _X,_Y;
int _Base,_Height,_Cutoff;
CString _str;
ar>>_X;
ar>>_Y;
ar>>_Base;
ar>>_Height;
ar>>_Cutoff;
ar>>_str;
setX(_X);setY(_Y);
setBase(_Base);
setHeight(_Height);
setCutoff(_Cutoff);
setText(_str);
}
CString CTextTrapeziumEntity::getName()
{return "Trapezium with text";}
Соседние файлы в папке lab22