This invention relates to systems and methods for providing a more cohesive experience when using multiple display screens.
As high quality display screens become more affordable and mobile devices increasingly more common, multiple display screens are frequently used together to achieve a larger display area or to extend the functionality of mobile devices such as laptops, tablets, and cell phones. Companies often join together a number of smaller displays to create large digital billboards, banners, and signage. In such applications, it is important that each display screen be precisely aligned to avoid distorted images and jarring movement when visual objects move between the displays.
Companies and individuals may in certain cases decide to forego traditional desktop personal computers and workstations and instead utilize laptops with additional monitors to increase mobility without sacrificing productivity. In such situations, it is important to have correctly aligned display screens to avoid frustrating inconsistencies when visual objects are moved between the display screens. This becomes particularly important with laptops since they are frequently moved and are rarely put back in the same location relative to an external monitor. Any iterative solution to this problem is infeasible as it would regularly waste a significant amount of time.
It may also be important to have consistent sizing of visual elements across monitors, especially in design and content creation applications where additional display screens are used to increase the size of the digital canvas that is available. In such cases, a misalignment of even a few pixels can lead to additional work and high screen resolution becomes essential to provide a correct level of detail.
In view of the foregoing, what are needed are systems and methods to provide a more cohesive experience when using multiple displays. Ideally, such systems and methods will enable a user to quickly align display screens and correctly size visual elements across multiple display screens.
The invention has been developed in response to the present state of the art and, in particular, in response to the problems and needs in the art that have not yet been fully solved by currently available systems and methods. Accordingly, systems and methods have been developed to provide a more cohesive user experience when using multiple displays. The features and advantages of the invention will become more fully apparent from the following description and appended claims, or may be learned by practice of the invention as set forth hereinafter.
Consistent with the foregoing, a method for providing a cohesive user experience when using multiple displays is disclosed. In one embodiment, such a method includes displaying a first graphical element on a first display screen, and a second graphical element on a second display screen. The method enables a user to move at least one of the first and second graphical elements until the first and second graphical elements are substantially aligned with one another across the first and second display screens. The method further enables the user to resize at least one of the first and second graphical elements until the first and second graphical elements are scaled similarly on the first and second display screens. In accordance with the movement and resize of the graphical elements, the method automatically adjusts a relative understood position of the first and second display screens and scales graphical objects displayed across the first and second display screens.
A corresponding system and computer program product are also disclosed and claimed herein.
In order that the advantages of the invention will be readily understood, a more particular description of the invention briefly described above will be rendered by reference to specific embodiments illustrated in the appended drawings. Understanding that these drawings depict only typical embodiments of the invention and are not therefore to be considered limiting of its scope, the embodiments of the invention will be described and explained with additional specificity and detail through use of the accompanying drawings, in which:
It will be readily understood that the components of the present invention, as generally described and illustrated in the Figures herein, could be arranged and designed in a wide variety of different configurations. Thus, the following more detailed description of the embodiments of the invention, as represented in the Figures, is not intended to limit the scope of the invention, as claimed, but is merely representative of certain examples of presently contemplated embodiments in accordance with the invention. The presently described embodiments will be best understood by reference to the drawings, wherein like parts are designated by like numerals throughout.
The present invention may be embodied as a system, method, and/or computer program product. The computer program product may include a computer readable storage medium (or media) having computer readable program instructions thereon for causing a processor to carry out aspects of the present invention.
The computer readable storage medium may be a tangible device that can retain and store instructions for use by an instruction execution device. The computer readable storage medium may be, for example, but is not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of the computer readable storage medium includes the following: a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), a static random access memory (SRAM), a portable compact disc read-only memory (CD-ROM), a digital versatile disk (DVD), a memory stick, a floppy disk, a mechanically encoded device such as punch-cards or raised structures in a groove having instructions recorded thereon, and any suitable combination of the foregoing. A computer readable storage medium, as used herein, is not to be construed as being transitory signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission media (e.g., light pulses passing through a fiber-optic cable), or electrical signals transmitted through a wire.
Computer readable program instructions described herein can be downloaded to respective computing/processing devices from a computer readable storage medium or to an external computer or external storage device via a network, for example, the Internet, a local area network, a wide area network and/or a wireless network. The network may comprise copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers and/or edge servers. A network adapter card or network interface in each computing/processing device receives computer readable program instructions from the network and forwards the computer readable program instructions for storage in a computer readable storage medium within the respective computing/processing device.
Computer readable program instructions for carrying out operations of the present invention may be assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state-setting data, or either source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Smalltalk, C++ or the like, and conventional procedural programming languages, such as the “C” programming language or similar programming languages.
The computer readable program instructions may execute entirely on a user's computer, partly on a user's computer, as a stand-alone software package, partly on a user's computer and partly on a remote computer, or entirely on a remote computer or server. In the latter scenario, a remote computer may be connected to a user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGA), or programmable logic arrays (PLA) may execute the computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry, in order to perform aspects of the present invention.
Aspects of the present invention are described herein with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, may be implemented by computer readable program instructions.
These computer readable program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. These computer readable program instructions may also be stored in a computer readable storage medium that can direct a computer, a programmable data processing apparatus, and/or other devices to function in a particular manner, such that the computer readable storage medium having instructions stored therein comprises an article of manufacture including instructions which implement aspects of the function/act specified in the flowchart and/or block diagram block or blocks.
The computer readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus, or other device to produce a computer implemented process, such that the instructions which execute on the computer, other programmable apparatus, or other device implement the functions/acts specified in the flowchart and/or block diagram block or blocks.
Referring to
As shown, the computing system 100 includes at least one processor 102 and may include more than one processor 102. The processor 102 may be operably connected to a memory 104. The memory 104 may include one or more non-volatile storage devices such as hard drives 104a, solid state drives 104a, CD-ROM drives 104a, DVD-ROM drives 104a, tape drives 104a, or the like. The memory 104 may also include non-volatile memory such as a read-only memory 104b (e.g., ROM, EPROM, EEPROM, and/or Flash ROM) or volatile memory such as a random access memory 104c (RAM or operational memory). A bus 106, or plurality of buses 106, may interconnect the processor 102, memory devices 104, and other devices to enable data and/or instructions to pass therebetween.
To enable communication with external systems or devices, the computing system 100 may include one or more ports 108. Such ports 108 may be embodied as wired ports 108 (e.g., USB ports, serial ports, Firewire ports, SCSI ports, parallel ports, etc.) or wireless ports 108 (e.g., Bluetooth, IrDA, etc.). The ports 108 may enable communication with one or more input devices 110 (e.g., keyboards, mice, touchscreens, cameras, microphones, scanners, storage devices, etc.) and output devices 112 (e.g., displays, monitors, speakers, printers, storage devices, etc.). The ports 108 may also enable communication with other computing systems 100.
In certain embodiments, the computing system 100 includes a wired or wireless network adapter 114 to connect the computing system 100 to a network 116, such as a LAN, WAN, or the Internet. Such a network 116 may enable the computing system 100 to connect to or communicate with one or more servers 118, workstations 120, personal computers 120, mobile computing devices, or other devices. The network 116 may also enable the computing system 100 to connect to or communicate with another network by way of a router 122 or other device 122. Such a router 122 may allow the computing system 100 to communicate with servers, workstations, personal computers, or other devices located on different networks.
Referring to
In order to address the problems described above and provide a more cohesive user experiences when using multiple display screens 204a, 204b, systems and methods in accordance with the invention may compensate for physical misalignments and/or differing resolutions or pixel densities of multiple display screens 204a, 204b. As shown in
For example, as shown in
Referring to
Once the graphical elements 206a, 206b are aligned and resized so that their top and bottom edges are substantially visually aligned with one another, a monitor unification module 1100 in accordance with the invention, as will be explained in more detail in association with
For example, as shown in
In certain embodiments, the monitor unification module 1100 may take into account bezels around the display screens 204a, 204b as well as any distance between the bezels of the two display screen 204a, 204b. The thickness of the bezels, as well as the distance between the bezels of the monitors 200, 202, may affect the appearance of graphical objects as they move across the display screens 204a, 204b. For example, a cursor moving at an angle from one display screen 204a to the other 204b may not appear to travel along a straight line unless the bezels and any distance between the bezels is taken into account.
Bezels and any distance between the bezels may, in certain embodiments, be ignored (treated like they don't exist) for graphical objects that span the display screens 204a, 204b. This would enable all of a graphical object to be seen when spanning the display screens 204a, 204b. In other embodiments, the bezels and distance between the bezels may obscure part of a graphical object as it spans or passes across the display screens 204a, 204b. This may provide a more realistic appearance and allow the graphical objects to maintain their geometric proportions, while hiding from view part of the graphical objects. The amount of the graphical objects hidden from view may be reduced by using monitors 200, 202 with thinner bezels and/or less distance the bezels (such as by having the bezels abut another). In certain embodiments, the monitor unification module 1100 may gather information about bezel width and any distance between the bezels from a user, from the monitor itself (such as from Extended Display Identification Data (EDID) data), or other sources so that these factors may be taken into account when displaying or translating graphical objects across the display screens 204a, 204b.
Referring to
To unify the display screens 204a, 204b to compensate for differences in physical alignment, resolution, and/or pixel density, the graphical elements 206a, 206b may be aligned and resized in the manner previously described, as shown in
After the graphical elements 206a, 206b have been aligned and resized to match one another, thereby causing the display screens 204a, 204b to be “unified” with one another, the display screens 204b, 204c may then be unified. This may be accomplished by aligning and resizing the graphical elements 206c, 206d. Because the display screens 204b, 204c are in a stacked configuration, the graphical elements 206c, 206d may be moved horizontally as opposed to vertically. Because resizing the graphical element 206c will cause a corresponding resize of the graphical element 206b (and thereby possibly cause a mismatch with graphical element 206a), only the graphical element 206d may be resized to match the graphical element 206c. Thus, the graphical element 206d may be aligned with the graphical element 206c and resized to substantially match the size of the graphical element 206c, as shown in
Referring to
Referring to
The monitor detection module 1102 may be configured to detect monitors that are connected to a computing system 100. This detection may occur upon request or automatically when a monitor is connected to the computing system 100. The characteristic determination module 1104 may determine characteristics, such as resolution, pixel density, screen size, bezel width, and the like, associated each of the monitors that are connected to the computing system 100. In certain embodiments, these characteristics are pulled from the monitor itself, such as from a memory within the monitor. For example, EDID data which may indicate vertical and horizontal lengths of a monitor as well as its resolution, may be pulled from the monitor. In other embodiments, the characteristic determination module 1104 determines models of the monitors and looks up information about the particular models in a database stored on the computing system 100 or pulled from an external source such as the Internet. In yet other embodiments, the characteristic determination module 1104 enables a user to manually input characteristics about the monitors. These characteristics may be helpful to “unify” the display screens 204 and ensure that graphical objects appear correctly when translated or displayed across the display screens 204.
The element presentation module 1106 may present graphical elements 206 on the display screens 204 for the purpose of unifying the display screens 204. These graphical elements 206 may take on various forms and not limited to any particular shape or orientation. In certain embodiments, the graphical elements 206 are rectangles as illustrated in
Based on the way the graphical elements 206 are moved and resized, the alignment calculation module 1112 may adjust a relative understood position of the display screens 204 (i.e., adjust an understanding of the computing system 100 as to where the display screens 204 are located relative to one another). This will enable compensation for any misalignment. This, in turn, will enable a graphical object (e.g., cursor, window, image, etc.) to transition from one display screen 204 to another along a straight line without jumping or lurching during the transition. The scaling calculation module 1114, by contrast, may scale graphical objects on the display screens 204 so that they appear to be the same size or substantially the same size when spanning or transitioning across the display screens 204. The scaling calculation module 1114 may take into account the dimensions, resolutions, and/or pixel densities of the display screens 204 when making this calculation.
The snapshot module 1116 may enable a snapshot to be taken of multiple monitors and associated graphical elements 206 as was discussed in association with
Different variations of the disclosed systems and methods are possible. For example, it is contemplated that the monitor unification module 1100 could enable different monitors in a group to maintain their current resolutions and size graphical objects contained entirely on their display screens 204 in accordance with their native resolutions. Thus, a graphical object on a first monitor may appear to be a first size while the same graphical object on a second monitor may appear to be a second size different from the first size. By contrast, when the graphical object is translated across the first monitor and second monitor, the monitor unification module 1100 may gradually shrink or enlarge the graphical object from the first size to the second size. Any graphical object that spans the first and second monitor may have a size between the first and second size, depending on much of the graphical object is displayed on the first monitor and second monitor. While spanning the first and second monitors, the graphical object may be scaled similarly on each of the first and second monitors so that it appears in a normal non-disjoint manner. Alternatively, a graphical object that is moved from a first monitor to a second monitor may snap down or up in size to the resolution of the monitor to which it is being moved once the graphical object is entirely contained within the destination display screen 204. Before it is entirely contained within the destination display screen, the graphical object may be scaled in accordance with the source or originating display screen 204.
The flowcharts and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in the flowcharts or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It should also be noted that, in some alternative implementations, the functions noted in the block may occur out of the order noted in the Figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. Other implementations may not require all of the disclosed steps to achieve the desired functionality. It will also be noted that each block of the block diagrams and/or flowchart illustrations, and combinations of blocks in the block diagrams and/or flowchart illustrations, may be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions.