An application's User Interface (UI) may include icons. Icons are images displayed in the UI to represent an object that can be manipulated by the user. Icons serve as visual mnemonics and may allow the user to control certain computer actions without having to use keyboard commands. Current methods fail to scale icons adequately at large sizes as well as small sizes.
The following presents a simplified summary of the disclosure in order to provide a basic understanding to the reader. This summary is not an extensive overview of the disclosure and it does not identify key/critical elements of the invention or delineate the scope of the invention. Its sole purpose is to present some concepts disclosed herein in a simplified form as a prelude to the more detailed description that is presented later.
Embodiments of the invention provide scaling of images, such as icons, using bitmaps and vector images. An image is rendered using a bitmap or vectoring depending on the requested display size of the image. In one embodiment, an icon may be re-colored to match an application coloring scheme.
Many of the attendant features will be more readily appreciated as the same become better understood by reference to the following detailed description considered in connection with the accompanying drawings.
Like reference numerals are used to designate like parts in the accompanying drawings.
The detailed description provided below in connection with the appended drawings is intended as a description of the present examples and is not intended to represent the only forms in which the present examples may be constructed or utilized. The description sets forth the functions of the examples and the sequence of steps for constructing and operating the examples. However, the same or equivalent functions and sequences may be accomplished by different examples.
Embodiments of the invention allow images to look equally sharp in small sizes as well as large sizes. Embodiments of the invention are described below in the context of icons displayed in an application User Interface (UI). However, one skilled in the art having the benefit of this description will appreciate that an icon is only one type of image that may be used with embodiments of the invention.
Icons may be rendered using bitmap images or vector images. Bitmap images are made up of pixels in a grid. A computing device may have stored bitmaps in different sizes for a single icon. For example, an icon may have associated bitmaps in sizes (i.e., resolutions) such as 8×8 pixels, 16×16 pixels, 24×24 pixels, 32×32 pixels, etc. When the icon is to be displayed in a UI, the appropriate bitmap for the icon display size is selected and rendered in the UI.
To render an icon at sizes other than the icon bitmap sizes, bitmap scaling may be used. However, bitmap scaling makes icons fuzzy at large sizes. In
Vector images include scalable objects defined by mathematical equations. The scalable objects are sized according to parameters placed into the mathematical equations and, thus, are resolution independent (in contrast to bitmaps). Vector imaging may generate a smooth and sharp icon at certain sizes and are much smaller to store than large bitmap images. But at small sizes, vector images may have problems as well; lines may straddle pixels, the image may be poorly aliased and details can resolve on top of each other. Also, at small sizes, vector representations often use more storage than bitmap representations and may take longer to draw. At small sizes, icons produced by vectoring can be cleaned up manually by a human during development of an application. The small size icons can then be saved as bitmaps for use in rendering the icon in the application UI.
In
One solution may be to create a bitmap image specifically for each size including large sizes. However, storing large bitmaps for numerous icons may use a lot of system storage. Also, in 3D graphics, mipmapping is a technique that may be used to scale between several levels of resolution of a texture. Mipmapping may also be used to scale between bitmap resolutions. However, mipmapping is computationally expensive and may be overkill for an icon image. An icon usually has an abstracted appearance; it is desired that the icon is smooth and sharp, but detailed textures are often not needed.
Turning to
Proceeding to decision block 304, the logic determines if the requested icon size is at a bitmap threshold. In one embodiment, the bitmap threshold is set at the largest icon size that may be displayed with a pre-rendered bitmap. In another embodiment, the bitmap threshold is proportional to the size of the largest bitmap. For example, the bitmap threshold may be set to a size 0-10% larger than the largest bitmap for the icon. In this example, the largest bitmap may be scaled up in size to the bitmap threshold when rendered. The size of the largest bitmap may be measured using pixels per inch (ppi), total number of pixels in the bitmap, bitmap file size, or the like.
If the requested icon size is greater than the bitmap threshold at decision block 304, then the logic proceeds to block 306 to render the icon using scaling of the vector representation of the icon. In one embodiment, the scaling includes arbitrary scaling.
If the answer to decision block 304 is no, then the logic proceeds to block 308 to render the icon by scaling of a pre-defined bitmap. In one embodiment, the logic determines the bitmap that is closest in size to the requested icon size and scales this bitmap accordingly.
In one embodiment, the bitmap threshold in decision block 304 may be modified by a user. In another embodiment, the bitmap threshold may be set based at least on part on the capabilities of the computing device used to render the icon. The logic of flowchart 300 may determine the processor speed, memory size, graphics card capabilities and/or other resource capabilities of the computing device. This capabilities information may be used to set the bitmap threshold for the particular computing device. For example, if the computing device has a low performance graphics card, then the bitmap threshold may be raised to use bitmaps for larger sizes since vector imaging is computationally more expensive than bitmap scaling. Using vectoring to render the application icons may degrade system performance beyond acceptable limits.
In another embodiment of the invention, at least a portion of the icon may be re-colored to match the color scheme of the application UI when the icon is rendered using a bitmap. For example, an application UI may use a blue-green color scheme. When the icon is rendered in the UI, all red colored pixels in the icon are changed to the color of text in the application UI (such as dark green in this example). Thus, a single set of bitmaps for an icon may be stored and then the bitmaps re-colored when rendered to match the UI coloring scheme. Storage space does not have to be wasted storing numerous sets of bitmaps for an icon that have already been colored in various schemes in anticipation of the application's UI color scheme. It will be appreciated that when the icon is rendered using vectoring, the color scheme of the icon is generated to match the application color scheme.
Turning to
At decision block 404, tool 400 determines if the requested icon size is at the bitmap threshold. If the answer is no, then the tool uses bitmap engine 406 to render the icon image. If the answer to decision block 404 is yes, then tool 400 uses vector engine 408 to render the icon image.
As shown at 410, tool 400 outputs information for rendering the icon at the requested size. This information may then be used to render the icon in an application UI at the requested size.
Turning to
It will be appreciated that workspace zoom changes the size of the UI and not an application document (such as project 512) being displayed in the UI. In the embodiment of
Embodiments of the invention provide scaling of images using bitmaps and vector images. A bitmap is used to render an image at small sizes and a scalable vector version of the image is used for image sizes above the pre-defined bitmaps. Embodiments herein employ the advantages of bitmaps for small size images and the advantages of vectoring for large size images.
Although not required, embodiments of the invention are described in the general context of “computer readable instructions” being executed by one or more computing devices. Computer readable instructions may be distributed via computer readable media (discussed below). Computer readable instructions may be implemented as program modules, such as functions, objects, Application Programming Interfaces (APIs), data structures, and the like, that perform particular tasks or implement particular abstract data types. Typically, the functionality of the computer readable instructions may be combined or distributed as desired in various environments.
In other embodiments, device 800 may include additional features and/or functionality. For example, device 800 may also include additional storage (e.g., removable and/or non-removable) including, but not limited to, magnetic storage, optical storage, and the like. Such additional storage is illustrated in
The term “computer readable media” as used herein includes computer storage media. Computer storage media includes volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions or other data. Memory 804 and storage 808 are examples of computer storage media. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, Digital Versatile Disks (DVDs) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by device 800. Any such computer storage media may be part of device 800.
Device 800 may also include communication connection(s) 812 that allow device 800 to communicate with other devices. Communication connection(s) 812 may include, but is not limited to, a modem, a Network Interface Card (NIC), an integrated network interface, a radio frequency transmitter/receiver, an infrared port, a USB connection, or other interfaces for connecting computing device 800 to other computing devices. Communication connection(s) 812 may include a wired connection or a wireless connection. Communication connection(s) 812 may transmit and/or receive communication media.
The term “computer readable media” may include communication media. Communication media typically embodies computer readable instructions or other data in a “modulated data signal” such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, radio frequency, infrared, Near Field Communication (NFC), and other wireless media.
Device 800 may include input device(s) 814 such as keyboard, mouse, pen, voice input device, touch input device, infrared cameras, video input devices, and/or any other input device. Output device(s) 816 such as one or more displays, speakers, printers, and/or any other output device may also be included in device 800. Input device(s) 814 and output device(s) 816 may be connected to device 800 via a wired connection, wireless connection, or any combination thereof. In one embodiment, an input device or an output device from another computing device may be used as input device(s) 814 or output device(s) 816 for computing device 800.
Components of computing device 800 may be connected by various interconnects, such as a bus. Such interconnects may include a Peripheral Component Interconnect (PCI), such as PCI Express, a Universal Serial Bus (USB), firewire (IEEE 1394), an optical bus structure, and the like. In another embodiment, components of computing device 800 may be interconnected by a network. For example, memory 804 may be comprised of multiple physical memory units located in different physical locations interconnected by a network.
In the description and claims, the term “coupled” and its derivatives may be used. “Coupled” may mean that two or more elements are in contact (physically, electrically, magnetically, optically, etc.). “Coupled” may also mean two or more elements are not in contact with each other, but still cooperate or interact with each other (for example, communicatively coupled).
Those skilled in the art will realize that storage devices utilized to store computer readable instructions may be distributed across a network. For example, a computing device 830 accessible via network 820 may store computer readable instructions to implement one or more embodiments of the invention. Computing device 800 may access computing device 830 and download a part or all of the computer readable instructions for execution. Alternatively, computing device 800 may download pieces of the computer readable instructions, as needed, or some instructions may be executed at computing device 800 and some at computing device 830. Those skilled in the art will also realize that all or a portion of the computer readable instructions may be carried out by a dedicated circuit, such as a Digital Signal Processor (DSP), programmable logic array, and the like.
Various operations of embodiments of the present invention are described herein. In one embodiment, one or more of the operations described may constitute computer readable instructions stored on one or more computer readable media, which if executed by a computing device, will cause the computing device to perform the operations described. The order in which some or all of the operations are described should not be construed as to imply that these operations are necessarily order dependent. Alternative ordering will be appreciated by one skilled in the art having the benefit of this description. Further, it will be understood that not all operations are necessarily present in each embodiment of the invention.
The above description of embodiments of the invention, including what is described in the Abstract, is not intended to be exhaustive or to limit the embodiments to the precise forms disclosed. While specific embodiments and examples of the invention are described herein for illustrative purposes, various equivalent modifications are possible, as those skilled in the relevant art will recognize in light of the above detailed description. The terms used in the following claims should not be construed to limit the invention to the specific embodiments disclosed in the specification. Rather, the following claims are to be construed in accordance with established doctrines of claim interpretation.