new feature for parser, coordinates reader
This commit is contained in:
@@ -312,7 +312,16 @@ void Window::Write(int limit, const string &str, bool clrtoeol)
|
||||
{
|
||||
waddstr(itsWindow,tmp.c_str());
|
||||
tmp.clear();
|
||||
if (IsValidColor(color))
|
||||
|
||||
if (isdigit(color[2]))
|
||||
{
|
||||
int x, y;
|
||||
getyx(itsWindow, y, x);
|
||||
Coordinates coords = IntoCoordinates(color);
|
||||
wmove(itsWindow, coords.second == -1 ? y : coords.second, coords.first);
|
||||
limit -= coords.first-x;
|
||||
}
|
||||
else if (IsValidColor(color))
|
||||
{
|
||||
ColorPair colors = IntoColor(color);
|
||||
SetColor(colors.first, colors.second);
|
||||
@@ -376,7 +385,16 @@ void Window::Write(int limit, const wstring &str, bool clrtoeol)
|
||||
{
|
||||
waddwstr(itsWindow,tmp.c_str());
|
||||
tmp.clear();
|
||||
if (IsValidColor(ToString(color)))
|
||||
|
||||
if (isdigit(color[2]))
|
||||
{
|
||||
int x, y;
|
||||
getyx(itsWindow, y, x);
|
||||
Coordinates coords = IntoCoordinates(ToString(color));
|
||||
wmove(itsWindow, coords.second == -1 ? y : coords.second, coords.first);
|
||||
limit -= coords.first-x;
|
||||
}
|
||||
else if (IsValidColor(ToString(color)))
|
||||
{
|
||||
ColorPair colors = IntoColor(ToString(color));
|
||||
SetColor(colors.first, colors.second);
|
||||
@@ -667,6 +685,23 @@ wstring ToWString(const string &s)
|
||||
return result;
|
||||
}
|
||||
|
||||
Coordinates Window::IntoCoordinates(const string &s)
|
||||
{
|
||||
Coordinates result;
|
||||
unsigned int sep = s.find(",");
|
||||
if (sep != string::npos)
|
||||
{
|
||||
result.first = atoi(s.substr(2, sep-2).c_str());
|
||||
result.second = atoi(s.substr(sep+1).c_str());
|
||||
}
|
||||
else
|
||||
{
|
||||
result.first = atoi(s.substr(2).c_str());
|
||||
result.second = -1;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
string Window::OmitBBCodes(const string &str)
|
||||
{
|
||||
bool collect = false;
|
||||
|
||||
@@ -49,6 +49,7 @@ enum Where { wUp, wDown, wPageUp, wPageDown, wHome, wEnd };
|
||||
|
||||
typedef void (*GetStringHelper)();
|
||||
typedef std::pair<Color, Color> ColorPair;
|
||||
typedef std::pair<int, int> Coordinates;
|
||||
|
||||
char * ToString(const wchar_t *);
|
||||
wchar_t * ToWString(const char *);
|
||||
@@ -126,6 +127,7 @@ class Window
|
||||
virtual void Add(string str) { Write(str); } // for Scrollpad class
|
||||
|
||||
static void EnableColors();
|
||||
static Coordinates IntoCoordinates(const string &);
|
||||
static bool IsValidColor(const string &);
|
||||
static string OmitBBCodes(const string &);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user