+#include <ft2build.h>
+#include FT_FREETYPE_H
+#include <tinyptc.h>
+
+iconv_t ucs4_iconv;
+
+// UCS-4 string with support for getting from UTF-8
+class widestring : public std::wstring
+{
+public:
+ void operator= (const char *from)
+ {
+ unsigned bytes = std::strlen(from);
+ char *from_buf = strdup(from);
+ wchar_t *to_buf = new wchar_t[bytes + 1];
+
+ char *inptr = from_buf, *outptr = reinterpret_cast<char *> (to_buf);
+
+ size_t in_left = bytes;
+ size_t out_left = bytes * sizeof(wchar_t);
+
+ size_t ret = iconv(ucs4_iconv, NULL, NULL, &outptr, &out_left);
+ if (ret == (size_t)(-1)) {
+ throw std::runtime_error("Error in iconv during initialization");
+ }
+
+ ret = iconv(ucs4_iconv, &inptr, &in_left, &outptr, &out_left);
+ if (ret == (size_t)(-1)) {
+ perror("iconv");
+ throw std::runtime_error("Error in iconv during conversion");
+ }
+
+ erase(begin(), end());
+ std::copy(to_buf, reinterpret_cast<wchar_t *> (outptr), std::back_inserter(*this));
+
+ free(from_buf);
+ delete[] to_buf;
+ }
+};
+
+template<>
+void pqxx::from_string<widestring>(const char *from, widestring &to)
+{
+ to = from;
+}
+
+int my_draw_text(const widestring &str, unsigned char *buf, int xpos, int ypos, bool real_render, int r, int g, int b, FT_Face face, FT_Face symbolface);
+
+class Tournament {
+public:
+ int id;
+ widestring name;
+};
+
+Tournament active_tournament;
+FT_Face font, symbolfont;
+
+/* A trigger that sets a flag whenever it's trigged. */
+class FlagTrigger : pqxx::trigger {
+private:
+ bool flag;
+