cc3dsfs/source/TextRectanglePool.cpp

49 lines
1.6 KiB
C++

#include "TextRectangle.hpp"
#include "TextRectanglePool.hpp"
TextRectanglePool::TextRectanglePool(bool font_load_success, sf::Font *text_font) {
this->font_load_success = font_load_success;
this->text_font = text_font;
this->num_loaded_text_rectangles = 0;
this->text_rectangles_list = NULL;
}
TextRectanglePool::~TextRectanglePool() {
if(this->num_loaded_text_rectangles > 0) {
for(int i = 0; i < this->num_loaded_text_rectangles; i++)
delete this->text_rectangles_list[i];
delete []this->text_rectangles_list;
}
this->num_loaded_text_rectangles = 0;
}
void TextRectanglePool::request_num_text_rectangles(int num_wanted_text_rectangles) {
if(this->num_loaded_text_rectangles > num_wanted_text_rectangles)
return;
TextRectangle** new_text_rectangle_ptrs = new TextRectangle*[num_wanted_text_rectangles];
// Copy other TextRectangles to new list
for(int i = 0; i < this->num_loaded_text_rectangles; i++) {
new_text_rectangle_ptrs[i] = this->text_rectangles_list[i];
}
// Create new TextRectangles
for(int i = this->num_loaded_text_rectangles; i < num_wanted_text_rectangles; i++) {
new_text_rectangle_ptrs[i] = new TextRectangle(this->font_load_success, *this->text_font);
}
if(this->num_loaded_text_rectangles > 0)
delete []this->text_rectangles_list;
this->text_rectangles_list = new_text_rectangle_ptrs;
this->num_loaded_text_rectangles = num_wanted_text_rectangles;
}
TextRectangle* TextRectanglePool::get_text_rectangle(int index) {
if((this->num_loaded_text_rectangles <= index) || (index < 0))
return NULL;
return this->text_rectangles_list[index];
}