// Copyright (C) 1991 - 1999 Rational Software Corporation

#if defined (_MSC_VER) && (_MSC_VER >= 1000)
#pragma once
#endif
#ifndef _INC_OVAL_46F50C54004E_INCLUDED
#define _INC_OVAL_46F50C54004E_INCLUDED
//////////////////////////////////////////////////////////////////////////
#include "Shape.h"

#include <list>
//////////////////////////////////////////////////////////////////////////
class ostream;
using std::list;
//////////////////////////////////////////////////////////////////////////
//овал

class Oval 
: public virtual Shape
{
private:
    //указатели на созданные овалы
    
    static list<Oval*> _ovals;
protected:
    
    Oval(float rad1, float rad2, float x, float y);

	//больший радиус овала
	
	float _rad1;

    //меньший радиус овала
    
	float _rad2;

    //вывести состояние овала в поток
    
    virtual std::ostream& speak(std::ostream& os) const;
public:
	// Virtual draw operation
	
	virtual void Draw(CDC* pDC, CElement* pElement = 0, bool isIdVisible = true);

	//идентификатор типа объекта
	
	virtual int getType() const;

	
	Oval();

	
	virtual void Serialize(CArchive& ar);

    //выдает указатель на уже существующий овал, если он имеет заданные параметры
    //если такого не существует - создает новый
    
    static Oval* create(float rad1 = NULL, float rad2 = NULL, float x = NULL, float y = NULL);

	
    static Oval* create(CPoint Start, CPoint End, COLORREF aColor);

    
	virtual ~Oval();

	//получить больший радиус
	
	const float getRad1() const;

	//задать больший радиус
	
	void setRad1(float value);

	//получить меньший радиус
	
	const float getRad2() const;

	//задать меньший радиус
	
	void setRad2(float value);

    //вычисляет площадь фигуры
    
    virtual float Area() const;
};




//////////////////////////////////////////////////////////////////////////
#endif /* _INC_OVAL_46F50C54004E_INCLUDED */
Соседние файлы в папке shapes