
Here is some more details regarding design, this time it is some details regarding what functions are needed to interact with the system. *Window State:* - Hidden The window is invisible to the user and they cannot tell it exists. - Minimized The window is invisible to the user, but they can tell it exists and can make it visible. - Windowed The window is visible. - Maximized This is a substate of "Windowed", in which the window is not resizable or moveable. Rather it contantly fills the "work area" of the screen. - Fullscreen This is a substate of "Windowed", in which the window is not resizable or moveable. Rather it contantly fills the screen and covers everything in the non-work area part of the screen when active. Function Listing for Window State: - show Makes a window visible without otherwise altering its state. - hide Makes a window invisible without otherwise altering its state. - minimize Makes a window invisible but leaves something that shows the window exist; The "icon" can be used to restore the window. - restore Returns the window to its previous windowed state. - to_window Makes a window visible, and puts it in a windowed state. If the window is maximized or fullscreen, its normal size and position are restored. - maximize Makes a window visible, and puts it in a maximized state. - to_fullscreen Makes a window visible, and puts it in a fullscreen state. Additionally there would be functions to determine the window's current state, but I will leave what functions there should be to discussion for now. Note: only show and hide are relavent to a control; the rest only apply to windows.