i have done some research into this and this is what i think should work ok and maintain backwards compatibility:
- SVG files can be supported for bitmap skins only
- the skin creator tool can be enhanced to convert svg images into 16px, 24px and probably (depending on whether the skin file starts to get too bloated) 32px PNG images
- if a user is using an older MB version, only the 16px version of an image would be loaded (as now) and then upscaled for the screen DPI
- if a user is using the new MB version, the best sized size image will be chosen (and upscaled further if needed for unusual screen DPI settings)
this is done now and i will make it available after some testing
@alumni, i will look at your request after that
some points on this:
- this is only done for bitmap skins, and everything stated on the following points only applies to bitmap skins
- however, if you have a standard skin with a bunch of your own icons that you want to add high dpi support for, then you can easily convert a standard skin to a bitmap skin by using an empty skin.xml file with the skin creator tool. The other advantage is MB loads .xmlc skins a bit faster
<?xml version="1.0" encoding="utf-8"?>
<root sourceSkin="MusicBee3">
</root>
- in the source skin, for all the icon elements you should now directly reference the .png filename. You dont have to but the skin creator tool wont apply 150% or 200% scaling if you just supply a base 64 string
<element id="UpcomingConcertsIcon">Images\UpcomingConcertsIcon.png</element>
- you can create 150% and 200% variations by appending _150 or _200 to the filename. Make sure the image size is 150% or 200% bigger. So a 16px icon would be 24px or 32px
<element id="UpcomingConcertsIcon">Images\UpcomingConcertsIcon_150.png</element>
- if the referenced file is a .svg file, you only need a single file and the skin creator tool will scale the image automatically
- the same applies to any player panel images referenced in the skin.xml file
- the following images ignore the 150% and 200% variations in order to stop the skin bloating:
"SplashScreen", "WaitIndicatorArtwork", "NoArtwork", "UnknownArtist", "RssFeed"
and also high dpi variations of the panel background image are ignored because of other complications