Intelligent window placement with multiple windows using high DPI screens

The subject technology discloses configurations for determining a minimum dots per inch (DPI) setting for displaying graphical content in a window based on a native pixel density of a display. Respective graphical content is scaled for displaying in a first window based on the minimum DPI setting to fit a horizontal dimension of the first window. The subject technology then scales respective graphical content for displaying in a second window based on the minimum DPI setting to fit a horizontal dimension of the second window. In some configurations, the graphical content in the first window is scaled at a different DPI setting than the graphical content in the second window.

BACKGROUND

The subject technology generally relates to graphical user interfaces for displaying graphical content or fonts.

SUMMARY

The subject technology provides for determining a minimum dots per inch (DPI) setting for displaying graphical content in a window based on a native pixel density of a display; scaling respective graphical content for displaying in a first window based on the minimum DPI setting to fit a horizontal dimension of the first window; and scaling respective graphical content for displaying in a second window based on the minimum DPI setting to fit a horizontal dimension of the second window.

The subject technology provides for receiving input for modifying a horizontal size of a first window, wherein the first window includes respective graphical content for display; adjusting the horizontal size of the first window in response to the received input; and scaling the respective graphical content in the first window to fit the adjusted horizontal size of the first window.

Yet another aspect of the subject technology provides a system. The system includes memory, one or more processors, and one or more modules stored in memory and configured for execution by the one or more processors. The system includes a windowing module configured to determine a minimum dots per inch (DPI) setting for displaying graphical content in a window based on a native pixel density of a display, scale respective graphical content for displaying in a first window based on the minimum DPI setting to fit a horizontal dimension of the first window, and scale respective graphical content for displaying in a second window based on the minimum DPI setting to fit a horizontal dimension of the second window; and a graphical user interface (GUI) display module configured to provide for display the scaled respective graphical content in the first window and the second window.

The subject technology further provides for a non-transitory machine-readable medium comprising instructions stored therein, which when executed by a machine, cause the machine to perform operations including determining a minimum dots per inch (DPI) setting for displaying graphical content in a window based on a native pixel density of a display; scaling respective graphical content for displaying in a first window based on the minimum DPI setting to fit a horizontal dimension of the first window; and scaling respective graphical content for displaying in a second window based on the minimum DPI setting to fit a horizontal dimension of the second window.

It is understood that other configurations of the subject technology will become readily apparent from the following detailed description, where various configurations of the subject technology are shown and described by way of illustration. As will be realized, the subject technology is capable of other and different configurations and its several details are capable of modification in various other respects, all without departing from the scope of the subject technology. Accordingly, the drawings and detailed description are to be regarded as illustrative in nature and not as restrictive.

DETAILED DESCRIPTION

In a typical configuration provided by a given operating system or application (e.g., web browser), a default setting for displaying graphics and/or fonts may be set as 96 DPI (dots per inch) on a display screen. A display screen, however, may have up to 300 DPI based on the physical characteristics of the display screen. In this regard, the display screen includes a number of pixels typically expressed as a display resolution in terms of a number of pixels in width×height. In an example in which the display resolution is 2560×1600 pixels for a 15 inch diagonal size of a display screen, a pixels per inch (PPI) or pixel density of the display screen can be determined by calculating the square root of a sum of respective squares of the width and height that is divided by the diagonal size of the display screen (e.g., PPI=√(W2+H2)/S). In this example, a PPI calculation determines that the PPI for the 15″ display with 2560 ×1600 pixels is approximately 201.26 PPI. Thus, an ideal DPI for the display screen can be set to ˜201 DPI.

In some configurations, in order to “emulate” font size and/or graphical content display for a lower DPI setting (e.g., 96 DPI), a number of pixels displaying graphics is effectively reduced (e.g., 2560×1600 pixels to 1400×1024 pixels) by utilizing a DPI compensation technique to automatically adjust an input graphic image (e.g., bitmap) to match the DPI setting. In one example, the DPI compensation technique uses additional pixels as “subpixels” for rendering of fonts and/or graphical content that may scale the content in accordance to the DPI setting.

Given that a display screen may have a native PPI that exceeds the DPI setting of the operating system or application, the subject technology uses the capability of these high PPI displays to show more content in a smaller space. For a display screen with a maximum display resolution of 2560×1600 pixels with a current display setting of 1600×1200 pixels, the subject technology can create two 800×1200 windows side by side. Since the underlying display is able to show many more physical pixels (e.g., 2560×1600, occupying the same space), the subject technology (e.g., a window manager provided by the subject technology) can adjust the DPI setting for the content of each individual window dynamically within a range which can be specified by the user. In one example, the subject technology provides an automatic window management system to perform the following functions and features.

