Support for user icon sheets.
The icons are searched in the (USER or SYSTEM) datafiles/icons directory.
Trying to load the blender_icons_16.png and blender_icons_32.png files.
Checking image dimensions against built-in icons, if the image not valid, the built-in icon sheet will be saved to the temporary directory, to be used as a reference.
Next checking the amount of bits/planes. Grayscale images with alpha channel (16 bit) will be ICON_TYPE_MONO_TEXTURE and RGBA images (32 bit) will be ICON_TYPE_COLOR_TEXTURE. Others bits (images without alpha channel) are being ignored.
If only one icons file is successfully loaded, it is used for all UI scales. If two files are loaded but different bits, only 32x32 version are used.
Various test files, including color, monochrome and invalid:
Comparison of GL_TEXTURE_MIN_FILTER parameters, GL_LINEAR_MIPMAP_NEAREST vs GL_LINEAR_MIPMAP_LINEAR.
LINEAR vs NEAREST at a scale of 1.4x:
Various scales, new NEAREST on the left, old LINEAR on the right: