📄 polygonlist.cpp
字号:
// PolygonList.cpp: implementation of the CPolygonList class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "MagicScissors.h"
#include "PolygonList.h"
#include "Polygon.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CPolygonList::CPolygonList()
{
m_pRoot = m_pLast = NULL;
m_pSelect = NULL;
}
CPolygonList::~CPolygonList()
{
if( m_pRoot ) DeleteAll();
}
void CPolygonList::Add(CPolygon* pPolygon)
{
if( m_pLast )
{
m_pLast->m_pNext = pPolygon;
pPolygon->m_pPrev = m_pLast;
m_pLast = pPolygon;
}
else
{
m_pRoot = pPolygon;
m_pLast = pPolygon;
}
}
void CPolygonList::Delete(CPolygon* pPolygon)
{
CPolygon* pObj;
pObj = pPolygon;
CPolygon* pNext;
CPolygon* pPrev;
if( pObj == m_pRoot )
{
m_pRoot = m_pRoot->m_pNext;
if( m_pRoot )
m_pRoot->m_pPrev = NULL;
else
m_pLast = NULL;
}
else if( pObj == m_pLast )
{
m_pLast = m_pLast->m_pPrev;
m_pLast->m_pNext = NULL;
}
else
{
pNext = pObj->m_pNext;
pPrev = pObj->m_pPrev;
pPrev->m_pNext = pNext;
pNext->m_pPrev = pPrev;
}
delete pObj;
}
void CPolygonList::DeleteAll()
{
CPolygon* pObj;
CPolygon* pNext;
pObj = m_pRoot;
while(pObj)
{
pNext = pObj->m_pNext;
delete pObj;
pObj = pNext;
}
m_pRoot = m_pLast = m_pSelect = NULL;
}
void CPolygonList::Select(CPoint pnt)
{
m_pSelect = NULL;
CPolygon* pObj = m_pRoot;
while(pObj)
{
if( pObj->PtInRgn(pnt) )
{
m_pSelect = pObj;
return;
}
pObj = pObj->m_pNext;
}
}
void CPolygonList::ClearSelect()
{
m_pSelect = NULL;
}
void CPolygonList::Paint(CDC* pDC)
{
CPolygon* pPolygon;
pPolygon = m_pRoot;
while( pPolygon )
{
if( pPolygon == m_pSelect )
pPolygon->Paint(pDC, RGB(255,0,0) );
else
pPolygon->Paint(pDC, RGB(0,0,255) );
pPolygon = pPolygon->m_pNext;
}
}
int CPolygonList::GetTotal()
{
int n = 0;
CPolygon* pObj;
pObj = m_pRoot;
while(pObj)
{
n++;
pObj = pObj->m_pNext;
}
return n;
}
CPolygon* CPolygonList::GetPolygon(int n)
{
CPolygon* pObj = m_pRoot;
for( int i = 0 ; i < n ; i++ )
{
if( !pObj ) return NULL;
pObj = pObj->m_pNext;
}
return pObj;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -