イメージリソースをメモリにキャッシュするように。
1 parent ce9c0c4 commit e0d2925ac2bebb5e7cbd8ee328c3c4f8deb9bebe
@TAM (Teppei Tamra) TAM (Teppei Tamra) authored on 20 May 2018
Showing 2 changed files
View
28
saoriviewentry.cpp
#include <QRegExp>
#include <QImage>
#include <QPainter>
#include <QDebug>
 
QMap<QString,QImage> SaoriViewEntry::m_imagecache_g;
 
SaoriViewEntry::SaoriViewEntry(QWidget *parent)
{
SaoriViewEntry(0,parent);
} else {
imageurl = i.mid(p + 1);
}
m_urlmap[i] = imageurl;
QImage img(imageurl);
imageResizer(i.left(p),img);
document()->addResource(QTextDocument::ImageResource,QUrl("img:" + imageurl),QVariant(img));
if (m_imagecache_g.contains(i)) {
document()->addResource(QTextDocument::ImageResource,QUrl("img:" + imageurl),QVariant(m_imagecache_g[i]));
} else if (m_imagecache_l.contains(i)) {
document()->addResource(QTextDocument::ImageResource,QUrl("img:" + imageurl),QVariant(m_imagecache_l[i]));
} else {
QImage img(imageurl);
imageResizer(i.left(p),img);
document()->addResource(QTextDocument::ImageResource,QUrl("img:" + imageurl),QVariant(img));
auto type = i.split(':')[0];
if (((type == "icon") || (type == "avatar") || (type == "mavatar")) && (imageurl.left(2) != ":/"))
m_imagecache_g[i] = img;
else if (imageurl != ":/icons/ionicons-md/md-hourglass.svg") m_imagecache_l[i] = img;
}
}
setText(designedText(cw));
// QTextBrowserのサイズを確定させるトリック。
QResizeEvent e(size(),size());
View
3
■■
saoriviewentry.h
 
#include <QTextBrowser>
#include <QUrl>
#include <QMap>
#include <QImage>
 
class SaoriViewEntry : public QTextBrowser
{
Q_OBJECT
qlonglong m_id;
QString m_original;
bool m_cw;
QMap<QString,QString> m_urlmap;
static QMap<QString,QImage> m_imagecache_g;
QMap<QString,QImage> m_imagecache_l;
 
protected slots:
void downloaded(const QUrl url);