From b9252c864f074f38c47c17de0de6a63ae365eadb Mon Sep 17 00:00:00 2001 From: Xaver Maierhofer Date: Mon, 27 Mar 2017 21:34:02 +0200 Subject: [PATCH] [TASK] Add favicon generator (incl. app tiles) and logo --- assets/favicon/android-chrome-192x192.png | Bin 0 -> 3843 bytes assets/favicon/android-chrome-512x512.png | Bin 0 -> 9440 bytes assets/favicon/apple-touch-icon.png | Bin 0 -> 2825 bytes assets/favicon/browserconfig.xml | 12 ++ assets/favicon/favicon-16x16.png | Bin 0 -> 624 bytes assets/favicon/favicon-32x32.png | Bin 0 -> 1025 bytes assets/favicon/favicon.ico | Bin 0 -> 15086 bytes assets/favicon/manifest.json | 18 +++ assets/favicon/mstile-144x144.png | Bin 0 -> 3016 bytes assets/favicon/mstile-150x150.png | Bin 0 -> 2656 bytes assets/favicon/mstile-310x150.png | Bin 0 -> 2689 bytes assets/favicon/mstile-310x310.png | Bin 0 -> 4983 bytes assets/favicon/mstile-70x70.png | Bin 0 -> 2185 bytes assets/favicon/safari-pinned-tab.svg | 134 ++++++++++++++++++++ assets/faviconData.json | 1 + assets/logo.svg | 7 + gulp/config.js | 1 + gulp/tasks/copy.js | 2 + gulp/tasks/favicon.js | 65 ++++++++++ gulp/tasks/html.js | 2 + gulpfile.js | 4 + html/index.html | 3 +- package.json | 1 + scss/modules/_loader.scss | 16 +-- yarn.lock | 148 ++++++++++++++++++++-- 25 files changed, 395 insertions(+), 19 deletions(-) create mode 100644 assets/favicon/android-chrome-192x192.png create mode 100644 assets/favicon/android-chrome-512x512.png create mode 100644 assets/favicon/apple-touch-icon.png create mode 100644 assets/favicon/browserconfig.xml create mode 100644 assets/favicon/favicon-16x16.png create mode 100644 assets/favicon/favicon-32x32.png create mode 100644 assets/favicon/favicon.ico create mode 100644 assets/favicon/manifest.json create mode 100644 assets/favicon/mstile-144x144.png create mode 100644 assets/favicon/mstile-150x150.png create mode 100644 assets/favicon/mstile-310x150.png create mode 100644 assets/favicon/mstile-310x310.png create mode 100644 assets/favicon/mstile-70x70.png create mode 100644 assets/favicon/safari-pinned-tab.svg create mode 100644 assets/faviconData.json create mode 100644 assets/logo.svg create mode 100644 gulp/tasks/favicon.js diff --git a/assets/favicon/android-chrome-192x192.png b/assets/favicon/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..c8aed28b7a53c4ed039761a59a4024fdcfcb9927 GIT binary patch literal 3843 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 literal 0 HcmV?d00001 diff --git a/assets/favicon/android-chrome-512x512.png b/assets/favicon/android-chrome-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..c046f0b8159297368bfb3db79a73828aac88bffd GIT binary patch literal 9440 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 + + + + + + + + #dc0067 + + + diff --git a/assets/favicon/favicon-16x16.png b/assets/favicon/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..62c4991721c848828b3aff24fb7ee1a9e4763320 GIT binary patch literal 624 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c z!@6@aFM*tm0X`wFKADB<<-*};sYu*<+3*`()nW`b^5H;n zxMDa1DEsZ4=I3MDaFO*g;ajvrzMRkoBA~`EC$+yE*ZzJ%6KKNMliIJ=86i~4g?~Mx zb->#fs1j)7^=7->_Wqxa=)B%&^!1eX`@MQV^8Pf7%TfflZ`gb^{IZmAqr^BW=|K#5Q)pR{l|rx90Xj_6K^u;C`?-1uqf%=!~gbYmimaF z-dW;%y=1>sL;d2!H{VWKzs;=RP!0N0`N}aQ=t0(Tnamqm%d!qhG4hL?e=odD{zamx zna|aj2X?QFii_;yPq?uETJ`+;WYfKpUk-Oa63g!lvI6;x#X;^) z4C~Ixyacj20(?STeKHHz%Y|>z4p}c74nlG;63CDXUnc_=K@$9aQRB;TZJ^Yb6WRy; zd_d}vWPyTE5wHS?GKd1W6r2GR|9li`6j1Q%Ni7h0N(<@?xp1He5J3!t>-u_98>|?p z9>jp454-h09n=Ae9Ezxz`yfu6lP5hVU*v*D32 zFCYV`36j?k~sNU>*1dx z?axh_()Wi0L;aGci(`nz>7&8d%N9HE$i6xg;L9G|(_7eI-5LEx#n0@v^}ql2kq1)E zUq7+5IU{&!uJ%hW<^$4oRa!&5;jS6g9?j{Si|ZL?7_b%J_R`lAT|0lbPW6mf8zTV^h1n5o z3vTS*&sEfRv@T%%?&VTmdS$XxmR(SO`pv4;!040Bj`DM{7nJ9@ubL6`gk=ru-OAmb z7wWCGjo&ayVMTY5DTM^YZfFd3^zsbqh;u(~)~)pOFv zy$>Et^f-QY&&*34&a;gsD5pDZpXRuI{cC5@Dj^p)wdt)Ip9PavO+0lkQ*(abte+7^ zsZW+Kds~!Xbz+;cY{-?@GQ!(ePtmiQ!p9IMdEir?*|n+5G-n5=W^LW)aMR2tsa`|b z^832Q?{0evjZ^-o&v-r!VqjM0)=TCVRu=Z2 zEW#|T;L>1nIE7hxbBMy}8&^&oIdeqj2>a;^v#(boU~ literal 0 HcmV?d00001 diff --git a/assets/favicon/favicon.ico b/assets/favicon/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..fc79f4e7f678499e464a7417d10912b1a1dea57c GIT binary patch literal 15086 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 literal 0 HcmV?d00001 diff --git a/assets/favicon/manifest.json b/assets/favicon/manifest.json new file mode 100644 index 0000000..e7e10e0 --- /dev/null +++ b/assets/favicon/manifest.json @@ -0,0 +1,18 @@ +{ + "name": "Meshviewer", + "icons": [ + { + "src": "./android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "./android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "theme_color": "#dc0067", + "background_color": "#dc0067", + "display": "standalone" +} diff --git a/assets/favicon/mstile-144x144.png b/assets/favicon/mstile-144x144.png new file mode 100644 index 0000000000000000000000000000000000000000..4be7a27f4a4c890813442f097f81c2255dd1db2a GIT binary patch literal 3016 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 Da+A5; literal 0 HcmV?d00001 diff --git a/assets/favicon/mstile-150x150.png b/assets/favicon/mstile-150x150.png new file mode 100644 index 0000000000000000000000000000000000000000..2ea0c5f70deb25f11ab96618c536004ada7b771c GIT binary patch literal 2656 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 GL;nL2M*Zvn literal 0 HcmV?d00001 diff --git a/assets/favicon/mstile-310x150.png b/assets/favicon/mstile-310x150.png new file mode 100644 index 0000000000000000000000000000000000000000..b4bcb75b1ab56206e143675c1ce3e2e21554a688 GIT binary patch literal 2689 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 literal 0 HcmV?d00001 diff --git a/assets/favicon/mstile-310x310.png b/assets/favicon/mstile-310x310.png new file mode 100644 index 0000000000000000000000000000000000000000..b2a9f3917b3f7e438e3497a865cea0770aeaedb4 GIT binary patch literal 4983 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 literal 0 HcmV?d00001 diff --git a/assets/favicon/mstile-70x70.png b/assets/favicon/mstile-70x70.png new file mode 100644 index 0000000000000000000000000000000000000000..82ea8764334d79bc9b92fd380ff32034a5332049 GIT binary patch literal 2185 zcmYL~dpr~R8^_1YX%og4xhyNoP_5i2#N1{iGis$|?nGoMC)X)*oXVw=g&1AjjXKCB z{9KO9T)Hg|HFLK@?)T-l4zJVe^?bk2=Xsv@^ZmZQukRmEJn93l?^0080yD|3>- z(|)d9K*7GqOW^Nw7>-Ii>*8Sc6B?yt(ge&(!ZEs7aX!(`l%7W^slbJ zcbNakZT?e~@hC%g=rQ&~D6Yf9vK-^k8+&4#S?W-KjkTZ5*KV}8>1RIi6Fd+XOgiNN zSg$cqD+WqN$eb5rs2X_*gYgvtcI+QF{s!*DCnJ2B8)6%DGb+-m{*nv{e zqpJJpM8pr?z4(rq6J6+_VgNuihhUC#{JnqLi5ym74Nu`b`$Lr2zzMT)qq0^A-Bnv# zXlJk6niPHO=GxMW(i)|Dek(?5DG<0Skzo=o4B8fTT%V3(qwiRf@e`i82ae%yraY8d z0nX!{hxX=;r(?`PxqmM;tZu3j`STeSUC$!eFa5j^ng!+tcOW zCYtTF>}7qmI-z)Q2oHx>J%ueNP5RI0WA02AvGf)wO)H6@0&_12R(V+kSM~0$A$U|S zU#vAi2DDpd!K1P69#B4pBJOjQ+y4H%AG(?&7Caq=;yP{LcYaTm*JbsqP8^rJt3-4SiNvk6*7Dk zL$th8uU+ZTvmmNe?0_x;HeQ>8bc(&_LreyFLrQ6LsR}G0)EIL%pfz{iRO_iQ zl&Yx>Qr7*XXo-S(reQ{6_6_L=Qb*K9wlqy7pj zav|`T9yyGuVfSU}y?X*0`jUNs-kf-tC&J98;JEc06kaIDgFYM;VyNuG`jnF0cPGgT z$OhjP*0TW2W3%*X4;ILst7+^FHNAz&qpv~V@qx2mW=@-(c~8}hB{C=;l`UfM}r zOE3s4{v2|K6(o_)E-P}oKJL)df5u*a{4)GVQQ9}fz0W|#ObNXawY*mGkbhRrareMc zp32{oVJ-R_Juio1p}7&&aiio>5{H)D9sc)lHYAE~Dn~w=l9?^Ezef~Yw8YH>U+c5-7(Q%RyzH>uppdAbQppFy*h`@G$&cs0IS zMrWc|u0qU9IgIBr`e}@aZV~a2W2N#Z)))@cS(nzV(7_Mh`1r+>%&sk6r*G6Jk{9@o zlc%M)qfs~x?15y~i0fn&^vIzU^?e63sWC3~^(KnLc1jgyEVHA$^AjpB;(|ROJ_g41 z$ibkbav9n~X8jaHPH$qQojSLwJ)4uA541;Cn1Ks5)GfC(Jo+T*#jU*{PF|eZ3R=B& z#;vZPWZYg~6p{U?w+fJpZ#c@L^oUl1)nEPwHJO ~)lQ?f05I6C;_9ChyM~S%(Pm zv-JJtBTw{d`Osy`K;do?8+K}cyFN>YHtC5c+ + + + +Created by potrace 1.11, written by Peter Selinger 2001-2013 + + + + + diff --git a/assets/faviconData.json b/assets/faviconData.json new file mode 100644 index 0000000..d4b60d2 --- /dev/null +++ b/assets/faviconData.json @@ -0,0 +1 @@ +{"result":{"status":"success"},"favicon":{"package_url":"https://realfavicongenerator.net/files/03dc81277d21a8ed4bb836b4c05ada2ee75b9e3c/favicons.zip","files_urls":["https://realfavicongenerator.net/files/03dc81277d21a8ed4bb836b4c05ada2ee75b9e3c/package_files/android-chrome-192x192.png","https://realfavicongenerator.net/files/03dc81277d21a8ed4bb836b4c05ada2ee75b9e3c/package_files/android-chrome-512x512.png","https://realfavicongenerator.net/files/03dc81277d21a8ed4bb836b4c05ada2ee75b9e3c/package_files/apple-touch-icon.png","https://realfavicongenerator.net/files/03dc81277d21a8ed4bb836b4c05ada2ee75b9e3c/package_files/browserconfig.xml","https://realfavicongenerator.net/files/03dc81277d21a8ed4bb836b4c05ada2ee75b9e3c/package_files/favicon-16x16.png","https://realfavicongenerator.net/files/03dc81277d21a8ed4bb836b4c05ada2ee75b9e3c/package_files/favicon-32x32.png","https://realfavicongenerator.net/files/03dc81277d21a8ed4bb836b4c05ada2ee75b9e3c/package_files/favicon.ico","https://realfavicongenerator.net/files/03dc81277d21a8ed4bb836b4c05ada2ee75b9e3c/package_files/manifest.json","https://realfavicongenerator.net/files/03dc81277d21a8ed4bb836b4c05ada2ee75b9e3c/package_files/mstile-144x144.png","https://realfavicongenerator.net/files/03dc81277d21a8ed4bb836b4c05ada2ee75b9e3c/package_files/mstile-150x150.png","https://realfavicongenerator.net/files/03dc81277d21a8ed4bb836b4c05ada2ee75b9e3c/package_files/mstile-310x150.png","https://realfavicongenerator.net/files/03dc81277d21a8ed4bb836b4c05ada2ee75b9e3c/package_files/mstile-310x310.png","https://realfavicongenerator.net/files/03dc81277d21a8ed4bb836b4c05ada2ee75b9e3c/package_files/mstile-70x70.png","https://realfavicongenerator.net/files/03dc81277d21a8ed4bb836b4c05ada2ee75b9e3c/package_files/safari-pinned-tab.svg"],"html_code":"\n\n\n\n\n\n\n\n\n\n\n","compression":"true","overlapping_markups":["link[rel=\"apple-touch-icon\"]","meta[name=\"apple-mobile-web-app-title\"]","link[rel=\"shortcut\"]","link[rel=\"shortcut icon\"]","link[rel=\"icon\",sizes=\"16x16\"]","link[rel=\"icon\",sizes=\"32x32\"]","meta[name=\"msapplication-TileColor\"]","meta[name=\"msapplication-TileImage\"]","meta[name=\"msapplication-config\"]","meta[name=\"application-name\"]","link[rel=\"manifest\"]","meta[name=\"theme-color\"]","link[rel=\"mask-icon\"]"]},"files_location":{"type":"path","path":"."},"preview_picture_url":"https://realfavicongenerator.net/files/03dc81277d21a8ed4bb836b4c05ada2ee75b9e3c/favicon_preview.png","version":"0.14"} diff --git a/assets/logo.svg b/assets/logo.svg new file mode 100644 index 0000000..b8d9c32 --- /dev/null +++ b/assets/logo.svg @@ -0,0 +1,7 @@ + + + Meshviewer + + + + diff --git a/gulp/config.js b/gulp/config.js index 15413cb..f34cd8e 100644 --- a/gulp/config.js +++ b/gulp/config.js @@ -3,6 +3,7 @@ module.exports = function () { return { build: build, + faviconData: 'assets/faviconData.json', src: { sass: 'scss/**/*.scss', javascript: ['app.js', 'lib/**/*.js'], diff --git a/gulp/tasks/copy.js b/gulp/tasks/copy.js index ee2fb4c..b01325a 100644 --- a/gulp/tasks/copy.js +++ b/gulp/tasks/copy.js @@ -2,6 +2,8 @@ module.exports = function (gulp, plugins, config) { return function copy() { gulp.src(['html/*.html', 'assets/favicon/*']) .pipe(gulp.dest(config.build)); + gulp.src(['assets/logo.svg']) + .pipe(gulp.dest(config.build)); gulp.src('node_modules/promise-polyfill/promise.js') .pipe(gulp.dest(config.build + '/vendor')); return gulp.src(['assets/fonts/*', 'assets/icons/fonts/*']) diff --git a/gulp/tasks/favicon.js b/gulp/tasks/favicon.js new file mode 100644 index 0000000..cabe0f6 --- /dev/null +++ b/gulp/tasks/favicon.js @@ -0,0 +1,65 @@ +module.exports = function (gulp, plugins, config) { + return function javascript(cb) { + plugins.realFavicon.generateFavicon({ + masterPicture: 'assets/logo.svg', + dest: 'assets/favicon', + iconsPath: '.', + design: { + ios: { + pictureAspect: 'backgroundAndMargin', + backgroundColor: '#000000', + margin: '14%', + assets: { + ios6AndPriorIcons: false, + ios7AndLaterIcons: false, + precomposedIcons: false, + declareOnlyDefaultIcon: true + }, + appName: 'Meshviewer' + }, + desktopBrowser: {}, + windows: { + pictureAspect: 'noChange', + backgroundColor: '#dc0067', + onConflict: 'override', + assets: { + windows80Ie10Tile: false, + windows10Ie11EdgeTiles: { + small: true, + medium: true, + big: true, + rectangle: false + } + }, + appName: 'Meshviewer' + }, + androidChrome: { + // pictureAspect: 'shadow', + themeColor: '#dc0067', + manifest: { + name: 'Meshviewer', + display: 'standalone', + orientation: 'notSet', + onConflict: 'override', + declared: true + }, + assets: { + legacyIcon: false, + lowResolutionIcons: false + } + }, + safariPinnedTab: { + pictureAspect: 'silhouette', + themeColor: '#dc0067' + } + }, + settings: { + compression: 2, + scalingAlgorithm: 'Mitchell', + errorOnImageTooSmall: false + }, + markupFile: config.faviconData + }); + return cb(); + }; +}; diff --git a/gulp/tasks/html.js b/gulp/tasks/html.js index e675513..4994e6d 100644 --- a/gulp/tasks/html.js +++ b/gulp/tasks/html.js @@ -1,3 +1,4 @@ +const fs = require('fs'); module.exports = function (gulp, plugins, config, env) { return function html() { return gulp.src(env.production() ? config.build + '/*.html' : 'html/*.html') @@ -13,6 +14,7 @@ module.exports = function (gulp, plugins, config, env) { } })) .pipe(env.production(plugins.kyhInlineSource({ compress: false }))) + .pipe(plugins.realFavicon.injectFaviconMarkups(JSON.parse(fs.readFileSync(config.faviconData)).favicon.html_code)) .pipe(plugins.cacheBust({ type: 'timestamp' })) diff --git a/gulpfile.js b/gulpfile.js index b8d0d8d..e217c8f 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -14,6 +14,10 @@ function getTask(task) { return require('./gulp/tasks/' + task)(gulp, plugins, config, env); } +gulp.task('generate-favicon', + getTask('favicon') +); + require('./gulp/serve')(gulp, plugins, config, env); gulp.task('serve', gulp.series( diff --git a/html/index.html b/html/index.html index 57d4051..b44227d 100644 --- a/html/index.html +++ b/html/index.html @@ -15,7 +15,8 @@

Lade
-
+ +
Karten & Knoten...