⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 _reducelist.cpp

📁 24位真彩色转256色,24位真彩色转256色
💻 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 + -