TranslationTransform.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Sat, 26 Nov 2016 21:09:32 +0000
branchjv
changeset 7719 c2f802dd340a
parent 7058 086498ec51e4
child 8595 7f9b84978a2e
child 8714 43b1fe994982
permissions -rw-r--r--
XFT: Forbid XFT rendering on bitmaps (depth-1 pixmaps) In theory it could work if XFT would just turn gray into either black or white. But XFT doesn't do it and simply draw nothing without failing in any way. To prevent this silent failures, forbid drawing XFT onto bitmaps (depth-1 pixmaps). After all, the while point of XFT is to use anti-aliased fonts.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
7058
086498ec51e4 #FEATURE
Stefan Vogel <sv@exept.de>
parents: 6696
diff changeset
     1
"{ Encoding: utf8 }"
086498ec51e4 #FEATURE
Stefan Vogel <sv@exept.de>
parents: 6696
diff changeset
     2
6696
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
"
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
 COPYRIGHT (c) 1992 by Claus Gittinger
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
	      All Rights Reserved
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
 This software is furnished under a license and may be used
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
 only in accordance with the terms of that license and with the
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
 inclusion of the above copyright notice.   This software may not
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
 be provided or otherwise made available to, or used by, any
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
 other person.  No title to or ownership of the software is
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
 hereby transferred.
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
"
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
"{ Package: 'stx:libview' }"
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
7058
086498ec51e4 #FEATURE
Stefan Vogel <sv@exept.de>
parents: 6696
diff changeset
    16
"{ NameSpace: Smalltalk }"
086498ec51e4 #FEATURE
Stefan Vogel <sv@exept.de>
parents: 6696
diff changeset
    17
6696
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
DisplayTransform variableFloatSubclass:#TranslationTransform
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
	instanceVariableNames:'translation'
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
	classVariableNames:''
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
	poolDictionaries:''
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
	category:'Graphics-Transformations'
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
!
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
!TranslationTransform class methodsFor:'documentation'!
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
copyright
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
"
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
 COPYRIGHT (c) 1992 by Claus Gittinger
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
	      All Rights Reserved
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
 This software is furnished under a license and may be used
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
 only in accordance with the terms of that license and with the
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
 inclusion of the above copyright notice.   This software may not
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
 be provided or otherwise made available to, or used by, any
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
 other person.  No title to or ownership of the software is
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
 hereby transferred.
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
"
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
!
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
documentation
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
"
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
    instances of WindowingTransformation can be used to scale, translate or
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
    generally transform other objects in 2D space. 
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
    They can also be set as the translation in a graphic context, 
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
    which will then apply this to all of its drawing operations 
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
    (see GraphicContext>>transformation:).
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
    All 2-D objects are supposed to be able to be transformed using
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
    instances of me.  Multiple instances of me can also be combined to form a
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
    single composite transformation.
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
    [Instance variables:]
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
        scale           <Number> or <Point> representing a linear scaling factor.
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
                        nil is interpreted as 1@1
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
        translation     <Number> or <Point> representing a translation in 2-D.
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
                        nil is interpreted as 0@0
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
    [author:]
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
        Claus Gittinger
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
"
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
    "Modified: 25.4.1996 / 16:53:07 / cg"
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
!
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
examples
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
"
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
    example (drawing in inches):
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
                                                                        [exBegin]
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
     |v|
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
     v := View new realize.
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
     (Delay forSeconds:3) wait.
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
     v transformation:(WindowingTransformation unit:#inch on:Display).
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
     'now, we can think of drawing in inches ...'.
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
     v displayLineFrom:0.5@0.5 to:1@1 
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
                                                                        [exEnd]
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
    example (drawing in millimeters):
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
                                                                        [exBegin]
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
     |v|
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
     v := View new realize.
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
     (Delay forSeconds:3) wait.
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
     v transformation:(WindowingTransformation unit:#mm on:Display).
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
     'now, we can think of drawing in millimeters ...'.
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
     v displayLineFrom:5@5 to:20@5 
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
                                                                        [exEnd]
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
    example (drawing magnified):
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
                                                                        [exBegin]
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
     |v|
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
     v := View new realize.
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
     (Delay forSeconds:3) wait.
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
     v transformation:(WindowingTransformation scale:2 translation:0).
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
     'now, everything is magnfied by 2'.
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
     v displayLineFrom:10@10 to:30@30 
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
                                                                        [exEnd]
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
    example (drawing shrunk):
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
                                                                        [exBegin]
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
     |v|
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
     v := View new realize.
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
     (Delay forSeconds:3) wait.
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
     v transformation:(WindowingTransformation scale:0.5 translation:0).
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
     'now, everything is shrunk by 2'.
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
     v displayLineFrom:10@10 to:30@30 
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
                                                                        [exEnd]
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
"
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
    "Modified: 27.4.1996 / 19:45:43 / cg"
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
! !
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
!TranslationTransform class methodsFor:'instance creation'!
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   121
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
identity
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   123
    "returns a windowing transformation with no scaling (1@1) 
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   124
     and no translation (0@0)."
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   125
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   126
    ^ self basicNew "/ scale:nil translation:nil 
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   127
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   128
    "
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   129
     WindowingTransformation identity
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   130
    "
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   131
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   132
    "Modified: 30.12.1996 / 16:59:27 / cg"
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   133
!
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   134
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   135
translation:aTranslation 
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   136
    "returns a windowing transformation with no scaling and a translation offset of aTranslation."
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   137
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   138
    ^ self basicNew translation:aTranslation
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   139
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   140
    "
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   141
     |v|
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   142
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   143
     v := View new openAndWait.
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   144
     v displayLineFrom:10@10 to:30@30. 
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   145
     v transformation:(WindowingTransformation scale:2 translation:0).
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   146
     'now, everything is magnfied by 2'.
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   147
     v displayLineFrom:10@10 to:30@30. 
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   148
    "
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   149
    "
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   150
     |v|
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   151
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   152
     v := View new openAndWait.
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   153
     v displayLineFrom:10@10 to:30@30. 
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   154
     v transformation:(WindowingTransformation translation:50).
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   155
     'now, everything is offset by 50 pixels'.
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   156
     v displayLineFrom:10@10 to:30@30. 
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   157
    "
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   158
! !
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   159
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   160
!TranslationTransform methodsFor:'accessing'!
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   161
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   162
translation
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   163
    "return a copy of the receiver's translation."
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   164
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   165
    translation isNil ifTrue:[^ Point x:0 y:0 ].
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   166
    ^ translation copy
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   167
!
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   168
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   169
translation:aTranslation
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   170
    "Set the receiver's translation to aTranslation, a Point or Number."
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   171
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   172
    aTranslation isNil ifTrue:[
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   173
        translation := aTranslation
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   174
    ] ifFalse:[
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   175
        aTranslation = 0 ifTrue:[
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   176
            translation := nil
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   177
        ] ifFalse:[
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   178
            translation := aTranslation asPoint
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   179
        ]
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   180
    ]
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   181
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   182
    "Modified: / 13.6.1998 / 14:04:15 / cg"
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   183
!
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   184
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   185
translationX
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   186
    "return the receiver's x-translation."
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   187
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   188
    translation isNil ifTrue:[^ 0].
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   189
    ^ translation x
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   190
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   191
    "Created: 21.5.1996 / 21:13:10 / cg"
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   192
!
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   193
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   194
translationY
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   195
    "return the receiver's x-translation."
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   196
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   197
    translation isNil ifTrue:[^ 0].
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   198
    ^ translation y
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   199
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   200
    "Created: 21.5.1996 / 21:13:21 / cg"
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   201
! !
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   202
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   203
!TranslationTransform methodsFor:'applying transform'!
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   204
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   205
applyInverseTo:anObject 
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   206
    "Apply the inverse of the receiver to anObject
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   207
     and return the result. This can be used to map back from logical
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   208
     to physical coordinates, for example."
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   209
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   210
    translation isNil ifTrue:[
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   211
        ^ anObject
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   212
    ].
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   213
    ^ anObject translatedBy:(self inverseTranslation).
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   214
!
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   215
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   216
applyInverseToX:aNumber
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   217
    "Apply the receiver to a number representing an x-coordinate
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   218
     and return the result."
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   219
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   220
    |t|
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   221
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   222
    translation isNil ifTrue:[t := 0] ifFalse:[t := translation x].
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   223
    ^ (aNumber - t)
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   224
!
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   225
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   226
applyInverseToY:aNumber
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   227
    "Apply the receiver to a number representing an y-coordinate
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   228
     and return the result."
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   229
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   230
    |t|
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   231
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   232
    translation isNil ifTrue:[t := 0] ifFalse:[t := translation y].
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   233
    ^ (aNumber - t)
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   234
!
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   235
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   236
applyTo:anObject 
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   237
    "Apply the receiver to anObject and return the result."
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   238
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   239
    translation isNil ifTrue:[
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   240
        ^ anObject
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   241
    ].
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   242
    ^ anObject translatedBy:translation 
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   243
!
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   244
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   245
applyToX:aNumber
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   246
    "Apply the receiver to a number representing an x-coordinate
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   247
     and return the result."
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   248
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   249
    |t|
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   250
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   251
    translation isNil ifTrue:[t := 0] ifFalse:[t := translation x].
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   252
    ^ aNumber + t
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   253
!
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   254
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   255
applyToY:aNumber
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   256
    "Apply the receiver to a number representing an y-coordinate
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   257
     and return the result."
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   258
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   259
    |t|
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   260
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   261
    translation isNil ifTrue:[t := 0] ifFalse:[t := translation y].
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   262
    ^ aNumber + t
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   263
!
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   264
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   265
compose:aTransformation 
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   266
    "return a new WindowingTransformation that is the
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   267
     composition of the receiver and aTransformation.
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   268
     The effect of applying the resulting WindowingTransformation
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   269
     to an object is the same as that of first applying
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   270
     aTransformation to the object and then applying the 
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   271
     receiver to its result."
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   272
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   273
    |aTransformationScale newScale newTranslation|
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   274
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   275
    aTransformationScale := aTransformation scale.
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   276
    aTransformation isNoScale ifTrue:[
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   277
        newScale := nil
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   278
    ] ifFalse:[
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   279
        newScale := aTransformationScale
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   280
    ].
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   281
    newTranslation := (translation ? 0) + aTransformation translation.
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   282
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   283
    ^ (self class) 
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   284
          scale:newScale
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   285
          translation:newTranslation
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   286
!
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   287
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   288
composedWithLocal: aTransformation
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   289
    ^ self compose:aTransformation
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   290
!
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   291
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   292
transformPoint:p 
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   293
    "Apply the receiver to a point, returning a new point."
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   294
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   295
    translation isNil ifTrue:[
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   296
        ^ p
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   297
    ].
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   298
    ^ p + translation
7058
086498ec51e4 #FEATURE
Stefan Vogel <sv@exept.de>
parents: 6696
diff changeset
   299
!
086498ec51e4 #FEATURE
Stefan Vogel <sv@exept.de>
parents: 6696
diff changeset
   300
086498ec51e4 #FEATURE
Stefan Vogel <sv@exept.de>
parents: 6696
diff changeset
   301
transformRectangle:aRectangle 
086498ec51e4 #FEATURE
Stefan Vogel <sv@exept.de>
parents: 6696
diff changeset
   302
    "Apply the receiver to a rectangle, returning a new rectangle."
086498ec51e4 #FEATURE
Stefan Vogel <sv@exept.de>
parents: 6696
diff changeset
   303
086498ec51e4 #FEATURE
Stefan Vogel <sv@exept.de>
parents: 6696
diff changeset
   304
    translation isNil ifTrue:[
086498ec51e4 #FEATURE
Stefan Vogel <sv@exept.de>
parents: 6696
diff changeset
   305
        ^ aRectangle.
086498ec51e4 #FEATURE
Stefan Vogel <sv@exept.de>
parents: 6696
diff changeset
   306
    ].
086498ec51e4 #FEATURE
Stefan Vogel <sv@exept.de>
parents: 6696
diff changeset
   307
    ^ aRectangle translatedBy:translation.
6696
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   308
! !
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   309
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   310
!TranslationTransform methodsFor:'printing & storing'!
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   311
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   312
printOn:aStream
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   313
    "append a user printed representation of the receiver to aStream.
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   314
     The format is suitable for a human - not meant to be read back."
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   315
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   316
    aStream nextPutAll:self class name.
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   317
    aStream nextPutAll:' translation: '.
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   318
    translation printOn:aStream
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   319
! !
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   320
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   321
!TranslationTransform methodsFor:'private'!
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   322
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   323
inverseTranslation
7058
086498ec51e4 #FEATURE
Stefan Vogel <sv@exept.de>
parents: 6696
diff changeset
   324
    "return with a Point or Number representing the inverse of my translation."
6696
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   325
7058
086498ec51e4 #FEATURE
Stefan Vogel <sv@exept.de>
parents: 6696
diff changeset
   326
    translation isNil ifTrue:[
086498ec51e4 #FEATURE
Stefan Vogel <sv@exept.de>
parents: 6696
diff changeset
   327
        ^ nil.
086498ec51e4 #FEATURE
Stefan Vogel <sv@exept.de>
parents: 6696
diff changeset
   328
    ].
086498ec51e4 #FEATURE
Stefan Vogel <sv@exept.de>
parents: 6696
diff changeset
   329
    ^ translation negated.
6696
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   330
! !
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   331
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   332
!TranslationTransform methodsFor:'testing'!
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   333
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   334
isIdentityTransformation
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   335
    "return true if this is an identity transformation;
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   336
     return false, otherwise."
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   337
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   338
    ^ translation isNil or:[translation x = 0 and:[translation y = 0]]
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   339
!
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   340
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   341
isNoScale
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   342
    "return true if the identity scale is in effect (i.e. saleFactor is 1);
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   343
     return false, otherwise."
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   344
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   345
    ^ true
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   346
! !
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   347
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   348
!TranslationTransform methodsFor:'transformations'!
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   349
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   350
scaleBy:aScale 
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   351
    "scale the receiver.
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   352
     This is a destructive operation, modifying the transformation
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   353
     represented by the receiver"
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   354
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   355
    self error:'not allowed'
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   356
!
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   357
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   358
scaledBy:aScale 
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   359
    "return a new WindowingTransformation with the scale and translation of 
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   360
     the receiver both scaled by aScale."
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   361
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   362
    ^ WindowingTransformation 
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   363
          scale:aScale
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   364
          translation:translation
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   365
!
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   366
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   367
translateBy:aTranslation 
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   368
    "translate the receiver.
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   369
     This is a destructive operation, modifying the transformation
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   370
     represented by the receiver"
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   371
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   372
    aTranslation isNil ifTrue:[^ self].
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   373
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   374
    translation isNil ifTrue:[
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   375
        translation := 0@0
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   376
    ].
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   377
    translation := translation + aTranslation asPoint
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   378
!
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   379
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   380
translatedBy:aPoint 
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   381
    "return a new WindowingTransformation with the same scale and 
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   382
     rotations as the receiver and with a translation of the current 
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   383
     translation plus aPoint."
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   384
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   385
    ^ (self class) 
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   386
          translation:(translation + aPoint)
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   387
! !
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   388
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   389
!TranslationTransform class methodsFor:'documentation'!
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   390
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   391
version
7058
086498ec51e4 #FEATURE
Stefan Vogel <sv@exept.de>
parents: 6696
diff changeset
   392
    ^ '$Header$'
6696
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   393
!
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   394
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   395
version_CVS
7058
086498ec51e4 #FEATURE
Stefan Vogel <sv@exept.de>
parents: 6696
diff changeset
   396
    ^ '$Header$'
6696
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   397
! !
ccbc45b4b691 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   398