#include #include #include Segment::Segment() { } Segment::~Segment() { } Segment::Segment(const GDIPoint &firstPoint,const GDIPoint &secondPoint,WORD vectorIndex) { mFirstPoint=firstPoint; mSecondPoint=secondPoint; mVectorIndex=vectorIndex; } Segment::Segment(const Segment &someSegment) { mFirstPoint=someSegment.mFirstPoint; mSecondPoint=someSegment.mSecondPoint; mVectorIndex=someSegment.mVectorIndex; } WORD Segment::operator==(const Segment &someSegment)const { return ((mFirstPoint==someSegment.mFirstPoint && mSecondPoint==someSegment.mSecondPoint)|| (mFirstPoint==someSegment.mSecondPoint && mSecondPoint==someSegment.mFirstPoint)); } void Segment::operator=(const Segment &someSegment) { mFirstPoint=someSegment.mFirstPoint; mSecondPoint=someSegment.mSecondPoint; mVectorIndex=someSegment.mVectorIndex; } void Segment::drawSegment(PureDevice &displayDevice,HPEN hPen,bool setROP)const { GDIPoint currentPosition; HPEN hOldPen(0); int saveMode; if(setROP)saveMode=::SetROP2(displayDevice,R2_NOT); if(hPen)hOldPen=(HPEN)::SelectObject(displayDevice,hPen); ::GetCurrentPositionEx(displayDevice,(POINT FAR*)¤tPosition); ::MoveToEx(displayDevice,mFirstPoint.x(),mFirstPoint.y(),(POINT FAR*)¤tPosition); ::LineTo(displayDevice,mSecondPoint.x(),mSecondPoint.y()); ::MoveToEx(displayDevice,currentPosition.x(),currentPosition.y(),(POINT FAR*)&mSecondPoint); if(hOldPen)::SelectObject(displayDevice,hOldPen); if(setROP)::SetROP2(displayDevice,saveMode); }