Computers provide services to users in a growing number of fields, including personal programs and office programs. Such programs can include text processing programs, image processing programs, spread sheet programs, personal data services, e-mail programs, and home banking programs.
With the availability of video displays of increasing quality for data processing systems, graphics and display contents have increased in detail. A video display screen image presented to a user when executing a program, may be partitioned into a number of individual fields, where each field is suitable for displaying various graphic elements, numbers, signs, and letters.
For example, in a text editing program or an Internet program, it can be required to display text elements in a variety of different fonts on a video display, and it should be possible to arbitrarily scale the various text elements. This also applies when displaying other objects on a video display. The representation of an object on a video display may have high quality, irrespective of a size or position of the object.
Typically, a video display screen of a data processing system is divided into a large number of pixels, where each pixel represents a point, square, or rectangle on the video display screen with a defined size. Each pixel may be individually driven to display image information, e.g., color hue and saturation. Color hue refers to an object's gradation of color, such as red, blue, or green. Saturation refers to the color's chromatic purity, that is its freedom from dilution with the color white. A plurality of pixels that are viewed together from a certain distance may then generate a visual representation of an object on the video display.
If it is assumed that a letter is to be displayed in black onto a white background, an individual pixel on the video display will either be colored black or white, depending on the position of the letter. This may work as desired if the boundary of the letter or object lies on the border line between two pixels, because in this case, the transition from black to white represents the object boundary, leading to a clear display of the object. However, an exact representation of the object on the screen is not possible if the object boundary does not lie on the border line between two pixels, for example, if the border of the object obliquely cuts through a number of pixels. In this case, the video display driver will represent the entire pixel in black or in white, even though a part of the pixel should be displayed in white and another part of the pixel should be displayed black.
As a result, the object representation on the video display does not correctly reflect the original object, i.e., the object boundaries become jagged or frayed instead of smooth. For example, if an oblique line, for example of the letter “A”, is to be displayed on a screen, the oblique part of the “A” will appear on the display as having step-like boundaries, which may impair recognition of the displayed character.
Even though high resolution displays having a large number of pixels are available, for example allowing a resolution of 1024 by 800 pixels, if small objects are to be displayed, an object representation on the display may become distorted when the object size or the size of a detail of the object lies within the range of the size of a pixel.
Thus, if for example a text document with small fonts is to be displayed on a screen, the contours of the individual letters may become distorted when the size of the letters account for a relatively small number of pixels. The letters may become further distorted when the letters are displayed over a complex background image.
In this case, in order to improve the appearance of the displayed object, pixels at the boundary of the object could be calculated according to an algorithm, such as an antialiasing algorithm, to include both object and background information. The thus computed pixels should reduce the distortion of the object boundaries to a viewer. In this case, however, a drawing program is typically used that resides on a single data processing device as a single program or module. The drawing program is responsible for drawing the object and providing the background for the object, i.e., a background color or image, onto which the object is drawn.
In a growing number of fields, however, programs do not reside as a single module on a single data processing device. To the contrary, an increasing number of programs are distributed programs executed on a plurality of data processing devices. Also, programs executed on a single data processing device can be partitioned into a plurality of modules. In this case, a module responsible for performing a drawing operation for an object may not be aware of background information underneath the object, and therefore providing a smooth transition between object and background is typically not possible. Also, in typical programs, those modules handling background information of a display screen are physically separate from modules providing drawing operations of objects. These modules may either be at different locations in a single data processing device, or, they may reside on different data processing devices, communicating via a data link, such as a computer network.
For example, consider a case of a data processing system that has an application server with a module for performing drawing operations and a client device with a video display, where an object is to be displayed. When the application server needs to perform an antialiasing operation for the object and the background on which the object is to be displayed, the application server typically first requests the display screen background information from the client. The client retrieves the background information from, for example, the client video display frame buffer and transmits the background information to the application server. Then, the application server performs the antialiasing operation. When the antialiasing operation is completed, the application server transmits the antialiased image of the object merged with the retrieved background information back to the client for output to the display screen. Therefore, three communications take place between the application server and the client to display the object on the client video display. This results in costly communication between the application server and the client device each time an object is to be displayed.
Based on the above-described problems of drawing operations, it is therefore desirable to improve graphics drawing systems.