XPCE allows the user to specify constraints between pairs of objects. In the example above we would like the text to be centered relative to the bitmap. This may be achieved using:
10 ?- get(@ic, member, bitmap, Bitmap),
      get(@ic, member, text, Text),
      new(_, constraint(Bitmap, Text, identity(center_x))).
Each time either the bitmap or the text changes this constraint will 
invoke <-center_x on the changed object and ->center_x 
with the return value on the other object. Class spatial 
defines more general geometrical constraints between graphicals.
Constraints are high-level, but potentially expensive means to 
specify graphical relations. An alternative is the redefinition of the
->geometry method of (compound) graphical 
objects. See chapter 7.