Go to the first, previous, next, last section, table of contents.

Geometry interface

The Geometry type and operators over it: (Note that we distinguish between one and two dimensional geometries.)


data Geometry =
 = Space GHint
 | Geo   
      {- hint X -}
     GHint
      {- hint Y -}
     GHint
   deriving (Eq,Text)
 
data GHint = 
 GHint 
   {- *Natural* size -}
  GLength
   {- *Minimum* size -}
  GLength
   {- stretchiness (order and value within that order) -}
  (WillOrder,Willingness)
   {- squashiness -}
  (WillOrder,Willingness)
 deriving (Eq,Text)

type Willingness = Int
type WillOrder = Int
type GLength = Int

 {- construct new geometry with specified nat. and min size -}
newGeometry :: Size -> Size -> Geometry
 {- create space, or a one dimensional geometry -}
newSpace :: Size -> Geometry

 {- set the stretch- or squashiness for geometry along one axis -}	
setGeoStretch :: Axis -> (Willingness,WillOrder) -> Geometry -> Geometry
setGeoSquash  :: Axis -> (Willingness,WillOrder) -> Geometry -> Geometry

 {- return stretch- or squashiness along either axis. -}
getGeoStretch :: Axis -> Geometry -> (Willingness,WillOrder)
getGeoSquash  :: Axis -> Geometry -> (Willingness,WillOrder)

 {- get the natural size -}
getGeoNatSize :: Geometry -> Size
 {- return the minimum size -}
getGeoMinSize :: Geometry -> Size

 {- set the natural length or size  -}
setGeoNatLength :: Axis -> GLength  -> Geometry -> Geometry
setGeoNatSize   :: Size -> Geometry -> Geometry
setGeoMinSize   :: Size -> Geometry -> Geometry

 {- add amount to the natural and min. size of a geometry -}
augmentGeo :: Size -> Geometry -> Geometry
 {- set the natural *and* minimum size -}
setGeoSize :: Size -> Geometry -> Geometry

 {- geometry with no size and no desire to change -}
nullGeo   :: Geometry
nullGHint :: GHint


Go to the first, previous, next, last section, table of contents.