For instance, the user could specify a range of resolutions for displaying fonts or graphical content that is comfortable based on the user's eye sight. In one example, this could be accomplished in a first run step or settings dialog where the user can specify which minimum font size is still readable to the user at a corresponding DPI display setting. Based on this minimum DPI display setting, the subject technology may avoid overlapping windows that are displayed side by side since respective DPI values for each window can dynamically be adjusted to avoid horizontal scrollbars from being displayed. Thus, when opening 2 windows, the subject technology can put them side by side and adjust the DPI values of each window separately to show as much content as possible (e.g., using the minimum DPI display) which is ideally the full content for both windows. Displaying the full content for a window as used herein can be understood as being able to display the entirety of the content displayed in the window without utilizing horizontal or vertical scroll bars. Alternatively, in an example in which the full content is not able to be displayed without utilizing a horizontal scrollbar according to the minimum DPI display setting, the subject technology may display the content to the extent possible in the horizontal direction without the usage of a horizontal scroll bar and then utilize a vertical scroll bar to provide the remainder of the content in the window.

In one example, the two aforementioned windows may include behavior which “snaps” the two windows together, so the user could move the divider line between the two windows to either side and the content in the window gets dynamically DPI sized again. In this regard, the window which is decreased in size would increase the DPI value by shrinking the content and the window which is increased in size would reduce the DPI size by increasing the content size. In some configurations, upon increasing the DPI size (e.g., scaling the content smaller), if the content of a respective window is scaled too small beyond the minimum DPI display setting (e.g., where fonts would get even smaller than the smallest readable font), a fallback to a mobile version of the same web content is attempted, if available, before falling back to show a horizontal scrollbar. If there is no mobile equivalent of the content for display, then horizontal and/or vertical scrollbars are shown.

In some configurations, the subject technology may be configured to increase a size of a window containing the focus (e.g., an active or selected window) so that the window is more easily readable and decrease/shrink the other non-active window while keeping the DPI display setting within the specified minimum DPI display setting discussed above.

FIG. 1conceptually illustrates an example graphical user interface (GUI)100for displaying respective graphical content at independent DPI display settings in which some configurations of the subject technology can be implemented. The GUI100illustrated inFIG. 1may be provided on one or more computing devices or systems. For instance, the GUI100may be provided on a computing device or system, which may provide an operating system or an application (e.g., web browser) running on the computing device or system. In this regard, the GUI100may be provided by an operating system or an application running on the operating system.

As illustrated in the example shown inFIG. 1, a window110and a window120included in the GUI100are provided for display in which the window110and the window120are horizontally adjacent to each other and the window110and the window120occupy a fullscreen of a display. In one example, the window110and the window120have identical vertical and horizontal dimensions (e.g., 800×1200 pixels each where the fullscreen resolution of the display is 1600×1200 pixels). The window110and the window120include respective graphical content. For example, the graphical content in some configurations includes scalable fonts. The graphical content of each of the window110and the window120may correspond to a respective web page and/or document. In the window110, the graphical content has been scaled in order to meet a minimum DPI setting that provides fonts for display at a DPI setting legible to a user. In order to meet the minimum DPI setting, for this example, the content shown in the window110has been scaled to fit a horizontal dimension (or size) of the window110. Since the content of the window110is not scaled to fit the entirety of the content within the window110, a vertical scrollbar115is included in order to allow the user to view the remainder of the content that is not displayed. As shown in the window120, an entirety of the graphical content is scaled to fit within the window120. Thus, in the example ofFIG. 1, respective graphical content is scaled and displayed at different DPI settings for the window110and the window120of the GUI100. For instance, a DPI setting for the window110is greater than a DPI setting for the window120as the graphical content in the window110is scaled smaller than the graphical content shown in the window120. However, it is appreciated that the respective content of the window110and the window120may be displayed at the same DPI settings in some configurations.

Although the example shown inFIG. 1illustrates the GUI100in a particular arrangement, other types of arrangements for displaying the GUI100could be provided and still be within the scope of the subject technology. Although graphical content related to scalable fonts is shown in the example ofFIG. 1, it should be appreciated that other types of graphical content such as one or more different graphical elements may be provided and still be within the scope of the subject technology. A graphical element can include, but is not limited to, a button, check box, radio button, slider, list box, drop-down list, menu, combo box, icon, text box, scroll bar, etc. Further, one or more graphical images or video content may be provided by the GUI100.

