From what I've read, inverted texture rects should be working, but I can't seem to get the behaviour I want.
For example, assuming a texture is 64x64, w and h are the width and height values, sprite is an initialised sf::sprite, the origin is in the top left default position, and the texture has been properly set (all tested)
Based on what I know about how this all works this code
sprite.SetTextureRect(sf::InteRect(w, 0, -w, h) );
should generate a flipped sprite, since I am setting the origin of the sub-rect for the texture to 0, 64 and creating a rectangle that goes backward 64 pixels and down 64 pixels, which should generate a texture that is mirrored on the Y axis.
What I actually get when I draw the sprite, it that it is translated -w pixels on the x axis from the position. i.e., if the aforementioned sprite is located at (128,128) the sprite will render as if it was located at (64,128). The rendered sprite is also not mirrored.
(I have a solution that works, using:
sprite.SetTextureRect(sf::InteRect(w, 0, -w, h) );
sprite.SetScale(-1,1);
I like this solution better than setting the origin to (w/2, h/2) since I am a top-left kinda guy. In this case I understand how the SetScale() function works. I am looking for an explanation as to why the inverted texture rect behaves the way it does).