USF skin format reference v1.3
1. USF skin format basics 2
2. USF images format 2
3. USF header format 2
3.1. [Global] section format 3
3.2. [Bitmaps] section format 3
3.3. Window description sections 3
3.4. Window controls description sections 4
3.4.1. Window site controls description section 4
3.4.2. Window button controls description section 5
3.4.3. Window slider controls description section 5
3.4.4. Window text controls description section 5
3.4.5. Window placeholder controls description section 6
3.4.6. Window indicator controls description section 6
3.4.7. Window additional button controls description section 6
3.4.8. Window additional indicator controls description section 7
3.5. Bitmap effects 7
3.5.1. Adding bitmap effects descriptions to the skin 7
3.5.2. Atomar operators 8
3.5.2.1. Per-pixel color mixing atomar operator 8
3.5.2.2. Per-pixel bitmap brightness tuning atomar operator 8
3.5.2.3. Per-pixel bitmap contrast tuning atomar operator 8
3.5.2.4. Per-pixel bitmap gamma tuning atomar operator 9
3.5.2.5. Per-pixel bitmap hue tuning atomar operator 9
3.5.2.6. Per-pixel bitmap saturation tuning atomar operator 9
3.5.2.7. Per-pixel bitmap luminance tuning atomar operator 9
3.5.2.8. Bitmap scrolling atomar operator 10
3.5.3. Applying defined bitmap effects 10
4. Common skin creation hints and tricks 10
The skins in all skinned RivaTuner technology based products (RivaTunerStatisticsServer, D3DOverrider, EVGA Precision or MSI Afterburner) are represented by *.USF files stored in the .\Skins subfolder in the application folder. USF skin files are compiled from separate bitmap images defining appearance of skin base, appearance of each skin control in all possible states (e.g. normal, focused (hot) and pressed button appearance) and special text header file, mapping these separate bitmap images to each control, defining positions of each control in the skin and so on. Each skinned application (i.e. RTSS.exe, D3DOverrider.exe, EVGAPrecision.exe or MSIAfterburner.exe) contains built-in command line based USF skin file compiler and decompiler. So you can always decompile and modify default skins or add your own skins to each of these products. It is recommended to use default skins as tutorials before trying to create your own skins. The skins can be decompiled using the following command line switch:
<application_name> -ds <skin_name>[,<skin_password>]
where <application_name> is the name of application with integrated skin decompiler, <skin_name> is the name of skin file to be decompiled and <skin_password> is a password, which can be optionally defined by skin author to protect it from decompilation. The following passwords are used for the following RivaTuner skinning technology based products:
RivaTunerStatisticsServer : jsRfsgTd
D3DOverrider : ye6fyhmR
EVGA Precision : jsRfsgTd
MSI Afterburner : te6Xfjz3
For example, default MSI Afterburner skin (.\Skins\default.usf file in MSI Afterburner folder) is compiled with te6Xfjz3 password, so it can be decompiled using the following command line switch:
MSIAfterburner.exe -ds default,te6Xfjz3
Similar to that, default EVGA Precision skin (.\Skins\default.usf file in EVGA Precision folder) is compiled with jsRfsgTd password, so it can be decompiled using the following command line switch:
EVGAPrecision.exe -ds default,jsRfsgTd
After decompiling the skin decompiled source files will be stored in .\Skins\<skin_name> subfolder. You can modify them and compile modified skin using the following command line switch:
<application_name> -cs [-c] <skin_name>
where <application_name> is the name of application with integrated skin compiler, is and <skin_name> is the name of skin to be compiled. This command will create .\Skins\<skin_name>.usf file from the source files stored into .\Skins\<skin_name> folder. For example, to compile edited default MSI Afterburner or EVGA Precision skin use:
MSIAfterburner.exe -cs default
or
EVGAPrecision.exe -cs default
Similar approach can be used to create new skins, just use decompiled default skin as a template and copy .\Skins\default folder contents to your new skin folder (e.g. .\Skins\MySkin). After doing so you may edit the header to specify new skin name, author, password and redefine control positions in the header if needed then modify bitmaps for the controls you are about to change. The next chapters will discuss skin source files format in details.
Please take a note that skin engine supports skin files compression, optional -c command line switch can be used to compress resulting skin during compilation. Compressed skin file size can be much smaller than uncompressed one (average compression ratio is 5x), however compressed skin usage may slow down application startup a bit due to runtime skin decompression. Also, if you are distributing your own skins collection containing multiple independent skins, then keeping your skin files in uncompressed format is probably a better idea, because multiple uncompressed files will compress much better in a solid archive comparing to multiple independently pre-compressed files.
All source images representing different skin parts and controls must be stored as uncompressed 24-bit BMP images. Storing images in different format will result in skin compilation error.
The header is ASCII text file defining all information related to the skin (e.g. skin name and author information, positions and styles of all controls in the skin and so on). The header must have “;HDR” signature in the very beginning, otherwise the skin won’t work. The header format is derived from standard INI file format, so it is composed of multiple sections containing different fields. The list of sections is specific to the skin, but there are two common sections for all skins. Such common sections are [Global] and [Bitmaps] sections, the next chapter will discuss them in details.
This section defines general information about the skin. This information includes skin file format identifier (current format is v1.2 and all information below will apply to this format only), skin host application name, skin name, optional author name, optional password and the list of skinned windows defined by the skin. For example:
[Global]
Format = 00010002h
Host = MSIAfterburner.exe
Name = MSI Afterburner skin
Author =
Password = te6Xfjz3
Windows = WND_MAIN
Format field is required to inform the compiler and skinned application about the features supported by this skin. Format of some other fields and other sections depends on skin format defined with this field (for example, bitmap ...
ruras