'From Squeak3.4 of 1 March 2003 [latest update: #5170] on 2 April 2003 at 2:25:24 pm'! PolygonMorph subclass: #Spain instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' category: 'ECOOPÑTutorial'! !Spain commentStamp: 'apb 4/2/2003 12:54' prior: 0! This is a demonstration class designed to be used as part of the ECOOP 2002 Squeak tutorial. Try "doit" on Spain new openInWorld ! !Path methodsFor: 'enumerating' stamp: 'apb 4/22/2001 14:20'! collect: aBlock "Evaluate aBlock with each of the receiver's elements as the argument. Collect the resulting values into a path that is like the receiver. Answer the new path." | newPath | newPath _ self species new: self size. newPath form: self form. collectionOfPoints do: [:element | newPath add: (aBlock value: element)]. ^newPath! ! !Path methodsFor: 'enumerating' stamp: 'apb 4/22/2001 14:26'! do: aBlock "Evaluate aBlock with each of the receiver's elements as the argument." | newPath | newPath _ self species new: self size. newPath form: self form. collectionOfPoints do: [:element | aBlock value: element]! ! !Path methodsFor: 'enumerating' stamp: 'apb 4/22/2001 14:21'! select: aBlock "Evaluate aBlock with each of the receiver's elements as the argument. Collect the resulting values into a path that is like the receiver. Answer the new path." | newPath | newPath _ self species new: self size. newPath form: self form. collectionOfPoints do: [:element | (aBlock value: element) ifTrue: [newPath add: element]]. ^newPath! ! !Path methodsFor: 'converting' stamp: 'apb 4/22/2001 14:30'! asArray ^ collectionOfPoints asArray! ! !Path methodsFor: 'converting' stamp: 'apb 4/23/2001 10:32'! asOrderedCollection ^ collectionOfPoints asOrderedCollection! ! !Path class methodsFor: 'instance creation' stamp: 'apb 4/22/2001 13:25'! fromUser "Collect a series of points from the user by waiting for the red mouse button to be clicked. The series is terminated by clicking with one of the other buttons. Answers a Path with these points as its collectionOfPoints" "Path fromUser" | aForm path | aForm _ (Form extent: 2 @ 2 depth: Display depth) fillColor: Color red. path _ self new. path form: aForm. [true] whileTrue: [| b | b _ Sensor waitButton. Sensor redButtonPressed ifTrue: [path add: b. Sensor waitNoButton. aForm displayOn: Display at: path last] ifFalse: [^ path]]! ! !Spain class methodsFor: 'instance creation' stamp: 'apb 5/23/2002 01:03'! new ^ self vertices: self spainOutlinePoints color: (TranslucentColor r: 0.6 g: 0.0 b: 0.29 alpha: 0.62) borderWidth: 1 borderColor: Color red darker! ! !Spain class methodsFor: 'private' stamp: 'apb 5/23/2002 01:02'! spainOutlinePoints ^ OrderedCollection new add: 378 @ 70; add: 374 @ 71; add: 373 @ 75; add: 374 @ 81; add: 375 @ 86; add: 367 @ 90; add: 360 @ 95; add: 352 @ 99; add: 345 @ 104; add: 338 @ 110; add: 326 @ 112; add: 316 @ 115; add: 307 @ 118; add: 301 @ 128; add: 306 @ 131; add: 302 @ 135; add: 298 @ 136; add: 291 @ 146; add: 281 @ 158; add: 274 @ 173; add: 270 @ 179; add: 273 @ 191; add: 278 @ 200; add: 284 @ 203; add: 286 @ 208; add: 280 @ 210; add: 272 @ 216; add: 264 @ 223; add: 260 @ 234; add: 258 @ 243; add: 256 @ 246; add: 260 @ 249; add: 254 @ 250; add: 244 @ 249; add: 235 @ 254; add: 228 @ 261; add: 224 @ 273; add: 221 @ 275; add: 218 @ 280; add: 215 @ 280; add: 214 @ 278; add: 207 @ 277; add: 203 @ 279; add: 200 @ 283; add: 194 @ 281; add: 182 @ 281; add: 175 @ 281; add: 169 @ 281; add: 165 @ 280; add: 161 @ 280; add: 155 @ 280; add: 152 @ 280; add: 148 @ 284; add: 145 @ 288; add: 134 @ 289; add: 126 @ 294; add: 123 @ 301; add: 120 @ 302; add: 121 @ 306; add: 117 @ 307; add: 109 @ 304; add: 103 @ 301; add: 97 @ 294; add: 98 @ 289; add: 94 @ 286; add: 92 @ 282; add: 92 @ 275; add: 82 @ 267; add: 72 @ 264; add: 63 @ 264; add: 61 @ 258; add: 60 @ 252; add: 62 @ 243; add: 67 @ 235; add: 75 @ 233; add: 76 @ 228; add: 71 @ 226; add: 66 @ 219; add: 66 @ 208; add: 73 @ 202; add: 75 @ 194; add: 71 @ 191; add: 65 @ 182; add: 61 @ 174; add: 59 @ 172; add: 68 @ 172; add: 72 @ 172; add: 76 @ 166; add: 77 @ 158; add: 76 @ 154; add: 74 @ 152; add: 78 @ 150; add: 80 @ 144; add: 81 @ 132; add: 79 @ 125; add: 77 @ 120; add: 80 @ 119; add: 83 @ 114; add: 85 @ 109; add: 90 @ 109; add: 96 @ 102; add: 98 @ 97; add: 95 @ 94; add: 89 @ 93; add: 88 @ 88; add: 89 @ 83; add: 75 @ 84; add: 71 @ 81; add: 69 @ 84; add: 63 @ 87; add: 58 @ 86; add: 54 @ 86; add: 46 @ 86; add: 39 @ 86; add: 42 @ 81; add: 38 @ 75; add: 36 @ 78; add: 29 @ 77; add: 25 @ 80; add: 22 @ 82; add: 19 @ 86; add: 19 @ 81; add: 20 @ 75; add: 25 @ 69; add: 21 @ 69; add: 22 @ 67; add: 25 @ 64; add: 24 @ 62; add: 22 @ 64; add: 19 @ 63; add: 21 @ 59; add: 24 @ 53; add: 21 @ 53; add: 18 @ 58; add: 16 @ 61; add: 13 @ 58; add: 15 @ 51; add: 17 @ 50; add: 13 @ 49; add: 12 @ 45; add: 10 @ 44; add: 7 @ 44; add: 9 @ 37; add: 11 @ 34; add: 17 @ 29; add: 21 @ 28; add: 28 @ 27; add: 35 @ 23; add: 38 @ 17; add: 44 @ 12; add: 49 @ 10; add: 60 @ 10; add: 66 @ 17; add: 73 @ 20; add: 74 @ 18; add: 81 @ 18; add: 98 @ 18; add: 105 @ 17; add: 109 @ 14; add: 113 @ 19; add: 117 @ 19; add: 123 @ 18; add: 126 @ 21; add: 131 @ 22; add: 137 @ 22; add: 146 @ 24; add: 155 @ 25; add: 170 @ 22; add: 176 @ 20; add: 189 @ 27; add: 195 @ 23; add: 213 @ 29; add: 227 @ 26; add: 230 @ 28; add: 240 @ 30; add: 237 @ 39; add: 242 @ 39; add: 254 @ 42; add: 259 @ 42; add: 263 @ 49; add: 272 @ 48; add: 277 @ 52; add: 286 @ 50; add: 294 @ 53; add: 300 @ 52; add: 299 @ 48; add: 301 @ 45; add: 310 @ 49; add: 317 @ 53; add: 321 @ 53; add: 323 @ 60; add: 327 @ 61; add: 332 @ 61; add: 338 @ 66; add: 343 @ 67; add: 345 @ 63; add: 351 @ 64; add: 356 @ 69; add: 361 @ 65; add: 366 @ 62; add: 373 @ 62; add: 375 @ 68; yourself! !