FIG. 2conceptually illustrates an example GUI200for displaying graphical content after receiving input for adjusting a size of a particular window in which some configurations of the subject technology can be implemented. The GUI200illustrated inFIG. 2may be provided on one or more computing devices or systems. For instance, the GUI200may be provided on a computing device or system, which may provide an operating system or an application (e.g., web browser) running on the computing device or system. In this regard, the GUI200may be provided by an operating system or an application running on the operating system.

As illustrated in the example shown inFIG. 2, a window210and a window220included in the GUI200are provided for display horizontally adjacent to each other, and the window210and the window220occupy a fullscreen of a display. The window210and the window220include respective graphical content (e.g., scalable fonts). In the window210, the graphical content has been scaled in order to meet a minimum DPI setting that provides fonts for display at a DPI setting legible to a user. The content shown in the window210has been scaled to fit a horizontal dimension (or size) of the window210and a vertical scrollbar215is included in order to allow the user to view the remainder of the content that is not displayed. As shown in the window220, an entirety of the graphical content is scaled to fit within the window220. The respective graphical content is displayed at different DPI settings for the window210and the window220of the GUI200in this example.

Each window shown inFIG. 2represents a non-overlapping window that “snaps” together with another horizontally adjacent window such that input for enlarging a window will simultaneously decrease the size of the horizontally adjacent window. The windows210and220share a border225and scaling respective graphical content in the windows210and220may be in response to receiving input for moving the shared border225. Thus, scaling respective graphical content for displaying in the windows210and220occurs simultaneously in response to receiving input for a single command. In an example in which the respective horizontal sizes of the windows210and220are each X pixels, and the received input includes a value of y pixels for increasing the horizontal size of the window210, the adjusted horizontal size of the windows210and220are X+y pixels and X−y pixels, respectively. As shown, input (e.g., via a mouse cursor or touch input, etc.) for adjusting a horizontal size or dimension of the window210may be received by the GUI200. In response to the received input, the GUI200may scale the respective content of the window210accordingly to take advantage of the increased horizontal size, which is represented as a window230. After the respective graphical content is scaled to a lower DPI setting than a DPI setting for the window210, the example inFIG. 2illustrates that an entirety of the graphical content is now displayed in the window230and a vertical scrollbar is no longer required to view all the content. Additionally, the GUI200may scale the respective content of the window220in response to the received input that further requests that the window220be decreased in size as shown in a window240. The window240includes scaled graphical content at a higher DPI setting than a DPI setting of the window220based on the smaller horizontal dimension of the window240in response to the received input.

Although the example shown inFIG. 2illustrates the GUI200in a particular arrangement, other types of arrangements for displaying the GUI200could be provided and still be within the scope of the subject technology. Although graphical content related to scalable fonts are shown in the example ofFIG. 2, it should be appreciated that other types of graphical content such as one or more different graphical elements may be provided and still be within the scope of the subject technology. Further, one or more graphical images or video content may be provided by the GUI200.

FIG. 3conceptually illustrates an example process300for scaling graphical content in one or more windows according to some configurations of the subject technology. The process300can be performed on one or more computing devices or systems in some configurations. More specifically, the process300may be implemented for scaling graphical content of a window(s) as described in the example ofFIGS. 1 and 2.

The process300starts at305by determining a minimum dots per inch (DPI) setting for displaying graphical content in a window based on a native pixel density of a display. In some configurations, the graphical content includes one or more scalable fonts. The native pixel density of the display is measured in pixels per inch (PPI) in one example. Further, the minimum DPI setting is a setting configured to provide legibility of fonts included in a respective window in one example. By way of example, the minimum DPI setting is configured based on the user's eyesight that indicates a minimum size for legibility of fonts.

The process300at310determines if the graphical content fits in a horizontal and vertical dimensions of the window based on the minimum DPI setting. If the graphical content fits in the horizontal and vertical dimensions of the window, the process300continues to315to scale the graphical content to fit the horizontal and vertical dimensions of the window based on the minimum DPI setting. In this instance, scaling the graphical content for displaying in the window scales an entirety of the graphical content to fit the horizontal dimension and the vertical dimension of the window. The entirety of the respective graphical content includes an entire content of a respective web page or document in one example. Thus, scaling respective graphical content for displaying in the window maximizes viewable content in the window.

Alternatively, if the graphical content does not fit in the horizontal and vertical dimensions of the window, the process300continues to320. At320, the process300determines if the graphical content fits in the horizontal dimension of the window based on the minimum DPI setting. If the graphical content fits in the horizontal dimension of the window, the process300continues to315to scale the graphical content to fit the horizontal dimension of the window based on the minimum DPI setting. In some configurations, a vertical scrollbar will be provided in the window in order to enable a user to view any scaled graphical content that does not fit in the window.

