I've been experimenting a bit and finished a (simple) implementation of an unstretched interface.
For every element you can specify the distance to the top, right, bottom and left edge (in relation to its parent). If you want to have a button appear at the lower right, you can set bottom and right to 0. If you want an element to appear at (10, 20) you have to set left to 10 and top to 20. You can set pixel values or percentages (which are relative to the parent element's size).
Right now I've implemented four kinds of elements: Box, Text, Image and Button.
A box can have a background color, border and a fixed size.
A text element displays text. You can set a fixed width which will make the text wrap or let the engine calculate the width (and height) of the text content. You can also change the text font and color.
An image element displays an image (duh!) and can be stretched.
A button has three images: normal, hover and clicked (it can also be stretched).
All settings are optional but every element has to have at least two coordinates.
A simple screen with a background, a logo, a button and some text would look like this:
$Text: I'm an example text to demonstrate this...
NOTE: I used the multiplayer symbol as the logo, the fictionviewer as background (that's why there seem to be two buttons).
"+Autosize" means the engine calculates the box's size itself (I guess I should make that the default when only two coordinates and no fixed size are given.).
"+CenterX" and "+CenterY" center an element along the X or Y axis.
The hover and click effects for the button already work. What do you think so far? Is the table format too complex?