FSUI: Replace various icons with SVG files
Co-Authored-By: KamFretoZ <14798312+kamfretoz@users.noreply.github.com>
Before Width: | Height: | Size: 38 KiB |
|
@ -0,0 +1,41 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||
|
||||
<svg
|
||||
fill="#000000"
|
||||
width="800px"
|
||||
height="800px"
|
||||
viewBox="0 0 32 32"
|
||||
version="1.1"
|
||||
id="svg1"
|
||||
sodipodi:docname="applications-system.svg"
|
||||
inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<sodipodi:namedview
|
||||
id="namedview1"
|
||||
pagecolor="#505050"
|
||||
bordercolor="#ffffff"
|
||||
borderopacity="1"
|
||||
inkscape:showpageshadow="0"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pagecheckerboard="1"
|
||||
inkscape:deskcolor="#505050"
|
||||
inkscape:zoom="0.97875"
|
||||
inkscape:cx="399.48914"
|
||||
inkscape:cy="400"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1010"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg1" />
|
||||
<defs
|
||||
id="defs1" />
|
||||
<path
|
||||
d="M30.015 12.97l-2.567-0.569c-0.2-0.64-0.462-1.252-0.762-1.841l1.389-2.313c0.518-0.829 0.78-2.047 0-2.829l-1.415-1.414c-0.78-0.781-2.098-0.64-2.894-0.088l-2.251 1.434c-0.584-0.303-1.195-0.563-1.829-0.768l-0.576-2.598c-0.172-0.953-1.005-1.984-2.11-1.984h-2c-1.104 0-1.781 1.047-2 2l-0.642 2.567c-0.678 0.216-1.328 0.492-1.948 0.819l-2.308-1.47c-0.795-0.552-2.114-0.692-2.894 0.088l-1.415 1.414c-0.781 0.782-0.519 2 0 2.828l1.461 2.435c-0.274 0.552-0.517 1.123-0.705 1.72l-2.566 0.569c-0.953 0.171-1.984 1.005-1.984 2.109v2c0 1.105 1.047 1.782 2 2l2.598 0.649c0.179 0.551 0.404 1.080 0.658 1.593l-1.462 2.438c-0.518 0.828-0.78 2.047 0 2.828l1.415 1.414c0.78 0.782 2.098 0.64 2.894 0.089l2.313-1.474c0.623 0.329 1.277 0.608 1.96 0.823l0.64 2.559c0.219 0.953 0.896 2 2 2h2c1.105 0 1.938-1.032 2.11-1.985l0.577-2.604c0.628-0.203 1.23-0.459 1.808-0.758l2.256 1.438c0.796 0.552 2.114 0.692 2.895-0.089l1.415-1.414c0.78-0.782 0.518-2 0-2.828l-1.39-2.317c0.279-0.549 0.521-1.12 0.716-1.714l2.599-0.649c0.953-0.219 2-0.895 2-2v-2c0-1.104-1.031-1.938-1.985-2.11zM30.001 16.939c-0.085 0.061-0.245 0.145-0.448 0.192l-3.708 0.926-0.344 1.051c-0.155 0.474-0.356 0.954-0.597 1.428l-0.502 0.986 1.959 3.267c0.125 0.2 0.183 0.379 0.201 0.485l-1.316 1.314c-0.127-0.040-0.271-0.092-0.341-0.14l-3.292-2.099-1.023 0.529c-0.493 0.256-0.999 0.468-1.503 0.631l-1.090 0.352-0.824 3.723c-0.038 0.199-0.145 0.36-0.218 0.417h-1.8c-0.061-0.085-0.145-0.245-0.191-0.448l-0.921-3.681-1.066-0.338c-0.549-0.173-1.097-0.404-1.63-0.684l-1.028-0.543-3.293 2.099c-0.135 0.091-0.279 0.143-0.409 0.143l-1.311-1.276c0.018-0.104 0.072-0.274 0.181-0.449l2.045-3.408-0.487-0.98c-0.227-0.462-0.407-0.895-0.547-1.325l-0.343-1.052-3.671-0.918c-0.231-0.052-0.398-0.139-0.485-0.2v-1.86c0.001 0.001 0.002 0.001 0.005 0.001 0.034 0 0.198-0.117 0.335-0.142l3.772-0.835 0.346-1.103c0.141-0.449 0.333-0.917 0.588-1.43l0.487-0.98-2.024-3.373c-0.125-0.201-0.184-0.38-0.201-0.485l1.315-1.314c0.128 0.041 0.271 0.093 0.34 0.14l3.354 2.138 1.027-0.542c0.527-0.278 1.073-0.507 1.622-0.682l1.063-0.338 0.912-3.649c0.053-0.231 0.138-0.398 0.2-0.485h1.859c-0.014 0.020 0.115 0.195 0.142 0.339l0.84 3.794 1.089 0.352c0.511 0.165 1.023 0.38 1.523 0.639l1.023 0.532 3.224-2.053c0.135-0.092 0.279-0.143 0.409-0.143l1.313 1.276c-0.017 0.104-0.072 0.276-0.181 0.45l-1.98 3.296 0.505 0.988c0.273 0.533 0.48 1.033 0.635 1.529l0.346 1.104 3.697 0.82c0.224 0.041 0.398 0.171 0.434 0.241zM16.013 9.99c-3.321 0-6.023 2.697-6.023 6.010s2.702 6.010 6.023 6.010 6.023-2.697 6.023-6.009c0-3.313-2.702-6.010-6.023-6.010zM16 20c-2.205 0-4-1.794-4-4s1.794-4 4-4c2.206 0 4 1.794 4 4s-1.794 4-4 4z"
|
||||
id="path1"
|
||||
style="fill:#ffffff" />
|
||||
</svg>
|
After Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 8.5 KiB |
|
@ -0,0 +1,7 @@
|
|||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Transformed by: SVG Repo Mixer Tools -->
|
||||
<svg fill="#ffffff" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="800px" height="800px" viewBox="0 0 72 72" enable-background="new 0 0 72 72" xml:space="preserve">
|
||||
<g id="SVGRepo_bgCarrier" stroke-width="0"/>
|
||||
<g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<g id="SVGRepo_iconCarrier"> <g> <path d="M48.252,69.253c-2.271,0-4.405-0.884-6.011-2.489L17.736,42.258c-1.646-1.645-2.546-3.921-2.479-6.255 c-0.068-2.337,0.833-4.614,2.479-6.261L42.242,5.236c1.605-1.605,3.739-2.489,6.01-2.489c2.271,0,4.405,0.884,6.01,2.489 c3.314,3.314,3.314,8.707,0,12.021L35.519,36l18.743,18.742c3.314,3.314,3.314,8.707,0,12.021 C52.656,68.369,50.522,69.253,48.252,69.253z M48.252,6.747c-1.202,0-2.332,0.468-3.182,1.317L21.038,32.57 c-0.891,0.893-0.833,2.084-0.833,3.355c0,0.051,0,0.101,0,0.151c0,1.271-0.058,2.461,0.833,3.353l24.269,24.506 c0.85,0.85,1.862,1.317,3.063,1.317c1.203,0,2.273-0.468,3.123-1.317c1.755-1.755,1.725-4.61-0.03-6.365L31.292,37.414 c-0.781-0.781-0.788-2.047-0.007-2.828L51.438,14.43c1.754-1.755,1.753-4.61-0.001-6.365C50.587,7.215,49.454,6.747,48.252,6.747z"/> </g> </g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 13 KiB |
|
@ -0,0 +1,7 @@
|
|||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Transformed by: SVG Repo Mixer Tools -->
|
||||
<svg fill="#ffffff" width="800px" height="800px" viewBox="0 0 16 16" id="window-16px" xmlns="http://www.w3.org/2000/svg">
|
||||
<g id="SVGRepo_bgCarrier" stroke-width="0"/>
|
||||
<g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<g id="SVGRepo_iconCarrier"> <path id="Path_10" data-name="Path 10" d="M-11.5,0h-11A2.5,2.5,0,0,0-25,2.5v11A2.5,2.5,0,0,0-22.5,16h11A2.5,2.5,0,0,0-9,13.5V2.5A2.5,2.5,0,0,0-11.5,0Zm-11,1h11A1.5,1.5,0,0,1-10,2.5V4H-24V2.5A1.5,1.5,0,0,1-22.5,1Zm11,14h-11A1.5,1.5,0,0,1-24,13.5V5h14v8.5A1.5,1.5,0,0,1-11.5,15ZM-23,2.5a.5.5,0,0,1,.5-.5.5.5,0,0,1,.5.5.5.5,0,0,1-.5.5A.5.5,0,0,1-23,2.5Zm2,0a.5.5,0,0,1,.5-.5.5.5,0,0,1,.5.5.5.5,0,0,1-.5.5A.5.5,0,0,1-21,2.5Zm2,0a.5.5,0,0,1,.5-.5.5.5,0,0,1,.5.5.5.5,0,0,1-.5.5A.5.5,0,0,1-19,2.5Zm4.707,7.5,1.147-1.146A.5.5,0,0,0-13.01,8.4a.5.5,0,0,0-.3-.363l-5-2a.5.5,0,0,0-.54.11.5.5,0,0,0-.11.54l2,5a.5.5,0,0,0,.363.3.5.5,0,0,0,.1.01.5.5,0,0,0,.354-.146L-15,10.707l2.146,2.147A.5.5,0,0,0-12.5,13a.5.5,0,0,0,.354-.146.5.5,0,0,0,0-.708Zm-2.024.61L-17.6,7.4l3.213,1.286Z" transform="translate(25)"/> </g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 19 KiB |
|
@ -0,0 +1,7 @@
|
|||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Transformed by: SVG Repo Mixer Tools -->
|
||||
<svg fill="#ffffff" height="800px" width="800px" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 512 512" xml:space="preserve">
|
||||
<g id="SVGRepo_bgCarrier" stroke-width="0"/>
|
||||
<g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<g id="SVGRepo_iconCarrier"> <g> <g> <path d="M320,43.755V21.333C320,9.557,310.464,0,298.667,0H21.333C9.536,0,0,9.557,0,21.333v469.333 C0,502.443,9.536,512,21.333,512h277.333c11.797,0,21.333-9.557,21.333-21.333v-22.421C427.648,457.515,512,366.443,512,256 S427.648,54.485,320,43.755z M277.333,64v128v128v128v21.333H42.667V42.667h234.667V64z M320,338.304v-45.376 c12.757-7.381,21.333-21.163,21.333-36.928s-8.576-29.547-21.333-36.928v-45.376c36.715,9.536,64,42.667,64,82.304 S356.715,328.768,320,338.304z"/> </g> </g> </g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 27 KiB |
|
@ -0,0 +1,7 @@
|
|||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Transformed by: SVG Repo Mixer Tools -->
|
||||
<svg width="800px" height="800px" viewBox="0 0 24 24" id="SVGRoot" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:svg="http://www.w3.org/2000/svg" fill="#ffffff">
|
||||
<g id="SVGRepo_bgCarrier" stroke-width="0"/>
|
||||
<g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<g id="SVGRepo_iconCarrier"> <defs id="defs2"/> <g id="layer1"> <path d="M 9 2 A 1.0001 1.0001 0 0 0 8 3 L 8 8 A 1 1 0 0 0 9 9 A 1 1 0 0 0 10 8 L 10 4 L 18 4 L 18 20 L 10 20 L 10 16 A 1 1 0 0 0 9 15 A 1 1 0 0 0 8 16 L 8 21 A 1.0001 1.0001 0 0 0 9 22 L 19 22 A 1.0001 1.0001 0 0 0 20 21 L 20 3 A 1.0001 1.0001 0 0 0 19 2 L 9 2 z M 7.0292969 9 A 1 1 0 0 0 6.2929688 9.2929688 L 4.3125 11.273438 L 4.2929688 11.292969 A 1.0001 1.0001 0 0 0 4.2832031 11.302734 A 1 1 0 0 0 4.2363281 11.355469 A 1 1 0 0 0 4.1855469 11.421875 A 1 1 0 0 0 4.1464844 11.482422 A 1.0001 1.0001 0 0 0 4.1289062 11.509766 A 1 1 0 0 0 4.0996094 11.566406 A 1 1 0 0 0 4.0683594 11.638672 A 1.0001 1.0001 0 0 0 4.0644531 11.650391 A 1 1 0 0 0 4.0410156 11.714844 A 1.0001 1.0001 0 0 0 4.0332031 11.75 A 1 1 0 0 0 4.0234375 11.791016 A 1.0001 1.0001 0 0 0 4.015625 11.828125 A 1 1 0 0 0 4.0078125 11.871094 A 1.0001 1.0001 0 0 0 4.0019531 11.943359 A 1.0001 1.0001 0 0 0 4 11.988281 A 1 1 0 0 0 4 12 A 1 1 0 0 0 4.0019531 12.029297 A 1.0001 1.0001 0 0 0 4.0039062 12.066406 A 1 1 0 0 0 4.0078125 12.117188 A 1.0001 1.0001 0 0 0 4.0117188 12.146484 A 1 1 0 0 0 4.0253906 12.222656 A 1 1 0 0 0 4.0410156 12.28125 A 1.0001 1.0001 0 0 0 4.0546875 12.324219 A 1 1 0 0 0 4.0585938 12.337891 A 1.0001 1.0001 0 0 0 4.0878906 12.408203 A 1.0001 1.0001 0 0 0 4.1210938 12.474609 A 1 1 0 0 0 4.1347656 12.501953 A 1.0001 1.0001 0 0 0 4.1640625 12.546875 A 1 1 0 0 0 4.1777344 12.568359 A 1.0001 1.0001 0 0 0 4.2011719 12.601562 A 1 1 0 0 0 4.21875 12.623047 A 1.0001 1.0001 0 0 0 4.265625 12.677734 A 1 1 0 0 0 4.2851562 12.699219 A 1.0001 1.0001 0 0 0 4.2929688 12.707031 A 1 1 0 0 0 4.3339844 12.746094 L 6.2929688 14.707031 A 1 1 0 0 0 7.7070312 14.707031 A 1 1 0 0 0 7.7070312 13.292969 L 7.4140625 13 L 14 13 A 1 1 0 0 0 15 12 A 1 1 0 0 0 14 11 L 7.4140625 11 L 7.7070312 10.707031 A 1 1 0 0 0 7.7070312 9.2929688 A 1 1 0 0 0 7.0292969 9 z " id="path6945" style="color:#ffffff;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#ffffff;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#ffffff;solid-opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate;stop-color:#ffffff;stop-opacity:1;opacity:1"/> </g> </g>
|
||||
</svg>
|
After Width: | Height: | Size: 3.9 KiB |
Before Width: | Height: | Size: 48 KiB |
|
@ -0,0 +1,7 @@
|
|||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Transformed by: SVG Repo Mixer Tools -->
|
||||
<svg height="800px" width="800px" version="1.1" id="_x32_" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 512 512" xml:space="preserve" fill="#ffffff">
|
||||
<g id="SVGRepo_bgCarrier" stroke-width="0"/>
|
||||
<g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<g id="SVGRepo_iconCarrier"> <style type="text/css"> .st0{fill:#ffffff;} </style> <g> <path class="st0" d="M510.002,309.835l-0.068-0.326l-0.076-0.334l-26.508-112.721l-0.106-0.417l-0.106-0.418 c-16.668-62.217-73.294-105.666-137.712-105.666H166.579c-64.418,0-121.045,43.449-137.712,105.666l-0.114,0.418l-0.099,0.417 L2.147,309.174l-0.076,0.326l-0.068,0.326c-9.749,46.43,16.926,92.496,62.036,107.168l1.586,0.509 c9.24,3.012,18.89,4.544,28.624,4.544c32.668,0,63.128-17.404,79.758-45.489l22.556-33.343l0.561-0.835l0.509-0.872 c0.796-1.388,2.276-2.253,3.861-2.253h109.02c1.586,0,3.066,0.865,3.862,2.253l0.508,0.872l0.562,0.835l22.555,33.343 c16.63,28.085,47.09,45.489,79.766,45.489c9.734,0,19.384-1.532,28.67-4.56l1.533-0.493 C493.07,402.331,519.737,356.257,510.002,309.835z M439.318,390.397l-1.54,0.501c-6.608,2.154-13.353,3.186-20.014,3.186 c-22.646,0-44.283-11.949-56.088-32.433l-23.064-34.101c-5.788-10.053-16.508-16.258-28.101-16.258h-109.02 c-11.592,0-22.312,6.206-28.101,16.258l-23.063,34.101c-11.804,20.484-33.434,32.433-56.081,32.433 c-6.661,0-13.405-1.032-20.013-3.186l-1.548-0.501c-31.431-10.219-50.102-42.485-43.311-74.819l26.508-112.722 c13.42-50.102,58.826-84.94,110.696-84.94h178.847c51.869,0,97.276,34.838,110.696,84.94l26.508,112.722 C489.413,347.912,470.75,380.178,439.318,390.397z"/> <polygon class="st0" points="157.453,172.061 123.912,172.061 123.912,210.579 85.387,210.579 85.387,244.105 123.912,244.105 123.912,282.637 157.453,282.637 157.453,244.105 195.978,244.105 195.978,210.579 157.453,210.579 "/> <path class="st0" d="M365.721,206.247c11.668,0,21.113-9.445,21.113-21.098c0-11.669-9.445-21.114-21.113-21.114 c-11.653,0-21.098,9.445-21.098,21.114C344.622,196.802,354.068,206.247,365.721,206.247z"/> <path class="st0" d="M323.509,206.247c-11.653,0-21.106,9.453-21.106,21.098c0,11.669,9.453,21.122,21.106,21.122 c11.661,0,21.106-9.453,21.106-21.122C344.615,215.7,335.17,206.247,323.509,206.247z"/> <path class="st0" d="M365.721,248.459c-11.653,0-21.098,9.445-21.098,21.114c0,11.653,9.445,21.098,21.098,21.098 c11.668,0,21.113-9.445,21.113-21.098C386.834,257.904,377.388,248.459,365.721,248.459z"/> <path class="st0" d="M407.933,206.247c-11.653,0-21.099,9.453-21.099,21.098c0,11.669,9.446,21.122,21.099,21.122 c11.66,0,21.113-9.453,21.113-21.122C429.046,215.7,419.593,206.247,407.933,206.247z"/> </g> </g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 100 KiB |
|
@ -0,0 +1,7 @@
|
|||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Transformed by: SVG Repo Mixer Tools -->
|
||||
<svg fill="#ffffff" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="800px" height="800px" viewBox="0 0 72 72" enable-background="new 0 0 72 72" xml:space="preserve">
|
||||
<g id="SVGRepo_bgCarrier" stroke-width="0"/>
|
||||
<g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<g id="SVGRepo_iconCarrier"> <g> <path d="M36,3.731C18.206,3.731,3.73,18.207,3.73,36S18.206,68.27,36,68.27c17.793,0,32.27-14.477,32.27-32.27 S53.793,3.731,36,3.731z M36,64.27C20.412,64.27,7.73,51.588,7.73,36C7.73,20.413,20.412,7.731,36,7.731S64.27,20.413,64.27,36 C64.27,51.588,51.588,64.27,36,64.27z"/> <path d="M36,28.479c-4.147,0-7.52,3.373-7.52,7.52c0,4.147,3.374,7.521,7.52,7.521c4.146,0,7.52-3.373,7.52-7.521 C43.52,31.852,40.146,28.479,36,28.479z M36,39.52c-1.942,0-3.52-1.578-3.52-3.52c0-1.941,1.579-3.52,3.52-3.52 c1.939,0,3.52,1.579,3.52,3.52C39.52,37.941,37.939,39.52,36,39.52z"/> <path d="M12.693,38.292c0.552,0,0.977-0.582,0.952-1.136c-0.016-0.35-0.024-0.79-0.024-1.144c0-0.552-0.448-0.988-1-0.988 c-0.553,0-1,0.47-1,1.023c0,0.385,0.008,0.816,0.026,1.197c0.025,0.535,0.467,1.047,0.998,1.047 C12.66,38.291,12.676,38.291,12.693,38.292z"/> <path d="M24.978,55.484c-5.872-3.332-9.894-9.039-11.035-15.662c-0.093-0.543-0.605-0.909-1.155-0.814 c-0.544,0.094-0.909,0.61-0.815,1.155c1.244,7.214,5.624,13.433,12.02,17.062c0.156,0.088,0.325,0.129,0.492,0.129 c0.349,0,0.687-0.182,0.87-0.506C25.627,56.367,25.458,55.755,24.978,55.484z"/> <path d="M23.05,49.173c0.253,0,0.507-0.095,0.7-0.286c0.394-0.388,0.4-1.02,0.013-1.414c-2.597-2.644-4.028-6.14-4.028-9.845 c0-0.553-0.448-1-1-1c-0.553,0-1,0.447-1,1c0,4.233,1.634,8.226,4.602,11.246C22.532,49.072,22.791,49.173,23.05,49.173z"/> <path d="M26.866,49.857c-0.282-0.162-0.558-0.33-0.828-0.51c-0.461-0.31-1.08-0.183-1.387,0.278 c-0.306,0.46-0.181,1.081,0.278,1.386c0.309,0.207,0.626,0.4,0.949,0.584c0.155,0.088,0.325,0.131,0.492,0.131 c0.349,0,0.687-0.182,0.872-0.506C27.514,50.74,27.346,50.129,26.866,49.857z"/> <path d="M28.213,44.021c-1.897-1.074-3.075-3.096-3.075-5.273c0-0.553-0.448-1-1-1c-0.553,0-1,0.447-1,1 c0,2.896,1.567,5.584,4.089,7.016c0.155,0.088,0.325,0.129,0.492,0.129c0.347,0,0.686-0.182,0.87-0.508 C28.861,44.904,28.693,44.294,28.213,44.021z"/> <path d="M50.025,15.263c-0.444-0.327-1.071-0.23-1.397,0.214c-0.326,0.445-0.229,1.071,0.215,1.397 c6.482,4.76,9.925,12.687,8.982,20.688c-0.063,0.547,0.327,1.045,0.877,1.109c0.039,0.006,0.079,0.008,0.118,0.008 c0.5,0,0.932-0.375,0.99-0.883C60.838,29.082,57.088,20.448,50.025,15.263z"/> <path d="M47.719,21.157c-0.445-0.327-1.072-0.229-1.398,0.214c-0.325,0.445-0.229,1.071,0.216,1.397 c4.069,2.987,6.229,7.963,5.637,12.984c-0.063,0.548,0.327,1.046,0.876,1.109c0.04,0.006,0.079,0.008,0.118,0.008 c0.5,0,0.933-0.374,0.991-0.882C54.834,30.252,52.367,24.569,47.719,21.157z"/> <path d="M45.425,26.173c-0.444-0.326-1.071-0.23-1.397,0.214c-0.326,0.445-0.23,1.071,0.215,1.397 c1.755,1.289,2.688,3.435,2.432,5.601c-0.064,0.548,0.327,1.046,0.876,1.11c0.04,0.005,0.079,0.007,0.118,0.007 c0.5,0,0.932-0.374,0.991-0.883C48.998,30.739,47.759,27.887,45.425,26.173z"/> </g> </g>
|
||||
</svg>
|
After Width: | Height: | Size: 3.2 KiB |
Before Width: | Height: | Size: 14 KiB |
|
@ -0,0 +1,9 @@
|
|||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Transformed by: SVG Repo Mixer Tools -->
|
||||
<svg fill="#ffffff" width="800px" height="800px" viewBox="-2 -2 24 24" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin" class="jam jam-microchip">
|
||||
<g id="SVGRepo_bgCarrier" stroke-width="0"/>
|
||||
<g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<g id="SVGRepo_iconCarrier">
|
||||
<path d="M6 3h8a3 3 0 0 1 3 3v8a3 3 0 0 1-3 3H6a3 3 0 0 1-3-3V6a3 3 0 0 1 3-3zm0 2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1H6zm2 2h4a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1H8a1 1 0 0 1-1-1V8a1 1 0 0 1 1-1zm1 2v2h2V9H9zM6 0a1 1 0 0 1 1 1v2a1 1 0 1 1-2 0V1a1 1 0 0 1 1-1zM1 5h2a1 1 0 1 1 0 2H1a1 1 0 1 1 0-2zm16 0h2a1 1 0 0 1 0 2h-2a1 1 0 0 1 0-2zM1 9h2a1 1 0 1 1 0 2H1a1 1 0 0 1 0-2zm16 0h2a1 1 0 0 1 0 2h-2a1 1 0 0 1 0-2zM1 13h2a1 1 0 0 1 0 2H1a1 1 0 0 1 0-2zm16 0h2a1 1 0 0 1 0 2h-2a1 1 0 0 1 0-2zM6 16a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1zm8-16a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0V1a1 1 0 0 1 1-1zm0 16a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1zM10 0a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0V1a1 1 0 0 1 1-1zm0 16a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1z"/>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 22 KiB |
|
@ -0,0 +1,7 @@
|
|||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Transformed by: SVG Repo Mixer Tools -->
|
||||
<svg width="800px" height="800px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="#000000">
|
||||
<g id="SVGRepo_bgCarrier" stroke-width="0"/>
|
||||
<g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<g id="SVGRepo_iconCarrier"> <title>Folder</title> <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> <g id="Folder"> <rect id="Rectangle" fill-rule="nonzero" x="0" y="0" width="24" height="24"> </rect> <path d="M3,7 L20,7 C20.5523,7 21,7.44772 21,8 L21,19 C21,19.5523 20.5523,20 20,20 L4,20 C3.44772,20 3,19.5523 3,19 L3,7 Z" id="Path" stroke="#ffffff" stroke-width="2" stroke-linecap="round"> </path> <path d="M3,4.5 C3,4.22386 3.22386,4 3.5,4 L9.79289,4 C9.9255,4 10.0527,4.05268 10.1464,4.14645 L13,7 L3,7 L3,4.5 Z" id="Path" stroke="#ffffff" stroke-width="2" stroke-linecap="round"> </path> </g> </g> </g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.1 KiB |
|
@ -139,6 +139,7 @@ using ImGuiFullscreen::GetCachedTextureAsync;
|
|||
using ImGuiFullscreen::GetPlaceholderTexture;
|
||||
using ImGuiFullscreen::GetQueuedFocusResetType;
|
||||
using ImGuiFullscreen::HorizontalMenuItem;
|
||||
using ImGuiFullscreen::HorizontalMenuSvgItem;
|
||||
using ImGuiFullscreen::IsFocusResetQueued;
|
||||
using ImGuiFullscreen::IsGamepadInputSource;
|
||||
using ImGuiFullscreen::LayoutScale;
|
||||
|
@ -271,8 +272,6 @@ namespace FullscreenUI
|
|||
static std::array<std::shared_ptr<GSTexture>, static_cast<u32>(GameDatabaseSchema::Compatibility::Perfect)>
|
||||
s_game_compatibility_textures;
|
||||
static std::shared_ptr<GSTexture> s_banner_texture;
|
||||
static std::shared_ptr<GSTexture> s_fallback_disc_texture;
|
||||
static std::shared_ptr<GSTexture> s_fallback_exe_texture;
|
||||
static std::vector<std::unique_ptr<GSTexture>> s_cleanup_textures;
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
@ -476,9 +475,13 @@ namespace FullscreenUI
|
|||
static void DrawGameListSettingsWindow();
|
||||
static void SwitchToGameList();
|
||||
static void PopulateGameListEntryList();
|
||||
static GSTexture* GetTextureForGameListEntryType(GameList::EntryType type);
|
||||
static GSTexture* GetTextureForGameListEntryType(GameList::EntryType type, const ImVec2& size, SvgScaling mode = SvgScaling::Stretch);
|
||||
static GSTexture* GetGameListCover(const GameList::Entry* entry);
|
||||
static GSTexture* GetCoverForCurrentGame();
|
||||
static void DrawGameCover(const GameList::Entry* entry, const ImVec2& size);
|
||||
static void DrawGameCover(const GameList::Entry* entry, ImDrawList* draw_list, const ImVec2& min, const ImVec2& max);
|
||||
// For when we have no GameList entry
|
||||
static void DrawFallbackCover(const ImVec2& size);
|
||||
static void DrawFallbackCover(ImDrawList* draw_list, const ImVec2& min, const ImVec2& max);
|
||||
|
||||
// Lazily populated cover images.
|
||||
static std::unordered_map<std::string, std::string> s_cover_image_map;
|
||||
|
@ -1107,9 +1110,6 @@ void FullscreenUI::ReturnToMainWindow()
|
|||
|
||||
bool FullscreenUI::LoadResources()
|
||||
{
|
||||
s_fallback_disc_texture = LoadTexture("fullscreenui/media-cdrom.png");
|
||||
s_fallback_exe_texture = LoadTexture("fullscreenui/applications-system.png");
|
||||
|
||||
return LoadSvgResources();
|
||||
}
|
||||
|
||||
|
@ -1128,8 +1128,6 @@ bool FullscreenUI::LoadSvgResources()
|
|||
|
||||
void FullscreenUI::DestroyResources()
|
||||
{
|
||||
s_fallback_exe_texture.reset();
|
||||
s_fallback_disc_texture.reset();
|
||||
s_banner_texture.reset();
|
||||
for (auto& tex : s_game_compatibility_textures)
|
||||
tex.reset();
|
||||
|
@ -1457,27 +1455,26 @@ void FullscreenUI::DrawLandingWindow()
|
|||
{
|
||||
ResetFocusHere();
|
||||
|
||||
if (HorizontalMenuItem(GetCachedTexture("fullscreenui/game-list.png"), FSUI_CSTR("Game List"),
|
||||
if (HorizontalMenuSvgItem("fullscreenui/game-list.svg", FSUI_CSTR("Game List"),
|
||||
FSUI_CSTR("Launch a game from images scanned from your game directories.")))
|
||||
{
|
||||
SwitchToGameList();
|
||||
}
|
||||
|
||||
if (HorizontalMenuItem(
|
||||
GetCachedTexture("fullscreenui/media-cdrom.png"), FSUI_CSTR("Start Game"),
|
||||
if (HorizontalMenuSvgItem("fullscreenui/media-cdrom.svg", FSUI_CSTR("Start Game"),
|
||||
FSUI_CSTR("Launch a game from a file, disc, or starts the console without any disc inserted.")))
|
||||
{
|
||||
s_current_main_window = MainWindowType::StartGame;
|
||||
QueueResetFocus(FocusResetType::WindowChanged);
|
||||
}
|
||||
|
||||
if (HorizontalMenuItem(GetCachedTexture("fullscreenui/applications-system.png"), FSUI_CSTR("Settings"),
|
||||
if (HorizontalMenuSvgItem("fullscreenui/applications-system.svg", FSUI_CSTR("Settings"),
|
||||
FSUI_CSTR("Changes settings for the application.")))
|
||||
{
|
||||
SwitchToSettings();
|
||||
}
|
||||
|
||||
if (HorizontalMenuItem(GetCachedTexture("fullscreenui/exit.png"), FSUI_CSTR("Exit"),
|
||||
if (HorizontalMenuSvgItem("fullscreenui/exit.svg", FSUI_CSTR("Exit"),
|
||||
FSUI_CSTR("Return to desktop mode, or exit the application.")) ||
|
||||
(!AreAnyDialogsOpen() && WantsToCloseMenu()))
|
||||
{
|
||||
|
@ -1536,26 +1533,25 @@ void FullscreenUI::DrawStartGameWindow()
|
|||
{
|
||||
ResetFocusHere();
|
||||
|
||||
if (HorizontalMenuItem(GetCachedTexture("fullscreenui/start-file.png"), FSUI_CSTR("Start File"),
|
||||
if (HorizontalMenuSvgItem("fullscreenui/start-file.svg", FSUI_CSTR("Start File"),
|
||||
FSUI_CSTR("Launch a game by selecting a file/disc image.")))
|
||||
{
|
||||
DoStartFile();
|
||||
}
|
||||
|
||||
if (HorizontalMenuItem(GetCachedTexture("fullscreenui/drive-cdrom.png"), FSUI_CSTR("Start Disc"),
|
||||
if (HorizontalMenuSvgItem("fullscreenui/drive-cdrom.svg", FSUI_CSTR("Start Disc"),
|
||||
FSUI_CSTR("Start a game from a disc in your PC's DVD drive.")))
|
||||
{
|
||||
DoStartDisc();
|
||||
}
|
||||
|
||||
if (HorizontalMenuItem(GetCachedTexture("fullscreenui/start-bios.png"), FSUI_CSTR("Start BIOS"),
|
||||
if (HorizontalMenuSvgItem("fullscreenui/start-bios.svg", FSUI_CSTR("Start BIOS"),
|
||||
FSUI_CSTR("Start the console without any disc inserted.")))
|
||||
{
|
||||
DoStartBIOS();
|
||||
}
|
||||
|
||||
// https://www.iconpacks.net/free-icon/arrow-back-3783.html
|
||||
if (HorizontalMenuItem(GetCachedTexture("fullscreenui/back-icon.png"), FSUI_CSTR("Back"),
|
||||
if (HorizontalMenuSvgItem("fullscreenui/back-icon.svg", FSUI_CSTR("Back"),
|
||||
FSUI_CSTR("Return to the previous menu.")) ||
|
||||
(!AreAnyDialogsOpen() && WantsToCloseMenu()))
|
||||
{
|
||||
|
@ -1606,8 +1602,7 @@ void FullscreenUI::DrawExitWindow()
|
|||
{
|
||||
ResetFocusHere();
|
||||
|
||||
// https://www.iconpacks.net/free-icon/arrow-back-3783.html
|
||||
if (HorizontalMenuItem(GetCachedTexture("fullscreenui/back-icon.png"), FSUI_CSTR("Back"),
|
||||
if (HorizontalMenuSvgItem("fullscreenui/back-icon.svg", FSUI_CSTR("Back"),
|
||||
FSUI_CSTR("Return to the previous menu.")) ||
|
||||
WantsToCloseMenu())
|
||||
{
|
||||
|
@ -1615,7 +1610,7 @@ void FullscreenUI::DrawExitWindow()
|
|||
QueueResetFocus(FocusResetType::WindowChanged);
|
||||
}
|
||||
|
||||
if (HorizontalMenuItem(GetCachedTexture("fullscreenui/exit.png"), FSUI_CSTR("Exit PCSX2"),
|
||||
if (HorizontalMenuSvgItem("fullscreenui/exit.svg", FSUI_CSTR("Exit PCSX2"),
|
||||
FSUI_CSTR("Completely exits the application, returning you to your desktop.")))
|
||||
{
|
||||
DoRequestExit();
|
||||
|
@ -1623,8 +1618,8 @@ void FullscreenUI::DrawExitWindow()
|
|||
|
||||
if (!Host::InNoGUIMode())
|
||||
{
|
||||
if (HorizontalMenuItem(GetCachedTexture("fullscreenui/desktop-mode.png"), FSUI_CSTR("Desktop Mode"),
|
||||
FSUI_CSTR("Exits Big Picture mode, returning to the desktop interface.")))
|
||||
if (HorizontalMenuSvgItem("fullscreenui/desktop-mode.svg", FSUI_CSTR("Desktop Mode"),
|
||||
FSUI_CSTR("Exits Big Picture mode, returning to the desktop interface.")))
|
||||
{
|
||||
DoDesktopMode();
|
||||
}
|
||||
|
@ -5463,14 +5458,18 @@ void FullscreenUI::DrawPauseMenu(MainWindowType type)
|
|||
}
|
||||
DrawShadowedText(dl, g_medium_font, subtitle_pos, text_color, s_current_game_subtitle.c_str());
|
||||
|
||||
|
||||
GSTexture* const cover = GetCoverForCurrentGame();
|
||||
const ImVec2 image_min(display_size.x - LayoutScale(10.0f + image_width),
|
||||
display_size.y - LayoutScale(LAYOUT_FOOTER_HEIGHT) - LayoutScale(10.0f + image_height) - rp_height);
|
||||
const ImVec2 image_max(image_min.x + LayoutScale(image_width), image_min.y + LayoutScale(image_height) + rp_height);
|
||||
const ImRect image_rect(CenterImage(
|
||||
ImRect(image_min, image_max), ImVec2(static_cast<float>(cover->GetWidth()), static_cast<float>(cover->GetHeight()))));
|
||||
dl->AddImage(reinterpret_cast<ImTextureID>(cover->GetNativeHandle()), image_rect.Min, image_rect.Max);
|
||||
{
|
||||
auto lock = GameList::GetLock();
|
||||
|
||||
const GameList::Entry* entry = GameList::GetEntryForPath(s_current_disc_path.c_str());
|
||||
if (entry)
|
||||
DrawGameCover(entry, dl, image_min, image_max);
|
||||
else
|
||||
DrawFallbackCover(dl, image_min, image_max);
|
||||
}
|
||||
}
|
||||
|
||||
// current time / play time
|
||||
|
@ -6458,8 +6457,6 @@ void FullscreenUI::DrawGameList(const ImVec2& heading_size)
|
|||
if (!visible)
|
||||
continue;
|
||||
|
||||
GSTexture* cover_texture = GetGameListCover(entry);
|
||||
|
||||
summary.clear();
|
||||
if (entry->serial.empty())
|
||||
fmt::format_to(std::back_inserter(summary), "{} - ", GameList::RegionToString(entry->region, true));
|
||||
|
@ -6469,11 +6466,7 @@ void FullscreenUI::DrawGameList(const ImVec2& heading_size)
|
|||
const std::string_view filename(Path::GetFileName(entry->path));
|
||||
summary.append(filename);
|
||||
|
||||
const ImRect image_rect(CenterImage(ImRect(bb.Min, bb.Min + image_size),
|
||||
ImVec2(static_cast<float>(cover_texture->GetWidth()), static_cast<float>(cover_texture->GetHeight()))));
|
||||
|
||||
ImGui::GetWindowDrawList()->AddImage(reinterpret_cast<ImTextureID>(cover_texture->GetNativeHandle()),
|
||||
image_rect.Min, image_rect.Max, ImVec2(0.0f, 0.0f), ImVec2(1.0f, 1.0f), IM_COL32(255, 255, 255, 255));
|
||||
DrawGameCover(entry, ImGui::GetWindowDrawList(), bb.Min, bb.Min + image_size);
|
||||
|
||||
const float midpoint = bb.Min.y + g_large_font->FontSize + LayoutScale(4.0f);
|
||||
const float text_start_x = bb.Min.x + image_size.x + LayoutScale(15.0f);
|
||||
|
@ -6514,18 +6507,13 @@ void FullscreenUI::DrawGameList(const ImVec2& heading_size)
|
|||
|
||||
if (BeginFullscreenColumnWindow(-530.0f, 0.0f, "game_list_info", UIPrimaryDarkColor))
|
||||
{
|
||||
const GSTexture* cover_texture =
|
||||
selected_entry ? GetGameListCover(selected_entry) : GetTextureForGameListEntryType(GameList::EntryType::Count);
|
||||
if (cover_texture)
|
||||
{
|
||||
const ImRect image_rect(CenterImage(LayoutScale(ImVec2(275.0f, 400.0f)),
|
||||
ImVec2(static_cast<float>(cover_texture->GetWidth()), static_cast<float>(cover_texture->GetHeight()))));
|
||||
const ImVec2 image_size = LayoutScale(ImVec2(275.0f, 400.0f));
|
||||
ImGui::SetCursorPos(LayoutScale(ImVec2(128.0f, 20.0f)));
|
||||
|
||||
ImGui::SetCursorPos(LayoutScale(ImVec2(128.0f, 20.0f)) + image_rect.Min);
|
||||
ImGui::Image(reinterpret_cast<ImTextureID>(selected_entry ? GetGameListCover(selected_entry)->GetNativeHandle() :
|
||||
GetTextureForGameListEntryType(GameList::EntryType::Count)->GetNativeHandle()),
|
||||
image_rect.GetSize());
|
||||
}
|
||||
if (selected_entry)
|
||||
DrawGameCover(selected_entry, image_size);
|
||||
else
|
||||
DrawFallbackCover(image_size);
|
||||
|
||||
const float work_width = ImGui::GetCurrentWindow()->WorkRect.GetWidth();
|
||||
constexpr float field_margin_y = 10.0f;
|
||||
|
@ -6693,12 +6681,7 @@ void FullscreenUI::DrawGameGrid(const ImVec2& heading_size)
|
|||
bb.Min += style.FramePadding;
|
||||
bb.Max -= style.FramePadding;
|
||||
|
||||
const GSTexture* const cover_texture = GetGameListCover(entry);
|
||||
const ImRect image_rect(CenterImage(ImRect(bb.Min, bb.Min + image_size),
|
||||
ImVec2(static_cast<float>(cover_texture->GetWidth()), static_cast<float>(cover_texture->GetHeight()))));
|
||||
|
||||
ImGui::GetWindowDrawList()->AddImage(reinterpret_cast<ImTextureID>(cover_texture->GetNativeHandle()),
|
||||
image_rect.Min, image_rect.Max, ImVec2(0.0f, 0.0f), ImVec2(1.0f, 1.0f), IM_COL32(255, 255, 255, 255));
|
||||
DrawGameCover(entry, ImGui::GetWindowDrawList(), bb.Min, bb.Min + image_size);
|
||||
|
||||
const ImRect title_bb(ImVec2(bb.Min.x, bb.Min.y + image_height + title_spacing), bb.Max);
|
||||
const std::string_view title(std::string_view(entry->GetTitle(true)).substr(0, 31));
|
||||
|
@ -6987,33 +6970,104 @@ GSTexture* FullscreenUI::GetGameListCover(const GameList::Entry* entry)
|
|||
cover_it = s_cover_image_map.emplace(entry->path, std::move(cover_path)).first;
|
||||
}
|
||||
|
||||
GSTexture* tex = (!cover_it->second.empty()) ? GetCachedTextureAsync(cover_it->second.c_str()) : nullptr;
|
||||
return tex ? tex : GetTextureForGameListEntryType(entry->type);
|
||||
return (!cover_it->second.empty()) ? GetCachedTextureAsync(cover_it->second.c_str()) : nullptr;
|
||||
}
|
||||
|
||||
GSTexture* FullscreenUI::GetTextureForGameListEntryType(GameList::EntryType type)
|
||||
GSTexture* FullscreenUI::GetTextureForGameListEntryType(GameList::EntryType type, const ImVec2& size, SvgScaling mode)
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
case GameList::EntryType::ELF:
|
||||
return s_fallback_exe_texture.get();
|
||||
return GetCachedSvgTexture("fullscreenui/applications-system.svg", size, mode);
|
||||
|
||||
case GameList::EntryType::PS1Disc:
|
||||
case GameList::EntryType::PS2Disc:
|
||||
default:
|
||||
return s_fallback_disc_texture.get();
|
||||
return GetCachedSvgTexture("fullscreenui/media-cdrom.svg", size, mode);
|
||||
}
|
||||
}
|
||||
|
||||
GSTexture* FullscreenUI::GetCoverForCurrentGame()
|
||||
void FullscreenUI::DrawGameCover(const GameList::Entry* entry, const ImVec2& size)
|
||||
{
|
||||
auto lock = GameList::GetLock();
|
||||
// Used in DrawGameList (selected preview)
|
||||
const GSTexture* cover_texture = GetGameListCover(entry);
|
||||
|
||||
const GameList::Entry* entry = GameList::GetEntryForPath(s_current_disc_path.c_str());
|
||||
if (!entry)
|
||||
return s_fallback_disc_texture.get();
|
||||
pxAssert(ImGui::GetCurrentContext()->Style.ImageBorderSize == 0);
|
||||
const ImVec2 origin = ImGui::GetCursorPos();
|
||||
|
||||
return GetGameListCover(entry);
|
||||
if (cover_texture)
|
||||
{
|
||||
const ImRect image_rect(CenterImage(size,
|
||||
ImVec2(static_cast<float>(cover_texture->GetWidth()), static_cast<float>(cover_texture->GetHeight()))));
|
||||
|
||||
ImGui::SetCursorPos(origin + image_rect.Min);
|
||||
ImGui::Image(reinterpret_cast<ImTextureID>(cover_texture->GetNativeHandle()), image_rect.GetSize());
|
||||
}
|
||||
else
|
||||
{
|
||||
const float min_size = std::min(size.x, size.y);
|
||||
const ImVec2 image_square(min_size, min_size);
|
||||
GSTexture* const icon_texture = GetTextureForGameListEntryType(entry->type, image_square);
|
||||
|
||||
const ImRect image_rect(CenterImage(size, image_square));
|
||||
DrawSvgTexture(icon_texture, image_square);
|
||||
}
|
||||
// Pretend the image we drew was the the size passed to us
|
||||
ImGui::SetCursorPos(origin);
|
||||
ImGui::Dummy(size);
|
||||
}
|
||||
|
||||
void FullscreenUI::DrawGameCover(const GameList::Entry* entry, ImDrawList* draw_list, const ImVec2& min, const ImVec2& max)
|
||||
{
|
||||
// Used in DrawPauseMenu, DrawGameList (list item), DrawGameGrid
|
||||
const GSTexture* cover_texture = GetGameListCover(entry);
|
||||
|
||||
if (cover_texture)
|
||||
{
|
||||
const ImRect image_rect(CenterImage(ImRect(min, max),
|
||||
ImVec2(static_cast<float>(cover_texture->GetWidth()), static_cast<float>(cover_texture->GetHeight()))));
|
||||
|
||||
draw_list->AddImage(reinterpret_cast<ImTextureID>(cover_texture->GetNativeHandle()),
|
||||
image_rect.Min, image_rect.Max);
|
||||
}
|
||||
else
|
||||
{
|
||||
const float min_size = std::min(max.x - min.x, max.y - min.y);
|
||||
const ImVec2 image_square(min_size, min_size);
|
||||
|
||||
const ImRect image_rect(CenterImage(ImRect(min, max), image_square));
|
||||
|
||||
DrawListSvgTexture(draw_list, GetTextureForGameListEntryType(entry->type, image_square, SvgScaling::Fit),
|
||||
image_rect.Min, image_rect.Max);
|
||||
}
|
||||
}
|
||||
|
||||
void FullscreenUI::DrawFallbackCover(const ImVec2& size)
|
||||
{
|
||||
pxAssert(ImGui::GetCurrentContext()->Style.ImageBorderSize == 0);
|
||||
const ImVec2 origin = ImGui::GetCursorPos();
|
||||
|
||||
const float min_size = std::min(size.x, size.y);
|
||||
const ImVec2 image_square(min_size, min_size);
|
||||
GSTexture* const icon_texture = GetTextureForGameListEntryType(GameList::EntryType::PS2Disc, image_square);
|
||||
|
||||
const ImRect image_rect(CenterImage(size, image_square));
|
||||
DrawSvgTexture(icon_texture, image_square);
|
||||
|
||||
// Pretend the image we drew was the the size passed to us
|
||||
ImGui::SetCursorPos(origin);
|
||||
ImGui::Dummy(size);
|
||||
}
|
||||
|
||||
void FullscreenUI::DrawFallbackCover(ImDrawList* draw_list, const ImVec2& min, const ImVec2& max)
|
||||
{
|
||||
const float min_size = std::min(max.x - min.x, max.y - min.y);
|
||||
const ImVec2 image_square(min_size, min_size);
|
||||
|
||||
const ImRect image_rect(CenterImage(ImRect(min, max), image_square));
|
||||
|
||||
DrawListSvgTexture(draw_list, GetTextureForGameListEntryType(GameList::EntryType::PS2Disc, image_square, SvgScaling::Fit),
|
||||
image_rect.Min, image_rect.Max);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
|
|
@ -1992,7 +1992,7 @@ void ImGuiFullscreen::EndHorizontalMenu()
|
|||
EndFullscreenWindow();
|
||||
}
|
||||
|
||||
bool ImGuiFullscreen::HorizontalMenuItem(GSTexture* icon, const char* title, const char* description)
|
||||
bool ImGuiFullscreen::HorizontalMenuItem(GSTexture* icon, const ImVec2& icon_uv0, const ImVec2& icon_uv1, const char* title, const char* description)
|
||||
{
|
||||
ImGuiWindow* window = ImGui::GetCurrentWindow();
|
||||
if (window->SkipItems)
|
||||
|
@ -2031,7 +2031,7 @@ bool ImGuiFullscreen::HorizontalMenuItem(GSTexture* icon, const char* title, con
|
|||
const ImVec2 icon_pos = bb.Min + ImVec2((avail_width - icon_size) * 0.5f, 0.0f);
|
||||
|
||||
ImDrawList* dl = ImGui::GetWindowDrawList();
|
||||
dl->AddImage(reinterpret_cast<ImTextureID>(icon->GetNativeHandle()), icon_pos, icon_pos + ImVec2(icon_size, icon_size));
|
||||
dl->AddImage(reinterpret_cast<ImTextureID>(icon->GetNativeHandle()), icon_pos, icon_pos + ImVec2(icon_size, icon_size), icon_uv0, icon_uv1);
|
||||
|
||||
ImFont* title_font = g_large_font;
|
||||
const ImVec2 title_size = title_font->CalcTextSizeA(title_font->FontSize, avail_width, 0.0f, title);
|
||||
|
@ -2056,6 +2056,22 @@ bool ImGuiFullscreen::HorizontalMenuItem(GSTexture* icon, const char* title, con
|
|||
return pressed;
|
||||
}
|
||||
|
||||
bool ImGuiFullscreen::HorizontalMenuItem(GSTexture* icon, const char* title, const char* description)
|
||||
{
|
||||
return HorizontalMenuItem(icon, ImVec2(0.0f, 0.0f), ImVec2(1.0f, 1.0f), title, description);
|
||||
}
|
||||
|
||||
bool ImGuiFullscreen::HorizontalMenuSvgItem(const char* svg_path, const char* title, const char* description, SvgScaling mode)
|
||||
{
|
||||
const ImVec2 icon_size = LayoutScale(150.0f, 150.0f);
|
||||
GSTexture* padded_texture = GetCachedSvgTexture(svg_path, icon_size, mode);
|
||||
|
||||
const ImVec2 padded_size(padded_texture->GetWidth(), padded_texture->GetHeight());
|
||||
const ImVec2 uv1 = icon_size / padded_size;
|
||||
|
||||
return HorizontalMenuItem(padded_texture, ImVec2(0.0f, 0.0f), uv1, title, description);
|
||||
}
|
||||
|
||||
void ImGuiFullscreen::PopulateFileSelectorItems()
|
||||
{
|
||||
s_file_selector_items.clear();
|
||||
|
|
|
@ -235,7 +235,9 @@ namespace ImGuiFullscreen
|
|||
|
||||
bool BeginHorizontalMenu(const char* name, const ImVec2& position, const ImVec2& size, u32 num_items);
|
||||
void EndHorizontalMenu();
|
||||
bool HorizontalMenuItem(GSTexture* icon, const ImVec2& icon_uv0, const ImVec2& icon_uv1, const char* title, const char* description);
|
||||
bool HorizontalMenuItem(GSTexture* icon, const char* title, const char* description);
|
||||
bool HorizontalMenuSvgItem(const char* svg_path, const char* title, const char* description, SvgScaling mode = SvgScaling::Stretch);
|
||||
|
||||
using FileSelectorCallback = std::function<void(const std::string& path)>;
|
||||
using FileSelectorFilters = std::vector<std::string>;
|
||||
|
|