AlignmentOrigin.st
author claus
Sun, 02 Jul 1995 18:18:00 +0200
changeset 83 97fd04d167c8
child 88 f8a41aa4b34b
permissions -rw-r--r--
.

LayoutOrigin subclass:#AlignmentOrigin
	 instanceVariableNames:'leftAlignmentFraction topAlignmentFraction'
	 classVariableNames:''
	 poolDictionaries:''
	 category:'Graphics-Geometry'
!

!AlignmentOrigin methodsFor:'accessing'!

leftAlignmentFraction:something
    "set leftAlignmentFraction"

    leftAlignmentFraction := something.
!

leftAlignmentFraction
    "return leftAlignmentFraction"

    ^ leftAlignmentFraction
!

topAlignmentFraction:something
    "set topAlignmentFraction"

    topAlignmentFraction := something.
!

topAlignmentFraction
    "return topAlignmentFraction"

    ^ topFraction
! !

!AlignmentOrigin methodsFor:'printing & storing'!

displayString
    ^ 'LayoutOrigin(' 
	, 'l: ' , leftFraction displayString
	, '+' , leftOffset displayString
	, ' t: ' , topFraction displayString
	, '+' , topOffset displayString
	, ' a: ' , leftAlignmentFraction displayString
	, '@' , topAlignmentFraction displayString
	, ')'
! !


!AlignmentOrigin methodsFor:'queries'!

rectangleRelativeTo:superRectangle preferred:prefRect
    |x y|

    leftOffset isNil ifTrue:[
	x := 0
    ] ifFalse:[
	x := leftOffset
    ].
    topOffset isNil ifTrue:[
	y := 0
    ] ifFalse:[
	y := topOffset
    ].
    leftFraction notNil ifTrue:[
	x := x + (superRectangle width * leftFraction)
    ].
    topFraction notNil ifTrue:[
	y := y + (superRectangle height * topFraction)
    ].
    leftAlignmentFraction ~~ 0 ifTrue:[
	x := x - (prefRect width * leftAlignmentFraction)
    ].
    topAlignmentFraction ~~ 0 ifTrue:[
	y := y - (prefRect height * topAlignmentFraction)
    ].
    ^ Rectangle origin:x@y extent:prefRect extent

    "
     |superRect aO|

     superRect := 0@0 corner:100@100.
     aO := (AlignmentOrigin new).
     aO leftFraction:0.5;
	topFraction:0.5;
	leftAlignmentFraction:0.5;
	topAlignmentFraction:0.5.
     aO rectangleRelativeTo:superRect preferred:(0@0 corner:30@30) 
    "
! !

!AlignmentOrigin methodsFor:'initialization'!

initialize
    super initialize.
    leftAlignmentFraction := topAlignmentFraction := 0.
! !