Rect already returns the top-left; it's just called position at the moment.
No, there's merely a constructor from position and size, and it only exists for convenience as an alternative to the constructor taking 4 coordinates.
sf::Rect has no getter functions, just 4 public members.
Rect is the more general API. Sprites and views already return rects so it would automatically be applied to those too.
sf::Rect can't represent rotated rectangles. And even then, it's not possible to implement something like
void setLeft(sf::Sprite& sprite, float x);
via
sf::Rect --
sf::Sprite::setPosition() needs to be called directly.
But as mentioned, I implemented this for some cases, and there are a few non-trivial design decisions if you want to keep it truly generic. Ideally, a user could provide a small set of global functions for his own classes, and then all these accessors like
setLeft(),
getRightBottom(),
getCenter(), ... would work automatically. But this is something that can be implemented on top of SFML -- and there should be a well-designed version of it before even considering the integration into SFML itself.
A
sf::Rect::getBottomRight() method is not completely thought through. A simple example is the case where the rectangle has negative width and height (an allowed scenario, e.g. for mirrored sprites) -- now the term "bottom-right" is suddenly lying, as it refers to the top-left corner. And it's not simply fixed by a case differentiation, because no user would expect that. The next step would be "if there is
getBottomRight(), there should also be
setBottomRight()", which comes not only with the previous problem, but can be implemented with different policies: maintain the size and move the rectangle, or resize the rectangle.
To sum up, additions like a
getBottomRight() always sound simple at first glance, but you need to think about the long-term implications on the API whenever you consider adding functions. Often, it's better to keep APIs small and intuitive, especially when they provide all the necessary means to write more powerful functionality on top of them.