[ion] Add a charset to associate char code to special symbols

Change-Id: I7533318185a7a66080ac68ced9b051d5e22b156d
This commit is contained in:
Émilie Feral
2017-01-25 15:32:35 +01:00
parent 804168ec76
commit e6d5a8dfd1
3 changed files with 54 additions and 3 deletions

View File

@@ -3,6 +3,7 @@
#include <ion/backlight.h>
#include <ion/battery.h>
#include <ion/charset.h>
#include <ion/display.h>
#include <ion/events.h>
#include <ion/keyboard.h>

50
ion/include/ion/charset.h Normal file
View File

@@ -0,0 +1,50 @@
#ifndef ION_CHARSET_H
#define ION_CHARSET_H
namespace Ion {
enum Charset : char {
AccuteAccentCapitalA = (char)127,
AccuteAccentCapitalE = (char)128,
AccuteAccentCapitalI = (char)129,
TildeAccentCapitalN = (char)130,
AccuteAccentCapitalO = (char)131,
AccuteAccentCapitalU = (char)132,
GraveAccentSmallA = (char)133,
AccuteAccentSmallA = (char)134,
CircumflexAccentSmallA = (char)135,
GraveAccentSmallE = (char)136,
AccuteAccentSmallE = (char)137,
CircumflexAccentSmall = (char)138,
DiaeresisAccentSmallE = (char)139,
AccuteAccentSmallI = (char)140,
CircumflexAccentSmallI = (char)141,
DiaeresisAccentSmallI = (char)142,
TildeAccentSmallN = (char)143,
AccuteAccentSmallO = (char)144,
GraveAccentSmallU = (char)145,
AccuteAccentSmallU = (char)146,
CircumflexAccentSmallU = (char)147,
DiaeresisAccentSmallU = (char)148,
Integral = (char)149,
XBar = (char)150,
YBar = (char)152,
CapitalGamma = (char)154,
CapitalSigma = (char)155,
SmallTheta = (char)156,
SmallIota = (char)157,
SmallLambda = (char)158,
SmallMu = (char)159,
SmallPi = (char)160,
SmallSigma = (char)161,
Exponent = (char)162,
Prime = (char)163,
Sto = (char)164,
Root = (char)165,
LessEqual = (char)166,
GreaterEqual = (char)167,
};
}
#endif

View File

@@ -6,7 +6,7 @@ KDColor smallCharacterBuffer[BITMAP_SmallFont_CHARACTER_WIDTH*BITMAP_SmallFont_C
KDColor largeCharacterBuffer[BITMAP_LargeFont_CHARACTER_WIDTH*BITMAP_LargeFont_CHARACTER_HEIGHT];
void KDContext::drawChar(char character, KDText::FontSize size, KDPoint p, KDColor textColor, KDColor backgroundColor) {
int firstCharacter = size == KDText::FontSize::Large ? BITMAP_LargeFont_FIRST_ASCII_CHARACTER : BITMAP_SmallFont_FIRST_ASCII_CHARACTER;
char firstCharacter = size == KDText::FontSize::Large ? BITMAP_LargeFont_FIRST_ASCII_CHARACTER : BITMAP_SmallFont_FIRST_ASCII_CHARACTER;
int characterHeight = size == KDText::FontSize::Large ? BITMAP_LargeFont_CHARACTER_HEIGHT : BITMAP_SmallFont_CHARACTER_HEIGHT;
int characterWidth = size == KDText::FontSize::Large ? BITMAP_LargeFont_CHARACTER_WIDTH : BITMAP_SmallFont_CHARACTER_WIDTH;
KDColor * characterBuffer = size == KDText::FontSize::Large ? largeCharacterBuffer : smallCharacterBuffer;
@@ -14,9 +14,9 @@ void KDContext::drawChar(char character, KDText::FontSize size, KDPoint p, KDCol
for (int i=0; i<characterWidth;i++) {
uint8_t intensity = 0;
if (size == KDText::FontSize::Large) {
intensity = bitmapLargeFont[character-firstCharacter][j][i];
intensity = bitmapLargeFont[(uint8_t)character-(uint8_t)firstCharacter][j][i];
} else {
intensity = bitmapSmallFont[character-firstCharacter][j][i];
intensity = bitmapSmallFont[(uint8_t)character-(uint8_t)firstCharacter][j][i];
}
KDColor color = KDColor::blend(textColor, backgroundColor, intensity);
characterBuffer[j*characterWidth+i] = color;