Revert "Convert font image straight to QIcons"
This reverts commit 7cd632b4e2.
The commit would cause the font icons to be inverted sometimes. This
reversion is altered to return the font bitmaps as a QPixmap instead of a
QBitmap to be compatible with Qt6.
This commit is contained in:
25
render.cpp
25
render.cpp
@@ -19,9 +19,9 @@
|
|||||||
|
|
||||||
#include <QBitmap>
|
#include <QBitmap>
|
||||||
#include <QColor>
|
#include <QColor>
|
||||||
#include <QIcon>
|
|
||||||
#include <QImage>
|
#include <QImage>
|
||||||
#include <QPainter>
|
#include <QPainter>
|
||||||
|
#include <QPixmap>
|
||||||
|
|
||||||
#include "render.h"
|
#include "render.h"
|
||||||
|
|
||||||
@@ -29,34 +29,25 @@
|
|||||||
|
|
||||||
int TeletextFontBitmap::s_instances = 0;
|
int TeletextFontBitmap::s_instances = 0;
|
||||||
|
|
||||||
|
QBitmap *TeletextFontBitmap::s_fontBitmap = nullptr;
|
||||||
QImage *TeletextFontBitmap::s_fontImage = nullptr;
|
QImage *TeletextFontBitmap::s_fontImage = nullptr;
|
||||||
|
|
||||||
TeletextFontBitmap::TeletextFontBitmap()
|
TeletextFontBitmap::TeletextFontBitmap()
|
||||||
{
|
{
|
||||||
if (s_instances == 0)
|
if (s_instances == 0) {
|
||||||
s_fontImage = new QImage(":/images/teletextfont.png");
|
s_fontBitmap = new QBitmap(":/images/teletextfont.png");
|
||||||
|
s_fontImage = new QImage(s_fontBitmap->toImage());
|
||||||
|
}
|
||||||
s_instances++;
|
s_instances++;
|
||||||
}
|
}
|
||||||
|
|
||||||
TeletextFontBitmap::~TeletextFontBitmap()
|
TeletextFontBitmap::~TeletextFontBitmap()
|
||||||
{
|
{
|
||||||
s_instances--;
|
s_instances--;
|
||||||
|
if (s_instances == 0) {
|
||||||
if (s_instances == 0)
|
|
||||||
delete s_fontImage;
|
delete s_fontImage;
|
||||||
|
delete s_fontBitmap;
|
||||||
}
|
}
|
||||||
|
|
||||||
QIcon TeletextFontBitmap::charIcon(int c, int s) const
|
|
||||||
{
|
|
||||||
QImage glyphImage;
|
|
||||||
QBitmap glyphBitmap;
|
|
||||||
|
|
||||||
glyphImage = s_fontImage->copy((c-32)*12, s*10, 12, 10);
|
|
||||||
glyphImage.invertPixels();
|
|
||||||
glyphBitmap = QBitmap::fromImage(glyphImage);
|
|
||||||
|
|
||||||
return QIcon(glyphBitmap);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
6
render.h
6
render.h
@@ -20,9 +20,10 @@
|
|||||||
#ifndef RENDER_H
|
#ifndef RENDER_H
|
||||||
#define RENDER_H
|
#define RENDER_H
|
||||||
|
|
||||||
|
#include <QBitmap>
|
||||||
#include <QColor>
|
#include <QColor>
|
||||||
#include <QIcon>
|
|
||||||
#include <QImage>
|
#include <QImage>
|
||||||
|
#include <QPixmap>
|
||||||
|
|
||||||
#include "decode.h"
|
#include "decode.h"
|
||||||
|
|
||||||
@@ -33,10 +34,11 @@ public:
|
|||||||
~TeletextFontBitmap();
|
~TeletextFontBitmap();
|
||||||
|
|
||||||
QImage *image() const { return s_fontImage; }
|
QImage *image() const { return s_fontImage; }
|
||||||
QIcon charIcon(int c, int s) const;
|
QPixmap charBitmap(int c, int s) const { return s_fontBitmap->copy((c-32)*12, s*10, 12, 10); }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static int s_instances;
|
static int s_instances;
|
||||||
|
static QBitmap* s_fontBitmap;
|
||||||
static QImage* s_fontImage;
|
static QImage* s_fontImage;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -61,9 +61,9 @@ QVariant CharacterListModel::data(const QModelIndex &index, int role) const
|
|||||||
|
|
||||||
if (role == Qt::DecorationRole) {
|
if (role == Qt::DecorationRole) {
|
||||||
if (m_mosaic && (index.row()+32) & 0x20)
|
if (m_mosaic && (index.row()+32) & 0x20)
|
||||||
return m_fontBitmap.charIcon(index.row()+32, 24);
|
return m_fontBitmap.charBitmap(index.row()+32, 24);
|
||||||
else
|
else
|
||||||
return m_fontBitmap.charIcon(index.row()+32, m_characterSet);
|
return m_fontBitmap.charBitmap(index.row()+32, m_characterSet);
|
||||||
}
|
}
|
||||||
|
|
||||||
return QVariant();
|
return QVariant();
|
||||||
|
|||||||
@@ -140,7 +140,7 @@ TripletCharacterQMenu::TripletCharacterQMenu(int charSet, bool mosaic, QWidget *
|
|||||||
const int charSetInColumn = (mosaic && ((r & 0x2) == 0)) ? 24 : charSet;
|
const int charSetInColumn = (mosaic && ((r & 0x2) == 0)) ? 24 : charSet;
|
||||||
|
|
||||||
for (int c=0; c<16; c++)
|
for (int c=0; c<16; c++)
|
||||||
m_actions[r*16+c] = charRange[r]->addAction(m_fontBitmap.charIcon(r*16+c+32, charSetInColumn), QString("0x%1").arg(r*16+c+32, 2, 16, QChar('0')));
|
m_actions[r*16+c] = charRange[r]->addAction(QIcon(m_fontBitmap.charBitmap(r*16+c+32, charSetInColumn)), QString("0x%1").arg(r*16+c+32, 2, 16, QChar('0')));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
12
x26model.cpp
12
x26model.cpp
@@ -376,25 +376,27 @@ QVariant X26Model::data(const QModelIndex &index, int role) const
|
|||||||
break;
|
break;
|
||||||
case 0x21: // G1 mosaic character
|
case 0x21: // G1 mosaic character
|
||||||
if (triplet.data() & 0x20)
|
if (triplet.data() & 0x20)
|
||||||
return m_fontBitmap.charIcon(triplet.data(), 24);
|
// Returning the bitmap as-is doesn't seem to work here
|
||||||
|
// but putting it inside a QIcon... does?
|
||||||
|
return QIcon(m_fontBitmap.charBitmap(triplet.data(), 24));
|
||||||
else if (triplet.data() >= 0x20)
|
else if (triplet.data() >= 0x20)
|
||||||
// Blast-through
|
// Blast-through
|
||||||
return m_fontBitmap.charIcon(triplet.data(), m_parentMainWidget->pageDecode()->cellG0CharacterSet(triplet.activePositionRow(), triplet.activePositionColumn()));
|
return QIcon(m_fontBitmap.charBitmap(triplet.data(), m_parentMainWidget->pageDecode()->cellG0CharacterSet(triplet.activePositionRow(), triplet.activePositionColumn())));
|
||||||
break;
|
break;
|
||||||
case 0x22: // G3 mosaic character at level 1.5
|
case 0x22: // G3 mosaic character at level 1.5
|
||||||
case 0x2b: // G3 mosaic character at level >=2.5
|
case 0x2b: // G3 mosaic character at level >=2.5
|
||||||
if (triplet.data() >= 0x20)
|
if (triplet.data() >= 0x20)
|
||||||
return m_fontBitmap.charIcon(triplet.data(), 26);
|
return QIcon(m_fontBitmap.charBitmap(triplet.data(), 26));
|
||||||
break;
|
break;
|
||||||
case 0x2f: // G2 character
|
case 0x2f: // G2 character
|
||||||
if (triplet.data() >= 0x20)
|
if (triplet.data() >= 0x20)
|
||||||
return m_fontBitmap.charIcon(triplet.data(), m_parentMainWidget->pageDecode()->cellG2CharacterSet(triplet.activePositionRow(), triplet.activePositionColumn()));
|
return QIcon(m_fontBitmap.charBitmap(triplet.data(), m_parentMainWidget->pageDecode()->cellG2CharacterSet(triplet.activePositionRow(), triplet.activePositionColumn())));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
if (triplet.modeExt() == 0x29 || (triplet.modeExt() >= 0x30 && triplet.modeExt() <= 0x3f))
|
if (triplet.modeExt() == 0x29 || (triplet.modeExt() >= 0x30 && triplet.modeExt() <= 0x3f))
|
||||||
// G0 character or G0 diacritical mark
|
// G0 character or G0 diacritical mark
|
||||||
if (triplet.data() >= 0x20)
|
if (triplet.data() >= 0x20)
|
||||||
return m_fontBitmap.charIcon(triplet.data(), m_parentMainWidget->pageDecode()->cellG0CharacterSet(triplet.activePositionRow(), triplet.activePositionColumn()));
|
return QIcon(m_fontBitmap.charBitmap(triplet.data(), m_parentMainWidget->pageDecode()->cellG0CharacterSet(triplet.activePositionRow(), triplet.activePositionColumn())));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (role == Qt::EditRole && index.column() == 2)
|
if (role == Qt::EditRole && index.column() == 2)
|
||||||
|
|||||||
Reference in New Issue
Block a user