Files
Work/engine/POLYGON.BAK
2024-08-07 09:16:27 -04:00

107 lines
2.1 KiB
Plaintext

#ifndef _ENGINE_POLYGON3D_HPP_
#define _ENGINE_POLYGON3D_HPP_
#ifndef _COMMON_GDIPOINT_HPP_
#include <common/gdipoint.hpp>
#endif
#ifndef _COMMON_BLOCK_HPP_
#include <common/block.hpp>
#endif
#ifndef _ENGINE_LINE3D_HPP_
#include <engine/line3d.hpp>
#endif
#ifndef _ENGINE_LINE2D_HPP_
#include <engine/line2d.hpp>
#endif
class Polygon3D : public Block<Line3D>, public Block<Line2D>
{
public:
Polygon3D(void);
Polygon3D(const Polygon3D &somePolygon3D);
virtual ~Polygon3D();
Polygon3D &operator=(const Polygon3D &somePolygon3D);
void insert(const Line3D *pLine3D);
void remove(void);
LONG size(void)const;
private:
void insert(const Polygon3D *pPolygon3D);
void insert(Block<Line3D> &someLine3DBlock);
void insert(Block<Line2D> &someLine2DBlock);
void insert(const Line2D *pLine2D);
Polygon3D &operator+=(const Block<Line3D> &someLine3DBlock);
};
inline
Polygon3D::Polygon3D(void)
{
}
inline
Polygon3D::Polygon3D(const Polygon3D &somePolygon3D)
: Block<Line3D>(somePolygon3D), Block<Line2D>(somePolygon3D)
{
}
inline
Polygon3D::~Polygon3D()
{
}
inline
Polygon3D &Polygon3D::operator=(const Polygon3D &somePolygon3D)
{
(Block<Line3D>&)*this=(Block<Line3D>&)somePolygon3D;
(Block<Line2D>&)*this=(Block<Line2D>&)somePolygon3D;
return *this;
}
inline
Polygon3D &Polygon3D::operator+=(const Block<Line3D> &someLine3DBlock)
{ // private implementation
(Block<Line3D>&)*this+=someLine3DBlock;
return *this;
}
inline
void Polygon3D::insert(const Polygon3D *pPolygon3D)
{
Block<Line3D>::insert((Block<Line3D>&)*pPolygon3D);
Block<Line2D>::insert((Block<Line2D>&)*pPolygon3D);
}
inline
void Polygon3D::insert(const Line3D *pLine3D)
{
Block<Line3D>::insert(pLine3D);
Block<Line2D>::insert(&Line2D());
}
inline
void Polygon3D::insert(Block<Line3D> &/*someLine3DBlock*/)
{ // private implementation
}
inline
void Polygon3D::insert(Block<Line2D> &/*someLine2DBlock*/)
{ // private implementation
}
inline
void Polygon3D::insert(const Line2D * /*pLine2D*/)
{ // private implementation
}
inline
void Polygon3D::remove(void)
{
Block<Line3D>::remove();
Block<Line2D>::remove();
}
inline
LONG Polygon3D::size(void)const
{
return Block<Line3D>::size();
}
#endif