mirror of
https://github.com/lumapu/ahoy.git
synced 2025-05-22 05:16:11 +02:00
adapt 128x64 to symbolic layout
This commit is contained in:
parent
d3c0232e06
commit
120522582e
6 changed files with 180 additions and 57 deletions
|
@ -109,7 +109,6 @@ const uint8_t u8g2_font_5x8_symbols_ahoy[1052] U8G2_FONT_SECTION("u8g2_font_5x8_
|
||||||
"\206\20\210<\254\342\20]\302(L\246C\30E\0\207\15wD\334X\25\267\341\20\15\21\0\210\16w"
|
"\206\20\210<\254\342\20]\302(L\246C\30E\0\207\15wD\334X\25\267\341\20\15\21\0\210\16w"
|
||||||
"<\214\203RQ\25I\212\324a\20\211\15f\304\213)\213\244,\222\222\245\0\0\0\0";
|
"<\214\203RQ\25I\212\324a\20\211\15f\304\213)\213\244,\222\222\245\0\0\0\0";
|
||||||
|
|
||||||
|
|
||||||
const uint8_t u8g2_font_ncenB08_symbols8_ahoy[173] U8G2_FONT_SECTION("u8g2_font_ncenB08_symbols8_ahoy") =
|
const uint8_t u8g2_font_ncenB08_symbols8_ahoy[173] U8G2_FONT_SECTION("u8g2_font_ncenB08_symbols8_ahoy") =
|
||||||
"\13\0\3\2\4\4\1\2\5\10\11\0\0\10\0\10\0\0\0\0\0\0\224A\14\207\305\70H\321\222H"
|
"\13\0\3\2\4\4\1\2\5\10\11\0\0\10\0\10\0\0\0\0\0\0\224A\14\207\305\70H\321\222H"
|
||||||
"k\334\6B\20\230\305\32\262\60\211\244\266\60T\243\34\326\0C\20\210\305S\243\60\312\302(\214\302("
|
"k\334\6B\20\230\305\32\262\60\211\244\266\60T\243\34\326\0C\20\210\305S\243\60\312\302(\214\302("
|
||||||
|
@ -118,12 +117,11 @@ const uint8_t u8g2_font_ncenB08_symbols8_ahoy[173] U8G2_FONT_SECTION("u8g2_font_
|
||||||
"Q\4H\14w\307\215Uq\33\16\321\20\1I\21\227\305\311\222aP\245H\221\244H\212\324a\20J"
|
"Q\4H\14w\307\215Uq\33\16\321\20\1I\21\227\305\311\222aP\245H\221\244H\212\324a\20J"
|
||||||
"\5\0\275\0K\5\0\315\0\0\0\0";
|
"\5\0\275\0K\5\0\315\0\0\0\0";
|
||||||
|
|
||||||
const uint8_t u8g2_font_ncenB10_symbols10_ahoy[207] U8G2_FONT_SECTION("u8g2_font_ncenB10_symbols10_ahoy") =
|
const uint8_t u8g2_font_ncenB10_symbols10_ahoy[220] U8G2_FONT_SECTION("u8g2_font_ncenB10_symbols10_ahoy") =
|
||||||
"\13\0\3\2\4\4\2\2\5\13\13\0\0\13\0\13\0\0\0\0\0\0\266A\15\267\212q\220\42\251\322"
|
"\13\0\3\2\4\4\2\2\5\13\13\0\0\13\0\13\0\0\0\0\0\0\303A\15\267\212q\220\42\251\322"
|
||||||
"\266\306\275\1B\20\230\236\65da\22Ima\250F\71\254\1C\23\272\272\251\3Q\32\366Q\212\243"
|
"\266\306\275\1B\20\230\236\65da\22Ima\250F\71\254\1C\23\272\272\251\3Q\32\366Q\212\243"
|
||||||
"\70\212\243\70\311\221\0D\20\271\252\361\242F:\242#: {\36\16\1E\22\267\212\361\222\14I\242"
|
"\70\212\243\70\311\221\0D\20\271\252\361\242F:\242#: {\36\16\1E\22\267\212\361\222\14I\242"
|
||||||
"\14\332\232\216[RJ\232\12F\25\250\233\221\14I\61I\206$\252%J\250Fa\224%J\71G\30"
|
"\14\332\232\216[RJ\232\12F\25\250\233\221\14I\61I\206$\252%J\250Fa\224%J\71G\30"
|
||||||
"\273\312W\316r`T\262DJ\303\64L#%K\304\35\310\342,\3H\27\272\272\217\344P\16\351\210"
|
"\273\312W\316r`T\262DJ\303\64L#%K\304\35\310\342,\3H\27\272\272\217\344P\16\351\210"
|
||||||
"\16\354\300<\244C\70,\303 \16!\0I\24\271\252\241\34\336\1-\223\64-\323\62-\323\62\35x"
|
"\16\354\300<\244C\70,\303 \16!\0I\24\271\252\241\34\336\1-\223\64-\323\62-\323\62\35x"
|
||||||
"\10J\5\0\232\1K\5\0\232\1\0\0\0";
|
"\10J\22\210\232\61Hi\64Di\64DI\226$KeiK\5\0\232\1\0\0\0";
|
||||||
|
|
||||||
|
|
|
@ -12,6 +12,7 @@ class DisplayMono128X64 : public DisplayMono {
|
||||||
mEnPowerSave = true;
|
mEnPowerSave = true;
|
||||||
mEnScreenSaver = true;
|
mEnScreenSaver = true;
|
||||||
mLuminance = 60;
|
mLuminance = 60;
|
||||||
|
mExtra = 0;
|
||||||
mDispY = 0;
|
mDispY = 0;
|
||||||
mTimeout = DISP_DEFAULT_TIMEOUT; // interval at which to power save (milliseconds)
|
mTimeout = DISP_DEFAULT_TIMEOUT; // interval at which to power save (milliseconds)
|
||||||
}
|
}
|
||||||
|
@ -37,9 +38,10 @@ class DisplayMono128X64 : public DisplayMono {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
calcLinePositions();
|
calcLinePositions();
|
||||||
printText("Ahoy!", 0, 35);
|
|
||||||
printText("ahoydtu.de", 2, 20);
|
printText("Ahoy!", l_Ahoy, 0xff);
|
||||||
printText(mDisplayData->version, 3, 46);
|
printText("ahoydtu.de", l_Website, 0xff);
|
||||||
|
printText(mDisplayData->version, l_Version, 0xff);
|
||||||
mDisplay->sendBuffer();
|
mDisplay->sendBuffer();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -56,42 +58,123 @@ class DisplayMono128X64 : public DisplayMono {
|
||||||
}
|
}
|
||||||
|
|
||||||
void disp(void) {
|
void disp(void) {
|
||||||
|
uint8_t pos, sun_pos, moon_pos;
|
||||||
|
|
||||||
|
// Test
|
||||||
|
/*
|
||||||
|
mDisplayData->isSleeping = 1;
|
||||||
|
mDisplayData->isProducing = 0;
|
||||||
|
mDisplayData->totalPower = 10000;
|
||||||
|
mDisplayData->totalYieldDay = 4998;
|
||||||
|
mDisplayData->totalYieldTotal = 5321;
|
||||||
|
*/
|
||||||
|
|
||||||
mDisplay->clearBuffer();
|
mDisplay->clearBuffer();
|
||||||
|
|
||||||
|
|
||||||
// set Contrast of the Display to raise the lifetime
|
// set Contrast of the Display to raise the lifetime
|
||||||
mDisplay->setContrast(mLuminance);
|
mDisplay->setContrast(mLuminance);
|
||||||
|
|
||||||
if ((mDisplayData->totalPower > 0) && (mDisplayData->nrProducing > 0)) {
|
// print total power
|
||||||
|
if (mDisplayData->nrProducing > 0) {
|
||||||
mTimeout = DISP_DEFAULT_TIMEOUT;
|
mTimeout = DISP_DEFAULT_TIMEOUT;
|
||||||
mDisplay->setPowerSave(false);
|
mDisplay->setPowerSave(false);
|
||||||
|
|
||||||
if (mDisplayData->totalPower > 999)
|
if (mDisplayData->totalPower > 999)
|
||||||
snprintf(mFmtText, DISP_FMT_TEXT_LEN, "%2.2f kW", (mDisplayData->totalPower / 1000));
|
snprintf(mFmtText, DISP_FMT_TEXT_LEN, "%.2f kW", (mDisplayData->totalPower / 1000));
|
||||||
else
|
else
|
||||||
snprintf(mFmtText, DISP_FMT_TEXT_LEN, "%3.0f W", mDisplayData->totalPower);
|
snprintf(mFmtText, DISP_FMT_TEXT_LEN, "%.0f W", mDisplayData->totalPower);
|
||||||
|
printText(mFmtText, l_TotalPower, 0xff);
|
||||||
printText(mFmtText, 0);
|
|
||||||
} else {
|
} else {
|
||||||
printText("offline", 0, 25);
|
printText("offline", l_TotalPower, 0xff);
|
||||||
// check if it's time to enter power saving mode
|
// check if it's time to enter power saving mode
|
||||||
if (mTimeout == 0)
|
if (mTimeout == 0)
|
||||||
mDisplay->setPowerSave(mEnPowerSave);
|
mDisplay->setPowerSave(mEnPowerSave);
|
||||||
}
|
}
|
||||||
|
|
||||||
snprintf(mFmtText, DISP_FMT_TEXT_LEN, "today: %4.0f Wh", mDisplayData->totalYieldDay);
|
// print Date and time
|
||||||
printText(mFmtText, 1);
|
if (0 != mDisplayData->utcTs)
|
||||||
|
printText(ah::getDateTimeStrShort(gTimezone.toLocal(mDisplayData->utcTs)).c_str(), l_Time, 0xff);
|
||||||
|
|
||||||
snprintf(mFmtText, DISP_FMT_TEXT_LEN, "total: %.1f kWh", mDisplayData->totalYieldTotal);
|
// dynamic status bar, alternatively:
|
||||||
printText(mFmtText, 2);
|
// print ip address
|
||||||
|
if (!(mExtra % 5) && (mDisplayData->ipAddress)) {
|
||||||
|
snprintf(mFmtText, DISP_FMT_TEXT_LEN, "%s", (mDisplayData->ipAddress).toString().c_str());
|
||||||
|
printText(mFmtText, l_Status, 0xff);
|
||||||
|
}
|
||||||
|
// print status of inverters
|
||||||
|
else {
|
||||||
|
sun_pos = -1;
|
||||||
|
moon_pos = -1;
|
||||||
|
setLineFont(l_Status);
|
||||||
|
if (0 == mDisplayData->nrSleeping + mDisplayData->nrProducing)
|
||||||
|
snprintf(mFmtText, DISP_FMT_TEXT_LEN, "no inverter");
|
||||||
|
else if (0 == mDisplayData->nrSleeping) {
|
||||||
|
snprintf(mFmtText, DISP_FMT_TEXT_LEN, " ");
|
||||||
|
sun_pos = 0;
|
||||||
|
}
|
||||||
|
else if (0 == mDisplayData->nrProducing) {
|
||||||
|
snprintf(mFmtText, DISP_FMT_TEXT_LEN, " ");
|
||||||
|
moon_pos = 0;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
snprintf(mFmtText, DISP_FMT_TEXT_LEN, "%2d", mDisplayData->nrProducing);
|
||||||
|
sun_pos = mDisplay->getStrWidth(mFmtText);
|
||||||
|
snprintf(mFmtText+2, DISP_FMT_TEXT_LEN, " %2d", mDisplayData->nrSleeping);
|
||||||
|
moon_pos = mDisplay->getStrWidth(mFmtText);
|
||||||
|
snprintf(mFmtText+7, DISP_FMT_TEXT_LEN, " ");
|
||||||
|
}
|
||||||
|
printText(mFmtText, l_Status, 0xff);
|
||||||
|
|
||||||
IPAddress ip = WiFi.localIP();
|
pos = (mDispWidth - mDisplay->getStrWidth(mFmtText)) / 2;
|
||||||
if (!(mExtra % 10) && (ip))
|
mDisplay->setFont(u8g2_font_ncenB08_symbols8_ahoy);
|
||||||
printText(ip.toString().c_str(), 3);
|
if (sun_pos!=-1)
|
||||||
else if (!(mExtra % 5)) {
|
mDisplay->drawStr(pos+sun_pos, mLineYOffsets[l_Status], "G"); // sun
|
||||||
snprintf(mFmtText, DISP_FMT_TEXT_LEN, "%d Inverter on", mDisplayData->nrProducing);
|
if (moon_pos!=-1)
|
||||||
printText(mFmtText, 3);
|
mDisplay->drawStr(pos+moon_pos, mLineYOffsets[l_Status], "H"); // moon
|
||||||
} else if (0 != mDisplayData->utcTs)
|
}
|
||||||
printText(ah::getDateTimeStr(gTimezone.toLocal(mDisplayData->utcTs)).c_str(), 3);
|
|
||||||
|
// print yields
|
||||||
|
snprintf(mFmtText, DISP_FMT_TEXT_LEN, "%7.0f Wh", mDisplayData->totalYieldDay);
|
||||||
|
printText(mFmtText, l_YieldDay, 25);
|
||||||
|
snprintf(mFmtText, DISP_FMT_TEXT_LEN, "%7.1f kWh", mDisplayData->totalYieldTotal);
|
||||||
|
printText(mFmtText, l_YieldTotal, 25);
|
||||||
|
mDisplay->setFont(u8g2_font_ncenB10_symbols10_ahoy);
|
||||||
|
mDisplay->drawStr(11, mLineYOffsets[l_YieldDay], "I"); // day
|
||||||
|
mDisplay->drawStr(11, mLineYOffsets[l_YieldTotal], "D"); // total
|
||||||
|
|
||||||
|
// draw dynamic RSSI bars
|
||||||
|
int rssi_bar_height = 9;
|
||||||
|
for (int i=0; i<4;i++) {
|
||||||
|
int radio_rssi_threshold = -60 - i*10;
|
||||||
|
int wifi_rssi_threshold = -60 - i*10;
|
||||||
|
if (mDisplayData->RadioRSSI > radio_rssi_threshold)
|
||||||
|
mDisplay->drawBox(0, 8+(rssi_bar_height+1)*i, 4-i,rssi_bar_height);
|
||||||
|
if (mDisplayData->WifiRSSI > wifi_rssi_threshold)
|
||||||
|
mDisplay->drawBox(mDispWidth-4+i, 8+(rssi_bar_height+1)*i, 4-i,rssi_bar_height);
|
||||||
|
}
|
||||||
|
|
||||||
|
// draw dynamic antenna and WiFi symbols
|
||||||
|
mDisplay->setFont(u8g2_font_ncenB10_symbols10_ahoy);
|
||||||
|
char sym[]=" ";
|
||||||
|
sym[0] = mDisplayData->RadioSymbol?'A':'E'; // NRF
|
||||||
|
mDisplay->drawStr(0, mLineYOffsets[l_RSSI], sym);
|
||||||
|
|
||||||
|
if (mDisplayData->MQTTSymbol)
|
||||||
|
sym[0] = 'J'; // MQTT
|
||||||
|
else
|
||||||
|
sym[0] = mDisplayData->WifiSymbol?'B':'F'; // Wifi
|
||||||
|
mDisplay->drawStr(mDispWidth - mDisplay->getStrWidth(sym), mLineYOffsets[l_RSSI], sym);
|
||||||
|
mDisplay->sendBuffer();
|
||||||
|
|
||||||
|
mExtra++;
|
||||||
|
|
||||||
|
/* // just for test
|
||||||
|
mDisplay->drawPixel(0, 0);
|
||||||
|
mDisplay->drawPixel(mDispWidth-1, 0);
|
||||||
|
mDisplay->drawPixel(0, mDispHeight-1);
|
||||||
|
mDisplay->drawPixel(mDispWidth-1, mDispHeight-1);
|
||||||
|
*/
|
||||||
|
|
||||||
mDisplay->sendBuffer();
|
mDisplay->sendBuffer();
|
||||||
|
|
||||||
|
@ -100,32 +183,61 @@ class DisplayMono128X64 : public DisplayMono {
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
enum _dispLine {
|
||||||
|
// start page
|
||||||
|
l_Website = 0,
|
||||||
|
l_Ahoy = 2,
|
||||||
|
l_Version = 4,
|
||||||
|
// run page
|
||||||
|
l_Time = 0,
|
||||||
|
l_Status = 1,
|
||||||
|
l_TotalPower = 2,
|
||||||
|
l_YieldDay = 3,
|
||||||
|
l_YieldTotal = 4,
|
||||||
|
// run page - rssi bar symbols
|
||||||
|
l_RSSI = 4,
|
||||||
|
// End
|
||||||
|
l_MAX_LINES = 5,
|
||||||
|
};
|
||||||
|
|
||||||
void calcLinePositions() {
|
void calcLinePositions() {
|
||||||
uint8_t yOff = 0;
|
uint8_t yOff = 0;
|
||||||
for (uint8_t i = 0; i < 4; i++) {
|
uint8_t i = 0;
|
||||||
setFont(i);
|
uint8_t asc, dsc;
|
||||||
yOff += (mDisplay->getMaxCharHeight());
|
|
||||||
|
do {
|
||||||
|
setLineFont(i);
|
||||||
|
asc = mDisplay->getAscent();
|
||||||
|
yOff += asc;
|
||||||
mLineYOffsets[i] = yOff;
|
mLineYOffsets[i] = yOff;
|
||||||
}
|
dsc = mDisplay->getDescent();
|
||||||
|
yOff -= dsc;
|
||||||
|
if (l_Time==i) // prevent time and status line to touch
|
||||||
|
yOff+=1; // -> one pixels space
|
||||||
|
i++;
|
||||||
|
} while(l_MAX_LINES>i);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void setFont(uint8_t line) {
|
inline void setLineFont(uint8_t line) {
|
||||||
switch (line) {
|
if ((line == l_TotalPower) ||
|
||||||
case 0:
|
(line == l_Ahoy))
|
||||||
mDisplay->setFont(u8g2_font_ncenB14_tr);
|
mDisplay->setFont(u8g2_font_ncenB14_tr);
|
||||||
break;
|
else if ((line == l_YieldDay) ||
|
||||||
case 3:
|
(line == l_YieldTotal))
|
||||||
mDisplay->setFont(u8g2_font_5x8_symbols_ahoy);
|
// mDisplay->setFont(u8g2_font_5x8_symbols_ahoy);
|
||||||
break;
|
|
||||||
default:
|
|
||||||
mDisplay->setFont(u8g2_font_ncenB10_tr);
|
mDisplay->setFont(u8g2_font_ncenB10_tr);
|
||||||
break;
|
else
|
||||||
|
mDisplay->setFont(u8g2_font_ncenB08_tr);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
void printText(const char *text, uint8_t line, uint8_t dispX = 5) {
|
|
||||||
setFont(line);
|
|
||||||
|
|
||||||
dispX += (mEnScreenSaver) ? (mExtra % 7) : 0;
|
void printText(const char *text, uint8_t line, uint8_t col=0) {
|
||||||
|
uint8_t dispX;
|
||||||
|
|
||||||
|
setLineFont(line);
|
||||||
|
if (0xff == col)
|
||||||
|
dispX = (mDispWidth - mDisplay->getStrWidth(text)) / 2; // center text
|
||||||
|
else
|
||||||
|
dispX = col;
|
||||||
mDisplay->drawStr(dispX, mLineYOffsets[line], text);
|
mDisplay->drawStr(dispX, mLineYOffsets[line], text);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -47,18 +47,22 @@ class DisplayMono84X48 : public DisplayMono {
|
||||||
}
|
}
|
||||||
|
|
||||||
void disp(void) {
|
void disp(void) {
|
||||||
// Test
|
mDisplay->clearBuffer();
|
||||||
|
|
||||||
|
// Layout-Test
|
||||||
/*
|
/*
|
||||||
mDisplayData->nrSleeping = 10;
|
mDisplayData->nrSleeping = 0;
|
||||||
mDisplayData->nrProducing = 10;
|
mDisplayData->nrProducing = 1;
|
||||||
mDisplayData->totalPower = 12345.67;
|
mDisplayData->totalPower = 12345.67;
|
||||||
mDisplayData->totalYieldDay = 12345.67;
|
mDisplayData->totalYieldDay = 12345.67;
|
||||||
mDisplayData->totalYieldTotal = 1234;
|
mDisplayData->totalYieldTotal = 1234;
|
||||||
mDisplayData->utcTs += 1000000;
|
mDisplayData->utcTs += 1000000;
|
||||||
|
mDisplay->drawPixel(0, 0);
|
||||||
|
mDisplay->drawPixel(mDispWidth-1, 0);
|
||||||
|
mDisplay->drawPixel(0, mDispHeight-1);
|
||||||
|
mDisplay->drawPixel(mDispWidth-1, mDispHeight-1);
|
||||||
*/
|
*/
|
||||||
|
|
||||||
mDisplay->clearBuffer();
|
|
||||||
|
|
||||||
// print total power
|
// print total power
|
||||||
if (mDisplayData->nrProducing > 0) {
|
if (mDisplayData->nrProducing > 0) {
|
||||||
mTimeout = DISP_DEFAULT_TIMEOUT;
|
mTimeout = DISP_DEFAULT_TIMEOUT;
|
||||||
|
@ -91,14 +95,15 @@ class DisplayMono84X48 : public DisplayMono {
|
||||||
}
|
}
|
||||||
// print status of inverters
|
// print status of inverters
|
||||||
else {
|
else {
|
||||||
if (0 == mDisplayData->nrSleeping)
|
if (0 == mDisplayData->nrSleeping + mDisplayData->nrProducing)
|
||||||
|
snprintf(mFmtText, DISP_FMT_TEXT_LEN, "no inverter");
|
||||||
|
else if (0 == mDisplayData->nrSleeping)
|
||||||
snprintf(mFmtText, DISP_FMT_TEXT_LEN, "\x86");
|
snprintf(mFmtText, DISP_FMT_TEXT_LEN, "\x86");
|
||||||
else if (0 == mDisplayData->nrProducing)
|
else if (0 == mDisplayData->nrProducing)
|
||||||
snprintf(mFmtText, DISP_FMT_TEXT_LEN, "\x87");
|
snprintf(mFmtText, DISP_FMT_TEXT_LEN, "\x87");
|
||||||
else
|
else
|
||||||
snprintf(mFmtText, DISP_FMT_TEXT_LEN, "%d\x86 %d\x87", mDisplayData->nrProducing, mDisplayData->nrSleeping);
|
snprintf(mFmtText, DISP_FMT_TEXT_LEN, "%d\x86 %d\x87", mDisplayData->nrProducing, mDisplayData->nrSleeping);
|
||||||
setLineFont(l_Status);
|
printText(mFmtText, l_Status, 0xff);
|
||||||
printText(mFmtText, l_Status, (mDispWidth - mDisplay->getStrWidth(mFmtText)) / 2);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// print yields
|
// print yields
|
||||||
|
|
|
@ -175,8 +175,16 @@ STARTCHAR 074
|
||||||
ENCODING 74
|
ENCODING 74
|
||||||
SWIDTH 648 0
|
SWIDTH 648 0
|
||||||
DWIDTH 9 0
|
DWIDTH 9 0
|
||||||
BBX 0 0 0 0
|
BBX 8 8 0 0
|
||||||
BITMAP
|
BITMAP
|
||||||
|
F9
|
||||||
|
04
|
||||||
|
F2
|
||||||
|
09
|
||||||
|
E5
|
||||||
|
15
|
||||||
|
D5
|
||||||
|
D5
|
||||||
ENDCHAR
|
ENDCHAR
|
||||||
STARTCHAR 075
|
STARTCHAR 075
|
||||||
ENCODING 75
|
ENCODING 75
|
||||||
|
|
|
@ -4,11 +4,11 @@
|
||||||
Glyphs: 11/11
|
Glyphs: 11/11
|
||||||
BBX Build Mode: 0
|
BBX Build Mode: 0
|
||||||
*/
|
*/
|
||||||
const uint8_t u8g2_font_ncenB10_symbols10_ahoy[207] U8G2_FONT_SECTION("u8g2_font_ncenB10_symbols10_ahoy") =
|
const uint8_t u8g2_font_ncenB10_symbols10_ahoy[220] U8G2_FONT_SECTION("u8g2_font_ncenB10_symbols10_ahoy") =
|
||||||
"\13\0\3\2\4\4\2\2\5\13\13\0\0\13\0\13\0\0\0\0\0\0\266A\15\267\212q\220\42\251\322"
|
"\13\0\3\2\4\4\2\2\5\13\13\0\0\13\0\13\0\0\0\0\0\0\303A\15\267\212q\220\42\251\322"
|
||||||
"\266\306\275\1B\20\230\236\65da\22Ima\250F\71\254\1C\23\272\272\251\3Q\32\366Q\212\243"
|
"\266\306\275\1B\20\230\236\65da\22Ima\250F\71\254\1C\23\272\272\251\3Q\32\366Q\212\243"
|
||||||
"\70\212\243\70\311\221\0D\20\271\252\361\242F:\242#: {\36\16\1E\22\267\212\361\222\14I\242"
|
"\70\212\243\70\311\221\0D\20\271\252\361\242F:\242#: {\36\16\1E\22\267\212\361\222\14I\242"
|
||||||
"\14\332\232\216[RJ\232\12F\25\250\233\221\14I\61I\206$\252%J\250Fa\224%J\71G\30"
|
"\14\332\232\216[RJ\232\12F\25\250\233\221\14I\61I\206$\252%J\250Fa\224%J\71G\30"
|
||||||
"\273\312W\316r`T\262DJ\303\64L#%K\304\35\310\342,\3H\27\272\272\217\344P\16\351\210"
|
"\273\312W\316r`T\262DJ\303\64L#%K\304\35\310\342,\3H\27\272\272\217\344P\16\351\210"
|
||||||
"\16\354\300<\244C\70,\303 \16!\0I\24\271\252\241\34\336\1-\223\64-\323\62-\323\62\35x"
|
"\16\354\300<\244C\70,\303 \16!\0I\24\271\252\241\34\336\1-\223\64-\323\62-\323\62\35x"
|
||||||
"\10J\5\0\232\1K\5\0\232\1\0\0\0";
|
"\10J\22\210\232\61Hi\64Di\64DI\226$KeiK\5\0\232\1\0\0\0";
|
||||||
|
|
Binary file not shown.
Loading…
Add table
Add a link
Reference in a new issue