BibleTime
bticons.cpp
Go to the documentation of this file.
1/*********
2*
3* In the name of the Father, and of the Son, and of the Holy Spirit.
4*
5* This file is part of BibleTime's source code, https://bibletime.info/
6*
7* Copyright 1999-2025 by the BibleTime developers.
8* The BibleTime source code is licensed under the GNU General Public License
9* version 2.0.
10*
11**********/
12
13#include "bticons.h"
14
15#include <QBrush>
16#include <QBuffer>
17#include <QByteArray>
18#include <QDir>
19#include <QIconEngine>
20#include <QImage>
21#include <QPainter>
22#include <QPixmap>
23#include <QPoint>
24#include <QRect>
25#include <Qt>
26#include <QtGui>
27#include "directory.h"
28
29
30class QSize;
31
32namespace {
33
35
36public: // methods:
37
38 BtOverlayIconEngine(QIcon const & icon, QIcon const & overlay)
39 : m_icon(icon)
40 , m_overlayIcon(overlay)
41 {}
42
43 QIconEngine * clone() const override
44 { return new BtOverlayIconEngine(m_icon, m_overlayIcon); }
45
46 void paint(QPainter * painter,
47 QRect const & rect,
48 QIcon::Mode mode,
49 QIcon::State state) override
50 {
51 {
52 QBrush brush(painter->background());
53 brush.setColor(Qt::transparent);
54 painter->setBackground(brush);
55 }
56 painter->eraseRect(rect);
57 painter->setCompositionMode(QPainter::CompositionMode_SourceOver);
58 m_icon.paint(painter, rect, Qt::AlignCenter, mode, state);
59 m_overlayIcon.paint(painter,
60 rect.adjusted(0.4 * rect.width(),
61 0.4 * rect.height(),
62 0,
63 0),
64 Qt::AlignCenter,
65 mode,
66 state);
67 }
68
69 QPixmap pixmap(QSize const & size,
70 QIcon::Mode mode,
71 QIcon::State state) override
72 {
73 QImage img(size, QImage::Format_ARGB32);
74 img.fill(qRgba(0,0,0,0));
75 QPixmap pix = QPixmap::fromImage(img, Qt::NoFormatConversion);
76 QPainter painter(&pix);
77 this->paint(&painter, QRect(QPoint(0, 0), size), mode, state);
78 return pix;
79 }
80
81private: // fields:
82
83 QIcon const & m_icon;
84 QIcon const & m_overlayIcon;
85
86};
87
88} // anonymous namespace
89
91 : QIcon(util::directory::getIconDir().filePath(name))
92{}
93
95 QIcon const & overlayedIcon)
96 : QIcon(new BtOverlayIconEngine(icon, overlayedIcon))
97{}
98
100
102 /* Regular icons: */
103 : icon_add(QStringLiteral("add.svg"))
104 , icon_automatically(QStringLiteral("automatically.svg"))
105 , icon_back(QStringLiteral("back.svg"))
106 , icon_bible(QStringLiteral("bible.svg"))
107 , icon_bibletime(QStringLiteral("bibletime.svg"))
108 , icon_book(QStringLiteral("book.svg"))
109 , icon_bookmark(QStringLiteral("bookmark.svg"))
110 , icon_books(QStringLiteral("books.svg"))
111 , icon_calendar(QStringLiteral("calendar.svg"))
112 , icon_cascade(QStringLiteral("cascade.svg"))
113 , icon_checkbox(QStringLiteral("checkbox.svg"))
114 , icon_commentary(QStringLiteral("commentary.svg"))
115 , icon_configure(QStringLiteral("configure.svg"))
116 , icon_contents2(QStringLiteral("contents2.svg"))
117 , icon_delete(QStringLiteral("delete.svg"))
118 , icon_dictionary(QStringLiteral("dictionary.svg"))
119 , icon_displayconfig(QStringLiteral("displayconfig.svg"))
120 , icon_document_magnifier(QStringLiteral("document_magnifier.svg"))
121 , icon_edit_clear_locationbar(QStringLiteral("edit_clear_locationbar.svg"))
122 , icon_edit_copy(QStringLiteral("edit_copy.svg"))
123 , icon_exit(QStringLiteral("exit.svg"))
124 , icon_export(QStringLiteral("export.svg"))
125 , icon_file_save(QStringLiteral("file_save.svg"))
126 , icon_fileclose(QStringLiteral("fileclose.svg"))
127 , icon_find(QStringLiteral("find.svg"))
128 , icon_flag(QStringLiteral("flag.svg"))
129 , icon_folder_open(QStringLiteral("folder-open.svg"))
130 , icon_folder(QStringLiteral("folder.svg"))
131 , icon_fonts(QStringLiteral("fonts.svg"))
132 , icon_forward(QStringLiteral("forward.svg"))
133 , icon_import(QStringLiteral("import.svg"))
134 , icon_info(QStringLiteral("info.svg"))
135 , icon_key_bindings(QStringLiteral("key_bindings.svg"))
136 , icon_layer_visible_on(QStringLiteral("layer-visible-on.svg"))
137 , icon_lexicon(QStringLiteral("lexicon.svg"))
138 , icon_light_bulb(QStringLiteral("light_bulb.svg"))
139 , icon_lock(QStringLiteral("lock.svg"))
140 , icon_manual(QStringLiteral("manual.svg"))
141 , icon_map(QStringLiteral("map.svg"))
142 , icon_pencil(QStringLiteral("pencil.svg"))
143 , icon_plus(QStringLiteral("plus.svg"))
144 , icon_pointing_arrow(QStringLiteral("pointing_arrow.svg"))
145 , icon_print(QStringLiteral("print.svg"))
146 , icon_remove(QStringLiteral("remove.svg"))
147 , icon_questionable(QStringLiteral("questionable.svg"))
148 , icon_questionmark(QStringLiteral("questionmark.svg"))
149 , icon_refresh(QStringLiteral("refresh.svg"))
150 , icon_startconfig(QStringLiteral("startconfig.svg"))
151 , icon_stop(QStringLiteral("stop.svg"))
152 , icon_swordconfig(QStringLiteral("swordconfig.svg"))
153 , icon_sync(QStringLiteral("sync.svg"))
154 , icon_tabbed(QStringLiteral("tabbed.svg"))
155 , icon_text_bold(QStringLiteral("text_bold.svg"))
156 , icon_text_center(QStringLiteral("text_center.svg"))
157 , icon_text_italic(QStringLiteral("text_italic.svg"))
158 , icon_text_leftalign(QStringLiteral("text_leftalign.svg"))
159 , icon_text_rightalign(QStringLiteral("text_rightalign.svg"))
160 , icon_text_under(QStringLiteral("text_under.svg"))
161 , icon_tile(QStringLiteral("tile.svg"))
162 , icon_tile_horiz(QStringLiteral("tile_horiz.svg"))
163 , icon_tile_vert(QStringLiteral("tile_vert.svg"))
164 , icon_trash(QStringLiteral("trash.svg"))
165 , icon_unlock(QStringLiteral("unlock.svg"))
166 , icon_view_tree(QStringLiteral("view-tree.svg"))
167 , icon_view_index(QStringLiteral("view_index.svg"))
168 , icon_view_mag(QStringLiteral("view_mag.svg"))
169 , icon_view_profile(QStringLiteral("view_profile.svg"))
170 , icon_window_fullscreen(QStringLiteral("window_fullscreen.svg"))
171 /* Overlayed icons: */
188{
190 m_instance = this;
191}
192
193QString iconToHtml(QIcon const & icon, int const extent) {
194 QByteArray bytes;
195 QBuffer buffer(&bytes);
196 icon.pixmap(extent).save(&buffer, "PNG");
197 return "<img src=\"data:image/png;base64," + bytes.toBase64() + "\" />";
198}
#define BT_ASSERT(...)
Definition btassert.h:17
QString iconToHtml(QIcon const &icon, int const extent)
Definition bticons.cpp:193
OverlayedIcon(QIcon const &icon, QIcon const &overlayedIcon)
Definition bticons.cpp:94
RegularIcon(QString const &name)
Definition bticons.cpp:90
RegularIcon const icon_document_magnifier
Definition bticons.h:75
RegularIcon const icon_light_bulb
Definition bticons.h:93
RegularIcon const icon_unlock
Definition bticons.h:120
RegularIcon const icon_refresh
Definition bticons.h:104
OverlayedIcon const icon_cascade_auto
Definition bticons.h:135
RegularIcon const icon_delete
Definition bticons.h:72
RegularIcon const icon_dictionary
Definition bticons.h:73
RegularIcon const icon_export
Definition bticons.h:79
OverlayedIcon const icon_lexicon_locked
Definition bticons.h:140
RegularIcon const icon_bible
Definition bticons.h:61
OverlayedIcon const icon_tile_auto
Definition bticons.h:141
OverlayedIcon const icon_bible_install
Definition bticons.h:129
RegularIcon const icon_print
Definition bticons.h:100
RegularIcon const icon_key_bindings
Definition bticons.h:90
RegularIcon const icon_back
Definition bticons.h:60
OverlayedIcon const icon_bible_remove
Definition bticons.h:131
RegularIcon const icon_swordconfig
Definition bticons.h:107
RegularIcon const icon_manual
Definition bticons.h:95
RegularIcon const icon_tabbed
Definition bticons.h:109
RegularIcon const icon_import
Definition bticons.h:88
OverlayedIcon const icon_bible_add
Definition bticons.h:128
RegularIcon const icon_plus
Definition bticons.h:98
RegularIcon const icon_calendar
Definition bticons.h:66
RegularIcon const icon_view_tree
Definition bticons.h:121
RegularIcon const icon_text_under
Definition bticons.h:115
RegularIcon const icon_configure
Definition bticons.h:70
RegularIcon const icon_books
Definition bticons.h:65
RegularIcon const icon_pointing_arrow
Definition bticons.h:99
RegularIcon const icon_questionmark
Definition bticons.h:103
RegularIcon const icon_sync
Definition bticons.h:108
RegularIcon const icon_forward
Definition bticons.h:87
RegularIcon const icon_startconfig
Definition bticons.h:105
OverlayedIcon const icon_bible_locked
Definition bticons.h:130
RegularIcon const icon_find
Definition bticons.h:82
RegularIcon const icon_commentary
Definition bticons.h:69
OverlayedIcon const icon_lexicon_add
Definition bticons.h:139
RegularIcon const icon_edit_copy
Definition bticons.h:77
RegularIcon const icon_file_save
Definition bticons.h:80
RegularIcon const icon_edit_clear_locationbar
Definition bticons.h:76
RegularIcon const icon_window_fullscreen
Definition bticons.h:125
RegularIcon const icon_lexicon
Definition bticons.h:92
RegularIcon const icon_book
Definition bticons.h:63
RegularIcon const icon_questionable
Definition bticons.h:102
RegularIcon const icon_view_profile
Definition bticons.h:124
OverlayedIcon const icon_commentary_add
Definition bticons.h:136
RegularIcon const icon_text_center
Definition bticons.h:111
RegularIcon const icon_folder_open
Definition bticons.h:84
RegularIcon const icon_cascade
Definition bticons.h:67
OverlayedIcon const icon_bible_uninstall
Definition bticons.h:132
RegularIcon const icon_bibletime
Definition bticons.h:62
OverlayedIcon const icon_book_add
Definition bticons.h:133
RegularIcon const icon_checkbox
Definition bticons.h:68
RegularIcon const icon_automatically
Definition bticons.h:59
RegularIcon const icon_stop
Definition bticons.h:106
RegularIcon const icon_tile
Definition bticons.h:116
RegularIcon const icon_fileclose
Definition bticons.h:81
RegularIcon const icon_view_mag
Definition bticons.h:123
RegularIcon const icon_tile_vert
Definition bticons.h:118
RegularIcon const icon_text_bold
Definition bticons.h:110
RegularIcon const icon_remove
Definition bticons.h:101
RegularIcon const icon_contents2
Definition bticons.h:71
RegularIcon const icon_add
Definition bticons.h:58
RegularIcon const icon_exit
Definition bticons.h:78
RegularIcon const icon_text_rightalign
Definition bticons.h:114
RegularIcon const icon_view_index
Definition bticons.h:122
static BtIcons * m_instance
Definition bticons.h:51
OverlayedIcon const icon_folder_add
Definition bticons.h:138
OverlayedIcon const icon_commentary_locked
Definition bticons.h:137
RegularIcon const icon_folder
Definition bticons.h:85
RegularIcon const icon_trash
Definition bticons.h:119
RegularIcon const icon_text_italic
Definition bticons.h:112
RegularIcon const icon_lock
Definition bticons.h:94
RegularIcon const icon_map
Definition bticons.h:96
RegularIcon const icon_flag
Definition bticons.h:83
OverlayedIcon const icon_book_locked
Definition bticons.h:134
RegularIcon const icon_info
Definition bticons.h:89
OverlayedIcon const icon_tile_horiz_auto
Definition bticons.h:142
RegularIcon const icon_layer_visible_on
Definition bticons.h:91
RegularIcon const icon_bookmark
Definition bticons.h:64
OverlayedIcon const icon_tile_vert_auto
Definition bticons.h:143
RegularIcon const icon_pencil
Definition bticons.h:97
RegularIcon const icon_displayconfig
Definition bticons.h:74
RegularIcon const icon_fonts
Definition bticons.h:86
RegularIcon const icon_text_leftalign
Definition bticons.h:113
RegularIcon const icon_tile_horiz
Definition bticons.h:117
QPixmap pixmap(QSize const &size, QIcon::Mode mode, QIcon::State state) override
Definition bticons.cpp:69
void paint(QPainter *painter, QRect const &rect, QIcon::Mode mode, QIcon::State state) override
Definition bticons.cpp:46
BtOverlayIconEngine(QIcon const &icon, QIcon const &overlay)
Definition bticons.cpp:38