CROSS-REFERENCE TO RELATED APPLICATIONSThis application claims a priority benefit, under 35 U.S.C. §119(e), to U.S. Provisional Application No. 61/697,054, entitled “Enhanced Accessibility Technologies,” filed Sep. 5, 2012, under attorney docket no. A0944.70003US00, which is incorporated herein by reference in its entirety.
BACKGROUNDWith regard to computer systems, “accessibility” refers to the extent to which a computer resource (e.g., hardware, software applications, output content, etc.) is usable by people of all abilities and disabilities. In particular, a focus of recent effort has been on making computer content accessible to users with visual impairments. Accessibility Technology (AT) software applications, such as screen magnifiers and screen readers, have been and are continuing to be developed to provide enhancements to visual content on computer displays to make the visual content easier for visually impaired users to consume.
Some AT applications provide multiple options for enhancements that a visually impaired user could select to be applied to visual content to make it more accessible. One common type of enhancement is magnification, by which the visual content is enlarged to make it easier to see. Another type of enhancement is color enhancement, by which color of the visual content (e.g., background color, foreground color, reverse contrast, etc.) is adjusted to make the visual content easier to see. Other types of enhancement include pointer/cursor/focus enhancements, including various visual indicators of the current position of the mouse pointer, text cursor, input focus, etc. Yet another type of enhancement is text-to-speech or Braille display, by which visual content is converted to audio or tactile information that a (blind) user can consume.
An example of a typical way of making enhancement options available to a user is illustrated inFIG. 1. The AT software application presents atoolbar10 on the display screen of the computer system (e.g., as a window on the computer desktop, which can be viewed alongside other windows of other software applications).Panel20 oftoolbar10 presents user interface elements allowing the user to identify and adjust the current magnification level. Display/input field22 displays the current magnification level (in this example, “2×,” in which visual content is enlarged by doubling its dimensions), and also allows the user to change to a different magnification level by selectingfield22 with the mouse and then typing in a different magnification level (e.g., “3×,” “4×,” etc.). Alternatively, the user can adjust the magnificationlevel using buttons24 and26, which can be clicked with the mouse to increase and decrease the magnification level, respectively.Panel30 oftoolbar10 presents user interface elements allowing the user to activate and adjust other enhancements, including (in this example) color, pointer, cursor, and font enhancements. Each ofbuttons32,34,36 and38 can be clicked with the mouse to cause a pop-up window or menu to be displayed with further user interface elements that can be used (e.g., through further mouse clicks) to activate each desired enhancement and adjust its settings individually.
SUMMARYOne type of embodiment is directed to a method in a computer system having originating software configured to provide visual content for display on a display screen and enhancement software configured to apply enhancements to the visual content for display on the display screen, the method comprising: magnifying the visual content, via the enhancement software, to a magnification level different from a size at which the visual content is provided by the originating software; and in response to an instruction to change the magnification level, changing the magnification level to which the visual content is magnified via the enhancement software, and changing one or more enhancements, other than magnification, applied to the visual content via the enhancement software.
Another type of embodiment is directed to at least one computer-readable storage medium storing computer-executable instructions that, when executed, perform a method in a computer system having originating software configured to provide visual content for display on a display screen and enhancement software configured to apply enhancements to the visual content for display on the display screen, the method comprising: magnifying the visual content, via the enhancement software, to a magnification level different from a size at which the visual content is provided by the originating software; and in response to an instruction to change the magnification level, changing the magnification level to which the visual content is magnified via the enhancement software, and changing one or more enhancements, other than magnification, applied to the visual content via the enhancement software.
Another type of embodiment is directed to a computer system comprising at least one processor, and at least one storage medium storing originating software configured to provide visual content for display on a display screen, and storing processor-executable instructions that, when executed by the at least one processor, perform a method comprising: magnifying the visual content for display on the display screen, to a magnification level different from a size at which the visual content is provided by the originating software; and in response to an instruction to change the magnification level, changing the magnification level and changing one or more enhancements, other than magnification, applied to the visual content for display on the display screen.
BRIEF DESCRIPTION OF DRAWINGSThe accompanying drawings are not intended to be drawn to scale. In the drawings, each identical or nearly identical component that is illustrated in various figures is represented by a like numeral. For purposes of clarity, not every component may be labeled in every drawing. In the drawings:
FIG. 1 illustrates a conventional user interface for providing access to enhancements for visual content;
FIG. 2 is a block diagram illustrating an exemplary operating environment for a computer system in accordance with some embodiments of the present invention;
FIGS. 3A-3C illustrate exemplary application of techniques in accordance with some embodiments of the present invention;
FIG. 4 is a flowchart illustrating an exemplary method in accordance with some embodiments of the present invention;
FIG. 5 is a flowchart illustrating another exemplary method in accordance with some embodiments of the present invention; and
FIG. 6 is a block diagram illustrating an exemplary computer system on which aspects of the present invention may be implemented.
DETAILED DESCRIPTIONThe inventors have recognized that conventional ways of providing access to enhancements for visual content in computer systems, such as the example conventional user interface illustrated inFIG. 1, may be difficult for many users to use. For example, the fact that the user must activate and configure settings for each type of enhancement separately requires the user to know what enhancements and what settings he/she wants to use, as well as where to find those enhancements and those settings within the user interface. Many users may not know what enhancements are available or how they would be of benefit, and may not be adept at exploring the user interface to discover or experiment with the available options. The inventors have further recognized that many users may benefit from different enhancement settings at different magnification levels, but may not realize this, or may find it too onerous to change multiple user interface settings multiple times as they browse through content at different magnification levels.
The inventors have recognized that advantages over the foregoing conventional techniques may be realized through novel techniques that automatically apply settings for one or more other enhancements when the user specifies the magnification level to be applied to visual content for display in a computer system. The inventors have appreciated that in some embodiments, by tying one or more other enhancements to the magnification level, a user interface for applying the enhancements may be simplified and present fewer buttons, settings, etc., for a user to learn to use.
Accordingly, some embodiments described herein relate to techniques for applying enhancements to visual content in dependence upon the magnification level, which techniques may address one or more of the above-discussed shortcomings of traditional methods, and/or may provide one or more of the foregoing benefits. However, aspects of the invention are not limited to any of these benefits, and it should be appreciated that some embodiments may not provide any of the above-discussed benefits and/or may not address any of the above-discussed deficiencies that the inventors have recognized in conventional techniques.
In some embodiments, in response to an instruction to change the magnification level applied to visual content, one or more other enhancements may be changed automatically, in addition to changing the magnification level. In some embodiments, a particular enhancement may become activated at a particular magnification level, when it was not activated at another magnification level. Alternatively or additionally, in some embodiments a parameter of a particular enhancement may be varied in correlation with the magnification level. For example, in some embodiments an enhancement may be made stronger, more prominent, etc., when the magnification level is increased. As used herein, the term “magnification level” refers to a multiple of the original pixel size of onscreen content that is magnified. A single pixel from the original display, for example, would appear twice as large and would require 4 pixels to display at a 2× magnification level. For techniques that do not apply the same magnification to all of the content being enhanced, the magnification level refers to the maximum level of magnification applied to some content being enhanced. For example, in some embodiments, magnification may be applied preferentially to content that is deemed important (such as the main text of a document) while other less important content (such as menu bars, navigational controls, etc.) may be magnified to a lesser degree or may be left unmagnified or even made smaller. In such cases, the “magnification level” refers to the highest level of magnification applied (i.e., to the important content).
In some embodiments, a user interface for providing access to enhancements for visual content may include a single-input control, such as a slider, that allows the user to specify the magnification level along with the corresponding automatic settings for one or more other enhancements. In some embodiments, this control may replace a more extensive user interface having individual controls for individual enhancements. In other embodiments, such a more extensive user interface may also be provided as an alternative for users who wish to have access to it. In some embodiments, one or more enhancements may be tied to the magnification level and controlled via the single-input control, while one or more other enhancements may be provided via one or more different user interface elements, instead of being tied to the magnification level.
It should be appreciated that the foregoing description is by way of example only, and aspects of the invention are not limited to providing any or all of the above-described functionality, although some embodiments may provide some or all of the functionality described herein.
The aspects of the present invention described herein can be implemented in any of numerous ways, and are not limited to any particular implementation techniques. Thus, while examples of specific implementation techniques are described below, it should be appreciated that the examples are provided merely for purposes of illustration, and that other implementations are possible.
One illustrative application for the techniques described herein is for use in acomputer system100 operated by a (human)user102. An exemplary operating environment for such a system is illustrated inFIG. 2.Computer system100 may be implemented in any suitable form, as aspects of the invention are not limited in this respect. For example,computer system100 may be implemented as a single stand-alone machine, or may be implemented by multiple distributed machines that share processing tasks in any suitable manner.Computer system100 may be implemented as one or more computers; an example of a suitable computer is described below. In some embodiments,computer system100 may include one or more tangible, non-transitory processor-readable storage devices storing processor-executable instructions, and one or more processors that execute the processor-executable instructions to perform the functions described herein. The storage devices may be implemented as computer-readable storage media (i.e., tangible, non-transitory computer-readable media) encoded with the processor-executable instructions; examples of suitable computer-readable storage media are discussed below.
Exemplary computer system100 may receive input fromuser102 via one or more input devices such askeyboard106 and/orpointing device108, and may provide output touser102 via one or more output devices such asdisplay screen104. Any suitable type(s) of display screen, keyboard, pointing device, and/or other input and/or output device(s) may be used, as aspects of the invention are not limited in this respect.Display screen104 may be any type of display component capable of presenting visual content touser102, and need not be two-dimensional.
Input and/or output devices such asdisplay screen104,keyboard106, andpointing device108 need not be separate physical devices, but in some embodiments may be integrated in any suitable combination, such as in a touchscreen-type apparatus that combines display screen, keyboard, and/or pointing device functionality. In addition, while a single display screen, keyboard, and pointing device are referred to herein for simplicity, some embodiments may make use of multiple display screens, keyboards, and/or pointing devices to provide equivalent and/or similar functionality.
In the example depicted inFIG. 2,exemplary computer system100 includes various output-producing components, such asweb browser110, ATapplication114, andother applications116. Each of these processing components ofsystem100 may be implemented in software, hardware, or a combination of software and hardware. Components implemented in software may comprise sets of processor-executable instructions that may be executed by the one or more processors ofcomputer system100 to perform the functionality described herein. Each ofweb browser110, ATapplication114, andother applications116 may be implemented as a separate component of computer system100 (e.g., implemented by hardware and/or software code that is independent and performs dedicated functions of the component), or any combination of these components may be integrated into a single component or a set of distributed components (e.g., hardware and/or software code that performs two or more of the functions described herein may be integrated, the performance of shared code may be distributed among two or more hardware modules, etc.). In addition, any one ofweb browser110, ATapplication114, andother applications116 may be implemented as a set of multiple software and/or hardware components. Although the example operating environment ofFIG. 2 depictsweb browser110, ATapplication114, andother applications116 implemented together oncomputer system100, this is only an example; in other examples, any or all of the components may be implemented on one or more separate machines, or parts of any or all of the components may be implemented across multiple machines in a distributed fashion and/or in various combinations. It should be understood that any such component depicted inFIG. 2 is not limited to any particular software and/or hardware implementation and/or configuration.
Whileweb browser110 and ATapplication114 are provided as examples of applications that may be run oncomputer system100, it should be appreciated that aspects of the invention are not limited to the inclusion of either or both ofweb browser110 and ATapplication114. Furthermore, whileAT application114 is provided as a particular example of a component of computer system100 (e.g., a software application) that may provide functionality described herein (e.g., to apply enhancements to visual content), it should be appreciated that aspects of the invention are not limited to being performed by an AT application. In particular, while providing enhancements designed to improve accessibility may be one beneficial exemplary use of the techniques described herein, some embodiments are not limited to accessibility technology, and the techniques described herein may be applied to any suitable type(s) of enhancements to visual content provided by any suitable type(s) of application and/or component.
In some embodiments, ATapplication114 may be configured to operate (e.g., via execution of a set of instructions by the one or more processors of computer system100) to apply enhancements to visual content that is provided for display ondisplay screen104 byAT application114 itself and/or by other components such asweb browser110 and/or other applications116 (including, for example, the operating system of computer system100). For instance, in one particular example,web browser110 may provide visual content (e.g., text, images, user interface elements, etc., included in a web page) for display ondisplay screen104 at a particular default size, and ATapplication114 may process the visual content provided byweb browser110 to apply one or more enhancements (e.g., magnification and/or one or more other accessibility enhancements) to the visual content before it is displayed. In such embodiments in which a component (such asAT application114 or a non-AT component configured to provide functionality described herein) operates to apply enhancements to visual content provided for display by another component (such as, for example,web browser110, anotherapplication116, an operating system ofcomputer system100, etc.), the component originally providing the visual content for display is referred to herein as the “originating” component, and the component applying the enhancements to the visual content provided by the originating component is referred to herein as the “enhancement” component.
It should be appreciated that in embodiments in which the functionality described herein is provided by AT application114 (or a non-AT component configured to provide functionality described herein) running oncomputer system100, the functionality may be performed with respect to visual content generated and/or otherwise provided by any suitable component(s) of computer system100 (including visual content generated byAT application114 itself), andcomputer system100 need not include any particular other components such asweb browser110. In embodiments in which aweb browser110 is included incomputer system100,web browser110 may be configured (e.g., programmed) to provide access to web pages by downloading aweb page122 from aweb server120, executing the code ofweb page122 to renderweb page122 visually, and displaying the renderedweb page122 ondisplay screen104.
In some embodiments, as discussed above, visual content provided byweb browser110, either as part of a rendered web page or as part of the browser tool itself (e.g., browser menu items, buttons on a browser toolbar, etc.), may be enhanced by AT application114 (or a non-AT component ofcomputer system100 configured to provide functionality described herein) for display ondisplay screen104. Alternatively or additionally, in someembodiments web browser110 may have its own AT module112 (e.g., a set of instructions) configured to causeweb browser110 to operate (e.g., via execution of the instructions by the one or more processors of computer system100) to apply enhancements to visual content in any of the manners described herein. In such embodiments, for example, web browser110 (or suitable components ofweb browser110 other than AT module112) may function as originating software for the visual content, and ATmodule112 may function as enhancement software with respect to that visual content. WhileAT module112 is provided as one particular example of a suitable component for providing functionality described herein, it should be appreciated that some embodiments are not limited to accessibility applications, and a similar non-AT module could also be used.
Alternatively or additionally, in some embodiments visual content included inweb page122 may be enhanced by execution of AT code124 (e.g., one or more instructions) embedded withinweb page122 itself. In some embodiments, whenweb browser110 executes the code ofweb page122, including ATcode124, to renderweb page122 for display ondisplay screen104, the execution ofAT code124 may causeweb browser110 to apply enhancements to visual content within the rendered web page in accordance with techniques described herein. In such embodiments, for example, suitable portions of web page122 (e.g., as interpreted/executed by web browser110), other thanAT code124, may function as originating software for the visual content, and AT code124 (e.g., as interpreted/executed by web browser110) may function as enhancement software with respect to that visual content. WhileAT code124 is provided as one particular example of a suitable delivery mechanism for the functionality described herein, it should be appreciated that some embodiments are not limited to accessibility applications, and similar non-AT code could also be used.
In some embodiments, applying enhancements to visual content provided by any component ofcomputer system100 may involve downloading anAT resource132 tocomputer system100 from anAT server130. For example, in some embodiments, ATapplication114 and/or web browser110 (e.g., as directed by instructions contained inAT module112 and/or AT code124) may query ATserver130 for enhancements to be applied to certain visual content, to certain web pages, etc., and/or for instructions as to how to apply enhancements (e.g., as to application of enhancements in accordance with techniques described herein). Thus, for example, ATresource132 may comprise an indication of one or more enhancements to apply, an indication of one or more mappings of enhancements to visual content to implement, a script (e.g., a set of instructions) to execute, and/or any other suitable resource to enable functionality described herein. In some instances, ATresource132 may function as enhancement software for visual content provided by other originating software. WhileAT server130 and ATresource132 are provided as particular examples for a suitable delivery mechanism for functionality described herein, it should be appreciated that some embodiments are not limited to accessibility applications, and similar non-AT resources could be used.
It should be appreciated from the foregoing that not all components illustrated inFIG. 2 are necessary to include in the same system to enable the functionality described herein. For example, functionality described herein could be implemented in a computer system havingAT application114 alone and/or in conjunction withAT resource132; a computer system havingweb browser110 in conjunction withAT module112, ATapplication114, and/orAT code124 embedded inweb page122, with or without the use ofAT resource132; or a computer system having any combination of the above. It should be appreciated that the description with respect toFIG. 2 is merely exemplary, and aspects of the invention are not limited to any particular software configuration or delivery mechanism for the techniques described herein.
In some embodiments, as discussed above, one or more enhancements may be applied to visual content for display on a display screen in a computer system. For illustration,FIG. 3A shows anexemplary display screen300 displaying visual content including a number of text input fields, acursor310, and apointer320. The text fields might represent, for example, portions of an address form included in a web page for the user to transmit address information to the web server. However, as discussed above, aspects of the invention are not limited to the context of web pages, and the functionality described herein may in some embodiments be provided with respect to visual content generated by computer system components other than a web browser (such as, for example, visual content provided to the display screen by the operating system).
On theexemplary display screen300 ofFIG. 3A, the text “John” has been typed intotext input field330, andcursor310 is positioned after the “n” to indicate that the next text typed will be inserted at that position.Pointer320 is located where it was last moved by user operation of the mouse (or other pointing device), and indicates the location at which a mouse click (or activation of another pointing device selection mechanism) will have an effect, if any. Also provided onexemplary display screen300 isgraphical slider340, an example of a single-input control that may be provided (e.g., by the enhancement software) to allow the user to control the magnification level, and cause one or more other enhancement settings to automatically take effect in dependence upon the magnification level setting.
As used herein, the term “single-input control” refers to any suitable user interface element that allows for user control of the magnification level and causes corresponding automatic changes to one or more other enhancements, without requiring any additional input from the user other than the input to control the magnification level. For example, when the single-input control is a graphical slider such asslider340, the user may specify the magnification level by dragging the slider with the mouse (or other input device used to control the slider), and in some embodiments one or more other enhancements may be changed in response to this user instruction to change the magnification level, without requiring any additional input from the user. In some embodiments, the single-input control may be labeled with particular magnification levels, or may provide any other suitable indicator to the user that an effect of using the control will be to change the magnification level, and/or may provide any other suitable indicator of the particular magnification level that will result from the user's operation of the control in a particular way. However, in other embodiments, the manner in which the control is presented to the user may not indicate that it is for purposes of magnification, or may provide any suitable indication that the control may have effects other than magnification. For example, in some embodiments the single-input control may be presented as a “see it better” control, or in any other suitable way as a control operable to increase accessibility of the visual content on the display screen in ways not limited to magnification. It should be appreciated that the foregoing description is provided merely for purposes of exemplary illustration, and aspects of the invention are not limited to any particular form of implementation of a single-input control.
In the example ofFIG. 3A,slider340 is currently set all the way to the left, and zero magnification is being applied to the visual content by the enhancement software. That is, the size of the visual content ondisplay screen300 inFIG. 3A is the size at which the visual content is provided by the originating software, and is unchanged by the enhancement software.FIG. 3B illustrates an example in whichslider340 has been moved one notch to the right. In this case, one effect of this setting onslider340 is to set the magnification level applied by the enhancement software to 2×, enlarging the visual content by doubling its dimensions. In addition, other enhancements have been changed in response to the change in magnification level, in accordance with some embodiments of the present invention. In this example, a cursor enhancement has been activated;triangles350 are now displayed to mark the current position of the cursor and make it easier for the user to locate. A pointer enhancement has also been activated;crosshairs360 are now displayed to mark the current position of the pointer and make it easier for the user to locate and follow.
In the example illustrated inFIG. 3C,slider340 has been moved another notch to the right. In this case, one effect of this setting onslider340 is to change the magnification level applied by the enhancement software to 4×, enlarging the visual content again by doubling its dimensions from what they were inFIG. 3B (making the visual content four times larger than it was in 1× inFIG. 3A). In addition, other enhancements have been changed in response to the change in magnification level. In this example,cursor enhancement350 andpointer enhancement360 have been made larger; in this particular example, they have more than doubled in size/thickness, although the magnification level has only doubled with respect to that inFIG. 3B. Also, another enhancement has now been activated;focus enhancement370 outlinestext input field330, indicating that it currently has input focus, and that any text input provided via the keyboard will take effect in that field.
As can be seen from the example inFIGS. 3A-3C, in some embodiments the user (or a program instruction) may provide an instruction to change the magnification level applied by the enhancement software, and one or more changes may be made automatically to one or more other enhancements in response to the instruction to change the magnification level. As discussed above, references herein to an “instruction to change the magnification level” include user input via an interface element specifically designated as related to magnification, as well as user input via a more generic interface element such as a “see it better” slider having an observable effect on the magnification level.
Any suitable type(s) of enhancements may be applied to visual content in conjunction with magnification, as aspects of the invention are not limited in this respect. Non-limiting examples of suitable enhancements include color enhancements (e.g., background color change, foreground color change, contrast change, etc.), cursor enhancements (e.g., circles, triangles, colors, etc., applied to the cursor), pointer enhancements (e.g., circles, crosshairs, colors, etc., applied to the pointer), focus enhancements (e.g., outlining around input fields, menu items, dialog options, toolbar controls, other controls, etc., having input focus), enhancement of a selected range of information (e.g., highlighted or otherwise selected text, selected spreadsheet cells, etc.), font enhancements (e.g., boldness), speech output (e.g., screen reading, text-to-speech for visual content that the user selects, navigates to, or hovers over with the pointer), tactile output (e.g., Braille output for visual content that the user selects, navigates to, or hovers over with the pointer), animation effects, etc.
In some embodiments, a different setting or set of settings may be applied to the available enhancements at one magnification level than at another magnification level. For example, in some embodiments, a setting for enhancements at a particular magnification level may have zero, one, or more of the other available enhancements activated at that magnification level, and the remaining enhancements not activated. At another magnification level, more, fewer, and/or different ones of the available enhancements may be activated. In one particular example, additional enhancements may be activated at increasing magnification levels. This was demonstrated in the example ofFIGS. 3A-3C, in which the pointer and cursor enhancements became active at 2× magnification, while the focus enhancement did not become active until 4× magnification. Alternatively or additionally, in some embodiments one or more enhancements that are activated may have one or more parameters that may be automatically changed in correlation with the magnification level. For example, in some embodiments, one or more enhancements may become stronger, brighter, larger, thicker, more prominent, etc., as the magnification level increases. This was demonstrated in the example ofFIGS. 3A-3C, in which the pointer and cursor enhancements became thicker and larger at 4× magnification than they were at 2× magnification. In some embodiments, the degree to which an enhancement parameter is changed in response to a magnification level change may be greater than the degree of change in the magnification level. This was demonstrated in the example ofFIGS. 3A-3C, in which the pointer and cursor enhancements more than doubled in thickness/size in response to a mere doubling of the magnification level. In some embodiments, a mathematical equation may be established to determine the amount of change in an enhancement parameter that will result from a particular amount of change in the magnification level. However, this is not required, and in some embodiments the parameter settings for an enhancement, although correlated with the magnification level, may not be mathematically determined, but may be derived and/or specified in any other suitable way, such as in a look-up table.
The determination of which enhancements activate using which parameter settings at which magnification levels may be made in any suitable way, as aspects of the invention are not limited in this respect. In some embodiments, enhancement settings may differ for different computer systems, for visual content provided by different originating software applications, and/or for different users. In some embodiments, a particular user may specify (e.g., by inputting appropriate settings) one or more enhancement settings that the user desires to be automatically applied at one or more particular magnification levels. Alternatively or additionally, in some embodiments the enhancement software may be programmed with particular enhancement settings to automatically apply at particular magnification levels for particular users or types of users. Such settings may be determined in any suitable way, including by determining the statistical needs of one or more user groups at various magnification levels, such as by conducting surveys or monitoring typical user interaction with conventional enhancement settings to determine the statistical needs of one or more user groups.
It should be appreciated from the foregoing that one embodiment of the invention is directed to amethod400 for applying enhancements to visual content, as illustrated inFIG. 4.Method400 may be performed, for example, by one or more components of acomputer system100, although other implementations are possible, asmethod400 is not limited in this respect.Method400 begins atact410, at which visual content may be magnified. As discussed above, in some embodiments the visual content may be provided for display on a display screen of the computer system by originating software, and may be magnified by enhancement software to a magnification level different from the size at which it was provided by the originating software. Atact420, an instruction to change the magnification level may be received, e.g., from a user. Atact430, in response to the instruction to change the magnification level, the level to which the visual content is magnified via the enhancement software may be changed, and additionally one or more enhancements, other than magnification, that are applied to the visual content via the enhancement software may be changed.
It should be further appreciated from the foregoing that another embodiment of the invention is directed to amethod500 for applying enhancements to visual content, as illustrated inFIG. 5.Method500 may be performed, for example, by one or more components of acomputer system100, although other implementations are possible, asmethod500 is not limited in this respect.Method500 begins atact510, at which the enhancement software may register, for each available enhancement, an observer (i.e., a software component that monitors for and/or detects the occurrence of a particular event or set of events) for notifications of changes to the magnification level applied by the enhancement software. Atact520, these observers may monitor for any such change in the magnification level.
Atact530, a determination may be made as to whether the magnification level has been changed, e.g., by the user or by a program instruction. While the magnification level remains unchanged,method500 may loop atact520 to continue to monitor. When the magnification level is changed, a notification may be generated, and may be received by the registered observers. Atact540, each observer (e.g., via the observer's handler) may map the new magnification level (together with any relevant user-specific settings, application-specific settings and/or system-specific settings) to the appropriate settings (e.g., activation on or off, and/or parameter settings) for the observer's assigned enhancement. Atact550, the enhancement software may apply the new magnification level, as well as the enhancement settings determined by the registered observers for that magnification level, to the visual content for display on the display screen.Method500 then loops back to act520 to monitor for further changes to the magnification level.
It should be appreciated that the foregoing description is provided by way of example only, and other implementations are possible. For example, other mechanisms for reacting to changes in the magnification level may be used, including but not limited to polling to check for magnification level changes, or controlling the available enhancements from within the magnification code.
A computer system in accordance with the techniques described herein may take any suitable form, as aspects of the present invention are not limited in this respect. An illustrative implementation of acomputer system600 that may be used in connection with some embodiments of the present invention is shown inFIG. 6. One or more computer systems such ascomputer system600 may be used to implement any of the functionality described above. Thecomputer system600 may include one ormore processors610 and one or more computer-readable storage media (i.e., tangible, non-transitory computer-readable media), e.g.,volatile storage620 and one or morenon-volatile storage media630, which may be formed of any suitable non-volatile data storage media. Theprocessor610 may control writing data to and reading data from thevolatile storage620 and/or thenon-volatile storage device630 in any suitable manner, as aspects of the present invention are not limited in this respect. To perform any of the functionality described herein,processor610 may execute one or more instructions stored in one or more computer-readable storage media (e.g.,volatile storage620 and/or non-volatile storage630), which may serve as tangible, non-transitory computer-readable media storing instructions for execution by theprocessor610.
The above-described embodiments of the present invention can be implemented in any of numerous ways. For example, the embodiments may be implemented using hardware, software or a combination thereof. When implemented in software, the software code can be executed on any suitable processor or collection of processors, whether provided in a single computer or distributed among multiple computers. It should be appreciated that any component or collection of components that perform the functions described above can be generically considered as one or more controllers that control the above-discussed functions. The one or more controllers can be implemented in numerous ways, such as with dedicated hardware, or with general purpose hardware (e.g., one or more processors) that is programmed using microcode or software to perform the functions recited above.
It should be appreciated that a computer may be embodied in any of a number of forms, such as a rack-mounted computer, a desktop computer, a laptop computer, or a tablet computer. Additionally, a computer may be embedded in a device not generally regarded as a computer but with suitable processing capabilities, including a Personal Digital Assistant (PDA), a smart phone or any other suitable portable or fixed electronic device.
In this respect, it should be appreciated that one implementation of embodiments of the present invention comprises at least one computer-readable storage medium (i.e., at least one tangible, non-transitory computer-readable medium, e.g., a computer memory (e.g., hard drive, flash memory, processor working memory, etc.), a floppy disk, an optical disc, a magnetic tape, or other tangible, non-transitory computer-readable medium) encoded with a computer program (i.e., a plurality of instructions), which, when executed on one or more processors, performs above-discussed functions of embodiments of the present invention. The computer-readable storage medium can be transportable such that the program stored thereon can be loaded onto any computer resource to implement aspects of the present invention discussed herein. In addition, it should be appreciated that the reference to a computer program which, when executed, performs above-discussed functions, is not limited to an application program running on a host computer. Rather, the term “computer program” is used herein in a generic sense to reference any type of computer code (e.g., software or microcode) that can be employed to program one or more processors to implement above-discussed aspects of the present invention.
The phraseology and terminology used herein is for the purpose of description and should not be regarded as limiting. The use of “including,” “comprising,” “having,” “containing,” “involving,” and variations thereof, is meant to encompass the items listed thereafter and additional items. Use of ordinal terms such as “first,” “second,” “third,” etc., in the claims to modify a claim element does not by itself connote any priority, precedence, or order of one claim element over another or the temporal order in which acts of a method are performed. Ordinal terms are used merely as labels to distinguish one claim element having a certain name from another element having a same name (but for use of the ordinal term), to distinguish the claim elements.
Having described several embodiments of the invention in detail, various modifications and improvements will readily occur to those skilled in the art. Such modifications and improvements are intended to be within the spirit and scope of the invention. Accordingly, the foregoing description is by way of example only, and is not intended as limiting. The invention is limited only as defined by the following claims and the equivalents thereto.