📄 _reducelist.cpp
字号:
// _ReduceList.cpp: implementation of the C_ReduceList class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "_ReduceList.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
C_ReduceList::C_ReduceList()
{
m_psHeader = NULL ;
}
C_ReduceList::~C_ReduceList()
{
}
HRESULT C_ReduceList::AddNode(S_Node * psNode)
{
if(psNode == NULL)
{
return ERROR_INVALID_PARAM ;
}
if(m_psHeader == NULL)
{
m_psHeader = psNode ;
psNode->psNext = NULL ;
return 0 ;
}
if(m_psHeader->dwCounter > psNode->dwCounter)
{
psNode->psNext = m_psHeader ;
m_psHeader = psNode ;
return 0 ;
}
S_Node * psTemp = m_psHeader ;
S_Node * psPrev = psTemp ;
while(psTemp)
{
if(psTemp->dwCounter > psNode->dwCounter)
{
break ;
}
psPrev = psTemp ;
psTemp = psTemp->psNext ;
}
psNode->psNext = psPrev->psNext ;
psPrev->psNext = psNode ;
return 0 ;
}
HRESULT C_ReduceList::Reduce(WORD * pwReduceCount)
{
if(pwReduceCount == NULL)
{
return ERROR_INVALID_PARAM ;
}
WORD wReduceCount = 0;
while(m_psHeader)
{
_ReduceNode(m_psHeader,&wReduceCount) ;
m_psHeader = m_psHeader->psNext ;
if(wReduceCount > 0)
{
break ;
}
}
*pwReduceCount = wReduceCount ;
return 0 ;
}
HRESULT C_ReduceList::_ReduceNode(S_Node *psNode, WORD *pwReduceCount)
{
if(psNode == NULL || pwReduceCount == NULL)
{
return ERROR_INVALID_PARAM ;
}
int i32Child = 0 ;
for(WORD i=0;i<8;i++)
{
if(psNode->psChild[i] != NULL)
{
psNode->dwRedSum += psNode->psChild[i]->dwRedSum ;
psNode->dwGreenSum += psNode->psChild[i]->dwGreenSum ;
psNode->dwBlueSum += psNode->psChild[i]->dwBlueSum ;
i32Child ++ ;
delete psNode->psChild[i] ;
psNode->psChild[i] = NULL ;
}
}
psNode->bLeafNode = TRUE ;
if(i32Child > 1)
{
*pwReduceCount = i32Child -1 ;
}
return 0 ;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -