Battery operated devices having a graphical display are increasingly popular. Cell phones, MP3 players, global positioning satellite (GPS) receivers, personal data assistants, and hand-held video games, are a few examples of such devices incorporating a graphical display made up of a two-dimensional matrix of pixels.
As more such devices enter the market, it is increasingly important to provide increased capability and functionality to provide distinguishing characteristics. Unfortunately, many functional improvements require increased computer processing, which adversely affects power consumption and battery life. It would therefore be desirable to provide enhanced functionality without significantly impacting battery performance.
In the field of computer graphical displays, it is known to tile a background image to create a mosaic or textured background over which other text or graphical content or text may be provided. Painting the background image requires that the host central processing unit (CPU) composite the foreground information with the tiled background, and then paint the entire display area with the composite image. This requires a significant number of host CPU cycles to accomplish. Furthermore, if scrolling of the background image is required, the host CPU is forced to recomposite and repaint the image each frame or “n” number of frames as required. Such operations would use significant processor bandwidth and battery power, which could shorten battery life. It would therefore be desirable to provide a capability for static or dynamic tiled background without utilizing significant processor time.
Broadly speaking, the present invention fills these needs by providing a graphics controller for generating a composite image having a main image overlying a tiled background image.
It should be appreciated that the present invention can be implemented in numerous ways, including as a process, an apparatus, a system, a device, or a method. Several inventive embodiments of the present invention are described below.
In one embodiment, a graphics controller for animating an tiled background is provided. The graphics controller includes a host interface for communicating with an external processor and a plurality of registers in communication with the host interface. Logic circuitry is configured to select between tile image data and main image data when passing pixel values to a display controller. The logic responds to values stored in the registers to for positioning the main image within the display.
In another embodiment, a hardware-implemented method for generating a composite image from a main image and a tile image is provided. The method includes receiving tile image data into an image buffer, receiving main image data into the image buffer, receiving register values into a plurality of registers, determining whether a pixel to be painted to a display screen should be taken from the tile image data or the main image data, and passing one of the tile image pixel values from the tile image data to the display screen. The tile image data comprises a plurality of tile image pixel values that define a tile image. The main image data comprises a plurality of main image pixel values defining a main image. The determination of whether the pixel to be painted to the display screen should be taken from the tile image data or the main image data is based at least in part on the register values. When the pixel to be painted should be taken from the tile image data, the tile image pixel value is selected so that multiple copies of the tile image is generated in the display screen from the tile image data. When the pixel to be painted should be taken from the main image data, one of the main image pixel values from main image data is passed to the display screen.
In yet another embodiment, a method for causing a graphical controller to composite a main image over a tiled background image is provided. The method includes writing tile image data to a frame buffer of the graphical controller, writing to registers of the graphical controllers, and writing a value to an enable register. The registers define a display mode and image parameters. The value written to the enable register causes the graphical controller to generate the tiled background image by repeating a tile image defined by the tile image data.
The advantages of the present invention will become apparent from the following detailed description, taken in conjunction with the accompanying drawings, illustrating by way of example the principles of the invention.
The present invention will be readily understood by the following detailed description in conjunction with the accompanying drawings, and like reference numerals designate like structural elements.
In the following description, numerous specific details are set forth in order to provide a thorough understanding of the present invention. However, it will be apparent to those skilled in the art that the present invention may be practiced without some of these specific details. In other instances, well known process operations and implementation details have not been described in detail in order to avoid unnecessarily obscuring the invention.
The timing control signals and data lines between graphics controller 180 and display 200 are shown generally as line 112. These may in fact be several separate address, data and control lines but are shown generally as line 112, which may be referred to as a bus. It should be recognized that such data pathways may represented throughout the figures as a single line. Host CPU 102 performs digital processing operations and communicates with graphics controller 180 and memory 108 over bus 104. In other embodiments, host CPU 102 communicates over several address, data, and control lines.
In addition to the components mentioned above and illustrated in
Host CPU 102 performs digital processing operations and communicates with graphics controller 180. In one embodiment, host CPU 102 comprises an integrated circuit capable of executing instructions retrieved from memory 108. These instructions provide device 100 with functionality when executed on host CPU 102. Host CPU 102 may also be a digital signal processor (DSP) or other processing device.
Memory 108 may be internal or external random-access memory or non-volatile memory. Memory 108 may be non-removable memory such as flash memory or other EEPROM, or magnetic media. Alternatively, memory 108 may take the form of a removable memory card such as ones widely available and sold under such trademarks as “SD Card,” “Compact Flash,” and “Memory Stick.” Memory 108 may also be any other type of machine-readable removable or non-removable media. Memory 108 may be remote from device 100. For example, memory 108 may be connected to device 100 via a communications port (not shown), where a BLUETOOTH® interface or an IEEE 802.11 interface, commonly referred to as “Wi-Fi,” is included. Such an interface may connect imaging device 100 with a host (not shown) for transmitting data to and from the host. If device 100 is a communications device such as a cell phone, it may include a wireless communications link to a carrier, which may then store data in hard drives as a service to customers, or transmit data to another cell phone or email address. Memory 108 may be a combination of memories. For example, it may include both a removable memory card for storing image data, and a non-removable memory for storing data and software executed by host CPU 102.
Display 200 can be any form of display capable of displaying a digital image. In one embodiment, display 200 comprises a liquid crystal display (LCD). However, other types of displays are available or may become available that are capable of displaying an image that may be used in conjunction with device 100.
Main image 140 comprises a matrix of pixels, each of which has a pixel value that determines its color in the same manner as described above with reference to
In
Graphics controller 180 further includes a plurality of registers 190. As will be understood by those skilled in the art, registers 190 may be distributed throughout graphics controller, collected in a single register block, or integrated into frame buffer 184. As used herein, the term, “register” will therefore refer to a memory location containing a value controlling the operation of graphics controller 180. Registers 190 are addressable by host CPU 102, which can load registers 190 with values that control the operation of display interface 192. Table 1 shows exemplary values for registers 190, some of which are illustrated in
In one embodiment, the main image covers the entire display. However, it is also possible that a main display area can be selected so that the main image only covers a portion of the display. In this embodiment, values X0 and Y0 represent starting positions of the upper left corner of the main image 140 within display screen 120. The register values MW and MH identify the width and height, respectively, of main image 140. In one embodiment, the upper left corner of the display is identified as the origin, with the x- and y-coordinate values increasing to the right and down, respectively. However, any coordinate system can be implemented. Register values DW and DH identify the width and height of a display region. In one embodiment, register values DW and DH may hard-coded into display interface 192 or set by hard wiring output pins (not shown) of graphics controller 180 and therefore may not be programmable. In other embodiments, DW and DH may be programmable to enable display interface 192 to operate with a variety of different size displays or in different display modes.
Register values TW and TH identify the width and height, respectively, of tile image 150. XOFFSET and YOFFSET define the offset amount of the tiled background as described above with reference to
It should be noted that other register values may be provided as would occur to those skilled in the art having the benefit of the present disclosure. In one embodiment, registers are provided for determining the format of the image data, i.e., the bit depth and encoding scheme. Registers can also be provided for identifying the starting location of the image data within frame buffer 184. Other registers may be provided to enable enhancements to the basic image compositing features described above. For example, a tile pattern register may be used to define the manner of tiling. For example, a value can be used to define an additional offset to each row or column. In this case, if the offset value is “2” then the second row will be offset by two more than the first row, the third row will be offset by two more than the second row, and so on. A negative value can denote a column offset instead of a row offset. The background tile animation may also be further enhanced using additional register values. For example, various patterns of movement such as circular, wavy, or random, can be hard-wired into display interface 192 and enabled using one or more additional register values in a manner that will be apparent to those skilled in the art having the benefit of the present disclosure.
As mentioned previously, image data may be stored in a predetermined format, or in one of several predetermined formats. Depending upon the implementation, the image data stored in frame buffer 184 may be required to be converted into a format understandable by display 200 (
Logic 262 generates a select signal 269 to determine whether the next tile pixel value 252 or the next main pixel value 254 is passed to display controller 196 using multiplexer 270. The selection is made based on the coordinates of the next pixel to be painted to the display screen and/or the color of the corresponding main image pixel as described below. This logic can be implemented in many different ways without departing from the spirit and scope of the present invention as defined in the claims appended hereto. In one embodiment, the current position (X, Y) of the next pixel to be painted to display controller 196, stored in internal register 260 is compared with the position and size of the main image 258 using compare logic 266. If the current pixel (X, Y) is within the main image area, then a “1” value is output from compare logic 266, other wise a “0” value is output from compare logic 266. Compare logic 264 compares the transparent color value retrieved from registers 190 to next main pixel value 254, and outputs a “1” if the next main pixel value matches the transparent pixel value and a “0” if they are not matched. The outputs from compare logics 264, 266 are combined using logic gates 268 to generate select signal 269 which is input into multiplexer 270, which passes one of the tile pixel values or main pixel values, depending on the select signal. Those skilled in the art will recognize that other features not shown may be included. For example, in one embodiment, logic 262 compares a register containing an enable/disable value as described above with reference to Table 1 for disabling the tiled background generation.
In operation 358, it is determined whether there is any main image data for coordinates (X, Y). This is determined by comparing the coordinates (X, Y) with the size and position of the main image to determine whether the current coordinates fall within the main image area of display screen 120 (
From operations 366 and 364, the procedure flows to operation 368, wherein the current coordinate pairs (X, Y) and (XT, YT) are updated. For X, Y, the value of X is incremented until it exceeds the width of display screen 120. When it exceeds the width of the display screen, it reverts to zero and Y is incremented by one. This continues until the bottom right pixel is addressed, whereupon X and Y are both reset to zero to begin a new frame at the top left corner of display screen 120. Likewise, (XT, YT) are incremented in a similar manner, except YT is incremented when Y is incremented, and XT is reset to the XOFFSET AND YT is reset to YOFFSET each time XT and YT exceed the width and height, respectively, of the tile image. After incrementing the values, the procedure flows to operation 370, wherein it is determined whether the frame is complete. If the frame is not complete, then the procedure returns to operation 358. If the frame is complete, then the procedure flows to operation 372, wherein tile offset values XOFFSET and YOFFSET are updated according to ΔX and ΔY values, respectively, as stored in registers 190. After each complete frame, the tile offset values for the time image may be updated to create the animation effect of a scrolling background. If ΔX and ΔY are both zero, then no scrolling or updating of the tile offset values will occur. Custom animations, e.g., to provide a circular or wavy motion to the tiled background image can be achieved by setting the offset values according to a table which may be hard-wired or programmed by the host CPU. After any updating of the tile offset values in operation 370, the procedure returns to operation 358 to begin painting the next frame.
It will be recognized by those skilled in the art that the procedures outlined above with reference to
Although the foregoing invention has been described in some detail for purposes of clarity of understanding, it will be apparent that certain changes and modifications may be practiced within the scope of the appended claims. Accordingly, the present embodiments are to be considered as illustrative and not restrictive, and the invention is not to be limited to the details given herein, but may be modified within the scope and equivalents of the appended claims.