From 3779147ffc1b5876565dfb85c0219e65111ee0c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Morten=20Johan=20S=C3=B8rvig?= Date: Wed, 16 Jan 2013 22:06:59 +0100 Subject: [PATCH] Add 2x icons for retina displays. This change updates the mode selector/fancyactionbar in Qt Creator with new high-resolution icons. Set Qt::AA_UseHighDpiImages on Qt 5.1 and higher to make QIcon generate high-dpi pixmaps. Add "@2x" mode images. Update StyleHelper::drawIconWithShadow to handle high-dpi pixmaps. The shadow-drawing algorithm is kept in device pixels. Change-Id: I411b7a24e534a2d75a1bbdc4d10219dcbea26bed Reviewed-by: Jens Bache-Wiig --- src/app/main.cpp | 4 +++ src/libs/utils/stylehelper.cpp | 32 +++++++++++++++--- src/libs/utils/stylehelper.h | 4 +-- src/plugins/analyzerbase/analyzerbase.qrc | 1 + .../analyzerbase/images/analyzer_mode@2x.png | Bin 0 -> 4194 bytes src/plugins/coreplugin/coreconstants.h | 1 + src/plugins/coreplugin/fancyactionbar.qrc | 5 +++ .../coreplugin/images/mode_Debug@2x.png | Bin 0 -> 6535 bytes .../coreplugin/images/mode_Design@2x.png | Bin 0 -> 6227 bytes .../coreplugin/images/mode_Edit@2x.png | Bin 0 -> 3157 bytes .../coreplugin/images/mode_Project@2x.png | Bin 0 -> 4227 bytes .../coreplugin/images/mode_Reference@2x.png | Bin 0 -> 5215 bytes src/plugins/welcome/welcomeplugin.cpp | 6 +++- 13 files changed, 45 insertions(+), 8 deletions(-) create mode 100644 src/plugins/analyzerbase/images/analyzer_mode@2x.png create mode 100644 src/plugins/coreplugin/images/mode_Debug@2x.png create mode 100644 src/plugins/coreplugin/images/mode_Design@2x.png create mode 100644 src/plugins/coreplugin/images/mode_Edit@2x.png create mode 100644 src/plugins/coreplugin/images/mode_Project@2x.png create mode 100644 src/plugins/coreplugin/images/mode_Reference@2x.png diff --git a/src/app/main.cpp b/src/app/main.cpp index c7fe2c623cc..f9b2cd747a0 100644 --- a/src/app/main.cpp +++ b/src/app/main.cpp @@ -307,6 +307,10 @@ int main(int argc, char **argv) QtSystemExceptionHandler systemExceptionHandler; #endif +#if QT_VERSION >= 0x050100 + app.setAttribute(Qt::AA_UseHighDpiPixmaps); +#endif + // Manually determine -settingspath command line option // We can't use the regular way of the plugin manager, because that needs to parse pluginspecs // but the settings path can influence which plugins are enabled diff --git a/src/libs/utils/stylehelper.cpp b/src/libs/utils/stylehelper.cpp index 5d7285c5baa..0bb8327d44e 100644 --- a/src/libs/utils/stylehelper.cpp +++ b/src/libs/utils/stylehelper.cpp @@ -35,6 +35,7 @@ #include #include #include +#include // Clamps float color values within (0, 255) static int clamp(float x) @@ -363,15 +364,32 @@ void StyleHelper::menuGradient(QPainter *painter, const QRect &spanRect, const Q } } +static qreal pixmapDevicePixelRatio(const QPixmap &pixmap) +{ +#if QT_VERSION > 0x050000 + return pixmap.devicePixelRatio(); +#else + return 1.0; +#endif +} + // Draws a cached pixmap with shadow void StyleHelper::drawIconWithShadow(const QIcon &icon, const QRect &rect, - QPainter *p, QIcon::Mode iconMode, int radius, const QColor &color, const QPoint &offset) + QPainter *p, QIcon::Mode iconMode, int dipRadius, const QColor &color, const QPoint &dipOffset) { QPixmap cache; QString pixmapName = QString::fromLatin1("icon %0 %1 %2").arg(icon.cacheKey()).arg(iconMode).arg(rect.height()); if (!QPixmapCache::find(pixmapName, cache)) { + // High-dpi support: The in parameters (rect, radius, offset) are in + // device-independent pixels. The call to QIcon::pixmap() below might + // return a high-dpi pixmap, which will in that case have a devicePixelRatio + // different than 1. The shadow drawing caluculations are done in device + // pixels. QPixmap px = icon.pixmap(rect.size()); + int devicePixelRatio = qCeil(pixmapDevicePixelRatio(px)); + int radius = dipRadius * devicePixelRatio; + QPoint offset = dipOffset * devicePixelRatio; cache = QPixmap(px.size() + QSize(radius * 2, radius * 2)); cache.fill(Qt::transparent); @@ -396,7 +414,7 @@ void StyleHelper::drawIconWithShadow(const QIcon &icon, const QRect &rect, QPainter tmpPainter(&tmp); tmpPainter.setCompositionMode(QPainter::CompositionMode_Source); - tmpPainter.drawPixmap(QPoint(radius, radius), px); + tmpPainter.drawPixmap(QRect(radius, radius, px.width(), px.height()), px); tmpPainter.end(); // blur the alpha channel @@ -423,13 +441,17 @@ void StyleHelper::drawIconWithShadow(const QIcon &icon, const QRect &rect, cachePainter.drawImage(QRect(0, 0, cache.rect().width(), cache.rect().height()), tmp); // Draw the actual pixmap... - cachePainter.drawPixmap(QPoint(radius, radius) + offset, px); + cachePainter.drawPixmap(QRect(QPoint(radius, radius) + offset, QSize(px.width(), px.height())), px); +#if QT_VERSION > 0x050000 + cache.setDevicePixelRatio(devicePixelRatio); +#endif QPixmapCache::insert(pixmapName, cache); } QRect targetRect = cache.rect(); - targetRect.moveCenter(rect.center()); - p->drawPixmap(targetRect.topLeft() - offset, cache); + targetRect.setSize(targetRect.size() / pixmapDevicePixelRatio(cache)); + targetRect.moveCenter(rect.center() - dipOffset); + p->drawPixmap(targetRect, cache); } // Draws a CSS-like border image where the defined borders are not stretched diff --git a/src/libs/utils/stylehelper.h b/src/libs/utils/stylehelper.h index 75be2220adc..39044d8aafb 100644 --- a/src/libs/utils/stylehelper.h +++ b/src/libs/utils/stylehelper.h @@ -83,8 +83,8 @@ public: static bool usePixmapCache() { return true; } static void drawIconWithShadow(const QIcon &icon, const QRect &rect, QPainter *p, QIcon::Mode iconMode, - int radius = 3, const QColor &color = QColor(0, 0, 0, 130), - const QPoint &offset = QPoint(1, -2)); + int dipRadius = 3, const QColor &color = QColor(0, 0, 0, 130), + const QPoint &dipOffset = QPoint(1, -2)); static void drawCornerImage(const QImage &img, QPainter *painter, QRect rect, int left = 0, int top = 0, int right = 0, int bottom = 0); diff --git a/src/plugins/analyzerbase/analyzerbase.qrc b/src/plugins/analyzerbase/analyzerbase.qrc index 679ef7db3df..12b8ad1f54e 100644 --- a/src/plugins/analyzerbase/analyzerbase.qrc +++ b/src/plugins/analyzerbase/analyzerbase.qrc @@ -1,6 +1,7 @@ images/analyzer_mode.png + images/analyzer_mode@2x.png images/analyzer_category.png images/analyzer_start_small.png diff --git a/src/plugins/analyzerbase/images/analyzer_mode@2x.png b/src/plugins/analyzerbase/images/analyzer_mode@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..af8b8dea8c10643b393bf6ab5d16c62a377098ee GIT binary patch literal 4194 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 t&)IYQ^fCrB)(x5szKnM+KmE_d!_cwi images/mode_Debug.png + images/mode_Debug@2x.png images/mode_Edit.png + images/mode_Edit@2x.png images/mode_Output.png images/mode_Project.png + images/mode_Project@2x.png images/mode_Reference.png + images/mode_Reference@2x.png images/mode_Design.png + images/mode_Design@2x.png diff --git a/src/plugins/coreplugin/images/mode_Debug@2x.png b/src/plugins/coreplugin/images/mode_Debug@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc56c6d93c7825db6972f06f9c5d8d9cc4a6c73 GIT binary patch literal 6535 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%0D0WziQyD zWRduMX@b|0`x~uo+TK)r4XmttmZa*iDPmv53!U_R9urJM=W4gM?&*}hEN$R>cSZB* zXN+kXTMch4)=W;xDp3dsS{n64C)G0i?0l!KGMlsZ|0+~eh&R4!d?k2wj-lB3iO)|2 zNpNRAsdSn0BXG;Vsu=mr9%29V71ye0JXbnwx!B~R)1SQyjCBiNi=BDO+xEo9U~S>y zmFBZAzb#G+>RjR)_v!QZn)iP^>V2Ok{jPSDPuJxqh>rSTcQ&d7wFMfzI=(C!cd2`kXX#JxfhQucvMEsx@2LN*%ZSee7^R zUYU3K>Qm=_+dnEd6e!qs^V*(&uRG5y-9N7`ak_W?t{+VL|J4sLY%Q`+O?-ZY88kKG M>FVdQ&MBb@0E5l8t^fc4 literal 0 HcmV?d00001 diff --git a/src/plugins/coreplugin/images/mode_Design@2x.png b/src/plugins/coreplugin/images/mode_Design@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..85e08c360b834c2e36f04431777329f24ce4cace GIT binary patch literal 6227 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 literal 0 HcmV?d00001 diff --git a/src/plugins/coreplugin/images/mode_Reference@2x.png b/src/plugins/coreplugin/images/mode_Reference@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..ae8db24fd7521aa80701ce25ebc7d603bf74be9c GIT binary patch literal 5215 zcmeAS@N?(olHy`uVBq!ia0y~yU~m9o4mJh`hE{(JaZG%Q-e|yQz{EjrrIztFlS_jM3hAM`dB6B=jtVb)aX^@7BGN-jeSKyVsdtB zi9%9pdS;%j()-=}l@u~lY?Z=IeGPmIoKrJ0J*tXQgRA^PlB=?lEmM^2?G$V(tSWK~ za#KqZ6)JLb@`|l0Y?Z*~TICg6frRyy6u?SKvTcwn`GuBNuFf>#! zGt)CPF*P$Y)KM@pFf`IPFw!?L(={})GBvX@GFN~CB|8P1qLehNAQv~NT}3Hrwn`Z# zB?VUc`sL;2dgaD?`9X%D*TxJu@#c$0a|xG&eP`#M8xAsUo*P zFC{a@%FWT-&Ct-?#K7Fhz|6wX(89pN*wN9_*wM+<#L?8z1ZD-+ugq3xqQ6tz3=ubcP|?+PCoPR;I>y+SHzd^ue<+#_x|s*CaQ4Soo45r z|FJpvU!ugb%T>>v;z}+b4VqZsYqG zr~aBkkXo;Tl7t^YyI zt^hlGq1GQWKfF2d^5VPV$wuEjg+nJPq&l-s<83(oG>NH^VFjn!9qo0yH=lT>^@Hnh zQT)-3=F41o@6SFa+&M{Qn+MbXpn^}wUMKH;?|)LELn~m(e{Y5>ca|kZZ%Yebd-UB; z#ly4s9_*ZXCuMWgg38NQH#ThKJayV@!G-6n(=RioZRU))#uC6ReM|kr z1PQ&Z<%cdN*SBrcmOZt*d4-(+&)<4~j12CH2QqHd$c*4)sFHoIb^Y%C$(ya_9bcy; zcKqhwpSu&^&x;KRnZeE^WFak-pmxMrLCGOzf=OBIr2i8`YQ_3km-n{DESJ1fCj55a zwcGsd@zvbt=H`cTyy$RGlY5u{KY2D!(+&xNX zK6=Ec^F}f|IPWoDe<(7d_O@bMV)>2SFpD2Q`WNthwdqKztJP^r(tFi0YkANmAE#Pd zNtVUcZ^gt`b-hh6-+ZCyTkVhM^*{L^X*me}ydRTY`!#S+s-uDq8$<8DXqmX^$iwIE zD?a~TRaE>yoV}haRn>LMYvsv-b9&}UwBDY?xP5Y{($&4Mibaef0yEleLVCA-^ zDJ^Hezt}l{ja-nIXW+UJksAv*u09I7-TtBf{J$)_=Irsa`_0ODNRQnZkV}X)d{wxKg|lPeKKA| zypmH-dwjuMsO{cE168%ns~AEaS-8q+&&jc5|NrgJdyjGrp%3?MZ+twbIyKRUDN*s{ z1h@CLOS5azcK@FKlo)9Bdpql+7R)=i9U zc&graTwfJ9LjiwTpV)2eu(2Pgh6nvucd_wb&s-Hi=e z$0t;Ledv1kUUju%h`4nD&kT8YgS^QzOQsDf&%a?Y}h^V=8goMJljyYS)i|9h8GDk`>=sdK^c=zj`7?-rd_J8}MWbD~S+`um)JS=P?$`dk&=+1Nenx40m~+1gW^ zjX3TyJDyEBb@6WM7FLf6mSSEd*43}G4IY0HG~(*ces@FDdsAYd>Rgt9kLi}LnU@qF z|7QK-^xxo(Dz)KXf<9}T3!Q#$@!T|*%hgmw%;bBfDrZ85&Z?OKeTV0i>|c2Ipjiil zfycGy+w%QA8jpTlaEi}hrb;2nvas{KVs7*e}^3_y3k?Zc{MZZIGLX~C+)OrLl zPP)nabMciEUwK*{OqM<V4AZQ z92SX-c2CgipT0%GL+fIP^1+EK7%uMMcqz8%)x}V`8?g%~1}`%DDM=R6zWngCT2Vx_^x-3xZ?Q8XF~gbJ2Q`~NrvtWlCBQt&woF8bMZ>6P?r-+`tfUy!NV0t6N@#LrY}Dz)jY+E z^_hc1UI4=xnRct$8@9MTTKA=OLct{EGk2#yG+5kTk>Ss3axJ5DpZMOR`SJVv+WO;* z?#{m`5_f66zl(UJ5YanJ068kKgGRLVtUX98vY%u=C<# zOZ%3X^HLvI>`v=zJn&|XO}ycRQ|(2W)0U}vimY4Ank)0!|G=qLMW@u77zMu;@^t=8 z?Z}K==qvnmZk}xXhPNk5EMz(toVPbr>p%Z}NmS~yOKZ<}C+%rx<>ukze_ZhTK%U{n zm;?5btxxlG3N1r^GH#Ujo}zMi<6E^?ZSHOCFLxer-yJOK5y^b$d05iVj1Cw7f~||^ z3gv9vV9<54O`&0#$HpmXTQ^Akjel41YTEma3KyBa+w88%8s6?DjE!z z56^v``;KYj^IN86MOk8N(!zubQ%jGx&DdMWy(jF2yv!mufv*)8?q9z(*^4RYCIgp4 zK~_SP$PfMlM{@TSeALRhw}W%CQkz@FY1?^!OU1ALjF53o-J*H((*GtK?i*`#Vs>4c zcA?(xTGECk^8#6?upg-?`NmuH@K1I6%c-Y?+)q7vl61>p+403Q)chB!D{6b)l$b0Q zUr<*wr~SL$oW(4zO^?^F67xLL8q#uw;lpI+xA}?TJC?6!|Me^1p|q9RM@M4%3bBht zF*0usJG^-PTWi6-TU+0J^eA5RQTw3IhoEZfW9p1b|Mo7vo36hk+BWU-3WiD#4qslM z4;w!y7Ck&N|Ng>miLIgUQYAIp=QcO@n;j4@n|kQn+SU&@%3mj*{cigNowIg5aJv1HyN<)1<*axAe5pvG=O;I& zHj6vQbH-JDRaL0u-uS0^u6o~#9r-WVf_3|{!dg5_I?uk0-dI`emw2{YW%A!o;``Xn zzMlQ?@w>wh1wY%=$gazFbwgk<|ER6`3Qa2TpWO2VaE0%rDxj*}rPp9zLKFwdSZ(AK-i+}Nb z)4-Y0=Fc20)260hbp8MEMfQ|+503Qa_m|AC3|E`C!og>|*P4~-%QiD+nJP3-NUAM) zaQN~5es^a5j*PN+n=ecyWu;EJTW9;ViKuRVc+SXF$nAdRYJSW7#Yf~Vr(O8%ao|6T zP<_z6Y@fCN^`@VW=n~st-_YRVrJd5*xul@1Em2nV^*5W7kuv-ft`xt2$Npd%@AeB> z7b?%ZI;Ng%-uv0*&i0%yO{`Bpy)ExQyt267Ysvwq$>+bs+q&%ujmQ&}WKq2Puc0+> zg273Jh${+H%jq@k&9tx;Pd-C$(y5RiNM^x<320%FI4vi0NiK9xw6I?suC&e~ak)B}z7Y-8YPO z-`RU;O%;15PZJZ%Pt(n6-Afam>fX-LyI-r5zFYQqx&FQ_x_z7QI&*K+*41yqsYh3aQWsg@fCzl7CdoPdiU~N91m?9ve8CcJh zyd_{}NKas47%#*8rq>MKH}v+;>0hSO?6k@#vh~FbFQ=ed_9b%OzIzsA?|D~qGrm_R zoJryAsZCL~5p&O85I!#vl5