295 lines
11 KiB
C#
Raw Permalink Normal View History

2024-12-15 17:48:29 +01:00
// WindowsPhoneSpeedyBlupi, Version=1.0.0.5, Culture=neutral, PublicKeyToken=6db12cd62dbec439
// WindowsPhoneSpeedyBlupi.Text
using WindowsPhoneSpeedyBlupi;
namespace WindowsPhoneSpeedyBlupi
{
public static class Text
{
private static short[] table_char = new short[1536]
{
0, 0, 0, -1, 0, 0, 1, 0, 0, -1,
0, 0, 2, 0, 0, -1, 0, 0, 3, 0,
0, -1, 0, 0, 4, 0, 0, -1, 0, 0,
5, 0, 0, -1, 0, 0, 6, 0, 0, -1,
0, 0, 7, 0, 0, -1, 0, 0, 8, 0,
0, -1, 0, 0, 9, 0, 0, -1, 0, 0,
10, 0, 0, -1, 0, 0, 11, 0, 0, -1,
0, 0, 12, 0, 0, -1, 0, 0, 1, 0,
0, -1, 0, 0, 14, 0, 0, -1, 0, 0,
1, 0, 0, -1, 0, 0, 1, 0, 0, -1,
0, 0, 1, 0, 0, -1, 0, 0, 1, 0,
0, -1, 0, 0, 1, 0, 0, -1, 0, 0,
1, 0, 0, -1, 0, 0, 1, 0, 0, -1,
0, 0, 1, 0, 0, -1, 0, 0, 1, 0,
0, -1, 0, 0, 1, 0, 0, -1, 0, 0,
1, 0, 0, -1, 0, 0, 1, 0, 0, -1,
0, 0, 1, 0, 0, -1, 0, 0, 1, 0,
0, -1, 0, 0, 1, 0, 0, -1, 0, 0,
1, 0, 0, -1, 0, 0, 1, 0, 0, -1,
0, 0, 32, 0, 0, -1, 0, 0, 33, 0,
0, -1, 0, 0, 34, 0, 0, -1, 0, 0,
35, 0, 0, -1, 0, 0, 36, 0, 0, -1,
0, 0, 37, 0, 0, -1, 0, 0, 38, 0,
0, -1, 0, 0, 39, 0, 0, -1, 0, 0,
40, 0, 0, -1, 0, 0, 41, 0, 0, -1,
0, 0, 42, 0, 0, -1, 0, 0, 43, 0,
0, -1, 0, 0, 44, 0, 0, -1, 0, 0,
45, 0, 0, -1, 0, 0, 46, 0, 0, -1,
0, 0, 47, 0, 0, -1, 0, 0, 48, 0,
0, -1, 0, 0, 49, 0, 0, -1, 0, 0,
50, 0, 0, -1, 0, 0, 51, 0, 0, -1,
0, 0, 52, 0, 0, -1, 0, 0, 53, 0,
0, -1, 0, 0, 54, 0, 0, -1, 0, 0,
55, 0, 0, -1, 0, 0, 56, 0, 0, -1,
0, 0, 57, 0, 0, -1, 0, 0, 58, 0,
0, -1, 0, 0, 59, 0, 0, -1, 0, 0,
60, 0, 0, -1, 0, 0, 61, 0, 0, -1,
0, 0, 62, 0, 0, -1, 0, 0, 63, 0,
0, -1, 0, 0, 64, 0, 0, -1, 0, 0,
65, 0, 0, -1, 0, 0, 66, 0, 0, -1,
0, 0, 67, 0, 0, -1, 0, 0, 68, 0,
0, -1, 0, 0, 69, 0, 0, -1, 0, 0,
70, 0, 0, -1, 0, 0, 71, 0, 0, -1,
0, 0, 72, 0, 0, -1, 0, 0, 73, 0,
0, -1, 0, 0, 74, 0, 0, -1, 0, 0,
75, 0, 0, -1, 0, 0, 76, 0, 0, -1,
0, 0, 77, 0, 0, -1, 0, 0, 78, 0,
0, -1, 0, 0, 79, 0, 0, -1, 0, 0,
80, 0, 0, -1, 0, 0, 81, 0, 0, -1,
0, 0, 82, 0, 0, -1, 0, 0, 83, 0,
0, -1, 0, 0, 84, 0, 0, -1, 0, 0,
85, 0, 0, -1, 0, 0, 86, 0, 0, -1,
0, 0, 87, 0, 0, -1, 0, 0, 88, 0,
0, -1, 0, 0, 89, 0, 0, -1, 0, 0,
90, 0, 0, -1, 0, 0, 91, 0, 0, -1,
0, 0, 92, 0, 0, -1, 0, 0, 93, 0,
0, -1, 0, 0, 94, 0, 0, -1, 0, 0,
95, 0, 0, -1, 0, 0, 96, 0, 0, -1,
0, 0, 97, 0, 0, -1, 0, 0, 98, 0,
0, -1, 0, 0, 99, 0, 0, -1, 0, 0,
100, 0, 0, -1, 0, 0, 101, 0, 0, -1,
0, 0, 102, 0, 0, -1, 0, 0, 103, 0,
0, -1, 0, 0, 104, 0, 0, -1, 0, 0,
105, 0, 0, -1, 0, 0, 106, 0, 0, -1,
0, 0, 107, 0, 0, -1, 0, 0, 108, 0,
0, -1, 0, 0, 109, 0, 0, -1, 0, 0,
110, 0, 0, -1, 0, 0, 111, 0, 0, -1,
0, 0, 112, 0, 0, -1, 0, 0, 113, 0,
0, -1, 0, 0, 114, 0, 0, -1, 0, 0,
115, 0, 0, -1, 0, 0, 116, 0, 0, -1,
0, 0, 117, 0, 0, -1, 0, 0, 118, 0,
0, -1, 0, 0, 119, 0, 0, -1, 0, 0,
120, 0, 0, -1, 0, 0, 121, 0, 0, -1,
0, 0, 122, 0, 0, -1, 0, 0, 123, 0,
0, -1, 0, 0, 124, 0, 0, -1, 0, 0,
125, 0, 0, -1, 0, 0, 126, 0, 0, -1,
0, 0, 127, 0, 0, -1, 0, 0, 1, 0,
0, -1, 0, 0, 1, 0, 0, -1, 0, 0,
1, 0, 0, -1, 0, 0, 1, 0, 0, -1,
0, 0, 1, 0, 0, -1, 0, 0, 1, 0,
0, -1, 0, 0, 1, 0, 0, -1, 0, 0,
1, 0, 0, -1, 0, 0, 1, 0, 0, -1,
0, 0, 1, 0, 0, -1, 0, 0, 1, 0,
0, -1, 0, 0, 1, 0, 0, -1, 0, 0,
1, 0, 0, -1, 0, 0, 1, 0, 0, -1,
0, 0, 1, 0, 0, -1, 0, 0, 1, 0,
0, -1, 0, 0, 1, 0, 0, -1, 0, 0,
1, 0, 0, -1, 0, 0, 1, 0, 0, -1,
0, 0, 1, 0, 0, -1, 0, 0, 1, 0,
0, -1, 0, 0, 1, 0, 0, -1, 0, 0,
1, 0, 0, -1, 0, 0, 1, 0, 0, -1,
0, 0, 1, 0, 0, -1, 0, 0, 1, 0,
0, -1, 0, 0, 1, 0, 0, -1, 0, 0,
1, 0, 0, -1, 0, 0, 1, 0, 0, -1,
0, 0, 1, 0, 0, -1, 0, 0, 1, 0,
0, -1, 0, 0, 1, 0, 0, -1, 0, 0,
1, 0, 0, -1, 0, 0, 5, 0, 0, -1,
0, 0, 1, 0, 0, -1, 0, 0, 1, 0,
0, -1, 0, 0, 1, 0, 0, -1, 0, 0,
1, 0, 0, -1, 0, 0, 1, 0, 0, -1,
0, 0, 1, 0, 0, -1, 0, 0, 1, 0,
0, -1, 0, 0, 1, 0, 0, -1, 0, 0,
1, 0, 0, -1, 0, 0, 1, 0, 0, -1,
0, 0, 1, 0, 0, -1, 0, 0, 1, 0,
0, -1, 0, 0, 1, 0, 0, -1, 0, 0,
1, 0, 0, -1, 0, 0, 1, 0, 0, -1,
0, 0, 1, 0, 0, -1, 0, 0, 1, 0,
0, -1, 0, 0, 1, 0, 0, -1, 0, 0,
1, 0, 0, -1, 0, 0, 1, 0, 0, -1,
0, 0, 1, 0, 0, -1, 0, 0, 1, 0,
0, -1, 0, 0, 1, 0, 0, -1, 0, 0,
1, 0, 0, -1, 0, 0, 1, 0, 0, -1,
0, 0, 1, 0, 0, -1, 0, 0, 1, 0,
0, -1, 0, 0, 1, 0, 0, -1, 0, 0,
1, 0, 0, -1, 0, 0, 4, 0, 0, -1,
0, 0, 1, 0, 0, -1, 0, 0, 1, 0,
0, -1, 0, 0, 1, 0, 0, -1, 0, 0,
1, 0, 0, -1, 0, 0, 1, 0, 0, -1,
0, 0, 1, 0, 0, -1, 0, 0, 1, 0,
0, -1, 0, 0, 1, 0, 0, -1, 0, 0,
1, 0, 0, -1, 0, 0, 1, 0, 0, -1,
0, 0, 1, 0, 0, -1, 0, 0, 1, 0,
0, -1, 0, 0, 1, 0, 0, -1, 0, 0,
1, 0, 0, -1, 0, 0, 1, 0, 0, -1,
0, 0, 1, 0, 0, -1, 0, 0, 1, 0,
0, -1, 0, 0, 1, 0, 0, -1, 0, 0,
1, 0, 0, -1, 0, 0, 1, 0, 0, -1,
0, 0, 1, 0, 0, -1, 0, 0, 1, 0,
0, -1, 0, 0, 1, 0, 0, -1, 0, 0,
1, 0, 0, -1, 0, 0, 1, 0, 0, -1,
0, 0, 1, 0, 0, -1, 0, 0, 1, 0,
0, -1, 0, 0, 1, 0, 0, -1, 0, 0,
1, 0, 0, -1, 0, 0, 1, 0, 0, -1,
0, 0, 1, 0, 0, -1, 0, 0, 1, 0,
0, -1, 0, 0, 16, 0, 0, -1, 0, 0,
97, 0, 0, 2, 2, 0, 17, 0, 0, -1,
0, 0, 1, 0, 0, -1, 0, 0, 27, 0,
0, -1, 0, 0, 1, 0, 0, -1, 0, 0,
1, 0, 0, -1, 0, 0, 29, 0, 0, -1,
0, 0, 19, 0, 0, -1, 0, 0, 18, 0,
0, -1, 0, 0, 21, 0, 0, -1, 0, 0,
20, 0, 0, -1, 0, 0, 1, 0, 0, -1,
0, 0, 105, 0, 0, 2, -1, 0, 23, 0,
0, -1, 0, 0, 22, 0, 0, -1, 0, 0,
1, 0, 0, -1, 0, 0, 110, 0, 0, 126,
-1, 0, 1, 0, 0, -1, 0, 0, 111, 0,
0, 2, 1, 0, 24, 0, 0, -1, 0, 0,
1, 0, 0, -1, 0, 0, 28, 0, 0, -1,
0, 0, 1, 0, 0, -1, 0, 0, 1, 0,
0, -1, 0, 0, 25, 0, 0, -1, 0, 0,
117, 0, 0, 2, 2, 0, 26, 0, 0, -1,
0, 0, 15, 0, 0, -1, 0, 0, 1, 0,
0, -1, 0, 0, 1, 0, 0, -1, 0, 0,
1, 0, 0, -1, 0, 0
};
private static short[] table_accents = new short[15]
{
252, 224, 226, 233, 232, 235, 234, 239, 238, 244,
249, 251, 228, 246, 231
};
private static short[] table_width = new short[128]
{
32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
32, 32, 32, 32, 14, 13, 15, 15, 15, 15,
15, 15, 11, 12, 14, 13, 13, 15, 15, 14,
0, 0, 9, 5, 10, 25, 17, 22, 18, 5,
9, 9, 14, 13, 6, 10, 6, 14, 18, 10,
14, 14, 17, 16, 16, 17, 15, 16, 5, 6,
9, 12, 10, 14, 25, 18, 16, 17, 18, 16,
16, 19, 20, 15, 15, 15, 14, 24, 22, 22,
15, 24, 16, 18, 15, 19, 18, 29, 20, 18,
19, 8, 13, 8, 12, 20, 7, 15, 15, 13,
15, 15, 13, 14, 14, 6, 8, 14, 6, 21,
16, 14, 14, 13, 12, 14, 11, 13, 13, 19,
16, 15, 14, 10, 5, 11, 16, 0
};
public static void DrawTextLeft(Pixmap pixmap, TinyPoint pos, string text, double size)
{
if (!string.IsNullOrEmpty(text))
{
DrawText(pixmap, pos, text, size);
}
}
public static void DrawText(Pixmap pixmap, TinyPoint pos, string text, double size)
{
if (!string.IsNullOrEmpty(text))
{
foreach (char car in text)
{
DrawChar(pixmap, ref pos, car, size);
}
}
}
public static void DrawTextPente(Pixmap pixmap, TinyPoint pos, string text, int pente, double size)
{
if (!string.IsNullOrEmpty(text))
{
int y = pos.Y;
int num = 0;
foreach (char c in text)
{
int charWidth = GetCharWidth(c, size);
DrawChar(pixmap, ref pos, c, size);
num += charWidth;
pos.Y = y + num / pente;
}
}
}
public static void DrawTextCenter(Pixmap pixmap, TinyPoint pos, string text, double size)
{
if (!string.IsNullOrEmpty(text))
{
TinyPoint pos2 = default(TinyPoint);
pos2.X = pos.X - GetTextWidth(text, size) / 2;
pos2.Y = pos.Y;
DrawText(pixmap, pos2, text, size);
}
}
public static int GetTextWidth(string text, double size)
{
if (string.IsNullOrEmpty(text))
{
return 0;
}
int num = 0;
foreach (char c in text)
{
num += GetCharWidth(c, size);
}
return num;
}
private static int GetOffset(char c)
{
for (int i = 0; i < 15; i++)
{
if ((short)c == table_accents[i])
{
return 15 + i;
}
}
if (c < '\0' || c > '\u0080')
{
return 1;
}
return c;
}
private static void DrawChar(Pixmap pixmap, ref TinyPoint pos, char car, double size)
{
TinyPoint pos2 = default(TinyPoint);
int num = (short)car * 6;
int rank = table_char[num];
pos2.X = pos.X + table_char[num + 1];
pos2.Y = pos.Y + table_char[num + 2];
DrawCharSingle(pixmap, pos2, rank, size);
rank = table_char[num + 3];
if (rank != -1)
{
pos2.X = pos.X + table_char[num + 4];
pos2.Y = pos.Y + table_char[num + 5];
DrawCharSingle(pixmap, pos2, rank, size);
}
pos.X += GetCharWidth(car, size);
}
private static int GetCharWidth(char c, double size)
{
return (int)((double)(table_width[table_char[(short)c * 6]] + 1) * size);
}
private static void DrawCharSingle(Pixmap pixmap, TinyPoint pos, int rank, double size)
{
pixmap.DrawChar(rank, pos, size);
}
}
}