Scaling cleanup
Status
generally the strategy for creating the initial window should be like this (in all ports):
- first the optimal size of the canvas is calculated
- then, the window is created of the right size
- NO resize message is sent to the window at startup, since the window is already of the right size.
- Instead, a resize message is sent to the window only when there's a user action such as enabling double-size, dragging window edges etc
ports that work like this: SDL ports that do NOT work like this (yet): Xaw, GTK
TODO: check amiga, beos, dos, os/2, osx, win32
Right now 3 sizing models are supported
- the canvas size is calculated, then the window fits the canvas. Used by most ports when HW scaling is off
- the canvas size is calculated, the window has an arbitrary width and height, the image is streched/squeezed. Used by most ports when HW scaling is on
- the canvas size is calculated, the window's aspect ratio fits the canvas', the window has an arbitrary width or height
- the canvas size is calculated, the window has an arbitrary width and height, a black border is added to the image if the window is too big or the image is cropped smartly if the window is too small. Used by Xaw
TODO: List here what ports use which model TODO: The third one is really ugly (and it is the only reason why we have the unnecessary complication of video-viewport) and should be removed
Todo
- first fix the Xaw port to not use the above mentioned 3rd sizing model
- document the needed changes here incase other ports have to be fixed
- fix strategy for creating the initial window as mentioned above for Xaw
- document needed changes here
- fix the remaining ports
- remove the now unnecessary stuff in video-viewport (remove the above mentioned 3rd sizing model)
List of ports: amiga, beos, dos, os/2, osx, xaw, gtk, win32, sdl