mirror of
https://github.com/markdavidlong/AppleSAWS.git
synced 2024-12-10 10:49:17 +00:00
84 lines
2.3 KiB
C++
84 lines
2.3 KiB
C++
#include "CharacterSetExplorer.h"
|
|
#include "ui_CharacterSetExplorer.h"
|
|
|
|
CharacterSetExplorer::CharacterSetExplorer(QWidget *parent) :
|
|
QDialog(parent),
|
|
ui(new Ui::CharacterSetExplorer)
|
|
{
|
|
m_unpackedScreen.fill(0,8192);
|
|
ui->setupUi(this);
|
|
|
|
connect(ui->insertChar, &QPushButton::clicked,
|
|
this, &CharacterSetExplorer::handleInsertCharButton);
|
|
connect(ui->inputText, &QLineEdit::textChanged,
|
|
this, &CharacterSetExplorer::handleTextChanged);
|
|
}
|
|
|
|
void CharacterSetExplorer::setCharSet(CharacterSet &charset)
|
|
{
|
|
m_charset = charset;
|
|
}
|
|
|
|
CharacterSetExplorer::~CharacterSetExplorer()
|
|
{
|
|
delete ui;
|
|
}
|
|
|
|
void CharacterSetExplorer::handleInsertCharButton()
|
|
{
|
|
//TODO
|
|
}
|
|
|
|
void CharacterSetExplorer::handleTextChanged(QString string)
|
|
{
|
|
int currCursorX = 0;
|
|
int currCursorY = 0;
|
|
m_unpackedScreen.fill(0x00,8192);
|
|
|
|
foreach (QChar character, string)
|
|
{
|
|
if (character.unicode() < 128)
|
|
{
|
|
if (character.unicode() < 32)
|
|
{
|
|
// Handle control character
|
|
}
|
|
else
|
|
{
|
|
// Handle ASCII value
|
|
if (m_charset.contains(character.unicode()))
|
|
{
|
|
QByteArray chardata = m_charset[character.unicode()].data();
|
|
|
|
for (int idx = 0; idx < 8; idx++)
|
|
{
|
|
int baseY = (currCursorY * 8 + idx) * 40;
|
|
quint8 chr = chardata[idx];
|
|
m_unpackedScreen[baseY + currCursorX] = chr;
|
|
}
|
|
currCursorX++;
|
|
|
|
if (currCursorX >= 40) {
|
|
currCursorY++;
|
|
currCursorX = 0;
|
|
}
|
|
if (currCursorY >= 24)
|
|
{
|
|
currCursorX = 0;
|
|
currCursorY = 0;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
qDebug() << "Character" << character.unicode() << "not defined in char set";
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
qDebug() << "Unhandled character: " << character.unicode();
|
|
}
|
|
}
|
|
ui->drawWidget->setUnpackedData(m_unpackedScreen);
|
|
}
|