Скачиваний:
9
Добавлен:
01.05.2014
Размер:
3.58 Кб
Скачать
#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