@@ -90,6 +90,24 @@ GMTETileMap class >> tileWidth: aWidth tileHeight: aHeight padding: aPadding siz
90
90
tileSizeRatio: aRatio
91
91
]
92
92
93
+ {
94
+ #category : #' view-conversion' ,
95
+ #' squeak_changestamp' : ' Ivo Zilkenat 7/10/2024 22:20'
96
+ }
97
+ GMTETileMap >> absPointToViewCenter: aPoint [
98
+
99
+ ^ (self absPointToViewFraction: aPoint) - (self view extent / 2 )
100
+ ]
101
+
102
+ {
103
+ #category : #' view-conversion' ,
104
+ #' squeak_changestamp' : ' Ivo Zilkenat 7/10/2024 22:19'
105
+ }
106
+ GMTETileMap >> absPointToViewFraction: aPoint [
107
+
108
+ ^ aPoint / self extent
109
+ ]
110
+
93
111
{
94
112
#category : #accessing ,
95
113
#' squeak_changestamp' : ' Ivo Zilkenat 6/19/2024 22:28'
@@ -193,6 +211,17 @@ GMTETileMap >> borderTileWidth: anObject [
193
211
borderTileWidth := anObject
194
212
]
195
213
214
+ {
215
+ #category : #view ,
216
+ #' squeak_changestamp' : ' Ivo Zilkenat 7/11/2024 00:08'
217
+ }
218
+ GMTETileMap >> centerViewAt: aPoint [
219
+ " Note: center must induce legal view (non-overlapping)"
220
+
221
+ self view moveTo: (self inViewPointToViewCenter: aPoint).
222
+ self updateMap
223
+ ]
224
+
196
225
{
197
226
#category : #conversion ,
198
227
#' squeak_changestamp' : ' Ivo Zilkenat 6/24/2024 11:09'
@@ -477,9 +506,36 @@ GMTETileMap >> highlightingTileFromIndex: anIndex [
477
506
^ self tileMatrixStackHighlighting layer: 1 at: anIndex y at: anIndex x
478
507
]
479
508
509
+ {
510
+ #category : #' view-conversion' ,
511
+ #' squeak_changestamp' : ' Ivo Zilkenat 7/10/2024 22:58'
512
+ }
513
+ GMTETileMap >> inViewPointToAbs: aPoint [
514
+
515
+ ^ (self viewOriginInPxl - self topLeft) + (aPoint / self viewScaleFactor)
516
+ ]
517
+
518
+ {
519
+ #category : #' view-conversion' ,
520
+ #' squeak_changestamp' : ' Ivo Zilkenat 7/11/2024 00:01'
521
+ }
522
+ GMTETileMap >> inViewPointToViewCenter: aPoint [
523
+
524
+ ^ (self inViewPointToViewFraction: aPoint) - (self view extent / 2 )
525
+ ]
526
+
527
+ {
528
+ #category : #' view-conversion' ,
529
+ #' squeak_changestamp' : ' Ivo Zilkenat 7/10/2024 22:30'
530
+ }
531
+ GMTETileMap >> inViewPointToViewFraction: aPoint [
532
+
533
+ ^ self absPointToViewFraction: (self inViewPointToAbs: aPoint)
534
+ ]
535
+
480
536
{
481
537
#category : #initialization ,
482
- #' squeak_changestamp' : ' Ivo Zilkenat 7/9 /2024 11:47 '
538
+ #' squeak_changestamp' : ' Ivo Zilkenat 7/10 /2024 18:15 '
483
539
}
484
540
GMTETileMap >> initialize [
485
541
@@ -488,7 +544,7 @@ GMTETileMap >> initialize [
488
544
color: Color lightGray;
489
545
clipSubmorphs: true ;
490
546
forceMapSizeRatio: false ;
491
- view: ( GMTEView origin: 0 @ 0 extent: 1 @ 1 ) ;
547
+ view: GMTEView new ;
492
548
493
549
" TODO: spike solution. Size 1@1 sets quadratic base image. Generic resizing not working yet"
494
550
" TODO: default background tiles (must not exist but practical as a visual indicator)"
@@ -690,6 +746,16 @@ GMTETileMap >> rescaleMatrixStacks [
690
746
self generateHighlightingTiles]
691
747
]
692
748
749
+ {
750
+ #category : #view ,
751
+ #' squeak_changestamp' : ' Ivo Zilkenat 7/10/2024 18:47'
752
+ }
753
+ GMTETileMap >> resetView [
754
+
755
+ self view reset.
756
+ self updateMap
757
+ ]
758
+
693
759
{
694
760
#category : #conversion ,
695
761
#' squeak_changestamp' : ' Ivo Zilkenat 6/24/2024 11:11'
@@ -721,7 +787,7 @@ GMTETileMap >> revertCorrectedTilePositionMap: aPoint [
721
787
]
722
788
723
789
{
724
- #category : #view ,
790
+ #category : #' view-conversion ' ,
725
791
#' squeak_changestamp' : ' Ivo Zilkenat 7/2/2024 20:49'
726
792
}
727
793
GMTETileMap >> revertViewCorrectedTilePosition: aPoint [
@@ -731,7 +797,7 @@ GMTETileMap >> revertViewCorrectedTilePosition: aPoint [
731
797
]
732
798
733
799
{
734
- #category : #view ,
800
+ #category : #' view-conversion ' ,
735
801
#' squeak_changestamp' : ' Ivo Zilkenat 7/2/2024 20:47'
736
802
}
737
803
GMTETileMap >> revertViewCorrectedTilePositionMap: aPoint [
@@ -1193,7 +1259,7 @@ GMTETileMap >> view: anObject [
1193
1259
]
1194
1260
1195
1261
{
1196
- #category : #view ,
1262
+ #category : #' view-conversion ' ,
1197
1263
#' squeak_changestamp' : ' Ivo Zilkenat 7/2/2024 20:36'
1198
1264
}
1199
1265
GMTETileMap >> viewCorrectedTileExtent: anExtent [
@@ -1203,7 +1269,7 @@ GMTETileMap >> viewCorrectedTileExtent: anExtent [
1203
1269
]
1204
1270
1205
1271
{
1206
- #category : #view ,
1272
+ #category : #' view-conversion ' ,
1207
1273
#' squeak_changestamp' : ' Ivo Zilkenat 7/2/2024 20:36'
1208
1274
}
1209
1275
GMTETileMap >> viewCorrectedTilePosition: aPoint [
@@ -1213,22 +1279,20 @@ GMTETileMap >> viewCorrectedTilePosition: aPoint [
1213
1279
]
1214
1280
1215
1281
{
1216
- #category : #view ,
1217
- #' squeak_changestamp' : ' Ivo Zilkenat 7/2 /2024 20:36 '
1282
+ #category : #' view-conversion ' ,
1283
+ #' squeak_changestamp' : ' Ivo Zilkenat 7/10 /2024 17:50 '
1218
1284
}
1219
1285
GMTETileMap >> viewOriginInPxl [
1220
-
1221
1286
" Note: given that view has same ratio as tileMap"
1222
1287
1223
1288
^ self extent * self view origin + self topLeft
1224
1289
]
1225
1290
1226
1291
{
1227
- #category : #view ,
1228
- #' squeak_changestamp' : ' Ivo Zilkenat 7/2 /2024 19:47 '
1292
+ #category : #' view-conversion ' ,
1293
+ #' squeak_changestamp' : ' Ivo Zilkenat 7/10 /2024 17:50 '
1229
1294
}
1230
1295
GMTETileMap >> viewScaleFactor [
1231
-
1232
1296
" Note: given that view has same ratio as tileMap"
1233
1297
1234
1298
^ 1 / (self view extent x)
@@ -1253,3 +1317,13 @@ GMTETileMap >> vigenerateBackgroundTiles [
1253
1317
1254
1318
1255
1319
]
1320
+
1321
+ {
1322
+ #category : #view ,
1323
+ #' squeak_changestamp' : ' Ivo Zilkenat 7/11/2024 00:33'
1324
+ }
1325
+ GMTETileMap >> zoomInAt: aPoint [
1326
+
1327
+ self view shrinkBy: 0.1 .
1328
+ self centerViewAt: aPoint
1329
+ ]
0 commit comments