The screen coordinates go from 0 to 8191.
0,0 is the bottom left corner of the screen. 8192,8192 is the top right corner. Units are then scaled by the desired screen resolution so X coordinate 4096 will be halfway across the screen regardless of the resolution or the aspect ratio. The Z coordinate is scaled the same as the X component. The positive Z axis points out of the screen and negative Z points into the screen.
Speeds for scrolling and animations are in scaled units per second or degrees per second.
The basic skin elements are images, movies, shapes, text, and models. I am working on buttons that can be clicked on with a trackball/button combination, for jukebox skins.
Images can be static images or can depend on the current game. You can have marquees, cabinet images, and many other kinds of game-dependent images. I have support for png, gif, bmp, tga, jpg, and svg images.
Movies can either be static movies or gameplay movies. I currently support only avi movies. Mpeg movies are in the works and definitely will be in before the Linux release, because the Linux release may or may not support .avi movies.
For shapes I currently support rectangles, cubes, and teapots. I am working on circles, triangles, and roundrects. Rectangles and cubes can be wireframes, solid colors, or textured with an image or a movie. Teapots can only be wireframes or solid color. A rectangle shape textured with an image is functionally identical to having an image element.
Game lists can either be one contiguous block of lines of text that are the same size (a la Kymaera, Mamewah) or individual elements. Marquees can be displayed instead of text if desired, for the individual elements.
Sound effects can be played at various events, such as when the game list is scrolled, a game is selected, the frontend quits, and so on. I support only .wav files for sound effects.
The frontend can play sound in the background. Only .mp3 format is currently supported. You can create a list of songs and the frontend will randomly pick one to play in the background.
The frontend can play movies when the frontend starts, when a game is launched, or when the frontend exits.
Text is always drawn at the font size specified. So skins will appear different at different resolutions because the text will be a different size, even though the images are not. I wonder if I should change this. There's an appeal to having the skin appear the same regardless of the resolution.
Elements with images have a blend mode. I support the following modes:
1) One image overlaying another with no blending, I call this "superimpose" mode.
2) Full blending with alpha channel
3) Blending with a fixed alpha value
4) Blending with a "key" value. All "key" values become transparent.
5) "Corner" alpha. The pixel in the bottom left corner becomes the transparent key color.
6) "Pulse" alpha. The alpha value goes from 0 to 1 and back again in a cycle.
Please let me know what skin options you are looking for.