The problem here is that you've now posted code that proves that SFML might not needed to be altered :P
What exactly does "Multi Monitor Support" mean?
How should the API be designed or redesign to support this feature?
Do all three major platforms (Windows, OS X, Linux) support this to the fullest extend?
Does it apply to mobile platforms in the same way or can it be used for some similar functionality?
I believe it is support create windows in more than one motinor, and have control over what is drawn on each of them.
...
Yes believe this and a feature that extends to all operating table systems.
- Getting the current number of monitorsAlso, knowing the order and positioning of each monitor would be useful. e.g. monitor 1 may be on the right, or above etc..
- Getting the valid fullscreen resolutions of all monitors
- Getting the current desktop resolutions of all monitors
- Creating a window on any monitor (as you said)
- Moving a window to any monitor, in addition to setting its position
- Getting/setting the monitor the mouse is currently on, in addition to its position
This is sort of picky, but its important to note that a monitor isnt always what people mean (i.e if you are using a TV for your computer), so the topic should really be "Multiple display support".Technically, a monitor is a way of monitoring output, so any display would count :P
would make just as much sense (if not more) if they were named:
- size_t sf::Display::getDisplayCount()
- Vector2u sf::Display::getDisplayResolution(int [display from getDisplayCount])
- size_t sf::Display::getPrimaryDisplay() [returns the id of the primary display duh]
Well if you have two monitors, where's the position (0, 0)? On monitor 1 or on monitor 2? ;)(0, 0) is the top-left corner of the leftmost monitor on your standard Linux extended desktop setup. If you have 2 1080p monitors, the top-left of the right monitor would be (1920, 0).
I think so and not the clearest way, you first specify the monitor and then your position, each monitor has its (0,0).Well if you have two monitors, where's the position (0, 0)? On monitor 1 or on monitor 2? ;)(0, 0) is the top-left corner of the leftmost monitor on your standard Linux extended desktop setup. If you have 2 1080p monitors, the top-left of the right monitor would be (1920, 0).
sf::Display::getResolution()perhaps to maintain compatibility get resolutions that way
This is true for Windows but what about other platforms? Linux? Mac?. I have no experience in development in either of the latter and no experience with WinAPI to this degree. For Windows, perhaps a preliminary implementation could be made as a proof-of-existence type of thing, although I'm pretty sure everyone knows that its possible, it might be a good stepping stone for SFML.
Also, while Windows might track the order of the displays, how would you go about getting the relative positions between screens? You would need to have some sort of center (0 0 0) (Which I'm guessing would be the primary display) and each display's position would be relative to that?
the top left corner of the primary monitor is (0,0) and all coordinates on any monitor are relative to this point.The thing to remember here is that this will require possible negative coordinates for monitors to the left and/or above the primary's (0, 0) but that would only need to be so for the global desktop coordinates and not the monitor's local coordinates.
(http://i.msdn.microsoft.com/dynimg/IC444273.png)
The primary monitor contains the origin (0,0). This is for compatibility with existing applications that expect a monitor with an origin. However, the primary monitor does not have to be in the upper left of the virtual screen. In Figure 1, it is near the center. When the primary monitor is not in the upper left of the virtual screen, parts of the virtual screen have negative coordinates. Because the arrangement of monitors is set by the user, all applications should be designed to work with negative coordinates. ... The coordinates of the virtual screen are represented by a signed 16-bit value because of the 16-bit values contained in many existing messages.