Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабораторная работа 21 / Sketcher05 / TextInTriangle
.cpp#include "stdafx.h"
#include "TextInTriangle.h"
#include "Text.h"
#include "Triangle.h"
TextInTriangle::TextInTriangle(): id(++total){
count++;
cout << "create TextInTriangle#" << id << endl;
buildEnclosingRectangle();
}
TextInTriangle::TextInTriangle(Triangle* triangle, string text, COLORREF aColor): Text(text, aColor), Triangle(triangle), id(++total){
count++;
cout << "create TextInTriangle#" << id << endl;
buildEnclosingRectangle();
}
TextInTriangle::TextInTriangle(CPoint p1, CPoint p2, CPoint p3, string text, COLORREF aColor): Text(text, aColor), Triangle(p1, p2, p3, aColor), id(++total){
count++;
cout << "create TextInTriangle#" << id << endl;
buildEnclosingRectangle();
}
TextInTriangle::TextInTriangle(const TextInTriangle* o): Text(o), Triangle(o), id(++total){
count++;
cout << "create TextInTriangle#" << id << " via cc" << endl;
buildEnclosingRectangle();
}
TextInTriangle::TextInTriangle(const TextInTriangle& o): Text(o), Triangle(o), id(++total){
count++;
cout << "create TextInTriangle#" << id << " via cc" << endl;
buildEnclosingRectangle();
}
TextInTriangle::~TextInTriangle(){
count--;
cout << "destroy TextInTriangle#" << id << endl;
}
void TextInTriangle::buildEnclosingRectangle(){
Triangle::buildEnclosingRectangle();
// TODO: set text start point, then draw it
Text::point1 = this->center;
/* Text::buildEnclosingRectangle();
*/
}
ostream& TextInTriangle::print(ostream& os) const{
os << "TextInTriangle#" << id << ": " << endl
<< toString();
return os;
}
TextInTriangle& TextInTriangle::operator= (const TextInTriangle& o){
if(this == &o)
return *this;
Text::operator=(o);
Triangle::operator=(o);
buildEnclosingRectangle();
return *this;
}
// Draw a TextInTriangle object
void TextInTriangle::Draw(CDC* pDC, CElement* pElement, string key)
{
buildEnclosingRectangle();
Text::point1 = this->center;
Text::Draw(pDC/*, pElement*/);
buildEnclosingRectangle();
Triangle::Draw(pDC, pElement, key);
}
string TextInTriangle::toString() const {
return Triangle::toString() + " Text: " + Text::toString();
}
int TextInTriangle::operator==(const TextInTriangle& o) const {
return (Text::operator==(o) && Triangle::operator==(o));
};
void TextInTriangle::Move(CSize& aSize)
{
Triangle::p1 += aSize; // Move triangle
Triangle::p2 += aSize;
Triangle::point += aSize;
Text::point1 += aSize; // Move text
Text::point2 += aSize;
m_EnclosingRect += aSize; // Move the enclosing rectangle
}
CRect TextInTriangle::GetBoundRect()
{
return Triangle::GetBoundRect(); // Return the bounding rectangle
}
// serialization
CArchive& TextInTriangle::load(CArchive& ar) {
CElement::load(ar);
ar >> Triangle::p1
>> Triangle::p2
>> Triangle::point
>> Text::point1
>> Text::point2;
buildEnclosingRectangle();
return ar;
}
CArchive& TextInTriangle::save(CArchive& ar) {
CElement::save(ar);
ar << Triangle::p1
<< Triangle::p2
<< Triangle::point
<< Text::point1
<< Text::point2;
return ar;
}
// initialize static fields
unsigned long int TextInTriangle::count = 0;
unsigned long int TextInTriangle::total = 0;
Соседние файлы в папке Sketcher05