File tree Expand file tree Collapse file tree 3 files changed +26
-12
lines changed Expand file tree Collapse file tree 3 files changed +26
-12
lines changed Original file line number Diff line number Diff line change 3535
3636 /* !
3737 The name of the icon to display.
38-
38+
3939 \sa source
4040 */
4141 property string name
5050 */
5151 property string source: name ? " image://material/" + name : " "
5252
53- property bool valid: source .indexOf (" icon://awesome/" ) == 0
53+ property bool valid: source .indexOf (" icon://awesome/" ) == 0
5454 ? awesomeIcon .valid : image .status == Image .Ready
5555
5656 property url iconDirectory: Qt .resolvedUrl (" icons" )
6464 id: image
6565
6666 visible: ! colorize
67-
67+ sourceSize .width : parent .width
68+ sourceSize .height : parent .height
6869 source: icon .source
6970 }
7071
7778 cached: true
7879 visible: image .source != " " && colorize
7980 opacity: icon .color .a
80- }
81+ }
8182}
Original file line number Diff line number Diff line change 2222#include < qquickimageprovider.h>
2323#include < QImage>
2424#include < QPainter>
25+ #include < QSvgRenderer>
26+
27+ #include < QDebug>
2528
2629class MaterialIconProvider : public QQuickImageProvider
2730{
2831public:
2932 MaterialIconProvider ()
30- : QQuickImageProvider(QQuickImageProvider::Pixmap )
33+ : QQuickImageProvider(QQuickImageProvider::Image )
3134 {
3235 }
3336
34- QPixmap requestPixmap (const QString &id, QSize *size, const QSize &requestedSize)
37+ QImage requestImage (const QString &id, QSize *size, const QSize &requestedSize)
3538 {
36- int width = 100 ;
37- int height = 50 ;
38- QImage icon = QImage (" /lib/qt/qml/Material/icons/" + id + " .svg" );
39+ QString iconPath = " /lib/qt/qml/Material/icons/" + id + " .svg" ;
40+
41+ QSvgRenderer renderer;
42+ if (!renderer.load (iconPath))
43+ qWarning () << " Unable to load image:" << iconPath;
44+
45+ QImage image (requestedSize.width () > 0 ? requestedSize.width () : renderer.defaultSize ().width (),
46+ requestedSize.height () > 0 ? requestedSize.height () : renderer.defaultSize ().height (),
47+ QImage::Format_ARGB32_Premultiplied);
48+ image.fill (Qt::transparent);
3949
4050 if (size)
41- *size = QSize (width, height);
51+ *size = image.size ();
52+
53+ QPainter p (&image);
54+ renderer.render (&p);
4255
43- return QPixmap::fromImage (icon) ;
56+ return image ;
4457 }
4558};
4659
Original file line number Diff line number Diff line change 11TEMPLATE = lib
22CONFIG += plugin
3- QT += qml quick
3+ QT += qml quick svg
44
55TARGET = materialiconprovider
66
You can’t perform that action at this time.
0 commit comments