XaAES skinning is not that complex, but comes in 4 sections: window widgets, extra widgets, hicolor mode textures, 265 color mode (8bit) textures. If you just want to do a window related skin, as opposed to doing form textures as well, then the requirements are somewhat less. Detailed below are the files that are needed for the various parts, where the file names of .IMG textures in xaaes/img/8b are the same as those for xaaes/img/hc.
Window Widgets:
The default name for the widgets resource is XAAESWDG.RSC. The file contains the following:
00 - BOX - this is just the place holder for the rest of the infomation
01 - CICON - close
02 - CICON - main process icon
03 - CICON - iconize
04 - CICON - hide
05 - CICON - fuller (max)
06 - CICON - scroll up
07 - CICON - scroll down
08 - CICON - scroll left
09 - CICON - scroll right
10 - CICON - sizer
11 - STRING - this is text infomation for your window widgets, style, name, version, etc
All icons are 16x16, provide MONO, 16 COLOR and 256 COLOR icons for each, but NOT 4 color. The selected icons are used for mouse clicks, but because of the optional mouse over setting I chose to use the original untopped widgets as the icon, with no positional displacement in the image. I have made the organization a little cleaner than most of the current resource files. Currently there is no support for untopped window widgets. Also the current active or mouse over option set in the config file, just uses the selected icon for each.
Extra Widgets:
The default name for extended widgets is XA_XTOBJ.RSC. The file contains the following:
0 - BOX - this is just the place holder for the rest of the infomation
1 - CICON - radio off (dial off)
2 - CICON - radio on (dial on)
3 - CICON - checkbox off (tickbox off)
4 - CICON - checkbox on (tickbox on)
5 - STRING - this is text infomation for your extra widgets, style, name, version, etc
All icons are 16x16, provide MONO, 16 COLOR and 256 COLOR icons for each, but NOT 4 color. Feel free to add a mouse over, clicked, disabled, or untopped icon as the selected icon for each, as they will be used in the immediate future. At some point in the near future these will proably be added to or extended in some way to cater for the new options added to XaAES themeing, but the above will allow current and older versions of XaAES to function correctly. Look to the bottom of this file to see the proposed extensions.
Window Textures:
Window textures are placed in there respective IMG folders (8B or HC) and are named as follow:
WTITLE.IMG - window title image
SLIDE.IMG - the background which the slider moves over
SLIDER.IMG - the slider image
Special Textures:
The scrollist form widget is a special case, as it is also used for the FileSelector, while the exterior texture is used as a background and will show through behind window widgets, or if there are no texture or widget for a given target (scroll list resize widget icon), but not in ever situation. The textures are placed in there respective IMG folders (8B or HC) and are named as follow:
SLWTITLE.IMG - scroll list title image
EXTERIOR.IMG - window and form base (background) texture.
Form Textures:
If none of these are found, often the exterior texture can be seen, but not always. The textures are placed in there respective IMG folders (8B or HC) and are named as follow:
DBOX.IMG - basic dialog background image, and will dominate any theme
DTEXT.IMG - background texture for text entry and string resources, when they are set to transparent font rendering, often the same as DBOX.IMG.
DBUTTON.IMG - used for buttons, which can be any size although there is a default height, which can make creating this texture quite differcult.
Other Textures:
There is currently no texture for the menu bar, and the popup texture is also used in other menu popup style areas. The textures are placed in there respective IMG folders (8B or HC) and are named as follow:
POPUP.IMG - popup menus (and similar) image
INFO.IMG - the info bar image often found at the top of a window, or below a menu bar.
Extended Textures:
These textures compliment those already outlined, and are placed in there respective IMG folders (8B or HC) and are named as follow:
WTITLEU.IMG - untopped window title image
SLIDEU.IMG - untopped background which the slider moves over
SLIDERU.IMG - untopped slider image
VSLIDE.IMG - vertical background which the slider moves over
VSLIDER.IMG - vertical slider image
VSLIDEU.IMG - untopped vertical background which the slider moves over
VSLIDERU.IMG - untopped vertical slider image
INFOU.IMG - untopped info bar image
ULWTITLE.IMG - untopped scroll list title image
All textures are tiled, so if you want to reduce repitition, make the texture longer or higher accordingly. I used the XaAES About dialog and TaskManager dialogs to verify most things. Some apps do not set transparent font rendering for text input and string areas, based on the original design color scheme which often meant white was used. This breaks the continuity of themes, however modern versions of apps still in development now cater for this, with a few exceptions, which I will supply alternate resource files with AFROS-update (Taskbar ->configure->Start text entry) (TeraDesk - blue borders on dialogs). If you find any that need work, please either let me know, or create a fixed resource and make it available on the net.
Remember:
The maximum size of a square texture is 720x720, use 256 color IMG's for simplicity (unless you can find a program that generates XaAES compatible 24bit IMG files, then please let me know). In 8bit color mode, textures are converted to use the first 16 colors, which I hope to fix in the near future, and use the current routines to allow 16 color modes to use texturing. Larger textures mean less repitition, but more memory usage. One single texture can be used for both slide rails, another for both sliders, with judiciuos texture creation. For special left ends in any title bar or info bar textures, create long thin textures, XaAES will happily use 1600x21. The maximum texture size should be equal to the total amount of pixels in a 720x720 image, which is nice as some setups are able to do 2048+ resolutions.
Proposed Extensions:
I have already added a FULL wigdet to XaAES, for when the window fuller is already in max size, which is a replacement for the hijacked smaller icon widget used by traditional AES (which now defines the use of an iconizer widget button). I have also added a pin widget, which allows a button with the same action as the current right click on the title bar (also known as rollup). These and other extensions are outlined as follow:
o A full set of complimentary untopped form textures.
o Addition of FULL and PIN widgets to current resource.
12 - CICON - full (min)
13 - CICON - pin (rollup)
o A full set of complimentary untopped widget resources.
o process list icons via resource.
o select dropdown icons.
o menu, menu select, and menu popup select textures.
o menu popup tick icons.
o menu popup icons for selected entries.
- Open
- Close
- Save
- Quit/Exit
- Print
- cut/copy/paste
o user/theme defined widgets.
o user/theme defined extras in window frames, include a toolbar or quick launch.
o gradient/theme dynamic loading.
o dynamic gradient/theme changer.
o runtime (or theme based) widget placement.
o runtime gradient and texture mixture setting.
o left and right textures in title bar.
o background textures in title bar text.
o left, right and no title bar text.
o user/theme defined widget placement.
o transparent widgets and custom per widget background texture.
o loading of IceWM themes into XaAES texture and widget allocations.
o loading of other themes into XaAES texture and widget allocations.
o save complete theme, or just window theme.
o zero borders on window widget areas.
o gradients and textures in window border areas.
o use of transparencey for window frame shaping.
o use of opacity (32bit alpha channel).
o per application window frame skinning.
o variable width/height widgets and frame layouts.
o separate scrolllist box slider textures.
o a replacement for missing sizer in scrollist boxes.
Obviously some of these items will be a while in the making, but others are already in place and just need either the dynamic part (gradients and textures), a loader (gradients), or the functions linked (pin). Widget placement is now variable, and will be via C includes as is now posible with gradients, allowing for custom gradient and window frame layouts at compile time. There are currently defined 8 styles for widget and slider layout, and 6 basic gradient color variations. Expect more in the coming months.