#include "Draw.h" NAMESPACE_UPP #define LLOG(x) // LOG(x) #define LTIMING(x) // TIMING(x) WString TextUnicode(const char *s, int n, byte cs, Font font) { if(n < 0) n = (int)strlen(s); if(font.GetFace() == Font::SYMBOL) { WStringBuffer b(n); wchar *t = b; while(n > 0) { *t++ = *s++; n--; } return b; } else return ToUnicode(s, n, cs); } void Draw::DrawText(int x, int y, int angle, const wchar *text, Font font, Color ink, int n, const int *dx) { if(IsNull(ink)) return; if(n < 0) n = wstrlen(text); ComposeText(x, y, angle, text, font, ink, n, dx); } // ---------------------------- void Draw::DrawText(int x, int y, const wchar *text, Font font, Color ink, int n, const int *dx) { DrawText(x, y, 0, text, font, ink, n, dx); } // --------------------------- void Draw::DrawText(int x, int y, int angle, const WString& text, Font font, Color ink, const int *dx) { DrawText(x, y, angle, ~text, font, ink, text.GetLength(), dx); } void Draw::DrawText(int x, int y, const WString& text, Font font, Color ink, const int *dx) { DrawText(x, y, 0, text, font, ink, dx); } // --------------------------- void Draw::DrawText(int x, int y, int angle, const char *text, byte charset, Font font, Color ink, int n, const int *dx) { DrawText(x, y, angle, TextUnicode(text, n, charset, font), font, ink, dx); } void Draw::DrawText(int x, int y, const char *text, byte charset, Font font, Color ink, int n, const int *dx) { DrawText(x, y, 0, text, charset, font, ink, n, dx); } // --------------------------- void Draw::DrawText(int x, int y, int angle, const char *text, Font font, Color ink, int n, const int *dx) { DrawText(x, y, angle, text, CHARSET_DEFAULT, font, ink, n, dx); } void Draw::DrawText(int x, int y, const char *text, Font font, Color ink, int n, const int *dx) { DrawText(x, y, text, CHARSET_DEFAULT, font, ink, n, dx); } // --------------------------- void Draw::DrawText(int x, int y, int angle, const String& text, Font font, Color ink, const int *dx) { DrawText(x, y, angle, text, font, ink, text.GetLength(), dx); } void Draw::DrawText(int x, int y, const String& text, Font font, Color ink, const int *dx) { WString h = TextUnicode(text, text.GetLength(), CHARSET_DEFAULT, font); DrawText(x, y, h, font, ink, h.GetLength(), dx); } // -------------------------- Size GetTextSize(const wchar *text, Font font, int n) { FontInfo fi = font.Info(); if(n < 0) n = wstrlen(text); Size sz; sz.cx = 0; const wchar *wtext = (const wchar *)text; while(n > 0) { sz.cx += fi[*wtext++]; n--; } sz.cy = fi.GetHeight(); return sz; } Size GetTextSize(const WString& text, Font font) { return GetTextSize(text, font, text.GetLength()); } Size GetTextSize(const char *text, byte charset, Font font, int n) { return GetTextSize(TextUnicode(text, n, charset, font), font); } Size GetTextSize(const char *text, Font font, int n) { return GetTextSize(text, CHARSET_DEFAULT, font, n); } Size GetTextSize(const String& text, Font font) { return GetTextSize(text, font, text.GetLength()); } END_UPP_NAMESPACE