AppleSAWS/src/ui/widgets/CharacterSetExplorer.cpp

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);
}