46 lines
1.1 KiB
C++
46 lines
1.1 KiB
C++
#ifndef SHELLBUFFER_H
|
|
#define SHELLBUFFER_H
|
|
|
|
#include "scene/gui/guinode.h"
|
|
|
|
class TextNode;
|
|
|
|
class ShellBuffer : public GUINode {
|
|
private:
|
|
unsigned int m_max_size;
|
|
int m_zero_offset;
|
|
float m_font_size;
|
|
unsigned int m_index = 0;
|
|
bool m_buffer_modified;
|
|
|
|
std::vector<TextNode*> m_bufferLines;
|
|
public:
|
|
ShellBuffer(int buffer_size):
|
|
m_max_size(buffer_size),
|
|
m_zero_offset(0),
|
|
m_font_size(16.f),
|
|
m_buffer_modified(false)
|
|
{
|
|
setVisible(true);
|
|
moveTo2D(glm::vec2(0));
|
|
}
|
|
TextNode* operator[](int i){return m_bufferLines[(m_zero_offset+i)%m_max_size];}
|
|
void push(TextNode*);
|
|
unsigned int size(){return m_bufferLines.size();}
|
|
|
|
void update();
|
|
|
|
// if this font_size is scaling down, sizes which are power of 2 render better.
|
|
void setFontSize(float font_size){m_font_size = font_size;}
|
|
float getFontSize(){return m_font_size;}
|
|
|
|
glm::vec2 getDimension();
|
|
|
|
void increaseIndex(){m_index++; m_buffer_modified= true;}
|
|
void decreaseIndex(){m_index--; m_buffer_modified= true;}
|
|
unsigned int getIndex(){return m_index;}
|
|
void clear();
|
|
};
|
|
|
|
#endif // SHELLBUFFER_H
|