86 lines
1.4 KiB
C++
86 lines
1.4 KiB
C++
#ifndef _BSPTREE_RGBSTACK_HPP_
|
||
#define _BSPTREE_RGBSTACK_HPP_
|
||
#ifndef _COMMON_WINDOWS_HPP_
|
||
#include <common/windows.hpp>
|
||
#endif
|
||
#ifndef _COMMON_ARRAY_HPP_
|
||
#include <common/array.hpp>
|
||
#endif
|
||
#ifndef _BSPTREE_TREENODEEX_HPP_
|
||
#include <bsptree/treendex.hpp>
|
||
#endif
|
||
#ifndef _BSPTREE_COLORKEY_HPP_
|
||
#include <bsptree/colorkey.hpp>
|
||
#endif
|
||
|
||
class RGBStack
|
||
{
|
||
public:
|
||
RGBStack(void);
|
||
~RGBStack();
|
||
WORD size(void)const;
|
||
WORD size(WORD size);
|
||
void rewind(void);
|
||
TreeNodeEx ¤tNode(void);
|
||
TreeNodeEx &popNode(void);
|
||
void pushNode(const TreeNodeEx &someTreeNodeEx);
|
||
private:
|
||
enum{MaxItems=100};
|
||
Array<TreeNodeEx> mVectoredNodes;
|
||
short mStackPointer;
|
||
};
|
||
|
||
inline
|
||
RGBStack::RGBStack(void)
|
||
: mStackPointer(0)
|
||
{
|
||
mVectoredNodes.size(MaxItems);
|
||
}
|
||
|
||
inline
|
||
RGBStack::~RGBStack()
|
||
{
|
||
}
|
||
|
||
inline
|
||
WORD RGBStack::size(void)const
|
||
{
|
||
return mStackPointer;
|
||
}
|
||
|
||
inline
|
||
WORD RGBStack::size(WORD size)
|
||
{
|
||
mVectoredNodes.size(size);
|
||
rewind();
|
||
return (WORD)mVectoredNodes.size();
|
||
}
|
||
|
||
inline
|
||
void RGBStack::rewind(void)
|
||
{
|
||
mStackPointer=0;
|
||
}
|
||
|
||
inline
|
||
TreeNodeEx &RGBStack::currentNode(void)
|
||
{
|
||
return mVectoredNodes[mStackPointer];
|
||
}
|
||
|
||
inline
|
||
TreeNodeEx &RGBStack::popNode(void)
|
||
{
|
||
if(mStackPointer-1<0)return mVectoredNodes[mStackPointer];
|
||
return mVectoredNodes.operator[](--mStackPointer);
|
||
}
|
||
|
||
inline
|
||
void RGBStack::pushNode(const TreeNodeEx &someNode)
|
||
{
|
||
if(mStackPointer>=mVectoredNodes.size())return;
|
||
mVectoredNodes[mStackPointer++]=someNode;
|
||
}
|
||
#endif
|
||
|
||
|