From 69461e4c68fee8eac734701b36694cac2acadfd9 Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Mon, 14 Nov 2022 16:26:42 +0200 Subject: [PATCH] QmlDesigner: Generate material browser texture icons using provider Provider allows using special generation methods for hdr images, which QImage doesn't support. Task-number: QDS-8296 Change-Id: I829199264ff4a5eb677d65c908eacd1e20ad94e5 Reviewed-by: Mahmoud Badri Reviewed-by: --- .../materialBrowserQmlSource/TextureItem.qml | 2 +- .../assetslibrary/assetslibrary.qrc | 5 ++- .../assetslibrary/images/asset_default.png | Bin 312 -> 0 bytes .../assetslibrary/images/asset_default@2x.png | Bin 346 -> 0 bytes .../assetslibrary/images/assets_default.png | Bin 0 -> 1482 bytes .../images/assets_default@2x.png | Bin 0 -> 3316 bytes .../images/assets_default_128.png | Bin 0 -> 4699 bytes .../materialbrowsertexturesmodel.cpp | 2 +- .../materialbrowser/materialbrowserwidget.cpp | 36 +++++++++++++++++- .../materialbrowser/materialbrowserwidget.h | 2 + .../materialeditor/images/texture_default.png | Bin 0 -> 3219 bytes .../images/texture_default@2x.png | Bin 0 -> 7659 bytes .../materialeditor/materialeditor.qrc | 2 + 13 files changed, 43 insertions(+), 6 deletions(-) delete mode 100644 src/plugins/qmldesigner/components/assetslibrary/images/asset_default.png delete mode 100644 src/plugins/qmldesigner/components/assetslibrary/images/asset_default@2x.png create mode 100644 src/plugins/qmldesigner/components/assetslibrary/images/assets_default.png create mode 100644 src/plugins/qmldesigner/components/assetslibrary/images/assets_default@2x.png create mode 100644 src/plugins/qmldesigner/components/assetslibrary/images/assets_default_128.png create mode 100644 src/plugins/qmldesigner/components/materialeditor/images/texture_default.png create mode 100644 src/plugins/qmldesigner/components/materialeditor/images/texture_default@2x.png diff --git a/share/qtcreator/qmldesigner/materialBrowserQmlSource/TextureItem.qml b/share/qtcreator/qmldesigner/materialBrowserQmlSource/TextureItem.qml index b5ef129a6c3..4f73722f692 100644 --- a/share/qtcreator/qmldesigner/materialBrowserQmlSource/TextureItem.qml +++ b/share/qtcreator/qmldesigner/materialBrowserQmlSource/TextureItem.qml @@ -37,7 +37,7 @@ Rectangle { } Image { - source: textureSource + source: "image://materialBrowserTex/" + textureSource sourceSize.width: root.width - 10 sourceSize.height: root.height - 10 anchors.centerIn: parent diff --git a/src/plugins/qmldesigner/components/assetslibrary/assetslibrary.qrc b/src/plugins/qmldesigner/components/assetslibrary/assetslibrary.qrc index f8cea612985..61d39d016db 100644 --- a/src/plugins/qmldesigner/components/assetslibrary/assetslibrary.qrc +++ b/src/plugins/qmldesigner/components/assetslibrary/assetslibrary.qrc @@ -1,7 +1,5 @@ - images/asset_default.png - images/asset_default@2x.png images/asset_shader.png images/asset_shader@2x.png images/asset_shader_128.png @@ -12,5 +10,8 @@ images/asset_video@2x.png images/browse.png images/browse@2x.png + images/assets_default.png + images/assets_default@2x.png + images/assets_default_128.png diff --git a/src/plugins/qmldesigner/components/assetslibrary/images/asset_default.png b/src/plugins/qmldesigner/components/assetslibrary/images/asset_default.png deleted file mode 100644 index ef59d892791f9a91d37b5cd1330b7d78be415cdd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 312 zcmeAS@N?(olHy`uVBq!ia0y~yV2}V|4rT@hhU+WOo?>8N@C)z>ab;j&SV29|be7SF zfq_A?B*-tAfss$Zz{J$ddcw2?%k~^Nbn5iuXCFR({`R|z(?pYjfuX_E#W6%<;@pY1 zg_;a_Se2h%b8}H-`u*SjmA9;(pG@lfOK*H;&Fh+@EWjM7BBbt97hq{EA*Sf5GXb#;Uo|hl>OSjhpYP9k}ch@-;Xnw768@VMK2K tJB{x}<#+S>OOy+pza-m#Z2td&$>_O|=w`;v=?n}E44$rjF6*2UngG||i@pE= diff --git a/src/plugins/qmldesigner/components/assetslibrary/images/asset_default@2x.png b/src/plugins/qmldesigner/components/assetslibrary/images/asset_default@2x.png deleted file mode 100644 index 6540cc859cd93fbc9e4cb2fab46f642d3d615ec5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 346 zcmeAS@N?(olHy`uVBq!ia0y~yU@!n-4rT@hhJ-tuTNxM_Yyx~jTp1V`R*(yrN>jrb z7#M_0g8YIRxOsR51QpcuLgES_$qd(&r7#MbWx;Tb-9Df_?D0E1HXNj1W zi0G|9|JPe}S}ADG@IJk;I-zX>tI#CZmFo-{4}6h3{nFE+$8ODm1m3zQf1Y#9?kIj) z->miS=)VgG&Pz_ep>)KCkKgx4&j*Lwk9zbH?lg5PDhJrf&d+zh`FD?4lb@+g;)1K% zRjae(d>3=9mOu6{1-oD!M9glAU%qhuU1_tKyo-U3d9-Xye-0_z^ z1n%eRYwC8eb#d5zD9or1^>;b4T~yR1_#Bg5hYWje){VdayJpR30&Fz@E8#PimkNZc>tePMDDYN(6@_3%R53e_$d0*Ny zLFwcrNrnw-_fxICiziPukK^r=j}kT0;ceRn?PnZE z`qt(r^OPI1C7gL9AG?0Twp+#Dw-k8JF=B1dE&23aP*%UpsCt~&+`Ewo8 zS%+D;1H7MH`uZmLtjDeB9or@;F5bCSsCmkLG zdS5}&=i9DN7K=R@fBstBx|rUI_~K(J8fzDClba(}w>8R7m07!VvEE6~e#yWj@10ln z8D89*H~9nWf@PvB^`;kPKB_)mx7gEAB$IdPdeQJBQjL4cU;DmdpYJ(sN#EMJGjwGZ zD>&?zeq+6#&+HU~<(wtEw+6gpxlsS8?eyl^=W0|A;cxhE&$w<(kjR=MKjnCY@Q1ALVyEo8PJK<%e^;$z_hQG!C%(_BK8L<^b&;93 zpzdwf>dE;>bgMRYe-fSR_(b%WbQ^+UM~TZ46!`10n>^f}hH^5LEG`IGi! zZE3l&cUi2;UzMed45!q~r~dn$;PS9PYC$ve&-u%_&PZ)tSbW%l*)!_7TE>N2Xkcm7g_W@_~`t66m!eK|5>u))%{dR?alUX2d_sMPN85kHCJYD@<);T3K0RTyZ B^@0EZ literal 0 HcmV?d00001 diff --git a/src/plugins/qmldesigner/components/assetslibrary/images/assets_default@2x.png b/src/plugins/qmldesigner/components/assetslibrary/images/assets_default@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..e54039dcbde3d5f39c35145536b57878061bb525 GIT binary patch literal 3316 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 Dd&fjc literal 0 HcmV?d00001 diff --git a/src/plugins/qmldesigner/components/materialbrowser/materialbrowsertexturesmodel.cpp b/src/plugins/qmldesigner/components/materialbrowser/materialbrowsertexturesmodel.cpp index b39bdbb1f94..15613960da1 100644 --- a/src/plugins/qmldesigner/components/materialbrowser/materialbrowsertexturesmodel.cpp +++ b/src/plugins/qmldesigner/components/materialbrowser/materialbrowsertexturesmodel.cpp @@ -35,7 +35,7 @@ QVariant MaterialBrowserTexturesModel::data(const QModelIndex &index, int role) QByteArray roleName = roleNames().value(role); if (roleName == "textureSource") { QString source = m_textureList.at(index.row()).variantProperty("source").value().toString(); - return QUrl::fromLocalFile(DocumentManager::currentResourcePath().path() + '/' + source); + return QVariant(DocumentManager::currentResourcePath().path() + '/' + source); } if (roleName == "textureVisible") diff --git a/src/plugins/qmldesigner/components/materialbrowser/materialbrowserwidget.cpp b/src/plugins/qmldesigner/components/materialbrowser/materialbrowserwidget.cpp index d9a3539d249..75aad7bd7af 100644 --- a/src/plugins/qmldesigner/components/materialbrowser/materialbrowserwidget.cpp +++ b/src/plugins/qmldesigner/components/materialbrowser/materialbrowserwidget.cpp @@ -18,6 +18,7 @@ #include #include +#include #include #include @@ -88,6 +89,33 @@ public: } }; +class TextureImageProvider : public QQuickImageProvider +{ +public: + TextureImageProvider() : QQuickImageProvider(Pixmap) {} + + QPixmap requestPixmap(const QString &id, QSize *size, const QSize &requestedSize) override + { + QPixmap pixmap; + const QString suffix = id.split('.').last().toLower(); + if (suffix == "hdr") + pixmap = HdrImage{id}.toPixmap(); + else + pixmap = Utils::StyleHelper::dpiSpecificImageFile(id); + + if (pixmap.isNull()) + pixmap = Utils::StyleHelper::dpiSpecificImageFile(":/materialeditor/images/texture_default.png"); + + if (size) + *size = pixmap.size(); + + if (requestedSize.isValid()) + return pixmap.scaled(requestedSize, Qt::KeepAspectRatio); + + return pixmap; + } +}; + bool MaterialBrowserWidget::eventFilter(QObject *obj, QEvent *event) { if (event->type() == QEvent::FocusOut) { @@ -119,8 +147,9 @@ bool MaterialBrowserWidget::eventFilter(QObject *obj, QEvent *event) QString iconPath = QLatin1String("%1/%2") .arg(DocumentManager::currentResourcePath().path(), m_textureToDrag.variantProperty("source").value().toString()); - - model->startDrag(mimeData, QPixmap(iconPath).scaled({128, 128})); + model->startDrag(mimeData, + m_textureImageProvider->requestPixmap(iconPath, nullptr, + {128, 128})); } m_materialToDrag = {}; m_textureToDrag = {}; @@ -140,6 +169,7 @@ MaterialBrowserWidget::MaterialBrowserWidget(MaterialBrowserView *view) , m_materialBrowserTexturesModel(new MaterialBrowserTexturesModel(this)) , m_quickWidget(new QQuickWidget(this)) , m_previewImageProvider(new PreviewImageProvider()) + , m_textureImageProvider(new TextureImageProvider()) { setWindowTitle(tr("Material Browser", "Title of material browser widget")); setMinimumWidth(120); @@ -160,6 +190,8 @@ MaterialBrowserWidget::MaterialBrowserWidget(MaterialBrowserView *view) }); m_quickWidget->engine()->addImageProvider("materialBrowser", m_previewImageProvider); + m_quickWidget->engine()->addImageProvider("materialBrowserTex", m_textureImageProvider); + Theme::setupTheme(m_quickWidget->engine()); m_quickWidget->installEventFilter(this); diff --git a/src/plugins/qmldesigner/components/materialbrowser/materialbrowserwidget.h b/src/plugins/qmldesigner/components/materialbrowser/materialbrowserwidget.h index d1c0ef7c8a6..8e868a69864 100644 --- a/src/plugins/qmldesigner/components/materialbrowser/materialbrowserwidget.h +++ b/src/plugins/qmldesigner/components/materialbrowser/materialbrowserwidget.h @@ -28,6 +28,7 @@ class MaterialBrowserView; class MaterialBrowserModel; class MaterialBrowserTexturesModel; class PreviewImageProvider; +class TextureImageProvider; class MaterialBrowserWidget : public QFrame { @@ -70,6 +71,7 @@ private: QShortcut *m_qmlSourceUpdateShortcut = nullptr; PreviewImageProvider *m_previewImageProvider = nullptr; + TextureImageProvider *m_textureImageProvider = nullptr; Core::IContext *m_context = nullptr; QString m_filterText; diff --git a/src/plugins/qmldesigner/components/materialeditor/images/texture_default.png b/src/plugins/qmldesigner/components/materialeditor/images/texture_default.png new file mode 100644 index 0000000000000000000000000000000000000000..70e85cc2ebae18303e61189afb839ab646e11207 GIT binary patch literal 3219 zcmeAS@N?(olHy`uVBq!ia0y~yV2A=?4rT@h2L7^*1`G_0{Q*89t_%zejEs!SmMvSp zd^v<%x^yXoft5rPMB`!_f@T^r7nj~;FaS3VCIE6IeiM*ok+tJuFI%<@O$!g&z?Ph{^G^USFc~ce)Hz-+qduDy?_7V!^e-GK7IcDbT`I*}o7`O~QT^vIqT5}_Non_ob@9(s}vpYe!MZ-5l>CRLWrI3}O zi!^$-n)oVzTr3jQc(^OqCn#4-MdF<8j+yp%D(~m(-`#!t_T8D4pPzlNd!Jn1eIdi_ z1-JZ-l==208fTNGV-CpOxRhhIRbEcawYoO_`Q*8C@5=ssdx=s0)v@b$TqT2EtL-hz zYhQGy+wdrd^`FPa`=piA_Oz%E$KWF6Qw&P{}{zUjy!}G?zUCzr(eIiY|I4;dRS0XjL+j@mZCbyAViFQMs zxNCpVH7kp$+|x_~w@JAwJ~v8N+{6{ytXI_kPQYisb_0*tlI0EsKiS{s%FD^VyYn`d zb5BrX!%{92t1i(Op>hHTtxlX$54X48t6;=C?_ZhMwCpVHxH}87m=zoxE?V(EYi3r` zk>%Sv-zGA5#?|0$8-Jb59)H-R+}qvb@xq|sT$VJJ+_KrO)$-H+ z6*+c_Oq>6F+TlF!2i3LK^TS^o?Fs0!=8@gWG)s^nvs*It&YQ_o&i$_lJu&OQRe90# z&8p8$9WC^PJA55EKJVg8^SStO*T+D&^6FI@GA&Qpcb+~RG}q|Ftw|1E zP9|L4{4=iS|6J`o5vo1iGnbUII!@hd*t<#c<*(Q0joWAE9o+Nk>KpUzI%OFi8x=%T zR_^sGdMvl&%uI`4HF0Ni&qs%SIjc4A|D8uItlIvChnA^-{1xr8kCpBFvB;j+hr&}s z0`Ht!bl))lzQil>L0yE%CmWRpG|kxFcDeSA*kLFX~h4FkODP_MFj@ z3*|*ARywVJxsqQmmhgXWD&#rgvfaG}vBw3Tneye-Nt`>xg?RUU*Ew2$zW3vUQ}>gt zV#^fuI{c#|0@;_{(a@W0(%5?Ju1)ZN(^$EZ`G1_lQnn}mTbV7CzqR2+-#J5-q9=>} zF8@FCTt0s55@EIXsTO^^O}~enFI+7#c5}{@(^wJo^4>Fvp#I5r4@8o=jm($S{(K!j_0`kH z)1C#A%eU%XJ8r}7exYEY&N=s|#|n1DSurPXRG7$rc(POCN5?SD<~y584}EistKS+I zbt%wz+eW^NN)f#J_ZCiU*3^H>`G3>7h*M2D$Ar(GShSLFqw3Y>y+^Bdukc8pdvd$h zk(P~e+Gm^=I&>}Eb5-Pzl+n}O5#H+4)|Pfy?CL68vvlLqP3L`|Ma1QWDDN#@Q5P)r zGsaE+4EIZw(gR+|1DooQcYY z<7-$L_r0Fa1+ORV@(+mqcjFAlX2ok#6`n;_yJ~yxG1zQeaAZ>ASAM;dK^LFfD@4mV z1o+P3nsn#%g=@84nIB(7CI6II+iVl)z|q_D`I_o#yMklB-+Nw4=l|dBzv1x3uQCs( z_h0P&o;Jn)W>b&bwVSV4WbWSU`SXM`f648laD{hsFE*r2k#Q(5n_T@PCZq>77*`R8hdZj4nl3t`h$u^B$HA1W@Q+OwDa%Bz;G`fl`z;qQy6;GVb2%{`!*)0|NhFo;_LQ3{ADjKc z%JM)~)A4L=^%X2X_gJh>wR7v2%jW!9;OuY6kTY|Z5{vLT>xFD{d|b{uzv0vIS`(Zy zSMlz#eUl$=zj*lOq(z?s;^qll6MCI8_n5A(;>QDzw*TC&Gcnvc%+JXDO1&t*r-D;g zlB>bWnYSW0{o^paUgOUv@cy>2iTy+4fI{S6aHypV#i^PD zOJB|1xl{VbLf`(p8{2c-K3Bud(FKlRs9UTJiGCJxee5eTADAL{-mR`FE1( zO_8nNr>*yxcD8-_lj7%)Znud(qV_Umu?f_1xvcy8n`by|;7T lO^CiYvlj{ literal 0 HcmV?d00001 diff --git a/src/plugins/qmldesigner/components/materialeditor/images/texture_default@2x.png b/src/plugins/qmldesigner/components/materialeditor/images/texture_default@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..a27efb275d39b149b901835c57ad93c750a686e3 GIT binary patch literal 7659 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 literal 0 HcmV?d00001 diff --git a/src/plugins/qmldesigner/components/materialeditor/materialeditor.qrc b/src/plugins/qmldesigner/components/materialeditor/materialeditor.qrc index 4ed3c769175..872452df1a0 100644 --- a/src/plugins/qmldesigner/components/materialeditor/materialeditor.qrc +++ b/src/plugins/qmldesigner/components/materialeditor/materialeditor.qrc @@ -1,5 +1,7 @@ images/defaultmaterialpreview.png + images/texture_default.png + images/texture_default@2x.png