From e6d874c734fb9ebec3de5c9b652425b704480a55 Mon Sep 17 00:00:00 2001 From: Dmitry Mikhirev Date: Mon, 27 Aug 2012 23:39:56 +0400 Subject: rewrite text convertion --- lcdprint.cpp | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 lcdprint.cpp (limited to 'lcdprint.cpp') diff --git a/lcdprint.cpp b/lcdprint.cpp new file mode 100644 index 0000000..585b2de --- /dev/null +++ b/lcdprint.cpp @@ -0,0 +1,52 @@ +/* + Brainuino Aleph + + Copyright (C) 2011-2012 Dmitry Mikhirev + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + + +#include "lcdprint.h" +#include "font_ru-en.h" +//#include "font_en.h" + +char* convert(utf8 str) +{ + int32_t ucode; + int i, j; + int numcodes = sizeof(charmap)/sizeof(charcode); + char result[str.chars]; + + for (i = 0; i < str.chars; i++) { + ucode = str.get(); + if (ucode > 0x0000) { + if (ucode <= 0x007d) { + result[i] = char(ucode); + } else { + result[i] = 0xff; + for (j = 0; j < numcodes && charmap[j].uni < ucode; j++) { + if (charmap[j].uni == ucode) { + result[i] = charmap[j].font; + } + } + } + } else { + result[i] = 0x00; + break; + } + } + + return result; +} -- cgit v1.2.1