Files
Work/bsptree/RGBSTACK.HPP
2024-08-07 09:12:07 -04:00

86 lines
1.4 KiB
C++
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#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 &currentNode(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