SwiftUI "scaleEffect(..)" commentary

I've a SwiftUI-based app that draws into a Canvas for a complicated, dynamic rendering. Since that rendering is based on a map of the world, I transform the provided context to (±180°×±90°) longitude / latitude coordinates before stroking paths etc. Note that the necessary scaling flips the Y-axis because latitude increases up the screen.

All is well until I add words to the picture. Because of the inversion of the Y-axis, the text is rendered inverted.

mercatorContext.draw(Text(satellite.commonName)
    .font(Font(.init(.userFixedPitch, size: 4.0)))
    .foregroundColor(.white), at: satPoint)

My solution was to draw the text via a another (un-inverted) context which corrects the words, but requires the satPoint to be flipped to place the words at the right place on the (inverted) map ..


With that preamble, someone suggested I apply scaleEffect(y: -1) to the Text and avoid messing with more than one GraphicsContext. This seemed an excellent solution but it doesn't work ..

context.draw(Text(.. draws a Text view but applying scaleEffect turns it into a View which context.draw can't accept. Once it's a View, I suppose I could convert it to an Image and context.draw(Image(.. instead which seems messy.

I wondered about the scaleEffect function .. is it the case that it would ever actually return a view type that was different from the type it was given?

Leaving my curiosity aside, what would a better way than using a second context to keep my text upright?

SwiftUI "scaleEffect(..)" commentary
 
 
Q