The next little game in the series where I make a fancy rogue game.
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
#pragma once
|
|
|
|
#include <string_view>
|
|
|
|
#include <SFML/Graphics.hpp>
|
|
|
|
#include <codecvt>
|
|
|
|
#include <functional>
|
|
|
|
|
|
|
|
typedef std::function<void(sf::Color bgcolor, sf::Color color)> ColorCB;
|
|
|
|
|
|
|
|
typedef std::function<void(wchar_t ch)> WriteCB;
|
|
|
|
|
|
|
|
class ANSIParser {
|
|
|
|
sf::Color $default_fg;
|
|
|
|
sf::Color $default_bg;
|
|
|
|
std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> $converter;
|
|
|
|
|
|
|
|
public:
|
|
|
|
ANSIParser(sf::Color default_fg, sf::Color default_bg);
|
|
|
|
|
|
|
|
// disable copying
|
|
|
|
ANSIParser(ANSIParser& ap) = delete;
|
|
|
|
|
|
|
|
bool parse(std::wstring_view codes, ColorCB color_cb, WriteCB write_cb);
|
|
|
|
};
|