WO2001044983A1 - System and method for efficient layout of a display table - Google Patents

System and method for efficient layout of a display table Download PDF

Info

Publication number
WO2001044983A1
WO2001044983A1 PCT/US2000/033968 US0033968W WO0144983A1 WO 2001044983 A1 WO2001044983 A1 WO 2001044983A1 US 0033968 W US0033968 W US 0033968W WO 0144983 A1 WO0144983 A1 WO 0144983A1
Authority
WO
WIPO (PCT)
Prior art keywords
wherem
display table
cell
column
display
Prior art date
Application number
PCT/US2000/033968
Other languages
French (fr)
Inventor
Kevin Leduc
Original Assignee
Sun Microsystems, Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sun Microsystems, Inc. filed Critical Sun Microsystems, Inc.
Priority to EP00986403A priority Critical patent/EP1238346A1/en
Priority to JP2001546005A priority patent/JP2003517685A/en
Priority to AU22647/01A priority patent/AU2264701A/en
Publication of WO2001044983A1 publication Critical patent/WO2001044983A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • G06F40/177Editing, e.g. inserting or deleting of tables; using ruled lines

Definitions

  • TITLE SYSTEM AND METHOD FOR EFFICIENT LAYOUT OF A DISPLAY TABLE
  • the present invention relates to the field of display tables, such as HTML tables More particularly, the invention relates to a system and method for efficient layout of a display table
  • Display tables are commonly used m many types of software applications
  • a display table may comprise rows and columns that define cells
  • Each of the cells may comprise some type of cell content
  • HTML hypertext markup language
  • many current web page documents include hypertext markup language (HTML) tables with cells that may mclude content such as text or images
  • word processor applications often enable authors to create tables for display in a document.
  • Display tables are typically described in some format that a software application must process in order to display the table correctly.
  • a markup language table may be described m a text format by various markup language tags that are processed and used to create data structures representmg the table.
  • many factors may be involved in correctly determining the dimensions for the rows and columns of the table, such as the desired dimensions indicated by the table author, the available display device area for displaying the table, the minimum cell size necessary to display the content of each cell, the number of columns or rows spanned by particular cells, the determination of row and column dimensions for any nested tables included m the table, etc.
  • the process of determining the row and column dimensions for a table, assigning coordmates to the table, and positioning the cell content within each cell of the table is referred to herem as "laying out" the table.
  • an efficient table layout method may be difficult.
  • One source of difficulty lies m dealing with nested tables, i.e., a table with one or more cells comprising another table. If the table layout method is not designed carefully, the method may scale exponentially with increasing table nesting complexity.
  • Small footprint devices include handheld computers, personal data assistants (PDAs'!, cellular phones, global positioning system (GPS) receivers, game consoles, set-top boxes, and many more such devices Small footprint devices are becoming increasingly powerful and enabled to run software applications or services historically associated with general computing devices, such as desktop computers Small footprmt devices may have very strong resource constraints, such as the amount of memory and the processmg power available Thus, it is often necessary or desirable to design optimized software that performs well in the environment of a small footprmt device Providmg an efficient layout method for a display table is one example of a software optimization that may significantly benefit small footprmt device users For example, many small footprmt devices are now able to run web browser applications, which often process web pages comprising markup language tables, such as HTML tables, as described above
  • the problems outlined above may m large part be solved by a system and method for efficient layout of a display table, as desc ⁇ bed herem
  • a desc ⁇ ption of a table such as a markup language desc ⁇ ption
  • the table desc ⁇ ption may be parsed and data structures representmg the table desc ⁇ ption may be created
  • the table descnption data structures may then be "inspected", m order to determine the possible size of the table
  • the process of table inspection may mvolve determining the minimum and maximum possible widths for each table cell, and then determining the minimum and maximum possible widths for each table column, based on the mdividual cell values
  • the minimum and maximum possible table widths may then be calculated from the possible table column widths
  • the table may then be "apportioned", based on the results of the inspection step That is, final dimensions may be assigned to the table
  • the process of table apportioning may mvolve assigning a width to each table column and a height to each table row
  • the table coordmates may then be "normalized", which may mvolve converting relative table coordmates mto absolute coordmates
  • Table layout optimizations are descnbed, e g , m order to efficiently handle va ⁇ ous aspects of table layout, such as table cells that span multiple columns or rows, table cells that mclude nested tables, etc
  • the table layout method desc ⁇ bed herem may be well-suited for use m an envuonment m which software optimizations are necessary or desuable, such as within a resource-constrained small footprmt device
  • FIG. 1 is a block diagram illustrating one embodiment of a system supporting a method for efficiently laying out a display table
  • Figure 2 is a flowchart diagram illustrating an overview of one embodiment of a layout method for a display table
  • Figure 3 is a flowchart diagram illustrating an overview of one embodiment of a process of performing display table inspection
  • Figures 4 - 6 are flowchart diagrams illustrating one embodiment of a process of calculating the minimum and maximum possible column widths for a table
  • Figure 7 is an example of an HTML table comp ⁇ smg a column-spanning cell
  • Figure 8 is a flowchart diagram illustrating an overview of one embodiment of a process of performing display table apportioning
  • Figure 9 is a flowchart diagram illustrating one embodiment of a process of assignmg a width to each column of a display table
  • Figures 10 and 11 are flowchart diagrams illustrating one embodiment of a process of a height to each row of a display table
  • Figure 12 is an example of a nested HTML table
  • Figure 13 illustrates an example of resulting method mvocations when an HTML table with one cell is layed out
  • Figure 14 illustrates an example of resulting method mvocations when an HTML table with one cell that mcludes a nested table with one cell is layed out
  • Figure 1 is a block diagram illustrating one embodiment of a system 720 supporting a method for efficiently laying out a display table
  • the system 720 may be employed in any of va ⁇ ous types of computing devices, such as desktop computers or workstations, small footprmt devices, etc
  • the system 720 may include a processor 710
  • the processor 710 may be any of va ⁇ ous types, including an x86 processor, e g , a Pentium class, a PowerPC processor, a CPU from the SPARC family of RISC processors, as well as others
  • the processor 710 may be a less powerful processor than those listed above or may be a processor developed specifically for a small footprmt device, such as a digital signal processor (DSP)
  • DSP digital signal processor
  • the processor 710 may have vanous clock speeds, including clock speeds similar to those found in desktop computer-class processors, as well as lower speeds such as 16 MHz
  • the system 720 also includes a memory 712 coupled to the processor 710
  • the memory 712 may compnse any of va ⁇ ous types of memory, including DRAM, SRAM, EDO RAM, Rambus RAM, etc , or a nonvolatile memory such as a magnetic media, e g , a hard drive, or optical storage
  • the memory 712 may compnse other types of memory as well, or combmations thereof
  • the memory 712 may have a very small storage capacity compared to a typical desktop computer system
  • the memory 712 may store an application program 718
  • the application program 718 may be any of va ⁇ ous types of application programs that utilize display tables
  • the application program 718 may be a web browser application that displays markup language tables, such as HTML or XML- denved tables
  • the application program 718 may be a word processor program that displays tables descnbed in word processor documents, etc
  • the application program may be configured to efficiently lay out display tables, as described below
  • the system 720 may also comprise a display 716
  • the display 716 may be any of va ⁇ ous types, such as a LCD (liquid crystal display), a CRT (cathode ray tube) display, etc It is noted that the display for a typical small footprmt device, such as a smart cellular phone, may be small compared to the display of a desktop computer system
  • Figure 1 illustrates a graphical representation of a table 722 displayed on the display 716
  • the processor 710 executing code and data from the memory 712 provides a means for laying out and displaying the table
  • the system 720 may also comprise an input mechanism 714
  • the input mechanism 714 The input mechanism
  • the input mechanism may be a keyboard, a mouse, a trackball, a touch pen, microphone, modem, infrared receiver, etc
  • a small footprmt device is a hardware device comprising computing resources such as processor and a system memory, but havmg significantly greater constramts on one or more of these resources than a typical desktop computer has
  • a typical small footprmt device may have two megabytes of memory or less, whereas a typical desktop system may have 64 megabytes or more
  • a typical small footpnnt device may have significantly less processmg power than a typical desktop computmg system, either in terms of processor type, or processor speed, or both
  • a particular personal data assistant device may have a 16 MHz processor, whereas a typical desktop system may have a processor speed of 100 MHz or higher
  • a typical small footprmt device may have a display size significantly smaller than the display screen of a desktop computing system
  • the display screen of a handheld computer is typically small compared to the display screen
  • the system illustrated m Figure 1 is illustrative of, but is not limited to, any one of the following handheld computers, wearable devices (e g , wnstwatch computers), personal data assistants (PDAs), "smart" cellular telephones, set-top boxes, game consoles, global positioning system (GPS) units, electronic textbook devices, etc Since new classes of consumer devices are rapidly emerging, it is not possible to provide an exhaustive list of small footpnnt devices However, the term 'small footprint device" is mtended to mclude such devices as may reasonably be mcluded within the spirit and scope of the term as desc ⁇ bed above It is noted that in va ⁇ ous embodiments, the system and method des
  • Figure 2 is a flowchart diagram illustrating an overview of one embodiment of a layout method for a display table
  • Display tables may be described in any of various ways, as appropriate for a particular type of table or application
  • a markup language table such as an HTML table
  • Other types of display tables may be described differently, e g , in a binary format
  • the display table description may include va ⁇ ous types of information regarding the table, such as row and column definitions, the preferred size of the table, the content for each table cell, etc
  • the display table desc ⁇ ption may be parsed and data structures representing the table description may be created and stored in system memory
  • the table description data structures may be created and stored using any of vanous well-known methods, as appropriate for a particular type of table or application
  • a web browser application parsing an HTML table may create a set of objects related to each other as specified by the standard Document Object Model (DOM)
  • the table data structures created m step 500 may be "inspected"
  • va ⁇ ous factors may affect layout of a display table, such as the desued dimensions indicated by the table author, the available display device area for displaying the table, the minimum cell size necessary to display the content of each cell, the number of columns or rows spanned by particular cells, etc
  • display table layout involves a negotiation between determining the possible size of a table, based on minimum and maximum dimensions of table cells, and assignmg final dimensions to the table rows and columns, based on the possible size of the table and the available display area for the table
  • table inspection, mvolves determining the possible size of the table and is discussed in detail below
  • step 504 the table may be "apportioned", based on the results of step 502 That is, final dimensions may be assigned to the table and to each of the table rows and columns Step 504, table apportioning, is discussed in detail below
  • step 506 the table coordinates are "normalized" When laying out a cell, the final position of the cell is not yet known Thus, each object in the cell is assigned a position relative to the top corner of the cell Once a table's X,Y position has been set, these relative positions may be converted into absolute coordinates, which is referred to as normalization
  • the normalization process may be delayed until the absolute coordmates of the outermost table are known
  • the outermost table may then be traversed recursively to normalize coordmates for any nested tables
  • delay mg the normalization process until the coordmates of the outermost table are known
  • Figure 3 is a flowchart diagram illustrating an overview of one embodiment of table inspection (step 502 of Figure 2)
  • step 600 the number of rows in the table is determmed.
  • step 602 the number of columns in the table is determmed.
  • the table may be parsed, and data structures representmg the table desc ⁇ ption may be created
  • Each table description data structure may compnse information regarding which type of table element the data structure represents, such as a table row, a table cell, etc
  • steps 600 and 602 may simply involve traversing through the table description data structures and countmg the number of table rows and columns.
  • the number of table rows and columns may have been recorded as the table descnption was parsed, makmg steps 600 and 602 simply a matter of obtaining the recorded information.
  • step 604 the data structures representing the table description are mapped to a table data structure suitable for efficiently accessing individual table cells, such as a two-dimensional array, using the number of rows and columns determined in steps 600 and 602 as the array dimensions
  • the mapping of step 604 may be unnecessary if the data structures representmg the table descnption already make it possible to efficiently traverse the table elements, quickly access mdividual cells, etc.
  • the minimum and maximum possible widths for each table cell are determined.
  • the minimum and maximum possible cell widths may be calculated m various ways These calculations may depend on cell content. While certain types of cell content, such as images, may be associated with only one possible defined width, other types of cell content may be associated with various possible defined widths. For example, text may be displayable in various possible ways, such as being displayed in a smgle line, or bemg displayed in multiple lmes in a wraparound fashion. As another example, a cell may include content such as a nested table having one or more cells containing text or other content displayable m different widths.
  • the calculations may also use information comprised m the table desc ⁇ ption itself.
  • an author of a table contamed in a word processor document may set a table attribute which specifies the type of wrapping to apply to a cell.
  • an HTML author may request that a cell be set to a certain width by using a WIDTH attribute.
  • HTML tables are typically designed with a desktop computer display screen m mind. However, these tables often do not display well on a small footprint device with a small display screen
  • WIDTH attributes may be ignored, and the minimum cell width may instead be based on cell content, which minimizes the display space consumed by a table.
  • table cells may comprise nested tables.
  • it may be necessary to first layout a cell's nested table(s), m order to determine the minimum and maximum possible widths for the inner tables.
  • the inner table calculation may be performed recursively, or may be performed usmg well-known methods to avoid recursion, such as tree traversal algorithms
  • step 608 the minimum and maximum possible widths for each column m the table are determined, based on the minimum and maximum possible cell widths
  • some types of tables such as HTML tables, may allow cells to span multiple columns Cells that span multiple columns may affect the widths of the spanned columns
  • Step 608 involves processmg each cell of each column and tracking the minimum/maximum cell widths and also tracking which multiple-column-spanning cell (if there are any) has the largest maximum width
  • Step 608 is illustrated in more detail m Figures 4 - 6
  • step 610 the minimum and maximum possible widths for the display table are determined, based on the minimum and maximum possible column widths
  • FIG. 6 are flowchart diagrams illustrating one embodiment of step 608 in more detail
  • HTML code gives an example of an HTML table comp ⁇ sing a multiple column-spanning cell
  • Figure 7 illustrates how this table may look when displayed
  • the cells of the table are labeled with their co ⁇ espondmg row and column numbers
  • the second cell of the middle row (row 1 ) of the table has a "COLSPAN" attribute which specifies that the cell spans two columns Although this cell spans two columns, it is represented by a single entry in the table data structure created in step 604 of Figure 3
  • the cell is a member of the middle column, column 1, and there is no row 1 cell for the right-most column, column 2
  • a cell which spans multiple columns may be said to be a member of the left-most column which it spans
  • each column of the table is traversed For each column, all the cells of the column are processed in order to find the minimum/maximum possible cell widths
  • the column cell with the largest minimum possible width determmes the minimum possible width for the column
  • the column cell with the largest maximum possible width determmes the maximum possible width for the column Since any cells in the table which span multiple columns are members of the left-most column which they span, the columns are traversed in a ⁇ ght-to-left order This allows the calculation of the minimum/maximum possible column widths to take place in a single pass through the table columns. If the columns were traversed in a left-to- ⁇ ght order then the minimum/maximum width values could not be determined for columns having a column-spanning cell on the first pass through, since the factors determining the width of the column-spanning cell would not yet be known
  • a similar process as descnbed above may be implemented for an embodiment m which multiple column- spanning cells are considered to be members of the ⁇ ght-most column which they span
  • the columns may be traversed in a left-to- ⁇ ght order mstead of a ⁇ ght-to-left order
  • the column mdex is set to the index of the ⁇ ght-most column in step 620 of Figure 4
  • the column mdex loop control variable is tested to make sure it is within range If all the columns have been processed then the execution illustrated m Figure 4 completes Otherwise, m step 624 certain variables are initialized in preparation for an iteration through the column-processing loop
  • variables such as these represents one embodiment of the table layout method, and other embodiments are possible
  • information may be recorded in the table data structure itself instead of in variables
  • step 626 each cell of the column specified by the column index is processed Step 626 is illustrated m more detail m the flowchart diagram of Figure 5
  • the row index is set to 0
  • the row index loop control variable is tested to make it is within range If the index is out of range, then all the cells of the cunent column have been processed, and the execution illustrated in Figure 5 completes Otherwise, in step 646, the cunent cell, l e , the cell specified by the current columnlndex and rowlndex, is checked to see whether it spans multiple columns If the cell does not span multiple columns, then execution proceeds to step 648 In step 648, the minimum possible width for the cell is obtained, using information stored m step 606 of Figure 3 If this width is greater than the current minimum possible width recorded for the column, then the minimum possible column width is set to the minimum possible width for the cell (The minimum possible width for each column is mitialized to zero )
  • Steps 652 and 654 are sirmlar to steps 648 and 650
  • step 646 the minimum possible width for the cell is obtamed, using information stored in step 606 of Figure 3 This step is identical to step 648
  • step 662 the minimum cell width is compared to the colspanMmimumWidth variable A column may have more than one cell which spans multiple columns
  • the colspanMimmumWidth variable tracks the largest minimum width value of all these cells If the minimum width value for the current cell is not greater than the colspanMimmumWidth value already recorded, then the cunent cell is ignored, and execution proceeds to step 674
  • the colspanMmimumWidth variable is used to adjust the minimum widths of the columns spanned by the cell, if necessary For this adjustment it is only necessary to track the largest minimum possible cell width of all the spanning cells
  • the colspanMimmumWidth variable is updated in step 664
  • the maximum possible width for the cell is calculated
  • the colspanMaximumWidth variable is set to this maximum possible cell width
  • the thisColumnsColspan variable is set to the number of columns spanned by the cell The use of the colspanMinimumWidfh, colspanMaximumWidth, and thisColumnsColspan variables is discussed below for Figure 6
  • step 674 is reached from step 654, step 662, or step 670 At this point, the cell referenced by the current column and row indices has been processed, and the next cell in the cunent column will be processed Thus, the rowlndex variable is incremented, and execution loops back to step 642 From step 642, another loop iteration through steps 646 - 674 occurs, or the loop ends, as appropriate
  • step 626 of Figure 4 is complete, and execution proceeds to step 628 of Figure 4
  • the cells of the current column have been processed to determine the minimum maximum possible widths for the column
  • the colspanMmimumWidth and colspanMaximumWidth variables may be set in step 626 In step 628, these values are used to adjust the minimum and maximum possible column widths of columns spanned by a cell m the cunent column, if necessary Step 628 is described in more detail below with reference to Figure 6 Once step 628 is complete, the
  • Figure 6 is a flowchart diagram illustrating step 628 of Figure 4 m more detail
  • the steps of Figure 6 utilize the variables colspanMmimumWidth, colspanMaximumWidth, and thisColumnsColspan which were set while processing the cunent column in the steps of Figure 5
  • This cell is referred to below as the "largest spannmg cell"
  • the thisColumnsColspan variable mdicates the number of columns spanned by the largest spanning cell
  • thisColumnsColspan variable is checked to see whether it is greater than 1
  • This variable is mitialized to 1 in step 624 at the beginning of each iteration through the column-processing loop If thisColumnsColspan is not greater than 1, then no cells spannmg multiple columns were found m step 626, and execution returns to step 630 of Figure 4 Otherwise, execution proceeds to step 682 of Figure 6
  • the minSpannedColumnWidth variable is calculated by summing up the mmimum possible width values recorded for each of the columns spanned by the largest spannmg cell Smce the table columns are traversed in a ⁇ ght-to-left order, each of these values is already known
  • the maxSpannedColumnWidth va ⁇ able is calculated by summing up the maximum possible width values recorded for each of the columns spanned by the largest spanning cell
  • step 686 the colspanMimmumWidth variable is compared to the minSpannedColumnWidth variable If colspanMimmumWidth is less than or equal to minSpannedColumnWidth, then the minimum possible widths of the spanned columns are already sufficiently large to hold the minimum possible width of the largest spannmg cell In this case, execution proceeds to step 690 However, if colspanMmimumWidth is greater than minSpannedColumnWidth, then one or more of the minimum possible width values of the spanned columns must be adjusted in order to hold the largest spannmg cell As shown m step 688, m one embodiment, a factor based on colspanMinimumWidth - minSpannedColumn Width may be calculated, and the mmimum possible width value for each of the spanned columns may be scaled upward Other adjustment methods may be used in other embodiments
  • Steps 690 and 692 are similar to steps 686 and 688 If colspanMaximumWidth is greater than maxSpannedColumnWidth, then one or more of the maximum possible width values of the spanned columns are increased in step 692 so that the maximum possible column widths are large enough to hold the maximum possible width of the largest spannmg cell
  • the processes described above represent one embodiment, and various steps may be added, omitted, combined, altered, performed in different orders, etc For example, the processes are discussed m terms of initializing an mdex to 0, etc However, any of vanous well-known techniques for properly controlling iteration may be used Figure 8 - Table Apportioning Overview
  • FIG. 8 is a flowchart diagram illustrating an overview of one embodiment of table apportioning (step 504 of Figure 2)
  • step 550 the minimum/maximum possible column widths determmed during the table inspection process are considered along with the available space for the table in order to assign a width to each table column Step 550 is illustrated in more detail in Figure 9
  • step 552 the width of the table is calculated, e g , by summing up the column widths assigned in step 550
  • Cell heights may be somewhat determined by cell widths Few constraints are placed on cell height, smce it is usually more visually appealmg to display a table of a width that fits on a display screen, rather than to control the cell heights and have the table width overflow
  • step 554 is illustrated m more detail in Figures 10 and 12
  • step 556 the height of the table is calculated, e g , by summing up the row heights assigned in step 554
  • FIG. 9 is a flowchart diagram illustrating step 550 of Figure 8 in more detail
  • the mmimum table width is calculated and compared to the available display space for the table
  • the minimum table width may be calculated by summing the minimum possible column widths for each column m the table, which were determined durmg the table inspection process described above
  • the available display space may be determined in various ways For example, the available space value may be passed as a parameter to a table apportioning method or function If the mmimum table width is too large to fit mto the available display space, I e , the table width must overflow the available display space, then the minimum table width is used, and in step 702 the final column width for each column is set to its minimum possible value
  • step 704 If the mmimum table width is small enough to fit mto the available space, then execution proceeds to step 704 If no prefened width for the table was specified, then the maximum table width is calculated Otherwise, execution proceeds to step 708
  • the maximum table width may be calculated by summing the maximum possible column widths for each column in the table If the maxunum table value is small enough to fit mto the available space, then the maximum table width is used, and m step 706 the final column width for each column is set to its maxunum value
  • scalmg methods may be applied in other embodiments
  • mdividual scalmg factors may be applied to different columns, dependmg on each column's content
  • step 554 of Figure 8 a height is assigned to each table row Figures 10 and 11 are flowchart diagrams illustrating step 554 m detail
  • table cells may span multiple columns, they may also span multiple rows
  • the below desc ⁇ ption accounts for cells that span multiple rows by processing rows in a bottom-to-top order, for reasons similar to the ⁇ ght-to-left column processmg order desc ⁇ bed above
  • the row mdex is set to the mdex of the bottom-most column m step 720 of Figure 10
  • the row mdex loop control va ⁇ able is tested to make it is within range If all the rows have been processed then the execution illustrated m Figure 10 completes Otherwise, m step 724 certain vanables are mitialized in preparation for an iteration through the row-processmg loop
  • vanables such as these represents one embodiment of the table layout method, and other embodiments are possible
  • information may be recorded in the table data structure itself instead of in vanables
  • step 726 each cell of the row specified by the row mdex is processed Step 726 is illustrated in more detail in the flowchart diagram of Figure 11
  • the column mdex is set to 0
  • the column mdex loop control vanable is tested to make sure it is within range If the mdex is out of range, then all the cells of the current row have been processed, and the execution illustrated m Figure 11 completes Otherwise, m step 744, the contents of the cunent cell, I e , the cell referenced by the cunent row mdex and column mdex, are layed out The cell contents are layed out accordmg to the cell width, which is determmed from the assigned column widths as descnbed above Once the cell contents are layed out, the height of the cell is known
  • step 746 the cell is checked to see whether it spans multiple rows If the cell does not span multiple rows, then execution proceeds to step 748 In step 748, the cell height is compared to the cunent height recorded for the row (The height for each row is mitialized to zero ) If the cell height is greater than the row height, then the height of the cunent row is set to the cell height Execution proceeds from step 748 to step 760
  • step 750 the number of rows spanned by the cunent cell is compared to the thisRowsRowspan va ⁇ able value If the cunent cell spans more rows than the value of thisRowsRowspan, then execution proceeds to step 756, where the value of the rowSpanHeight va ⁇ able is set to the height of the cunent cell The rowSpanHeight vanable mdicates the maximum height spanned by a row-spanning cell of the cunent row Execution proceeds from step 756 to step 758, where the thisRowsRowspan value is updated to the number of rows spanned by the cunent cell Execution proceeds from step 758 to step 760 In step 750, if the cunent cell does not span more rows than the value of thisRowsRowspan, then execution proceeds to step 752 In step 752, the number of rows spanned by the cunent cell is again compared to the thisRowsRowspan
  • step 760 the cunent cell has been processed to determine how its height or other characteristics, such as the number of rows it spans, affect the calculation of the height of the cunent row
  • the column index is incremented to reference the next column in the row, and execution loops back to step 742 From step 742, another loop iteration may be performed, or if all of the row's cells have been processed, then the row processing illustrated in Figure 1 1 for step 726 of Figure 10 may end
  • step 726 execution proceeds to step 728 of Figure 10
  • step 728 the heights of the rows spanned by the largest spannmg cell of the cunent row may be adjusted, if necessary The row heights of these rows may be summed If this sum is less than the height of the largest spannmg cell (mdicated by the rowSpanHeight vanable), then the row heights may be adjusted As discussed above for column width adjustment, the row height adjustment may be performed using any of va ⁇ ous methods
  • step 728 the row index is decremented in step 730 to refer to the next highest row m the table, and execution loops back to step 722 From step 722, another loop iteration may be performed, or the execution illustrated in the flowchart diagram of Figure 10 may end if all the table rows have already been processed
  • HTML tables may be nested
  • HTML code shows an example of a nested HTML table
  • Figure 12 illustrates what this table may look like when displayed
  • a display table layout method may be desirable for efficiently handle nested tables
  • nested HTML tables are commonly found m web pages Maximizing layout performance improvement may be especially important in laying out tables for small footpnnt devices, smce these devices may have very little processing power
  • the situations and environments in which these devices are used may make it especially important to layout tables quickly
  • a user of a web browser application running m a cellular phone may need to quickly view a web page including nested tables in order to obtain an important phone number needed for an immediate situation, whereas a desktop computer user may typically browse the web m a more leisurely manner
  • table desc ⁇ ption when a table desc ⁇ ption is parsed, data structures representmg the table descnption may be created and stored in system memory
  • the table desc ⁇ ption may be stored as objects comprising methods such as Inspect(), Apport ⁇ on(), Normal ⁇ ze(), etc that conespond to the processes descnbed above
  • the display table layout method may traverse through the table, invoking these methods and controlling the recursion process to efficiently handle nested tables
  • HTML code describes a simple HTML table with one cell
  • Figure 13 illustrates the resulting method mvocations when this HTML table is processed
  • the method mvocation trace shown m Figure 13 follows the general process described above for laymg out a display table As shown, the display table is first inspected Inspecting the table comprises mspecting each table cell (In this example there is only one cell ) After the table is inspected, the table is then apportioned and normalized as desc ⁇ bed above and shown in Figure 13
  • HTML code desc ⁇ bes a simple HTML table with one cell that includes a nested table with one cell
  • Figure 14 illustrates the resultmg method invocations when this HTML table is processed
  • the method mvocation trace shown in Figure 14 is similar to that in Figure 13
  • the mspection process for the cell of the outer table results in a second inspection process being initiated for the nested table included m the cell of the outer table
  • the nested table is inspected before minimum and maxunum possible widths are assigned to the outer table cell
  • the apportionmg process for the cell of the outer table results in a second apportionmg process bemg initiated for the nested table mcluded m the cell of the outer table
  • the method invocation trace of Figure 14 illustrates a smgle method mvocation controlling the overall layout process for the outer table, I e , the "Layout (Body)" method invocation
  • the "Layout (Body)" method invocation Note that when the cell of the outer table is layed out, (shown by the "Layout (Celll)" method call) there is no such method mvocation to layout the nested table mcluded in the cell of the outer table
  • the nested table is identical to the table processed m Figure 13
  • mvokmg the "Layout (Body)" method on the inner table would result in the Figure 13 method mvocation trace bemg mcluded under the "Layout (Celll)" method mvocation m Figure 14.
  • each of the Figure 13 method mvocations are already performed m the Figure 14 method mvocation trace
  • the layout method desc ⁇ bed herem is able to avoid the duplication of processmg.

Abstract

A system and method for efficient layout of a display table. Given a description of a table, such as a markup language description, the table description may be parsed and data structures representing the table description may be created. The table description data structures may then be 'inspected', in order to determine the possible size of the table. Once the table has been inspected, the table may then be 'apportioned', based on the results of the inspection step. That is, final dimensions may be assigned to the table. The table coordinates may then be 'normalized', which may involve converting relative table coordinates into absolute coordinates. Table layout optimizations are described, e.g., in order to efficiently handle various aspects of table layout, such as table cells that span multiple columns or rows, table cells that include nested tables, etc. Thus, the table layout method described herein may be well-suited for use in an environment in which software optimizations are necessary or desirable, such as within a resource-constrained small footprint device.

Description

TITLE: SYSTEM AND METHOD FOR EFFICIENT LAYOUT OF A DISPLAY TABLE
BACKGROUND OF THE INVENTION
1. Field of the Invention
The present invention relates to the field of display tables, such as HTML tables More particularly, the invention relates to a system and method for efficient layout of a display table
2. Description of the Related Art
Display tables are commonly used m many types of software applications A display table may comprise rows and columns that define cells Each of the cells may comprise some type of cell content For example, many current web page documents include hypertext markup language (HTML) tables with cells that may mclude content such as text or images As another example, word processor applications often enable authors to create tables for display in a document.
Display tables are typically described in some format that a software application must process in order to display the table correctly. For example, a markup language table may be described m a text format by various markup language tags that are processed and used to create data structures representmg the table. When processing a table description, many factors may be involved in correctly determining the dimensions for the rows and columns of the table, such as the desired dimensions indicated by the table author, the available display device area for displaying the table, the minimum cell size necessary to display the content of each cell, the number of columns or rows spanned by particular cells, the determination of row and column dimensions for any nested tables included m the table, etc. The process of determining the row and column dimensions for a table, assigning coordmates to the table, and positioning the cell content within each cell of the table is referred to herem as "laying out" the table.
In many cases, it is of course not only desuable to correctly lay out display tables, but to do so efficiently Designmg an efficient table layout method may be difficult. One source of difficulty lies m dealing with nested tables, i.e., a table with one or more cells comprising another table. If the table layout method is not designed carefully, the method may scale exponentially with increasing table nesting complexity.
Although some current table layout methods do succeed in avoidmg exponential scaling with increased nesting complexity, it appears, based on the results of benchmark tests, that they do not perform other possible optimizations. Although thorough optimization of a table layout method may not be very important m some contexts or environments, m others it can be important. Small footprint devices offer one example of an environment in which it is often necessary or desirable to pay particular attention to software efficiency The field of "smart" small footprint devices is growing and changing rapidly. Small footprint devices include handheld computers, personal data assistants (PDAs'!, cellular phones, global positioning system (GPS) receivers, game consoles, set-top boxes, and many more such devices Small footprint devices are becoming increasingly powerful and enabled to run software applications or services historically associated with general computing devices, such as desktop computers Small footprmt devices may have very strong resource constraints, such as the amount of memory and the processmg power available Thus, it is often necessary or desirable to design optimized software that performs well in the environment of a small footprmt device Providmg an efficient layout method for a display table is one example of a software optimization that may significantly benefit small footprmt device users For example, many small footprmt devices are now able to run web browser applications, which often process web pages comprising markup language tables, such as HTML tables, as described above
SUMMARY OF THE INVENTION
The problems outlined above may m large part be solved by a system and method for efficient layout of a display table, as descπbed herem Given a descπption of a table, such as a markup language descπption, the table descπption may be parsed and data structures representmg the table descπption may be created
The table descnption data structures may then be "inspected", m order to determine the possible size of the table The process of table inspection may mvolve determining the minimum and maximum possible widths for each table cell, and then determining the minimum and maximum possible widths for each table column, based on the mdividual cell values The minimum and maximum possible table widths may then be calculated from the possible table column widths
Once the table has been inspected, the table may then be "apportioned", based on the results of the inspection step That is, final dimensions may be assigned to the table The process of table apportioning may mvolve assigning a width to each table column and a height to each table row The table coordmates may then be "normalized", which may mvolve converting relative table coordmates mto absolute coordmates
Table layout optimizations are descnbed, e g , m order to efficiently handle vaπous aspects of table layout, such as table cells that span multiple columns or rows, table cells that mclude nested tables, etc Thus, the table layout method descπbed herem may be well-suited for use m an envuonment m which software optimizations are necessary or desuable, such as within a resource-constrained small footprmt device
BRIEF DESCRIPTION OF THE DRAWINGS
Other objects and advantages of the mvention will become apparent upon readmg the following detailed descπption and upon reference to the accompanying drawings m which Figure 1 is a block diagram illustrating one embodiment of a system supporting a method for efficiently laying out a display table,
Figure 2 is a flowchart diagram illustrating an overview of one embodiment of a layout method for a display table,
Figure 3 is a flowchart diagram illustrating an overview of one embodiment of a process of performing display table inspection,
Figures 4 - 6 are flowchart diagrams illustrating one embodiment of a process of calculating the minimum and maximum possible column widths for a table,
Figure 7 is an example of an HTML table compπsmg a column-spanning cell, Figure 8 is a flowchart diagram illustrating an overview of one embodiment of a process of performing display table apportioning,
Figure 9 is a flowchart diagram illustrating one embodiment of a process of assignmg a width to each column of a display table, Figures 10 and 11 are flowchart diagrams illustrating one embodiment of a process of a height to each row of a display table,
Figure 12 is an example of a nested HTML table,
Figure 13 illustrates an example of resulting method mvocations when an HTML table with one cell is layed out, and Figure 14 illustrates an example of resulting method mvocations when an HTML table with one cell that mcludes a nested table with one cell is layed out
While the mvention is susceptible to vaπous modifications and alternative forms, specific embodiments thereof are shown by way of example m the drawings and are herem descnbed in detail It should be understood, however, that the drawmgs and detailed descπption thereto are not mtended to limit the mvention to the particular form disclosed, but on the contrary, the intention is to cover all modifications, equivalents and alternatives falling within the spint and scope of the present mvention as defined by the appended claims
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
Figure 1 - Exemplary System
Figure 1 is a block diagram illustrating one embodiment of a system 720 supporting a method for efficiently laying out a display table The system 720 may be employed in any of vaπous types of computing devices, such as desktop computers or workstations, small footprmt devices, etc
As shown in Figure 1, the system 720 may include a processor 710 The processor 710 may be any of vaπous types, including an x86 processor, e g , a Pentium class, a PowerPC processor, a CPU from the SPARC family of RISC processors, as well as others In vaπous embodiments, such as an embodiment m which the system 720 illustrates a small footprmt device, the processor 710 may be a less powerful processor than those listed above or may be a processor developed specifically for a small footprmt device, such as a digital signal processor (DSP) The processor 710 may have vanous clock speeds, including clock speeds similar to those found in desktop computer-class processors, as well as lower speeds such as 16 MHz
The system 720 also includes a memory 712 coupled to the processor 710 The memory 712 may compnse any of vaπous types of memory, including DRAM, SRAM, EDO RAM, Rambus RAM, etc , or a nonvolatile memory such as a magnetic media, e g , a hard drive, or optical storage The memory 712 may compnse other types of memory as well, or combmations thereof For an embodiment in which the system 720 illustrates a small footprmt device, the memory 712 may have a very small storage capacity compared to a typical desktop computer system
As shown m Figure 1, the memory 712 may store an application program 718 The application program 718 may be any of vaπous types of application programs that utilize display tables For example, the application program 718 may be a web browser application that displays markup language tables, such as HTML or XML- denved tables, the application program 718 may be a word processor program that displays tables descnbed in word processor documents, etc The application program may be configured to efficiently lay out display tables, as described below
As shown in Figure 1, the system 720 may also comprise a display 716 The display 716 may be any of vaπous types, such as a LCD (liquid crystal display), a CRT (cathode ray tube) display, etc It is noted that the display for a typical small footprmt device, such as a smart cellular phone, may be small compared to the display of a desktop computer system Figure 1 illustrates a graphical representation of a table 722 displayed on the display 716 The processor 710 executing code and data from the memory 712 provides a means for laying out and displaying the table As shown in Figure 1, the system 720 may also comprise an input mechanism 714 The input mechanism
714 may be any of various types, as appropriate for a particular system For example, the input mechanism may be a keyboard, a mouse, a trackball, a touch pen, microphone, modem, infrared receiver, etc
As noted above, in various embodiments, the system 720 may be illustrative of a small footprint device As used herem, a small footprmt device is a hardware device comprising computing resources such as processor and a system memory, but havmg significantly greater constramts on one or more of these resources than a typical desktop computer has For example, a typical small footprmt device may have two megabytes of memory or less, whereas a typical desktop system may have 64 megabytes or more Also a typical small footpnnt device may have significantly less processmg power than a typical desktop computmg system, either in terms of processor type, or processor speed, or both For example, a particular personal data assistant device may have a 16 MHz processor, whereas a typical desktop system may have a processor speed of 100 MHz or higher Also, a typical small footprmt device may have a display size significantly smaller than the display screen of a desktop computing system For example, the display screen of a handheld computer is typically small compared to the display screen of a desktop monitor It is noted that the specific numbers given above are exemplary only and are used for compaπson purposes Small footprint devices may also have constramts on other resource types compared to typical desktop computing systems, besides the memory, processor, and display size resources described above For example, a typical small footprmt device may not have a hard disk, may not have a network connection, or may have an intermittent network connection, or may have a wireless network connection, etc
Many small footpnnt devices are portable and/or are small compared to desktop computers, but are not necessarily so Also, many small footprint devices are primarily or exclusively battery-operated Also, small footpnnt devices may typically have a more limited or narrow range of usage possibilities than a typical desktop computmg system Thus, in vanous embodiments, the system illustrated m Figure 1 is illustrative of, but is not limited to, any one of the following handheld computers, wearable devices (e g , wnstwatch computers), personal data assistants (PDAs), "smart" cellular telephones, set-top boxes, game consoles, global positioning system (GPS) units, electronic textbook devices, etc Since new classes of consumer devices are rapidly emerging, it is not possible to provide an exhaustive list of small footpnnt devices However, the term 'small footprint device" is mtended to mclude such devices as may reasonably be mcluded within the spirit and scope of the term as descπbed above It is noted that in vaπous embodiments, the system and method descnbed herem may also be employed m a general-purpose computer system, such as a desktop PC or mamframe computer
Figure 2 - Table Layout Overview Figure 2 is a flowchart diagram illustrating an overview of one embodiment of a layout method for a display table
Display tables may be described in any of various ways, as appropriate for a particular type of table or application For example, a markup language table, such as an HTML table, may be described in a textual format, via the use of markup language tags Other types of display tables may be described differently, e g , in a binary format Depending on the particular type of table or application, the display table description may include vaπous types of information regarding the table, such as row and column definitions, the preferred size of the table, the content for each table cell, etc
In step 500, the display table descπption may be parsed and data structures representing the table description may be created and stored in system memory The table description data structures may be created and stored using any of vanous well-known methods, as appropriate for a particular type of table or application For example, a web browser application parsing an HTML table may create a set of objects related to each other as specified by the standard Document Object Model (DOM)
In step 502, the table data structures created m step 500 may be "inspected" As discussed above, vaπous factors may affect layout of a display table, such as the desued dimensions indicated by the table author, the available display device area for displaying the table, the minimum cell size necessary to display the content of each cell, the number of columns or rows spanned by particular cells, etc Thus, display table layout involves a negotiation between determining the possible size of a table, based on minimum and maximum dimensions of table cells, and assignmg final dimensions to the table rows and columns, based on the possible size of the table and the available display area for the table Step 502, table inspection, mvolves determining the possible size of the table, and is discussed in detail below
In step 504, the table may be "apportioned", based on the results of step 502 That is, final dimensions may be assigned to the table and to each of the table rows and columns Step 504, table apportioning, is discussed in detail below
In step 506, the table coordinates are "normalized" When laying out a cell, the final position of the cell is not yet known Thus, each object in the cell is assigned a position relative to the top corner of the cell Once a table's X,Y position has been set, these relative positions may be converted into absolute coordinates, which is referred to as normalization
In order to maximize efficiency when processmg nested tables, the normalization process may be delayed until the absolute coordmates of the outermost table are known The outermost table may then be traversed recursively to normalize coordmates for any nested tables By delay mg the normalization process until the coordmates of the outermost table are known, repetition of the normalization process can be avoided Figure 3 - Table Inspection Overview
Figure 3 is a flowchart diagram illustrating an overview of one embodiment of table inspection (step 502 of Figure 2)
In step 600, the number of rows in the table is determmed. In step 602, the number of columns in the table is determmed. As discussed above with reference to step 500 of Figure 2, the table may be parsed, and data structures representmg the table descπption may be created Each table description data structure may compnse information regarding which type of table element the data structure represents, such as a table row, a table cell, etc Thus, steps 600 and 602 may simply involve traversing through the table description data structures and countmg the number of table rows and columns. In an alternative embodiment, the number of table rows and columns may have been recorded as the table descnption was parsed, makmg steps 600 and 602 simply a matter of obtaining the recorded information.
In step 604, the data structures representing the table description are mapped to a table data structure suitable for efficiently accessing individual table cells, such as a two-dimensional array, using the number of rows and columns determined in steps 600 and 602 as the array dimensions In another embodiment, the mapping of step 604 may be unnecessary if the data structures representmg the table descnption already make it possible to efficiently traverse the table elements, quickly access mdividual cells, etc.
In step 606, the minimum and maximum possible widths for each table cell are determined The minimum and maximum possible cell widths may be calculated m various ways These calculations may depend on cell content. While certain types of cell content, such as images, may be associated with only one possible defined width, other types of cell content may be associated with various possible defined widths. For example, text may be displayable in various possible ways, such as being displayed in a smgle line, or bemg displayed in multiple lmes in a wraparound fashion. As another example, a cell may include content such as a nested table having one or more cells containing text or other content displayable m different widths.
The calculations may also use information comprised m the table descπption itself. For example, an author of a table contamed in a word processor document may set a table attribute which specifies the type of wrapping to apply to a cell. As another example, an HTML author may request that a cell be set to a certain width by using a WIDTH attribute.
However, in some embodiments, such information may be ignored when calculating the minimum cell widths. For example, HTML tables are typically designed with a desktop computer display screen m mind. However, these tables often do not display well on a small footprint device with a small display screen When the present method is applied to render tables for a small footprint device, information such as WIDTH attributes may be ignored, and the minimum cell width may instead be based on cell content, which minimizes the display space consumed by a table.
As discussed above, table cells may comprise nested tables. In this case, in order to perform step 606, it may be necessary to first layout a cell's nested table(s), m order to determine the minimum and maximum possible widths for the inner tables. The inner table calculation may be performed recursively, or may be performed usmg well-known methods to avoid recursion, such as tree traversal algorithms
In step 608, the minimum and maximum possible widths for each column m the table are determined, based on the minimum and maximum possible cell widths Note that some types of tables, such as HTML tables, may allow cells to span multiple columns Cells that span multiple columns may affect the widths of the spanned columns Step 608 involves processmg each cell of each column and tracking the minimum/maximum cell widths and also tracking which multiple-column-spanning cell (if there are any) has the largest maximum width Step 608 is illustrated in more detail m Figures 4 - 6 In step 610, the minimum and maximum possible widths for the display table are determined, based on the minimum and maximum possible column widths
Figures 4 - 6 Determining Minimum/Maximum Possible Column Widths
In step 608 of Figure 4, the minimum and maximum possible widths for each column are determmed Figures 4 - 6 are flowchart diagrams illustrating one embodiment of step 608 in more detail
As discussed above, some table cells may span multiple columns The following HTML code gives an example of an HTML table compπsing a multiple column-spanning cell
<TABLE> <TR><TD>Row 0, Column 0 <TD>Row 0, Column 1 <TD>Row 0, Column 2 <TRxTD>Row 1 , Column 0 <TD COLSPAN="2">Row 1, Column 1 <TR><TD>Row 2, Column 0 <TD>Row 2, Column 1 <TD>Row 2, Column 2 </TABLE>
Figure 7 illustrates how this table may look when displayed The cells of the table are labeled with their coπespondmg row and column numbers The second cell of the middle row (row 1 ) of the table has a "COLSPAN" attribute which specifies that the cell spans two columns Although this cell spans two columns, it is represented by a single entry in the table data structure created in step 604 of Figure 3 In that table data structure, the cell is a member of the middle column, column 1, and there is no row 1 cell for the right-most column, column 2 Thus, m this example, a cell which spans multiple columns may be said to be a member of the left-most column which it spans
In the steps illustrated in Figure 4, each column of the table is traversed For each column, all the cells of the column are processed in order to find the minimum/maximum possible cell widths The column cell with the largest minimum possible width determmes the minimum possible width for the column, and the column cell with the largest maximum possible width determmes the maximum possible width for the column Since any cells in the table which span multiple columns are members of the left-most column which they span, the columns are traversed in a πght-to-left order This allows the calculation of the minimum/maximum possible column widths to take place in a single pass through the table columns If the columns were traversed in a left-to-πght order then the minimum/maximum width values could not be determined for columns having a column-spanning cell on the first pass through, since the factors determining the width of the column-spanning cell would not yet be known
A similar process as descnbed above may be implemented for an embodiment m which multiple column- spanning cells are considered to be members of the πght-most column which they span In such an embodiment, the columns may be traversed in a left-to-πght order mstead of a πght-to-left order
To set up the πght-to-left column traversal, the column mdex is set to the index of the πght-most column in step 620 of Figure 4 In step 622 the column mdex loop control variable is tested to make sure it is within range If all the columns have been processed then the execution illustrated m Figure 4 completes Otherwise, m step 624 certain variables are initialized in preparation for an iteration through the column-processing loop The use of these variables is described below It is noted that the use of variables such as these represents one embodiment of the table layout method, and other embodiments are possible For example, information may be recorded in the table data structure itself instead of in variables
In step 626, each cell of the column specified by the column index is processed Step 626 is illustrated m more detail m the flowchart diagram of Figure 5 In step 640 of Figure 5, the row index is set to 0 In step 642 the row index loop control variable is tested to make it is within range If the index is out of range, then all the cells of the cunent column have been processed, and the execution illustrated in Figure 5 completes Otherwise, in step 646, the cunent cell, l e , the cell specified by the current columnlndex and rowlndex, is checked to see whether it spans multiple columns If the cell does not span multiple columns, then execution proceeds to step 648 In step 648, the minimum possible width for the cell is obtained, using information stored m step 606 of Figure 3 If this width is greater than the current minimum possible width recorded for the column, then the minimum possible column width is set to the minimum possible width for the cell (The minimum possible width for each column is mitialized to zero ) Steps 652 and 654 are sirmlar to steps 648 and 650 The maximum possible width for the cell is obtamed in step 652 The current maximum possible width for the column is updated to this value in step 654 if necessary Execution proceeds from step 654 to step 674
If it is determined m step 646 that the cell does span multiple columns, then execution proceeds to step 660 In step 660, the minimum possible width for the cell is obtamed, using information stored in step 606 of Figure 3 This step is identical to step 648 In step 662, the minimum cell width is compared to the colspanMmimumWidth variable A column may have more than one cell which spans multiple columns The colspanMimmumWidth variable tracks the largest minimum width value of all these cells If the minimum width value for the current cell is not greater than the colspanMimmumWidth value already recorded, then the cunent cell is ignored, and execution proceeds to step 674 As descnbed below, the colspanMmimumWidth variable is used to adjust the minimum widths of the columns spanned by the cell, if necessary For this adjustment it is only necessary to track the largest minimum possible cell width of all the spanning cells
If the minimum width value for the current cell is greater than the colspanMmimumWidth value already recorded, then the colspanMimmumWidth variable is updated in step 664 In step 666 the maximum possible width for the cell is calculated In step 668 the colspanMaximumWidth variable is set to this maximum possible cell width In step 670, the thisColumnsColspan variable is set to the number of columns spanned by the cell The use of the colspanMinimumWidfh, colspanMaximumWidth, and thisColumnsColspan variables is discussed below for Figure 6
As shown in Figure 5, step 674 is reached from step 654, step 662, or step 670 At this point, the cell referenced by the current column and row indices has been processed, and the next cell in the cunent column will be processed Thus, the rowlndex variable is incremented, and execution loops back to step 642 From step 642, another loop iteration through steps 646 - 674 occurs, or the loop ends, as appropriate Once the loop of Figure 5 ends, step 626 of Figure 4 is complete, and execution proceeds to step 628 of Figure 4 At this point, the cells of the current column have been processed to determine the minimum maximum possible widths for the column As descπbed previously, the colspanMmimumWidth and colspanMaximumWidth variables may be set in step 626 In step 628, these values are used to adjust the minimum and maximum possible column widths of columns spanned by a cell m the cunent column, if necessary Step 628 is described in more detail below with reference to Figure 6 Once step 628 is complete, the cunent column has been processed The columnlndex loop control variable is decremented in step 630 so that it references the next column to the left in the table From step 630 execution proceeds to step 622, where the loop ends if the column index is out of range, or another loop iteration is performed, as appropπate
Figure 6 is a flowchart diagram illustrating step 628 of Figure 4 m more detail The steps of Figure 6 utilize the variables colspanMmimumWidth, colspanMaximumWidth, and thisColumnsColspan which were set while processing the cunent column in the steps of Figure 5 As described above, information for only one of a column's multiple column-spanning cells is tracked (the one with the largest minimum possible width) This cell is referred to below as the "largest spannmg cell"
The thisColumnsColspan variable mdicates the number of columns spanned by the largest spanning cell In step 680 the thisColumnsColspan variable is checked to see whether it is greater than 1 This variable is mitialized to 1 in step 624 at the beginning of each iteration through the column-processing loop If thisColumnsColspan is not greater than 1, then no cells spannmg multiple columns were found m step 626, and execution returns to step 630 of Figure 4 Otherwise, execution proceeds to step 682 of Figure 6
In step 682, the minSpannedColumnWidth variable is calculated by summing up the mmimum possible width values recorded for each of the columns spanned by the largest spannmg cell Smce the table columns are traversed in a πght-to-left order, each of these values is already known In step 684 the maxSpannedColumnWidth vaπable is calculated by summing up the maximum possible width values recorded for each of the columns spanned by the largest spanning cell
In step 686, the colspanMimmumWidth variable is compared to the minSpannedColumnWidth variable If colspanMimmumWidth is less than or equal to minSpannedColumnWidth, then the minimum possible widths of the spanned columns are already sufficiently large to hold the minimum possible width of the largest spannmg cell In this case, execution proceeds to step 690 However, if colspanMmimumWidth is greater than minSpannedColumnWidth, then one or more of the minimum possible width values of the spanned columns must be adjusted in order to hold the largest spannmg cell As shown m step 688, m one embodiment, a factor based on colspanMinimumWidth - minSpannedColumn Width may be calculated, and the mmimum possible width value for each of the spanned columns may be scaled upward Other adjustment methods may be used in other embodiments
Steps 690 and 692 are similar to steps 686 and 688 If colspanMaximumWidth is greater than maxSpannedColumnWidth, then one or more of the maximum possible width values of the spanned columns are increased in step 692 so that the maximum possible column widths are large enough to hold the maximum possible width of the largest spannmg cell The processes described above of course represent one embodiment, and various steps may be added, omitted, combined, altered, performed in different orders, etc For example, the processes are discussed m terms of initializing an mdex to 0, etc However, any of vanous well-known techniques for properly controlling iteration may be used Figure 8 - Table Apportioning Overview
As described above, once a table has been inspected, it can be apportioned, 1 e , final dimensions may be assigned to the table and to each of the table rows and columns Figure 8 is a flowchart diagram illustrating an overview of one embodiment of table apportioning (step 504 of Figure 2) In step 550, the minimum/maximum possible column widths determmed during the table inspection process are considered along with the available space for the table in order to assign a width to each table column Step 550 is illustrated in more detail in Figure 9
In step 552, the width of the table is calculated, e g , by summing up the column widths assigned in step 550 Cell heights may be somewhat determined by cell widths Few constraints are placed on cell height, smce it is usually more visually appealmg to display a table of a width that fits on a display screen, rather than to control the cell heights and have the table width overflow
Thus, once the table columns have been assigned widths m step 550, a height may be assigned to each table row in step 554 Step 554 is illustrated m more detail in Figures 10 and 12 In step 556, the height of the table is calculated, e g , by summing up the row heights assigned in step 554
Figure 9 - Assigning Table Column Widths
Figure 9 is a flowchart diagram illustrating step 550 of Figure 8 in more detail As shown in Figure 9, there are three basic cases In step 700 the mmimum table width is calculated and compared to the available display space for the table The minimum table width may be calculated by summing the minimum possible column widths for each column m the table, which were determined durmg the table inspection process described above The available display space may be determined in various ways For example, the available space value may be passed as a parameter to a table apportioning method or function If the mmimum table width is too large to fit mto the available display space, I e , the table width must overflow the available display space, then the minimum table width is used, and in step 702 the final column width for each column is set to its minimum possible value
If the mmimum table width is small enough to fit mto the available space, then execution proceeds to step 704 If no prefened width for the table was specified, then the maximum table width is calculated Otherwise, execution proceeds to step 708 The maximum table width may be calculated by summing the maximum possible column widths for each column in the table If the maxunum table value is small enough to fit mto the available space, then the maximum table width is used, and m step 706 the final column width for each column is set to its maxunum value
If neither of the conditions m step 700 or 704 are met, then the table columns are scaled to make the table width be a particular value in step 708 If a prefened width for the table is specified, then the columns are scaled to match this prefened table width value If no prefened table width is specified and the maximum table width is too large for the available space, then the columns are scaled to match the available space value Any of vanous heuπstics or algorithms may be applied for the scaling For example, each column may be scaled with an equation such as colWidth = minColWidth + ((maxColWidth - mmColWidth) *
(availableSpace - mmTable Width) / (maxTable Width - mmTable Width))
Other scalmg methods may be applied in other embodiments For example, mdividual scalmg factors may be applied to different columns, dependmg on each column's content
Figures 10 and 11 - Assignmg Table Row Heights
In step 554 of Figure 8, a height is assigned to each table row Figures 10 and 11 are flowchart diagrams illustrating step 554 m detail
Just as table cells may span multiple columns, they may also span multiple rows The below descπption accounts for cells that span multiple rows by processing rows in a bottom-to-top order, for reasons similar to the πght-to-left column processmg order descπbed above
To set up the bottom-to-top row traversal, the row mdex is set to the mdex of the bottom-most column m step 720 of Figure 10 In step 722 the row mdex loop control vaπable is tested to make it is within range If all the rows have been processed then the execution illustrated m Figure 10 completes Otherwise, m step 724 certain vanables are mitialized in preparation for an iteration through the row-processmg loop The use of these vanables is descπbed below It is noted that the use of vanables such as these represents one embodiment of the table layout method, and other embodiments are possible For example, information may be recorded in the table data structure itself instead of in vanables
In step 726 each cell of the row specified by the row mdex is processed Step 726 is illustrated in more detail in the flowchart diagram of Figure 11 In step 740 of Figure 11, the column mdex is set to 0 In step 742 the column mdex loop control vanable is tested to make sure it is within range If the mdex is out of range, then all the cells of the current row have been processed, and the execution illustrated m Figure 11 completes Otherwise, m step 744, the contents of the cunent cell, I e , the cell referenced by the cunent row mdex and column mdex, are layed out The cell contents are layed out accordmg to the cell width, which is determmed from the assigned column widths as descnbed above Once the cell contents are layed out, the height of the cell is known
In step 746, the cell is checked to see whether it spans multiple rows If the cell does not span multiple rows, then execution proceeds to step 748 In step 748, the cell height is compared to the cunent height recorded for the row (The height for each row is mitialized to zero ) If the cell height is greater than the row height, then the height of the cunent row is set to the cell height Execution proceeds from step 748 to step 760
If the cunent cell does span multiple rows then execution proceeds from step 746 to step 750 In step 750 the number of rows spanned by the cunent cell is compared to the thisRowsRowspan vaπable value If the cunent cell spans more rows than the value of thisRowsRowspan, then execution proceeds to step 756, where the value of the rowSpanHeight vaπable is set to the height of the cunent cell The rowSpanHeight vanable mdicates the maximum height spanned by a row-spanning cell of the cunent row Execution proceeds from step 756 to step 758, where the thisRowsRowspan value is updated to the number of rows spanned by the cunent cell Execution proceeds from step 758 to step 760 In step 750, if the cunent cell does not span more rows than the value of thisRowsRowspan, then execution proceeds to step 752 In step 752, the number of rows spanned by the cunent cell is again compared to the thisRowsRowspan vaπable value If the two values are equal, then in step 754 the cunent cell height is checked to see if it is greater than the cunent value of rowSpanHeight If so, then rowSpanHeight is updated to the height of the cunent cell, and execution proceeds to step 760 If the number of rows spanned by the cunent cell is not equal to thisRowsRowspan m the comparison of step 752, then execution proceeds to step 760
Once step 760 is reached from step 748, 752, or 754, the cunent cell has been processed to determine how its height or other characteristics, such as the number of rows it spans, affect the calculation of the height of the cunent row In step 760, the column index is incremented to reference the next column in the row, and execution loops back to step 742 From step 742, another loop iteration may be performed, or if all of the row's cells have been processed, then the row processing illustrated in Figure 1 1 for step 726 of Figure 10 may end
Once the cells of the cunent row have been processed m step 726 execution proceeds to step 728 of Figure 10 In step 728, the heights of the rows spanned by the largest spannmg cell of the cunent row may be adjusted, if necessary The row heights of these rows may be summed If this sum is less than the height of the largest spannmg cell (mdicated by the rowSpanHeight vanable), then the row heights may be adjusted As discussed above for column width adjustment, the row height adjustment may be performed using any of vaπous methods
Once any necessary row height adjustments are made m step 728, the row index is decremented in step 730 to refer to the next highest row m the table, and execution loops back to step 722 From step 722, another loop iteration may be performed, or the execution illustrated in the flowchart diagram of Figure 10 may end if all the table rows have already been processed
Figure 12 - Efficient Layout of Nested Display Tables
As noted previously, some types of tables allow table nestmg For example, HTML tables may be nested The following HTML code shows an example of a nested HTML table
<TABLE>
<TRxTD>Row 0, Column 0 <TD>Row 0, Column 1 <TD>Row 0, Column 2 <TR><TD>Row 1, Column 0 <TD>Row 1, Column 1 <TD>Row 1, Column 2 <BR>Nested table
<TABLE BORDER="l ">
<TR><TD>Row 0, Column 0
<TD>Row 0, Column 1
<TR><TD>Row 1, Column 0 <TD>Row 1, Column 1
</TABLE> <TRxTD>Row 2, Column 0 <TD>Row 2, Column 1 <TD>Row 2, Column 2 < TABLE>
Figure 12 illustrates what this table may look like when displayed
In many cases, it may be desirable for a display table layout method to efficiently handle nested tables For example, nested HTML tables are commonly found m web pages Maximizing layout performance improvement may be especially important in laying out tables for small footpnnt devices, smce these devices may have very little processing power Also, the situations and environments in which these devices are used may make it especially important to layout tables quickly For example, a user of a web browser application running m a cellular phone may need to quickly view a web page including nested tables in order to obtain an important phone number needed for an immediate situation, whereas a desktop computer user may typically browse the web m a more leisurely manner
As discussed above, when a table descπption is parsed, data structures representmg the table descnption may be created and stored in system memory In one embodiment, the table descπption may be stored as objects comprising methods such as Inspect(), Apportιon(), Normalιze(), etc that conespond to the processes descnbed above The display table layout method may traverse through the table, invoking these methods and controlling the recursion process to efficiently handle nested tables
The following HTML code describes a simple HTML table with one cell
<table> <tr> <td>cell data </table>
Figure 13 illustrates the resulting method mvocations when this HTML table is processed The method mvocation trace shown m Figure 13 follows the general process described above for laymg out a display table As shown, the display table is first inspected Inspecting the table comprises mspecting each table cell (In this example there is only one cell ) After the table is inspected, the table is then apportioned and normalized as descπbed above and shown in Figure 13
The following HTML code descπbes a simple HTML table with one cell that includes a nested table with one cell
<table>tablel
<tr>
<td>cell <table>table2 <trxtd>nested cell </table>
</table>
Figure 14 illustrates the resultmg method invocations when this HTML table is processed The method mvocation trace shown in Figure 14 is similar to that in Figure 13 However, as shown in Figure 14, the mspection process for the cell of the outer table results in a second inspection process being initiated for the nested table included m the cell of the outer table As shown m the figure, the nested table is inspected before minimum and maxunum possible widths are assigned to the outer table cell Similarly the apportionmg process for the cell of the outer table results in a second apportionmg process bemg initiated for the nested table mcluded m the cell of the outer table
The method invocation trace of Figure 14 illustrates a smgle method mvocation controlling the overall layout process for the outer table, I e , the "Layout (Body)" method invocation Note that when the cell of the outer table is layed out, (shown by the "Layout (Celll)" method call) there is no such method mvocation to layout the nested table mcluded in the cell of the outer table The nested table is identical to the table processed m Figure 13 Thus, mvokmg the "Layout (Body)" method on the inner table would result in the Figure 13 method mvocation trace bemg mcluded under the "Layout (Celll)" method mvocation m Figure 14. As shown m the Figure 14, each of the Figure 13 method mvocations are already performed m the Figure 14 method mvocation trace Thus, the layout method descπbed herem is able to avoid the duplication of processmg.
Although the embodiments above have been described m considerable detail, numerous variations and modifications will become apparent to those skilled m the art once the above disclosure is fully appreciated It is mtended that the following claims be interpreted to embrace all such vaπations and modifications.

Claims

WHAT IS CLAIMED IS:
1 A method for efficiently laymg out a display table specified by a display table descπption, wherem the display table compπses rows and columns, wherem the rows and columns define cells, the method compnsing mspecting the display table descnption, wherem said inspecting compπses determining the minimum and maximum possible widths for each cell of the display table and usmg the minimum and maximum possible widths for each cell to determine the minimum and maxunum possible widths for each column of the display table; apportionmg the display table, wherem said apportionmg compπses usmg the minimum and maxunum possible widths for each column of the display table to assign a width to each column of the display table and determmmg the resulting height of each table cell based on the assigned column widths, and usmg the cell height information to assign a height to each row of the display table
2 The method of claim 1 , further compnsing- normalizing the display table, wherem said normalizing compnses determmmg absolute table coordinate from relative table coordmates, wherem said apportiomng the display table compπses determining the relative table coordmates.
3 The method of claim 1 , wherem the display table compnses a plurality of row and columns, wherem the display table mcludes a cell that spans at least two columns.
4 The method of claim 1 , wherem the display table mcludes a cell compπsmg a nested table
5 The method of claim 1, wherem the display table is represented m memory as an object
6. The method of claim 5, wherem the display table object compnses an "inspect" method and an "apportion" method, wherem said mspecting the display table compnses mvokmg the "inspect" method of the display table object, wherem said apportiomng the display table compπses mvokmg the "apportion" method of the display table object
7. The method of claim 1, wherem said determmmg the minimum and maximum possible widths for each cell of the display table is dependent upon a content of said each cell
8. The method of claim 5 , wherem the content m a particular cell mcludes text, and wherem the text is displayable m a first width and a second width
9 The method of claim 8, wherem the first width and the second width represent the mmimum and maxunum possible widths for said particular cell
10. The method of claim 1, wherem the display table descnption compπses a markup language table descπption
11 The method of claim 1 , wherem the display table descnption compπses a hypertext markup language (HTML) table descπption.
12. The method of claim 1, wherem said mspecting and said apportiomng are implemented m a small footprmt device
13 A system comprising: a processmg unit; memory coupled to the processmg unit; a program stored in the memory, wherem the program is executable to lay out a display table specified by a display table descπption, wherem the display table compnses rows and columns, wherem the rows and columns define cells; wherem said laymg out a display table compnses inspecting the display table descnption, wherem said inspecting compnses determmmg the minimum and maxunum possible widths for each cell of the display table and usmg the minimum and maximum possible widths for each cell to determine the mmimum and maximum possible widths for each column of the display table; apportiomng the display table, wherem said apportionmg compnses usmg the minimum and maxunum possible widths for each column of the display table to assign a width to each column of the display table and determining the resulting height of each table cell based on the assigned column widths, and usmg the cell height information to assign a height to each row of the display table
14. The system of claim 13, wherem said laymg out a display table further compπses: normalizing the display table, wherem said normalizing compnses determmmg absolute table coordmates from relative table coordmates, wherem said apportionmg the display table compnses determmmg the relative table coordinates.
15. The system of claim 13, wherem the display table compπses a plurality of rows and columns; wherem the display table mcludes a cell that spans at least two columns
16. The system of claim 13, wherem the display table mcludes a cell compnsmg a nested table
17. The system of claim 13, wherem the display table is represented m the memory as an object.
18. The system of claim 17, wherem the display table object compnses an "inspect" method and an "apportion" method, wherem said mspecting the display table compπses mvokmg the "inspect" method of the display table object, wherem said apportiomng the display table compπses mvokmg the "apportion" method of the display table object
19. The system of claim 13, wherem said determining the minimum and maximum possible width for each cell of the display table is dependent upon a content of said each cell.
20. The system of claim 19, wherem the content m a particular cell mcludes text, and wheπn the text is displayable m a first width and a second width.
21 The system of claim 20, wherem the first width and the second width represent the minimum and maxunum possible widths for said particular cell.
22. The system of claim 13, wherem the display table descnption compnses a markup language table descnption.
23. The system of claim 13, wherem the display table descnption compπses a hypertext markup language (HTML) table descnption
24. The system of claim 13, wherem the processmg unit and memory are mcluded within a small footpnnt device
25. A memory medium compnsmg program instructions which implement laymg out a display table specified by a display table descπption, wherem the display table compπses rows and columns, wherem the rows and columns define cells, wherem said laymg out the display table compπses- mspecting the display table descnption, wherem said mspecting compnses determmmg the minimum and maxunum possible widths for each cell of the display table and usmg the minimum and maxunum possible widths for each cell to determme the minimum and maximum possible widths for each column of the display table; apportionmg the display table, wherem said apportiomng compnses usmg the minimum and maximum possible widths for each column of the display table to assign a width to each column of the display table and determmmg the resulting height of each table cell based on the assigned column widths, and usmg the cell height information to assign a height to each row of the display table.
26. The memory medium of claim 25, wherem said laymg out the display table further compnses: normalizing the display table, wherem said normalizing compπses determmmg absolute table coordmates, wherem said apportiomng the display table compπses determining the relative table coordmates.
27. The memory medium of claim 25, wherem the display table compnses a plurality of rows and columns; wherem the display table mcludes a cell that spans at least two columns
28. The memory medium of claim 25, wherem the display table mcludes a cell compnsmg a nested table
29. The memory medium of claim 25, wherem the display table is represented m memory as an object
30. The memory medium of claim 29, wherem the display table object compπses an "inspect" method and an "apportion" method, wherem said mspecting the display table compnses mvokmg the "inspect" method of the display table object; wherem said apportiomng the display table compnses mvokmg the "apportion" method of the display table object.
31. The memory medium of claim 25, wherem said determining the minimum and maxunum possible widths for each cell of the display table is dependent upon a content of said each cell.
32. The memory medium of claim 31 , wherem the content m a particular cell mcludes text, and wherem the text is displayable m a first width and a second width.
33. The memory medium of claim 32, wherem the first width and the second width represent the minimum and maximum possible widths for said particular cell
34. The memory medium of claim 25, wherem the display table descnption compπses a markup language table descπption
35 The memory medium of claim 25, wherem the display table descπption compπses a hypertext markup language (HTML) table descnption
36. The memory medium of claim 25, wherem said mspecting and said apportionmg are implemented m a small footpnnt device
PCT/US2000/033968 1999-12-15 2000-12-15 System and method for efficient layout of a display table WO2001044983A1 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
EP00986403A EP1238346A1 (en) 1999-12-15 2000-12-15 System and method for efficient layout of a display table
JP2001546005A JP2003517685A (en) 1999-12-15 2000-12-15 System and method for efficiently laying out a display table
AU22647/01A AU2264701A (en) 1999-12-15 2000-12-15 System and method for efficient layout of a display table

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/461,896 US6639611B1 (en) 1999-12-15 1999-12-15 System and method for efficient layout of a display table
US09/461,896 1999-12-15

Publications (1)

Publication Number Publication Date
WO2001044983A1 true WO2001044983A1 (en) 2001-06-21

Family

ID=23834385

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2000/033968 WO2001044983A1 (en) 1999-12-15 2000-12-15 System and method for efficient layout of a display table

Country Status (5)

Country Link
US (1) US6639611B1 (en)
EP (1) EP1238346A1 (en)
JP (1) JP2003517685A (en)
AU (1) AU2264701A (en)
WO (1) WO2001044983A1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2957431A1 (en) * 2010-03-11 2011-09-16 Ormetis Data table displaying method, involves executing action to adjust sizes of visible cell in window based on content of cell, and repositioning object in position before action is executed
WO2011130283A1 (en) * 2010-04-12 2011-10-20 Google Inc. Row heights in electronic documents

Families Citing this family (65)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2365684A (en) * 2000-05-26 2002-02-20 Nokia Mobile Phones Ltd Displaying a table
EP1168160A1 (en) * 2000-06-19 2002-01-02 Hewlett-Packard Company, A Delaware Corporation Process for automatically displaying graphical objects such as buttons in a web page
DE10036929C2 (en) * 2000-07-28 2003-04-10 Siemens Ag Method for outputting a table and associated device
US6981209B1 (en) * 2000-09-26 2005-12-27 Microsoft Corporation Automatic layout of vertical flow oriented characters within a defined area
US20020103830A1 (en) * 2001-01-31 2002-08-01 Hamaide Fabrice C. Method for controlling the presentation of multimedia content on an internet web page
US6976226B1 (en) * 2001-07-06 2005-12-13 Palm, Inc. Translating tabular data formatted for one display device to a format for display on other display devices
US6948132B2 (en) * 2001-12-12 2005-09-20 International Business Machines Corporation Method for mapping screen display objects with spatial coordinates into an HTML table
AUPS194702A0 (en) * 2002-04-24 2002-05-30 Canon Kabushiki Kaisha Markup-language document formatting in memory-constrained enviroment
US7065704B1 (en) * 2002-07-18 2006-06-20 Embedded Internet Solutions, Inc. Methods for fast HTML rendering
US20040061717A1 (en) * 2002-09-30 2004-04-01 Menon Rama R. Mechanism for voice-enabling legacy internet content for use with multi-modal browsers
US7366978B1 (en) * 2003-02-13 2008-04-29 Microsoft Corporation Method and system for creating a grid-like coordinate system for addressing data contained in an irregular computer-generated table
WO2004072867A1 (en) * 2003-02-14 2004-08-26 Access Co., Ltd. Browser program for performing table-layout
US7421649B1 (en) 2003-04-28 2008-09-02 Adobe Systems Incorporated Enhanced visual table editing
US9715678B2 (en) 2003-06-26 2017-07-25 Microsoft Technology Licensing, Llc Side-by-side shared calendars
US7707255B2 (en) 2003-07-01 2010-04-27 Microsoft Corporation Automatic grouping of electronic mail
NO20034035D0 (en) 2003-09-11 2003-09-11 Opera Software Asa Distinguish and display tables in documents
US7216291B2 (en) * 2003-10-21 2007-05-08 International Business Machines Corporation System and method to display table data residing in columns outside the viewable area of a window
US7856596B2 (en) * 2004-02-17 2010-12-21 Microsoft Corporation Method and system for separation of content and layout definitions in a display description
US7581178B2 (en) * 2004-07-30 2009-08-25 Microsoft Corporation Systems and methods for pagination using variable page dimensions
US7721197B2 (en) * 2004-08-12 2010-05-18 Microsoft Corporation System and method of displaying content on small screen computing devices
US8146016B2 (en) 2004-08-16 2012-03-27 Microsoft Corporation User interface for displaying a gallery of formatting options applicable to a selected object
US8255828B2 (en) 2004-08-16 2012-08-28 Microsoft Corporation Command user interface for displaying selectable software functionality controls
US7703036B2 (en) 2004-08-16 2010-04-20 Microsoft Corporation User interface for displaying selectable software functionality controls that are relevant to a selected object
US9015621B2 (en) 2004-08-16 2015-04-21 Microsoft Technology Licensing, Llc Command user interface for displaying multiple sections of software functionality controls
US8418075B2 (en) 2004-11-16 2013-04-09 Open Text Inc. Spatially driven content presentation in a cellular environment
US8001476B2 (en) 2004-11-16 2011-08-16 Open Text Inc. Cellular user interface
US7472340B2 (en) * 2004-12-20 2008-12-30 Microsoft Corporation Method and computer-readable medium for generating a multiple column layout
US7725813B2 (en) * 2005-03-30 2010-05-25 Arizan Corporation Method for requesting and viewing a preview of a table attachment on a mobile communication device
US20070055685A1 (en) * 2005-08-18 2007-03-08 Avaya Technology Corp. Telecommunications terminal with multiple display modes
US8627222B2 (en) 2005-09-12 2014-01-07 Microsoft Corporation Expanded search and find user interface
US20070118795A1 (en) * 2005-11-23 2007-05-24 Peter Noyes A Method of Processing Annotations Using an Editable Multi-Dimensional Catalog
US20070136655A1 (en) * 2005-12-12 2007-06-14 Peters Johan C Method and system for linearly resizing columns in a table
US7725815B2 (en) * 2005-12-12 2010-05-25 Sap Ag Method and system for ordered resizing columns in a table
US7477263B2 (en) * 2006-03-10 2009-01-13 International Business Machines Corporation Relayout of all or part of a graph in association with a change in state of a graph element
US9727989B2 (en) 2006-06-01 2017-08-08 Microsoft Technology Licensing, Llc Modifying and formatting a chart using pictorially provided chart elements
JP2008129702A (en) * 2006-11-17 2008-06-05 Canon Inc Information processor, control method and control program
US9075855B2 (en) * 2006-12-14 2015-07-07 Sybase, Inc. Table synthesis from raw data
US7925989B2 (en) 2007-05-09 2011-04-12 Sap Ag System and method for simultaneous display of multiple tables
US8484578B2 (en) 2007-06-29 2013-07-09 Microsoft Corporation Communication between a document editor in-space user interface and a document editor out-space user interface
US8762880B2 (en) 2007-06-29 2014-06-24 Microsoft Corporation Exposing non-authoring features through document status information in an out-space user interface
CN101689113A (en) * 2007-07-02 2010-03-31 皇家飞利浦电子股份有限公司 Method of presenting a schedule of events
US20090083614A1 (en) * 2007-09-26 2009-03-26 Xerox Corporation System and method for optimizing information display in spreadsheets and tables
US20090085921A1 (en) * 2007-10-01 2009-04-02 Lydia Mai Do Populate Web-Based Content Based on Space Availability
US9588781B2 (en) 2008-03-31 2017-03-07 Microsoft Technology Licensing, Llc Associating command surfaces with multiple active components
US7549116B1 (en) 2008-03-31 2009-06-16 International Business Machines Corporation Computer program product for displaying multiple row layouts in a table
US9665850B2 (en) 2008-06-20 2017-05-30 Microsoft Technology Licensing, Llc Synchronized conversation-centric message list and message reading pane
US8103951B2 (en) * 2008-09-30 2012-01-24 Apple Inc. Dynamic schema creation
US9046983B2 (en) 2009-05-12 2015-06-02 Microsoft Technology Licensing, Llc Hierarchically-organized control galleries
JP5634140B2 (en) * 2010-06-23 2014-12-03 キヤノン株式会社 Information processing apparatus, display method, and program
US8429566B2 (en) 2010-11-09 2013-04-23 Honeywell International Inc. Programmable HVAC controller with cross column selection on a touch screen interface
JP5331846B2 (en) * 2011-04-11 2013-10-30 東芝テック株式会社 Allocation device and allocation program
US8972853B2 (en) * 2012-04-13 2015-03-03 Business Objects Software Limited Rendering digital report elements using a layout optimization tool
CN102693217B (en) * 2012-05-15 2014-11-26 中国人民解放军91550部队 Automatic layout method by table font and paper size analysis
US10445421B2 (en) * 2013-02-21 2019-10-15 International Business Machines Corporation Optimizing rendering of data tables
US9665270B2 (en) * 2013-06-28 2017-05-30 Sap Se Layout algorithm for entity relation model diagram
US9846730B2 (en) * 2013-11-21 2017-12-19 Sap Se Interacting with resources exchanged using open data protocol
US20160026616A1 (en) * 2014-07-28 2016-01-28 Microsoft Corporation Presenting dataset of spreadsheet in form based view
US10769826B2 (en) * 2014-12-31 2020-09-08 Servicenow, Inc. Visual task board visualization
US9400776B1 (en) * 2015-03-09 2016-07-26 Vinyl Development LLC Adaptive column selection
US10558742B2 (en) 2015-03-09 2020-02-11 Vinyl Development LLC Responsive user interface system
US10366114B2 (en) 2015-11-15 2019-07-30 Microsoft Technology Licensing, Llc Providing data presentation functionality associated with collaboration database
US9864732B2 (en) * 2016-05-02 2018-01-09 Google Inc. User interfaces that facilitate management of formatting of digital content
US10198404B2 (en) * 2016-06-10 2019-02-05 ProntoForms Inc. Flexible online form display
US11496435B2 (en) * 2016-10-28 2022-11-08 The Nielsen Company (Us), Llc Systems, methods, and apparatus to facilitate mapping a device name to a hardware address
US11003847B1 (en) * 2019-11-05 2021-05-11 Sap Se Smart dynamic column sizing

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0440496A2 (en) * 1990-02-01 1991-08-07 Brother Kogyo Kabushiki Kaisha Layout display control system for document processing apparatus
US5425138A (en) * 1991-12-26 1995-06-13 Casio Computer Co., Ltd. Apparatus and method for automatically editing documents including text data and table data with ruled lines
US5808914A (en) * 1994-04-11 1998-09-15 Fuji Xerox Co., Ltd. Table allocating apparatus and method

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5379372A (en) * 1990-09-13 1995-01-03 Wu; William C. Apparatus and method for designing a form structure using column and row rules
US5588099A (en) * 1994-09-01 1996-12-24 Microsoft Corporation Method and system for automatically resizing tables
JP2975863B2 (en) * 1995-02-24 1999-11-10 三洋電機株式会社 Document creation device
US5768606A (en) * 1995-08-31 1998-06-16 International Business Machines Corporation Method, system, computer program product and program storage device for declaring column widths of matrices
US6055550A (en) * 1996-03-21 2000-04-25 Oracle Corporation Auto sizing of fields for displaying computer forms
US5845299A (en) * 1996-07-29 1998-12-01 Rae Technology Llc Draw-based editor for web pages
JP3970357B2 (en) * 1996-08-13 2007-09-05 富士ゼロックス株式会社 Table allocation device and table allocation method
US5893127A (en) * 1996-11-18 1999-04-06 Canon Information Systems, Inc. Generator for document with HTML tagged table having data elements which preserve layout relationships of information in bitmap image of original document
US6088708A (en) * 1997-01-31 2000-07-11 Microsoft Corporation System and method for creating an online table from a layout of objects
US5812131A (en) * 1997-03-07 1998-09-22 International Business Machines Corp. Mobile client computer programmed to process table displays
US6311196B1 (en) * 1997-04-09 2001-10-30 Rae Technology Inc. Method and apparatus for implementing web pages having master borders
US6023714A (en) * 1997-04-24 2000-02-08 Microsoft Corporation Method and system for dynamically adapting the layout of a document to an output device
US6326970B1 (en) * 1997-05-16 2001-12-04 Liberate Technologies TV centric layout
US6300947B1 (en) * 1998-07-06 2001-10-09 International Business Machines Corporation Display screen and window size related web page adaptation system
US6504544B1 (en) * 1999-07-30 2003-01-07 Curl Corporation Processing layout of text graphical objects

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0440496A2 (en) * 1990-02-01 1991-08-07 Brother Kogyo Kabushiki Kaisha Layout display control system for document processing apparatus
US5425138A (en) * 1991-12-26 1995-06-13 Casio Computer Co., Ltd. Apparatus and method for automatically editing documents including text data and table data with ruled lines
US5808914A (en) * 1994-04-11 1998-09-15 Fuji Xerox Co., Ltd. Table allocating apparatus and method

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2957431A1 (en) * 2010-03-11 2011-09-16 Ormetis Data table displaying method, involves executing action to adjust sizes of visible cell in window based on content of cell, and repositioning object in position before action is executed
WO2011130283A1 (en) * 2010-04-12 2011-10-20 Google Inc. Row heights in electronic documents
US8572478B2 (en) 2010-04-12 2013-10-29 Google Inc. Row heights in electronic documents
US9720898B2 (en) 2010-04-12 2017-08-01 Google Inc. Row heights in electronic documents

Also Published As

Publication number Publication date
AU2264701A (en) 2001-06-25
US6639611B1 (en) 2003-10-28
JP2003517685A (en) 2003-05-27
EP1238346A1 (en) 2002-09-11

Similar Documents

Publication Publication Date Title
EP1238346A1 (en) System and method for efficient layout of a display table
US10008009B1 (en) Method for generating dynamic vector graphics
US10339209B2 (en) Webpage display method and device
US7237227B2 (en) Application user interface template with free-form layout
Reichenbach et al. Information technologies for comprehensive two-dimensional gas chromatography
US20090189920A1 (en) System and method for content based automatic zooming for document viewing on small displays
US8176081B2 (en) Forms integration of an external data model not implemented through a document object model (DOM) accessible application programming interface (API)
US10409856B2 (en) Approaches for associating terms with image regions
US8429551B2 (en) Application-based copy and paste operations
US9390077B2 (en) Document division method and system
RU2386171C2 (en) Levelling in lists generated according to template
EP1610230A2 (en) A method of annotating, retrieving and rendering a markup language document with digital ink annotations
US20040169688A1 (en) Multi-directional display and navigation of hierarchical data and optimization of display area consumption
JP2007128523A (en) IMAGE SUMMARIZING METHOD, IMAGE DISPLAY DEVICE, k-TREE DISPLAY SYSTEM, k-TREE DISPLAY PROGRAM AND k-TREE DISPLAY METHOD
CA2602608A1 (en) System and method of report rendering
WO2008121098A1 (en) Software digital fingerprint
US20090254834A1 (en) Standard Schema and User Interface for Website Maps
US20060242110A1 (en) Methods and apparatus for accessing geospatial information
Eidenberger et al. VizIR—a framework for visual information retrieval
JP6395160B2 (en) Document layout of electronic display
US9442623B2 (en) Guide line snapping
US7568153B2 (en) Methods and computer systems for document authoring
CN107193913A (en) The searching method and system of cartoon material
Brinkhoff A portable SVG-viewer on mobile devices for supporting geographic applications
Wang et al. Fusion of multiple deep convolutional neural networks (DCNNs) for improved segmentation of lung nodules in CT images

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CR CU CZ DE DK DM DZ EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT TZ UA UG UZ VN YU ZA ZW

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE TR BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
WWE Wipo information: entry into national phase

Ref document number: 2000986403

Country of ref document: EP

ENP Entry into the national phase

Ref document number: 2001 546005

Country of ref document: JP

Kind code of ref document: A

WWP Wipo information: published in national office

Ref document number: 2000986403

Country of ref document: EP

REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

WWW Wipo information: withdrawn in national office

Ref document number: 2000986403

Country of ref document: EP

DPE2 Request for preliminary examination filed before expiration of 19th month from priority date (pct application filed from 20040101)