// // Created by my on 2019/11/16. // #ifndef TEXTRENDERER_TEXTRENDERER_H #define TEXTRENDERER_TEXTRENDERER_H #define BOLD 0b001 #define ITALICS 0b010 #define UNDERLINE 0b100 #include #include #include #include #include "Font.h" /** * @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(int windowWidth, int windowHeight, vkvm::Color defaultBackgroundColor, vkvm::Color fontColor, Font font); TextRenderer(int windowWidth, int windowHeight, vkvm::Color defaultBackgroundColor, vkvm::Color fontColor, Font font, int fontSize); void update(std::string text); void setOldText(std::string text); std::vector> getCharacter(unsigned char character, Font font); void setLeftMargin(int margin); void setBottomMargin(int margin); void clear(); void clear(int startX, int startY, int endX, int endY); void check(); void setWindowWidth(int windowWidth); void setWindowHeight(int windowHeight); int getWindowWidth(); int getWindowHeight(); private: std::string oldText; vkvm::Color backgroundColor; vkvm::Color fontColor; Font font; int fontSize = 1; int left_margin = 1; int bottom_margin = 1; int type; int windowWidth; int windowHeight; int fontWidth; int fontHeight; int currentX; int currentY; bool isBold(); bool isItalics(); bool isUnderline(); void fontProcessing(std::vector> characterBitmap); void translateToSharedMemory(std::vector> characterBitmap, int startX, int startY); void checkWindowSize(); void checkFontColor(); void checkBackgroundColor(); void checkText(); // void setPixelRange(int startX, int startY, int endX, int endY, int type); }; #endif //TEXTRENDERER_TEXTRENDERER_H