This application shares some subject matter with co-owned U.S. patent application Ser. No. 10/922,580, filed Aug. 20, 2004, entitled “Form Skin And Design Time WYSIWYG For .Net Compact Framework” and is incorporated herein by reference in its entirety.
The invention relates to the field of computer programming. More specifically, the invention relates to visual programming environments for creating software designed to run on target digital devices.
An increasing number of portable computer devices are available in the market. These devices include handheld or pocket sized computers, phones and personal digital assistants of various form factors and capabilities. As the computing power and memory capabilities of the handheld devices increase, users are demanding access to more powerful software applications.
Programmers attempting to program complex software applications quickly find that traditional visual software development systems are unsuitable for programming applications to run on the myriad of devices available. Specifically, given the multitude of variations of interfaces, screen sizes, and resolutions among the handheld devices, it can be very difficult for a programmer to ensure that a particular chosen graphical user interface (GUI) of the handheld will appear and work correctly on multiple devices. For example, the display and functionality of the target device is often not well reflected in the capabilities of the development system.
Typically, programmers of handheld devices alternate between first programming on a desktop development system and then running the newly developed software on an emulator of the handheld device, or the actual device, to see if the handheld GUI operates as expected. This can be time consuming and inefficient, especially if a programmer wishes to port the application to a wide variety of portable devices. In one aspect of programming, the typical development environment may allow a handheld device programmer to generate text on a development system with low resolution display. But, when object code for that text is displayed on a high resolution display of a handheld device, the display is at least partially unusable because of the display and programming differences between the development system and the target device.
a depicts a display of a handheld digital device as rendered on a development system. In the
a includes a display 100 of a handheld digital device screen 110 having a softkey menu bar 150 and a user defined text box 120 at an anchor location of 50×50 pixels 130. The size of the text box 120 is 100×50 pixels. The development system display 100 shows that four characters 140 are displayed in the text box 120. It is assumed that the development system display has a lower resolution than the target digital device. If no accommodation is made for the high resolution display during development of display software for the handheld device, then an error in the final display for the actual handheld digital device can take place.
b displays the prior art error that can result from a failure to accommodate the display differences between a low resolution development system display and a high resolution target device realization.
The text displayed 140′ on the high resolution display of the handheld digital device appears cut off and only partially present on the high resolution display. This is due to the reduced size of the text box. Clearly, if the development system did not automatically accommodate for the differences between a development system resolution and a target device resolution, then errors in the display can occur forcing iterations of development to reach a desired display for a target high resolution handheld device.
Thus, there is a need for a “what you see is what you get” (WYSIWYG) development system for a handheld device which properly simulates the text that a high resolution handheld digital device can produce. The present invention addresses the aforementioned needs and solves them with additional advantages as expressed herein.
An aspect of the invention includes a development system that can produce a real time view of a target digital device such that a developer can perceive what the actual device will look and feel like when operating the handheld device with a new application. In order to accomplish this, a development system displays an image form of the targeted handheld digital device and manipulates the development system display of the handheld device to indicate text sized proportionally to the image form so that a high resolution display may be simulated. Output code for the developed text is generated such that the resulting display on the handheld device is similar in proportion to that seen by the developer on the development system. In a further aspect of the invention, developed text can be defined addressing one resolution of one target device and then changed to accommodate either a different resolution on the same device or a different target device thus allowing design re-use.
The foregoing summary, as well as the following detailed description of exemplary embodiments, is better understood when read in conjunction with the appended drawings. For the purpose of illustrating embodiments of the invention, there is shown in the drawings exemplary constructions of the invention; however, the invention is not limited to the specific methods and instrumentalities disclosed. In the drawings:
a is an exemplary portion of a target device as seen on a low resolution development system display;
b is a prior art result of generating a high resolution target display using a low resolution development system display;
a is an exemplary portion of a target device as seen on a low resolution development system display;
b is a high resolution target device display result having aspects of the invention;
a is an example screen shot showing an image body of a target device on a development system;
b is an example screen shot of a development system targeting a high resolution device showing aspects of the invention;
Overview
In one embodiment of the invention, a target digital device having a high resolution display is simulated a development system having a low resolution display. The invention may also be embodied in an application where the target digital device has a low resolution compared to the resolution of the display of the development system. The development system is used by handheld device developers for the generation of text and new applications for handheld digital devices. One advantage of the present invention is the ability of the user/developer to view the handheld device in a manner that depicts a high resolution aspect of the target device. This high resolution simulation using a low resolution display, or the reverse, allows the developer to immediately see how the target device will display the development text or application and thus saves both total development and debug time. Although examples of target digital devices included herein include handheld digital devices, the present invention is suitable for any embedded device application having a display that is different in resolution from the respective development system. Examples of such embedded device applications include, but are not limited to, non-handheld devices such as airline kiosks, gas pumps, cash registers, telephone or other telecommunications system displays.
a is a depiction of a low resolution development system display 200. In this example, the display of the development system is 240×320 pixels. The display 200 includes a simulation of the display screen of a handheld digital device 210 having a softkey menu bar 250. A text box 220 is shown having text 240 inserted. An anchor 230 for the text box 220 is located at 50×50 pixels. It is assumed that the designer located the text box 220 to be specifically located at a position in the display 210 to accommodate aesthetic and other elements of the display design. It is desirable to have the high resolution display of the target digital device have the text, the text box size, and the relative geometric position of the text box preserved from the simulated development system display to the final high resolution display.
b depicts the corresponding high resolution display 210′ resulting from the development system representation of the display 210 using aspects of the current invention. In this example, the resolution of the high resolution display is 480×640 pixels. The high resolution display has softkey menu 250′ and a text box 220′ that has double the pixel size as the simulation on the development system in
In order to achieve the desirable “what you see is what you get” result shown in
One aspect of the current invention is that after the resolution or form factor of the handheld digital device is selected, the form factor may be used to re-scale the display of the image form of the handheld digital device to simulate a high resolution display on a lower resolution development system.
A conversion algorithm is used to determine the approximate font size to use for the development system display in the high resolution simulation. The conversion algorithm is:
development display font size=(target font size)×(target device resolution DPI/development display DPI)
The development display font is the font that the low resolution display of the development system should display for the simulation of a high resolution device. The target font is the desired font to be displayed on the high resolution screen of the target device. The high resolution DPI is the linear pixel density, measured in DPI, that the target device will display. The development system display DPI is the linear pixel density of the low resolution development system display. The algorithm allows a font size to be calculated that corresponds to a form factor (size) of an image form (image of the target device). This is done so that a developer may view the handheld device image form in a manner that renders a proportionally sized font simulating a high resolution display.
A form factor may be defined as a device type and may have the following properties:
Each device may have it's own form factor or a single device may have multiple form factors corresponding to different levels of resolution. Example of form factors for devices include:
In one aspect of the invention, a selected target device or a form factor for the target device may be changed and text that was developed for one target device or form factor may be reused for another target device or form factor. Software structure support for the form factor may be found in the following XML schema (XSL) code segments. Those of skill in the art will recognize that the schemas defined below are exemplary and as such are non-limiting.
Platform Level Property
Create a Form Factors Container under Each Platform
Pocket PC platform example:
In one aspect of the invention, the development system display resolution may be either higher or lower than the display resolution of the target device. Those of skill in the art will recognize that either a higher or lower display resolution difference between the development system and the target device is possible with the current invention.
Assuming a high resolution target device is selected, the development system then adjusts the image form of the target device (step 440) to accommodate the rendering of a scaled display for the high resolution interface of the target device. A proportional font size for the development system display is calculated (step 450) which allows text to be displayed in proportion to the image body of the target device. The proportionality of the two being such that the development system may simulate a high resolution display of the target device on the low resolution development system display. Thus, the developer may gain an appreciation of the appearance of final text as it will appear on the target device.
The developer may then generate text for the target device (step 460) while appreciating how the high resolution device will appear. Code may be generated or serialized, possibly as a result of a save action, that will be used by the target device. The font size used during the serialization is a font size that is the program equivalent of the proportional font size used to simulate the development system display. Thus the programmed target device code will appear consistent in proportion to the development system display of target image form and displayed font. In one embodiment, a font size change is implemented by property shadowing. During development time, the font displayed is different in size from the one shown in the property browser. The shadowed font size is incorporated into the control code of the target device when the development code is serialized.
After or during the step of generating text (step 460), the development system user may optionally change (step 480) either the target digital device or the form factor of the target device. Changing the target device allows the programmer to use the text definitions that she created for a new target device. Changing the form factor allows a programmer to select a different display resolution within a device type. Either type of change allows text definition reuse between display resolutions on the same device or text definitions between different devices. These options allow for text design reuse.
Exemplary Computing Device
Although not required, embodiments of the invention can also be implemented via an operating system, for use by a developer of services for a device or object, and/or included within application software. Software may be described in the general context of computer-executable instructions, such as program modules, being executed by one or more computers, such as client workstations, servers or other devices. Generally, program modules include routines, programs, objects, components, data structures and the like that perform particular tasks or implement particular abstract data types. Typically, the functionality of the program modules may be combined or distributed as desired in various embodiments. Moreover, those skilled in the art will appreciate that various embodiments of the invention may be practiced with other computer configurations. Other well known computing systems, environments, and/or configurations that may be suitable for use include, but are not limited to, personal computers (PCs), automated teller machines, server computers, hand-held or laptop devices, multi-processor systems, microprocessor-based systems, programmable consumer electronics, network PCs, appliances, lights, environmental control elements, minicomputers, mainframe computers and the like. Embodiments of the invention may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network/bus or other data transmission medium. In a distributed computing environment, program modules may be located in both local and remote computer storage media including memory storage devices and client nodes may in turn behave as server nodes.
With reference to
Computer system 510 typically includes a variety of computer readable media. Computer readable media can be any available media that can be accessed by computer system 510 and includes both volatile and nonvolatile media, removable and non-removable media. By way of example, and not limitation, computer readable media may comprise computer storage media and communication 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, data structures, program modules or other data. Computer storage media includes, but is not limited to, Random Access Memory (RAM), Read Only Memory (ROM), Electrically Erasable Programmable Read Only Memory (EEPROM), flash memory or other memory technology, Compact Disk Read Only Memory (CDROM), compact disc-rewritable (CDRW), digital versatile disks (DVD) or other optical disk 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 accessed by computer system 510. Communication media typically embodies computer readable instructions, data structures, program modules 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, RF, infrared and other wireless media. Combinations of any of the above should also be included within the scope of computer readable media.
The system memory 530 includes computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) 531 and random access memory (RAM) 532. A basic input/output system 533 (BIOS), containing the basic routines that help to transfer information between elements within computer system 510, such as during start-up, is typically stored in ROM 531. RAM 532 typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit 520. By way of example, and not limitation,
The computer system 510 may also include other removable/non-removable, volatile/nonvolatile computer storage media. By way of example only,
The drives and their associated computer storage media discussed above and illustrated in
The computer system 510 may operate in a networked or distributed environment using logical connections to one or more remote computers, such as a remote computer 580. The remote computer 580 may be a personal computer, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to the computer system 510, although only a memory storage device 581 has been illustrated in
When used in a LAN networking environment, the computer system 510 is connected to the LAN 571 through a network interface or adapter 570. When used in a WAN networking environment, the computer system 510 typically includes a modem 572 or other means for establishing communications over the WAN 573, such as the Internet. The modem 572, which may be internal or external, may be connected to the system bus 521 via the user input interface 560, or other appropriate mechanism. In a networked environment, program modules depicted relative to the computer system 510, or portions thereof, may be stored in the remote memory storage device. By way of example, and not limitation,
Various distributed computing frameworks have been and are being developed in light of the convergence of personal computing and the Internet. Individuals and business users alike are provided with a seamlessly interoperable and Web-enabled interface for applications and computing devices, making computing activities increasingly Web browser or network-oriented.
For example, MICROSOFT®'s .NET™ platform, available from Microsoft Corporation, includes servers, building-block services, such as Web-based data storage, and downloadable device software. While exemplary embodiments herein are described in connection with software residing on a computing device, one or more portions of an embodiment of the invention may also be implemented via an operating system, application programming interface (API) or a “middle man” object between any of a coprocessor, a display device and a requesting object, such that operation may be performed by, supported in or accessed via all of .NET™'s languages and services, and in other distributed computing frameworks as well.
As mentioned above, while exemplary embodiments of the invention have been described in connection with various computing devices and network architectures, the underlying concepts may be applied to any computing device or system in which it is desirable to implement a high resolution handheld device simulation. Thus, the methods and systems described in connection with embodiments of the present invention may be applied to a variety of applications and devices. While exemplary programming languages, names and examples are chosen herein as representative of various choices, these languages, names and examples are not intended to be limiting. One of ordinary skill in the art will appreciate that there are numerous ways of providing object code that achieves the same, similar or equivalent systems and methods achieved by embodiments of the invention.
The various techniques described herein may be implemented in connection with hardware or software or, where appropriate, with a combination of both. Thus, the methods and apparatus of the invention, or certain aspects or portions thereof, may take the form of program code (i.e., instructions) embodied in tangible media, such as floppy diskettes, CD-ROMs, hard drives, or any other machine-readable storage medium, wherein, when the program code is loaded into and executed by a machine, such as a computer, the machine becomes an apparatus for practicing the invention. In the case of program code execution on programmable computers, the computing device will generally include a processor, a storage medium readable by the processor (including volatile and non-volatile memory and/or storage elements), at least one input device, and at least one output device. One or more programs that may utilize the signal processing services of an embodiment of the present invention, e.g., through the use of a data processing API or the like, are preferably implemented in a high level procedural or object oriented programming language to communicate with a computer. However, the program(s) can be implemented in assembly or machine language, if desired. In any case, the language may be a compiled or interpreted language, and combined with hardware implementations.
While aspects of the present invention has been described in connection with the preferred embodiments of the various figures, it is to be understood that other similar embodiments may be used or modifications and additions may be made to the described embodiment for performing the same function of the present invention without deviating therefrom. Furthermore, it should be emphasized that a variety of computer platforms, including handheld device operating systems and other application specific operating systems are contemplated, especially as the number of wireless networked devices continues to proliferate. Therefore, the claimed invention should not be limited to any single embodiment, but rather should be construed in breadth and scope in accordance with the appended claims.
Number | Name | Date | Kind |
---|---|---|---|
4631691 | Pica | Dec 1986 | A |
5426594 | Wright et al. | Jun 1995 | A |
6232966 | Kurlander | May 2001 | B1 |
7222306 | Kaasila et al. | May 2007 | B2 |
7385615 | Vale et al. | Jun 2008 | B2 |
20020087300 | Patwari | Jul 2002 | A1 |
20020089549 | Munro et al. | Jul 2002 | A1 |
20020149588 | Babcock | Oct 2002 | A1 |
20040027326 | Hays et al. | Feb 2004 | A1 |
20040027377 | Hays et al. | Feb 2004 | A1 |
20040027378 | Hays et al. | Feb 2004 | A1 |
20040122650 | Masushige | Jun 2004 | A1 |
20040177323 | Kaasila | Sep 2004 | A1 |
20050012760 | Yamamoto | Jan 2005 | A1 |
Number | Date | Country | |
---|---|---|---|
20060174217 A1 | Aug 2006 | US |