59 lines
1.4 KiB
C++
59 lines
1.4 KiB
C++
//
|
|
// Created by my on 2019/11/16.
|
|
//
|
|
|
|
#ifndef TEXTRENDERER_TEXTRENDERER_H
|
|
#define TEXTRENDERER_TEXTRENDERER_H
|
|
|
|
#include "Font.h"
|
|
#include <Color.hpp>
|
|
#include <iostream>
|
|
#include <string>
|
|
#include <thread>
|
|
#include <vkvm.hpp>
|
|
|
|
/**
|
|
* @author: Yajie Qi, Shaohua Tong
|
|
* @since: v0.0.0
|
|
* @brief: gets a string from the Shared Memory and converts the text into a bitmap-array.
|
|
*/
|
|
class TextRenderer {
|
|
public:
|
|
TextRenderer();
|
|
void update(std::string text);
|
|
void updateParameters();
|
|
std::vector<std::vector<bool>> getCharacter(unsigned char character);
|
|
void setLeftMargin(int margin);
|
|
void setBottomMargin(int margin);
|
|
void clear();
|
|
void clear(int startX, int startY, int endX, int endY);
|
|
|
|
private:
|
|
int left_margin = 1;
|
|
int bottom_margin = 1;
|
|
Font font;
|
|
void translateToSharedMemory(std::vector<std::vector<bool>> characterBitmap, int startX, int startY, bool flipColors);
|
|
vkvm::Color backgroundColor;
|
|
vkvm::Color foregroundColor;
|
|
int windowWidth;
|
|
int windowHeight;
|
|
|
|
char returnCharacter = '\n';
|
|
char specialCharacter = -127;
|
|
int specialCharacterCurrentX;
|
|
int specialCharacterCurrentY;
|
|
char _specialCharacter;
|
|
int fontSize = 1;
|
|
int currentX;
|
|
int currentY;
|
|
int oldTextsize{};
|
|
int blinkX = 0;
|
|
int blinkY = 0;
|
|
|
|
std::string adjustText(std::string newText);
|
|
std::string adjustText(std::string newText, int startLine, int endLine);
|
|
};
|
|
|
|
|
|
#endif //TEXTRENDERER_TEXTRENDERER_H
|