AfterStep has been almost entirely rewritten in this new incarnation.
Here is the short list of new architectural changes:
1.1. New high performance and high quality image handling engine has
been developed to fulfill GUI needs. It includes different image
transformations, such as scaling, tiling, cropping, blurring,
blending of arbitrary number of layers, in-memory image compression,
support for 12 different file formats, including its own parser/writer
of XPM files, capable of achieving much better performance then
default libXpm. Supported image formats are :
XPM, PNG, JPEG, XCF(GIMP image format), PPM, PNM, BMP, ICO,
CUR, GIF, TIFF, and XML scripts. Where XML scripts allow for user to
create script of transformations to be performed on the image at the
time when it gets loaded./para>
libAfterImage also provides support for TTF fonts ( using libfreetype )
and smoothed standard X raster fonts.
1.2. Window hints handling has been rewriten and reorganized, and most of the
Extended WM specs has been incorporated, as well, as better support for
Motif , ICCCM and old GNOME hints has been implemented.
1.3. All the GUI rendering code has been aggregated into libAfterStep
and now all the GUI elements are rendered using consistent approach
in every module and every part of the AfterStep proper. From now on
interface is build from so called TBars. TBar is rectangular area
that may be focused(hilited) or unfocused and pressed or unpressed.
Each TBar has the following structure :
- the background of the TBar, which is defined by MyStyle and state
of the bar - there are two MyStyles assigned to each TBar - one
for focused and one for unfocused state.
- tiles of the TBar. Tiles are smaller features that gets arranged
inside the bar according to its size, alignment, position and
order. Tiles could be static icons ( cannot be pressed );
blocks of buttons - each having two shapes - pressed and normal;
Text labels; Empty space tiles.
There could be upto 256 tiles, each residing on one of the cells
in 16x16 grid. Several tiles could reside in single cell, in
which case they get superimposed on top of each other.
- bevel of the TBar. When TBar is rendered all of its tiles are
superimposed on top of its background , and resulting image
will have a 3D bevel drawn on it, using colors from same
MyStyle as used for background . Bevel could be switched off
partially or entirely. Respective configuration options has
been added where appropriate. When TBar is pressed - its
bevel is inverted.
When TBar is rendered all of its elements gets superimposed on top
of each other using one of 13 blending methods supported by
libAfterImage, with default being simple alphablending. See
MyFrame configuration for more details. This is refrred to as
"Composition Method".
1.4. Due to the fact that AfterStep is using compression to store
images in memory - there is no need to have separate root
background handler, and so asetroot has been discontinued and
afterstep proper now does all the root background loading.
You could simply copy-and-paste your asteroot config into your
look file. This has an added advantage of simplifing theme support
for root backgrounds.
1.5. Significant work has been done to create libAfterConf which
provides easy means for reading configuration options, and
facilitates implementation of any configuration tool.
1.6. Some work has been done to improve support for themes. AfterStep
proper and modules now load configuration files is this order :
#1 - base config ;
#2 - look, feel, menu, database, autoexec and module specific config ;
#3 - theme file;
#4 - theme override file;
Theme override file is needed so that user may have a list of
critical options that he/she does not want to be changed by any
theme. What is missing here is a comprehensive theme building tool.
1.7. AfterStep now make extensive use of X shaped extensions ( where
available ) Everything could be shaped now - titlebars, Pager,
Wharf, etc. To make some element shaped - MyStyle with BackPixmap
type 125 or 126 should be used.
1.8. Menus are now treated same as regular windows. They could be
configured in database file using preset Style "ASMenu" to have
different titlebar buttons, frame decorations, stickiness, etc.
MenuPinOn has been changed to be just another titlebar button,
with PinMenu function assigned to it.
1.9. AfterStep no longer uses fixed scheme of 5 titlebar buttons on
each side, and order of buttons could be configured in look. There
is still limitation to have no more then 10 buttons total.