Alternatively, if the graphical content does not fit in the horizontal dimension of the window, the process300continues to330. The process300at300scales the graphical content based on the minimum DPI setting to have horizontal and/or vertical scrollbars. The process300then ends. In some configurations, a fallback to a mobile version of the graphical content is attempted before falling back to show a horizontal scrollbar at330. If there is no mobile equivalent of the content for display, then horizontal and/or vertical scrollbars are shown at330.

Although the example described in connection withFIG. 3describes scaling graphical content for a single window, it should be understood that the operations described inFIG. 3could be applied for scaling graphical content in a second window (or any number of additional windows). Moreover, scaling respective graphical content for display in different windows may be according to different DPI in some instances.

FIG. 4conceptually illustrates an example process400for scaling graphical content in response to input that adjusts a size of a window in which some configurations of the subject technology can be implemented. The process400can be performed by one or more computing devices or systems in some configurations. More specifically, the process400may be implemented for scaling graphical content of a window(s) as described in the example ofFIGS. 1 and 2.

The process400begins at405by receiving input for modifying a horizontal size of a first window. The first window includes respective graphical content for display. In one example, the received input includes input for increasing the horizontal size of the first window. Further, the received input may include input for decreasing the horizontal size of the second window. The process400at410adjusts the horizontal size of the first window in response to the received input. At415, the process400scales the respective graphical content in the first window to fit the adjusted horizontal size of the first window. The process400continues to420to adjust the horizontal size of a second window in response to the received input in which the second window includes respective graphical content for display. At425, the process400scales the respective graphical content in the second window to fit the adjusted horizontal size of the second window. The process400at430provides for display the scaled respective graphical content in the first and the second windows. In some configurations, the scaled respective graphical content of the first window is displayed at a lower DPI (e.g., enlarging the graphical content) than the scaled respective graphical content of the second window. The process400then ends.

FIG. 5conceptually illustrates an example computing environment500including a system. In particular,FIG. 5shows a system505for implementing the above described GUI inFIGS. 1 and 2and the processes inFIGS. 3 and 4. In some configurations, the system505is part of an implementation running a particular machine (e.g., client computer, laptop, notebook, netbook, etc.).

The system505can include memory, one or more processors, and one or more modules stored in memory and configured for execution by the one or more processors. As shown inFIG. 5, the system505includes several modules for providing different functionality. The system505is configured to include a windowing module510and a graphical user interface (GUI) display module520.

The windowing module510is configured to determine a minimum dots per inch (DPI) setting for displaying graphical content in a window based on a native pixel density of a display, scale respective graphical content for displaying in a first window based on the minimum DPI setting to fit a horizontal dimension of the first window, and scale respective graphical content for displaying in a second window based on the minimum DPI setting to fit a horizontal dimension of the second window. The GUI display module520is configured to provide for display the scaled respective graphical content in the first window and the second window.

In some configurations, the windowing module510is further configured to receive input for modifying a horizontal size of a first window in which the first window includes respective graphical content for display, adjust the horizontal size of the first window in response to the received input, and scale the respective graphical content in the first window to fit the adjusted horizontal size of the first window. The windowing module510is further configured to adjust the horizontal size of a second window in response to the received input in which the second window includes respective graphical content for display, and scale the respective graphical content in the second window to fit the adjusted horizontal size of the second window. After scaling the respective graphical content in the first and second windows in response to adjusting the horizontal sizes of the windows, the GUI display module520is further configured to provide for display the scaled respective graphical content in the first window and the scaled respective graphical content in the second window.

As further shown inFIG. 5, each of the aforementioned modules can be configured to communicate between each other. For instance, different data, messages, API calls and returns can be passed between the different modules in the system505.

In this specification, the term “software” is meant to include firmware residing in read-only memory and/or applications stored in magnetic storage, which can be read into memory for processing by a processor. Also, in some implementations, multiple software components can be implemented as sub-parts of a larger program while remaining distinct software components. In some implementations, multiple software subject components can also be implemented as separate programs. Finally, a combination of separate programs that together implement a software component(s) described here is within the scope of the subject technology. In some implementations, the software programs, when installed to operate on one or more systems, define one or more specific machine implementations that execute and perform the operations of the software programs.

Some configurations are implemented as software processes that include one or more application programming interfaces (APIs) in an environment with calling program code interacting with other program code being called through the one or more interfaces. Various function calls, messages or other types of invocations, which can include various kinds of parameters, can be transferred via the APIs between the calling program and the code being called. In addition, an API can provide the calling program code the ability to use data types or classes defined in the API and implemented in the called program code.

