DisplayTransform.st
author Claus Gittinger <cg@exept.de>
Fri, 10 Feb 2017 11:18:11 +0100
changeset 7858 a32d811bda6f
parent 7414 0dd19064cf94
child 7951 b1387707d27d
permissions -rw-r--r--
#DOCUMENTATION by cg class: DisplayTransform added: #isAbstract
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
6698
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"{ Package: 'stx:libview' }"
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
7414
0dd19064cf94 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 6698
diff changeset
     3
"{ NameSpace: Smalltalk }"
0dd19064cf94 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 6698
diff changeset
     4
6698
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
Object subclass:#DisplayTransform
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
	instanceVariableNames:''
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
	classVariableNames:''
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
	poolDictionaries:''
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
	category:'Graphics-Transformations'
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
!
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
DisplayTransform comment:'This class represents a base for generic transformations of 2D points between different coordinate systems (including scaling and rotation). The transformations map objects between one coordinate system and another where it is assumed that a nested hierarchy of transformations can be defined.
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
It is assumed that transformations deal with Integer points. All transformations should return Integer coordinates (even though float points may be passed in as argument).
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
Compositions of transformations MUST work in the following order. A ''global'' transformation (the argument in #composedWithGlobal:) is defined as a transformation that takes place between the receiver (the ''local'') transformation and any ''global'' point computations, whereas a ''local'' transformation (e.g., the argument in #composedWithLocal:) takes place between the receiver (''global'') and any ''local'' points. For the transformation methods this means that combining a global and a local transformation will result in the following order:
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
		globalPointToLocal: globalPoint
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
			"globalPoint -> globalTransform -> localTransform -> locaPoint"
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
			^localTransform globalPointToLocal:
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
				(globalTransform globalPointToLocal: globalPoint)
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
		localPointToGlobal: localPoint
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
			"localPoint -> localTransform -> globalTransform -> globalPoint"
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
			^globalTransform localPointToGlobal:
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
				(localTransform localPointToGlobal: localPoint)
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
'
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
!
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
!DisplayTransform class methodsFor:'instance creation'!
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
identity
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
	^self new setIdentity
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
! !
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
7858
a32d811bda6f #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7414
diff changeset
    38
!DisplayTransform class methodsFor:'queries'!
a32d811bda6f #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7414
diff changeset
    39
a32d811bda6f #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7414
diff changeset
    40
isAbstract
a32d811bda6f #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7414
diff changeset
    41
    "Return if this class is an abstract class.
a32d811bda6f #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7414
diff changeset
    42
     True is returned here for myself only; false for subclasses.
a32d811bda6f #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7414
diff changeset
    43
     Abstract subclasses must redefine this again."
a32d811bda6f #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7414
diff changeset
    44
a32d811bda6f #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7414
diff changeset
    45
    ^ self == DisplayTransform.
a32d811bda6f #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7414
diff changeset
    46
! !
a32d811bda6f #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7414
diff changeset
    47
6698
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
!DisplayTransform methodsFor:'accessing'!
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
inverseTransformation
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
	"Return the inverse transformation of the receiver"
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
	^self subclassResponsibility
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
! !
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
!DisplayTransform methodsFor:'composing'!
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
composedWithGlobal: aTransformation
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
	"Return the composition of the receiver and the global transformation passed in.
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
	A 'global' transformation is defined as a transformation that takes place
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
	between the receiver (the 'local') transformation and any 'global' point
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
	computations, e.g., for the methods
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
		globalPointToLocal: globalPoint
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
			globalPoint -> globalTransform -> localTransform -> locaPoint
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
		localPointToGlobal: localPoint
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
			localPoint -> localTransform -> globalTransform -> globalPoint
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
		"
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
	^aTransformation composedWithLocal: self
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
!
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
composedWithLocal: aTransformation
7414
0dd19064cf94 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 6698
diff changeset
    74
        "Return the composition of the receiver and the local transformation passed in.
0dd19064cf94 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 6698
diff changeset
    75
        A 'local' transformation is defined as a transformation that takes place
0dd19064cf94 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 6698
diff changeset
    76
        between the receiver (the 'global') transformation and any 'local' point
0dd19064cf94 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 6698
diff changeset
    77
        computations, e.g., for the methods
6698
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
7414
0dd19064cf94 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 6698
diff changeset
    79
                globalPointToLocal: globalPoint
0dd19064cf94 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 6698
diff changeset
    80
                        globalPoint -> globalTransform -> localTransform -> locaPoint
6698
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
7414
0dd19064cf94 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 6698
diff changeset
    82
                localPointToGlobal: localPoint
0dd19064cf94 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 6698
diff changeset
    83
                        localPoint -> localTransform -> globalTransform -> globalPoint
6698
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
7414
0dd19064cf94 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 6698
diff changeset
    85
                "
0dd19064cf94 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 6698
diff changeset
    86
        self isIdentity ifTrue:[^ aTransformation].
0dd19064cf94 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 6698
diff changeset
    87
        aTransformation isIdentityTransformation ifTrue:[^ self].
0dd19064cf94 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 6698
diff changeset
    88
        ^ CompositeTransform new globalTransform: self
0dd19064cf94 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 6698
diff changeset
    89
                                                        localTransform: aTransformation
6698
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
! !
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
!DisplayTransform methodsFor:'converting'!
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
asCompositeTransform
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
	"Represent the receiver as a composite transformation"
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
	^CompositeTransform new
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
		globalTransform: self
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
		localTransform: self species identity
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
!
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
asMatrixTransform2x3
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
	"Represent the receiver as a 2x3 matrix transformation"
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
	^self subclassResponsibility
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
! !
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
!DisplayTransform methodsFor:'initialize'!
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
setIdentity
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
    "Initialize the receiver to the identity transformation (e.g., not affecting points)"
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
    ^self subclassResponsibility
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
! !
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
!DisplayTransform methodsFor:'testing'!
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
isCompositeTransform
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
	"Return true if the receiver is a composite transformation.
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
	Composite transformations may have impact on the accuracy."
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
	^false
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
!
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   121
7414
0dd19064cf94 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 6698
diff changeset
   122
isIdentityTransformation
0dd19064cf94 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 6698
diff changeset
   123
    "Return true if the receiver is the identity transform; that is, if applying to a point returns the point itself."
0dd19064cf94 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 6698
diff changeset
   124
0dd19064cf94 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 6698
diff changeset
   125
    ^ self subclassResponsibility
6698
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   126
!
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   127
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   128
isMatrixTransform2x3
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   129
	"Return true if the receiver is 2x3 matrix transformation"
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   130
	^false
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   131
!
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   132
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   133
isMorphicTransform
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   134
	"Return true if the receiver is a MorphicTransform, that is specifies the transformation values explicitly."
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   135
	^false
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   136
!
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   137
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   138
isNoScale
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   139
    "return true if the identity scale is in effect (i.e. saleFactor is 1);
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   140
     return false, otherwise."
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   141
7414
0dd19064cf94 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 6698
diff changeset
   142
    ^ self subclassResponsibility
6698
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   143
!
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   144
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   145
noScale
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   146
    "return true if the identity scale is in effect (i.e. saleFactor is 1);
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   147
     return false, otherwise.
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   148
     Obsolete: use isNoScale"
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   149
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   150
    <resource: #obsolete>
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   151
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   152
    ^ self isNoScale
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   153
! !
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   154
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   155
!DisplayTransform methodsFor:'transforming points'!
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   156
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   157
applyInverseTo:aPoint
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   158
    ^ self invertPoint: aPoint
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   159
!
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   160
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   161
applyScaleX:aNumber
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   162
    ^ (self transformPoint: aNumber @ 0) x
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   163
!
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   164
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   165
applyScaleY:aNumber
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   166
    ^ (self transformPoint: 0 @ aNumber) y
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   167
!
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   168
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   169
applyTo:aPoint
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   170
    ^ self transformPoint: aPoint
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   171
!
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   172
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   173
globalPointToLocal: aPoint
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   174
	"Transform aPoint from global coordinates into local coordinates"
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   175
	^self subclassResponsibility
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   176
!
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   177
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   178
globalPointsToLocal: inArray
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   179
	"Transform all the points of inArray from global into local coordinates"
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   180
	^inArray collect:[:pt| self globalPointToLocal: pt]
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   181
!
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   182
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   183
localPointToGlobal: aPoint
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   184
	"Transform aPoint from local coordinates into global coordinates"
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   185
	^self subclassResponsibility
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   186
!
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   187
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   188
localPointsToGlobal: inArray
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   189
	"Transform all the points of inArray from local into global coordinates"
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   190
	^inArray collect:[:pt| self localPointToGlobal: pt]
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   191
! !
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   192
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   193
!DisplayTransform methodsFor:'transforming rects'!
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   194
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   195
globalBoundsToLocal: aRectangle
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   196
	"Transform aRectangle from global coordinates into local coordinates"
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   197
	^Rectangle encompassing: (self globalPointsToLocal: aRectangle corners)
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   198
!
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   199
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   200
localBoundsToGlobal: aRectangle
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   201
	"Transform aRectangle from local coordinates into global coordinates"
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   202
	^Rectangle encompassing: (self localPointsToGlobal: aRectangle corners)
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   203
! !
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   204
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   205
!DisplayTransform class methodsFor:'documentation'!
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   206
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   207
version
7414
0dd19064cf94 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 6698
diff changeset
   208
    ^ '$Header$'
6698
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   209
!
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   210
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   211
version_CVS
7414
0dd19064cf94 #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 6698
diff changeset
   212
    ^ '$Header$'
6698
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   213
! !
80a994c909c6 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   214