One or more APIs may be used in some configurations. An API is an interface implemented by a program code component or hardware component (“API implementing component”) that allows a different program code component or hardware component (“API calling component”) to access and use one or more functions, methods, procedures, data structures, classes, and/or other services provided by the API implementing component. An API can define one or more parameters that are passed between the API calling component and the API implementing component.

The following description describes an example system in which aspects of the subject technology can be implemented.

FIG. 6conceptually illustrates a system600with which some implementations of the subject technology can be implemented. The system600can be a computer, phone, PDA, or another sort of electronic device. In some configurations, the system600includes a television with one or more processors embedded therein. Such a system includes various types of computer readable media and interfaces for various other types of computer readable media. The system600includes a bus605, processing unit(s)610, a system memory615, a read-only memory620, a storage device625, an optional input interface630, an optional output interface635, and a network interface640.

The bus605collectively represents all system, peripheral, and chipset buses that communicatively connect the numerous internal devices of the system600. For instance, the bus605communicatively connects the processing unit(s)610with the read-only memory620, the system memory615, and the storage device625.

From these various memory units, the processing unit(s)610retrieves instructions to execute and data to process in order to execute the processes of the subject technology. The processing unit(s) can be a single processor or a multi-core processor in different implementations.

The read-only-memory (ROM)620stores static data and instructions that are needed by the processing unit(s)610and other modules of the system600. The storage device625, on the other hand, is a read-and-write memory device. This device is a non-volatile memory unit that stores instructions and data even when the system600is off. Some implementations of the subject technology use a mass-storage device (such as a magnetic or optical disk and its corresponding disk drive) as the storage device625.

Other implementations use a removable storage device (such as a flash drive, a floppy disk, and its corresponding disk drive) as the storage device625. Like the storage device625, the system memory615is a read-and-write memory device. However, unlike storage device625, the system memory615is a volatile read-and-write memory, such a random access memory. The system memory615stores some of the instructions and data that the processor needs at runtime. In some implementations, the subject technology's processes are stored in the system memory615, the storage device625, and/or the read-only memory620. For example, the various memory units include instructions for processing multimedia items in accordance with some implementations. From these various memory units, the processing unit(s)610retrieves instructions to execute and data to process in order to execute the processes of some implementations.

Finally, as shown inFIG. 6, bus605also couples system600to a network interface640through a network adapter (not shown). In this manner, the computer can be a part of a network of computers (such as a local area network (“LAN”), a wide area network (“WAN”), or an Intranet, or an interconnected network of networks, such as the Internet. The components of system600can be used in conjunction with the subject technology.

Configurations of the subject matter described in this specification can be implemented in a computing system that includes a back end component, e.g., as a data server, or that includes a middleware component, e.g., an application server, or that includes a front end component, e.g., a client computer having a graphical user interface or a Web browser through which a user can interact with an implementation of the subject matter described in this specification, or a combination of one or more such back end, middleware, or front end components. The components of the system can be interconnected by a form or medium of digital data communication, e.g., a communication network. Examples of communication networks include a local area network (“LAN”) and a wide area network (“WAN”), an inter-network (e.g., the Internet), and peer-to-peer networks (e.g., ad hoc peer-to-peer networks).

It is understood that a specific order or hierarchy of steps in the processes disclosed is an illustration of example approaches. Based upon design preferences, it is understood that the specific order or hierarchy of steps in the processes can be rearranged, or that all illustrated steps be performed. Some of the steps can be performed simultaneously. For example, in certain circumstances, multitasking and parallel processing can be advantageous. Moreover, the separation of various system components in the configurations described above should not be understood as requiring such separation in all configurations, and it should be understood that the described program components and systems can generally be integrated together in a single software product or packaged into multiple software products.

A phrase such as an “aspect” does not imply that such aspect is essential to the subject technology or that such aspect applies to all configurations of the subject technology. A disclosure relating to an aspect can apply to all configurations, or one or more configurations. A phrase such as an aspect can refer to one or more aspects and vice versa. A phrase such as a “configuration” does not imply that such configuration is essential to the subject technology or that such configuration applies to all configurations of the subject technology. A disclosure relating to a configuration can apply to all configurations, or one or more configurations. A phrase such as a configuration can refer to one or more configurations and vice versa.

The word “example” is used herein to mean “serving as an example or illustration.” An aspect or design described herein as “example” is not necessarily to be construed as preferred or advantageous over other aspects or designs.

All structural and functional equivalents to the elements of the various aspects described throughout this disclosure that are known or later come to be known to those of ordinary skill in the art are expressly incorporated herein by reference and are intended to be encompassed by the claims.