PATENT DOCUMENT

Publication Number: US-7355609-B1
Application Number: US-21392902-A
Country: US
Kind Code: B1

Title: Computing visible regions for a hierarchical view

Abstract:
A method, apparatus, system, and signal-bearing medium that in an embodiment determines the visible regions of potentially overlapping views and writes the visible regions to an output device. The visible regions may be determined using the visible-above region associated with a view. The views may have child, parent, and sibling views. A view may be any object capable of being displayed. In this way, the number of times that a pixel is written to the output device is reduced.

Claims:
1. A method comprising:
 calculating an area on a screen above each of a plurality of views that the each of the plurality of views can be seen through; and 
 determining visible regions of the plurality of views based on the calculated areas on the screen, wherein some of the plurality of views overlap, 
 
     wherein the determining the visible regions further comprises calculating (((one of the visible-above regions) minus (a structural region of one of the plurality of views)) union ((a visible region of the one of the plurality of views) minus (an opaque region of the one of the plurality of views))). 
   
   
     2. A method comprising:
 calculating an area on a screen above each of a plurality of views that the each of the plurality of views can be seen through; and 
 determining visible regions of the plurality of views based on the calculated areas on the screen, wherein some of the plurality of views overlap, 
 
     wherein the determining the visible regions further comprises subtracting an opaque region of a child view from a visible-above region of one of the plurality of views. 
   
   
     3. An apparatus comprising:
 means for calculating an area on a screen above each of a plurality of views that the each of the plurality of views can be seen through; and 
 means for determining visible regions of the plurality of views based on the calculated areas on the screen, wherein some of the plurality of views overlap when displayed, 
 
     wherein the means for determining the visible regions further comprises means for calculating (((one of the visible-above regions) minus (a structural region of one of the plurality of views)) union ((a visible region of the one of the plurality of views) minus (an opaque region of the one of the plurality of views))). 
   
   
     4. The method of  claim 3 , wherein the determining the visible regions further comprises:
 calculating the visible regions for each child view in z-order. 
 
   
   
     5. The apparatus of  claim 3 , wherein at least one of the plurality of views comprises a translucent region and an opaque region. 
   
   
     6. An apparatus comprising:
 means for calculating an area on a screen above each of a plurality of views that the each of the plurality of views can be seen through; and 
 means for determining visible regions of the plurality of views based on the calculated areas on the screen, wherein some of the plurality of views overlap when displayed, 
 
     wherein the means for determining the visible regions further comprises means for subtracting an opaque region of a child view from a visible-above region of one of the plurality of views. 
   
   
     7. The apparatus of  claim 6 , wherein the means for determining the visible regions further comprises:
 means for calculating the visible regions for each child view in z-order. 
 
   
   
     8. A machine-readable medium encoded with instructions executable by one or more processors, which when executed cause the one or more processors to perform operations comprising:
 calculating an area on a screen above each of a plurality of views that the each of the plurality of views can be seen through; and 
 determining visible regions of the plurality of views based on the calculated areas on the screen, wherein some of the plurality of views overlap, 
 wherein the determining the visible regions further comprises calculating (((one of the visible-above regions) minus (a structural region of one of the plurality of views)) union ((a visible region of the one of the plurality of views) minus (an opaque region of the one of the plurality of views))). 
 
   
   
     9. A machine-readable medium encoded with instructions executable by one or more processors, which when executed cause the one or more processors to perform operations comprising:
 calculating an area on a screen above each of a plurality of views that the each of the plurality of views can be seen through; and 
 determining visible regions of the plurality of views based on the calculated areas on the screen, wherein some of the plurality of views overlap, 
 wherein the determining the visible regions further comprises subtracting an opaque region of a child view from a visible-above region of one of the plurality of views. 
 
   
   
     10. The machine-readable medium of  claim 9 , wherein the determining the visible regions further comprises:
 calculating the visible regions for each child view in z-order. 
 
   
   
     11. A computer comprising:
 a processor; and 
 a storage device, wherein the storage device includes instructions, which when executed by the processor cause the following operations to be performed:
 calculating an area on a screen above each of a plurality of views that the each of the plurality of views can be seen through; and 
 determining visible regions of the plurality of views based on the calculated areas on the screen, wherein some of the plurality of views overlap, 
 wherein the determining the visible regions further comprises calculating (((one of the visible-above regions) minus (a structural region of one of the plurality of views)) union ((a visible region of the one of the plurality of views) minus (an opaque region of the one of the plurality of views))). 
 
 
   
   
     12. A computer comprising:
 a processor; and 
 a storage device, wherein the storage device includes instructions, which when executed by the processor cause the following operations to be performed:
 calculating an area on a screen above each of a plurality of views that the each of the plurality of views can be seen through; and 
 determining visible regions of the plurality of views based on the calculated areas on the screen, wherein some of the plurality of views overlap, 
 wherein the determining the visible regions further comprises subtracting an opaque region of a child view from a visible-above region of one of the plurality of views. 
 
 
   
   
     13. The computer of  claim 12 , wherein the determining the visible regions further comprises:
 calculating the visible regions for each child view in z-order. 
 
   
   
     14. The computer of  claim 12 , wherein the storage device is contained with a display device. 
   
   
     15. The computer of  claim 12 , wherein the storage device is contained within a display adapter.

Description:
LIMITED COPYRIGHT WAIVER 
   A portion of the disclosure of this patent document contains material to which the claim of copyright protection is made. The copyright owner has no objection to the facsimile reproduction by any person of the patent document or the patent disclosure, as it appears in the U.S. Patent and Trademark Office file or records, but reserves all other rights whatsoever. 
   FIELD 
   This invention relates generally to display systems and more particularly to display systems utilizing graphical user interfaces. 
   BACKGROUND 
   Existing display systems are capable of making a composite of two or more display elements to generate a final image. In such systems, display elements often include overlapping layers, for example in a windowing system for a graphical user interface where on-screen elements, such as windows, may be moved around and placed on top of one another. 
   Rendering and displaying an image having two or more overlapping layers presents certain problems, particularly in determining how to render that portion of the image where the layers overlap. When the overlapping layers are opaque, the graphics system need only determine which layer is on top, and display the relevant portion of that layer in the final image, and portions of underlying layers that are obscured may be ignored. However, when overlapping layers are translucent, more complex processing may be called for, as some interaction among picture elements (pixels) in each overlapping layer may take place. Accordingly, some calculation may be required to overlay the image elements in order to derive a final image. 
   Step-by-step compositing techniques for performing these calculations require a number of separate operations in order to generate the final image. This is generally accomplished by forming the composite of image elements in a bottom-up approach, successively combining each new layer with the results of the compositing operations performed for the layers below. 
   This step-by-step compositing approach has several disadvantages. If the image is constructed in the frame buffer, on-screen flicker may result as the system writes to the frame buffer several times in succession. Alternatively, the image may be constructed in an off-screen buffer, thus avoiding on-screen flicker; however, such a technique requires additional memory to be allocated for the buffer, and also requires additional memory reads and writes as the final image is transferred to the frame buffer. 
   In addition, step-by-step generation of the final image may result in poor performance due to the large number of arithmetic operations that must be performed. Writing data to a frame buffer is particularly slow on many computers; therefore, conventional systems which write several layers to the frame buffer in succession face a particularly severe performance penalty. 
   Finally, such a technique often results in unnecessary generation of some portions of image elements that may later be obscured by other image elements, which results in poor performance. 
   SUMMARY 
   A method, apparatus, system, and signal-bearing medium are provided that in an embodiment determines the visible regions of potentially overlapping views and writes the visible regions to an output device. The visible regions may be determined using the visible-above region associated with a view. The views may have child, parent, and sibling views. A view may be any object capable of being displayed. In this way, the number of times that a pixel is written to the output device is reduced. 

   
     BRIEF DESCRIPTION OF THE DRAWINGS 
       FIG. 1A  depicts a pictorial representation of views on a screen, according to an embodiment of the invention. 
       FIGS. 1B ,  1 C,  1 D, and  1 E depict block diagrams illustrating intermediate results of example processing, according to an embodiment of the invention. 
       FIG. 2A  depicts a pictorial representation of views on a screen where the views have siblings, according to an embodiment of the invention. 
       FIGS. 2B ,  2 C,  2 D,  2 E, and  2 F depict block diagrams illustrating intermediate results of example processing, according to an embodiment of the invention. 
       FIG. 3  depicts a flowchart of example processing for a recalculate visible region and propagate function, according to an embodiment of the invention. 
       FIG. 4A  depicts a flowchart of example processing for a calculate visible region behind function, according to an embodiment of the invention. 
       FIG. 4B  depicts a flowchart of example processing for a calculate next visible region above function, according to an embodiment of the invention. 
       FIG. 5  depicts a flowchart of example processing for a recalculate visible region function, according to an embodiment of the invention. 
       FIG. 6  depicts a block diagram of a system for implementing an embodiment of the invention. 
   

   DETAILED DESCRIPTION 
   In the following detailed description of exemplary embodiments of the invention, reference is made to the accompanying drawings (where like numbers represent like elements), which form a part hereof, and in which is shown by way of illustration specific exemplary embodiments in which the invention may be practiced. These embodiments are described in sufficient detail to enable those skilled in the art to practice the invention, but other embodiments may be utilized and logical, mechanical, electrical, and other changes may be made without departing from the scope of the present invention. The following detailed description is, therefore, not to be taken in a limiting sense, and the scope of the present invention is defined only by the appended claims. 
   In the following description, numerous specific details are set forth to provide a thorough understanding of the invention. However, it is understood that the invention may be practiced without these specific details. In other instances, well-known circuits, structures, and techniques have not been shown in detail in order not to obscure the invention. 
     FIG. 1A  depicts a pictorial representation of views on a screen, according to an embodiment of the invention. Screen  100  includes view A  102 , view B  104 , and view C  106 . View A  102  includes a translucent region  107  and an opaque region  108 . The respective portions of the view B  104  and the view C  106  may be partially visible through the translucent region  107  of the view A  102 , but are not visible through the opaque region  108 . A view may be a window, a button, a slider, a menu, a dial, and icon, or any other type of displayable object or region on a display screen. 
     FIGS. 1B ,  1 C,  1 D, and  1 E depict block diagrams illustrating intermediate results of example processing for rendering the various views previously described above with reference to  FIG. 1A , according to an embodiment of the invention. 
     FIG. 1B  depicts an operation that intersects the visabove of A  109  with the structural region of A  102  to form the visible region of A  110 . A visabove (visible-above region) is the area on the screen above a view that the view can been seen through. A structural region of a view represents everything that might possibly be drawn on the screen, ignoring any opaque view or views that might be above the structural region. In this example, the visabove of A  109  happens to be identical to the screen  100  shown in  FIG. 1A  because the view A  102  is the topmost view. Since  FIG. 1B  shows the structural region of A  102  intersecting with the visabove of A  109 , which happens to be the screen  100 , the visible region of A  110  happens to be equal to the structural region of A  102  in this example, but in the general case this may not necessarily be true. The visible region of A  110  is now ready to be written to the screen, but in another embodiment it may be saved until later, e.g., when the entire screen (every pixel) may be written at once. 
     FIG. 1C  depicts an operation that subtracts the opaque region  108  of view A from the visabove of A  109  to yield the visabove of the next front-most view  112 , which in this example happens to be the visabove of B. Notice that the visabove of B  112  does not include the opaque region  108 ; instead the opaque region  108  ( FIG. 1A ) is punched out of the visabove of B  112 . 
     FIG. 1D  depicts an operation that intersects the visabove of B  112  with the structural region of B  104  to yield the visible region of B  114 . Notice that the visible region of B  114  has a rounded corner  115 , indicating that the opaque region  108  ( FIG. 1A ) has been punched out of the visible region of B  114 . The visible region of B  114  is now ready to be written to the screen. 
     FIG. 1E  depicts an operation that subtracts the opaque region of B  104  from the visabove of B  112  to yield the visabove of the next front-most view  116 , which in this example is the visabove of C  116 . Notice that the visabove of C  116  has an area  117  punched out of the visabove of C  116  equal to the opaque region of B  104  unioned with the opaque region  108  ( FIG. 1A ). 
   The visible portions of the remaining views may now be calculated in a manner analogous to those already described in  FIGS. 1B ,  1 C,  1 D, and  1 E. By calculating the visible portion of the views using the above described visabove technique, every opaque pixel on the screen may be written only once, despite having multiple overlapping views. 
     FIG. 2A  depicts a pictorial representation of views on a screen where the views may have children, according to an embodiment of the invention. Screen  200  includes view A  202 , view G  204 , view B  205 , and view F  206 . View A  202  has an opaque region  208  and a translucent region  207 . 
   Views may be arranged in a hierarchy. At the top of the hierarchy is a root view, which covers the display screen. The root view is partially or completely covered by its child views, and the root view is the parent of its child views. All views, except for root views, have parents. Child views may have their own children. A child view that shares the same parent view as one or more other child views is called a sibling view. Views G  204  and F  206  are sibling views. 
     FIGS. 2B ,  2 C,  2 D,  2 E, and  2 F depict block diagrams illustrating intermediate results of example processing for handling parent, child, and sibling views, according to an embodiment of the invention. 
     FIG. 2B  depicts an operation that intersects the visabove of G  210  with the structural region of G  204  to yield the visible region of G  214 . Notice that the visible region of G  214  has a rounded corner  215 , indicating that the opaque region  208  ( FIG. 2A ) has been punched out of the visible region of G  214 . Notice also that the opaque region  208  is punched out of the visabove of G  210 . The visible region of G  214  is now ready to be written to the screen, although in another embodiment it may be saved until later, e.g., when the entire screen (all pixels) may be written at once. 
     FIG. 2C  depicts an operation that subtracts the opaque region of G  204  from the visabove of G  210  to yield the visabove of F  216 . Notice that the visabove of F  216  has an area  217  punched out of it equal to the opaque region of G  204  unioned with the opaque region  208  ( FIG. 2A ). 
     FIG. 2D  depicts an operation that intersects the visabove of F  216  (previously determined in  FIG. 2C ) with the structural region of F  206  to yield the visible region of F  218 . The visible region of F  218  is now ready to be written to the screen, although in another embodiment it may be saved until later, e.g., when the entire screen (all pixels) is written at once. 
     FIG. 2E  depicts an operation that intersects the visabove of F  216  with the structural region of B  205  to yield the visible region of B  220 . The visible region of B  220  is now ready to be written to the screen, although in another embodiment it may be saved until later. 
     FIG. 2F  depicts an operation that subtracts the opaque region of B  205  from the visabove of B  221  to yield the visabove  222  to pass to the sibling of B. 
     FIG. 3  depicts a flowchart of example processing for a recalculate visible region and propagate function, according to an embodiment of the invention. The processing of  FIG. 3  may be called when a view is moved on an output device or when a new view is to be written to an output device. 
   Control begins at block  300 . Control then continues to block  305  where the recalculate visible region function is invoked, as further described below with reference to  FIG. 5 . Control then continues to block  310  where the calculate visible region behind function is invoked, as further described below with reference to  FIG. 4A . Control then continues to block  315  where the regions may be written to the screen after all the visible regions have been calculated. Control then continues to block  399  where the function returns. 
     FIG. 4A  depicts a flowchart of example processing for a calculate visible region behind function, according to an embodiment of the invention. Control begins at block  400 . An identification of the current view may be passed into the function of  FIG. 4A . Control then continues to block  405  where the visabove for the view behind the current view is calculated, as further described below with reference to  FIG. 4B . The value returned from the function of  FIG. 4B  is set to x, which in an embodiment may be a temporary variable used to store intermediate results during the processing of  FIG. 4A , but in other embodiments, any appropriate variable, register, temporary storage, or permanent storage may be used. 
   Control then continues to block  410  where it is determined whether a view exists behind the current view. If the determination at block  410  is true, then control continues to block  415  where the current view is set to be the view behind the current view. Control then continues to block  420  where the visabove for the current view is set to be x. Control then continues to block  425  where the visible region for the current view is recalculated, as further described below with reference to  FIG. 5 . Control then continues to block  430  where x is set to be the returned value from the calculate next visabove function, which is further described below with reference to  FIG. 4B . Control then returns to block  410 , as previously described above. 
   If the determination at block  410  is false, then control continues to block  435  where it is determined whether the current view has a parent view. If the determination at block  435  is true, then control continues to block  440  where the visabove of the current view is set to be x. Control then continues to block  445  where the visible region behind the parent is calculated via a recursive call to the function of  FIG. 4A . Control then continues to block  450  where the function returns. 
   If the determination at block  435  is false, then control continues directly to block  450  where the function returns. 
   If the determination at block  405  is true, then control continues to block  410  where the recalculate and propagate function is called to process the view behind the current view, as previously described above with reference to  FIG. 3 . Control then continues to block  499  where the function returns. 
     FIG. 4B  depicts a flowchart of example processing for a calculate next visible region above function, according to an embodiment of the invention. Control begins at block  460 . Control then continues to block  465  where the variable x is set to be the visabove for the current view. Control then continues to block  470  where it is determined whether the current view is visible. 
   If the determination at block  470  is true, then control continues to block  475  where x is set to be x minus the structure of the current view. Control then continues to block  480  where the union of x with the visible region of the current view is performed and the result is set to x. Control then continues to block  485  where the opaque region of the current view is subtracted from x and the result is set to x. Control then continues to block  490  where the function returns the value of x. 
   If the determination at block  470  is false, then control continues directly to block  490  where the function returns the value of x. 
     FIG. 5  depicts a flowchart of example processing for a recalculate visible region function, according to an embodiment of the invention. Control begins at block  500 . An indication of the view to be processed may be passed as a parameter into the function of  FIG. 5 . Control then continues to block  505  where the visabove of the passed-in view is stored in a variable, which in an embodiment is denominated as x. The variable x may be a temporary variable used to store intermediate results during the processing of  FIG. 5 , but in other embodiments, any appropriate variable, register, temporary storage, or permanent storage may be used. Control then continues to block  510  where a determination is made whether a child of the view exists. 
   If the determination at block  510  is true, then control continues to block  515  where the visabove of the child is set to be x. Control then continues to block  520  where the function of  FIG. 5  is recursively called to recalculate the visible region of the child. Control then continues to block  525  where the variable x is set to be the result returned from the calculate next visabove function, as previously described above with reference to  FIG. 4B . Control then continues to block  530  where the current view is set to be the next child in z-order, which is the order of the views depth-wise as they appear on the display screen. Control then returns to block  510 , as previously described above. 
   If the determination at block  510  is false, then control continues to block  535  where the visible region of the view is set to be the variable x. Control then continues to block  599  where the function returns. 
     FIG. 6  depicts a detailed block diagram of a system for implementing an embodiment of the invention. Illustrated are server  601  connected to a computer  602  via a network  610 . Although one server  601 , one computer  602 , and one network  610  are shown, in other embodiments any number or combination of them may be present. Although the server  601  and the network  610  are shown, in another embodiment they may not be present. 
   The computer  602  may include a processor  630 , a storage device  635 , an input device  637 , and an adapter  638 , all connected via a bus  680 . The adapter  638  may further be connected to an output device  640 . 
   The processor  630  may represent a central processing unit of any type of architecture, such as a CISC (Complex Instruction Set Computing), RISC (Reduced Instruction Set Computing), VLIW (Very Long Instruction Word), or a hybrid architecture, although any appropriate processor may be used. The processor  630  may execute instructions and may include that portion of the computer  602  that controls the operation of the entire computer. Although not depicted in  FIG. 6 , the processor  630  typically includes a control unit that organizes data and program storage in memory and transfers data and other information between the various parts of the computer  602 . The processor  630  may receive input data from the input device  637  and the network  610 , may read and store code and data in the storage device  635 , may send data to the adapter  638  if present and/or the output device  640 , and may send and receive code and/or data to/from the network  610 . 
   Although the computer  602  is shown to contain only a single processor  630  and a single bus  680 , the present invention applies equally to computers that may have multiple processors and to computers that may have multiple buses with some or all performing different functions in different ways. 
   The storage device  635  represents one or more mechanisms for storing data. For example, the storage device  635  may include read only memory (ROM), random access memory (RAM), magnetic disk storage media, optical storage media, flash memory devices, and/or other machine-readable media. In other embodiments, any appropriate type of storage device may be used. Although only one storage device  635  is shown, multiple storage devices and multiple types of storage devices may be present. Further, although the computer  602  is drawn to contain the storage device  635 , it may be distributed across other computers, for example on server  601 . 
   The storage device  635  may instructions  698  capable of being executed on the processor  630  to carry out the functions of the present invention, as previously described above with reference to  FIGS. 1A-1E ,  2 A- 2 F, and  3 - 5 . In another embodiment, some or all of the functions of the present invention may be carried out via hardware in lieu of a processor-based system. Of course, the storage device  635  may also contain additional software and data (not shown). 
   Although the instructions  698  are shown to be within the storage device  635  in the computer  602 , some or all of the instructions  698  may be distributed across other systems, for example on the server  601  and accessed via the network  610 . In another embodiment, the functions of the instructions  698  may be implemented in the adapter  638  or the output device  640 , either in software or in hardware. 
   The input device  637  may be a keyboard, mouse, trackball, touchpad, touchscreen, keypad, microphone, voice recognition device, or any other appropriate mechanism for the user to input data to the computer  602  and to create and/or move views. Although only one input device  637  is shown, in another embodiment any number and type of input devices may be present. 
   The output device  640  is that part of the computer  602  that communicates output to the user. The output device  640  may be a cathode-ray tube (CRT) based video display well known in the art of computer hardware. But, in other embodiments the output device  640  may be replaced with a liquid crystal display (LCD) based or gas, plasma-based, flat-panel display. In still other embodiments, any appropriate display device may be used suitable for displaying views may be used. Although only one output device  640  is shown, in other embodiments, any number of output devices of different types or of the same type may be present. 
   The adapter  638  may be a display adapter that accepts data and sends it to the output device  640 . In another embodiment, the adapter  638  may not be present. 
   The bus  680  may represent one or more busses, e.g., PCI, ISA (Industry Standard Architecture), X-Bus, EISA (Extended Industry Standard Architecture), or any other appropriate bus and/or bridge (also called a bus controller). 
   The computer  602  may be implemented using any suitable hardware and/or software, such as a personal computer or other electronic computing device. Portable computers, laptop or notebook computers, PDAs (Personal Digital Assistants), two-way alphanumeric pagers, keypads, portable telephones, pocket computers, appliances with a computational unit, and mainframe computers are examples of other possible configurations of the computer  602 . The hardware and software depicted in  FIG. 6  may vary for specific applications and may include more or fewer elements than those depicted. For example, other peripheral devices such as audio adapters, or chip programming devices, such as EPROM (Erasable Programmable Read-Only Memory) programming devices may be used in addition to or in place of the hardware already depicted. 
   The network  610  may be any suitable network and may support any appropriate protocol suitable for communication between the server  601  and the computer  602 . In an embodiment, the network  610  may support wireless communications. In another embodiment, the network  610  may support hard-wired communications, such as a telephone line or cable. In another embodiment, the network  610  may support the Ethernet IEEE 802.3x specification. In another embodiment, the network  610  may be the Internet and may support IP (Internet Protocol). In another embodiment, the network  610  may be a local area network (LAN) or a wide area network (WAN). In another embodiment, the network  610  may be a hotspot service provider network. In another embodiment, the network  610  may be an intranet. In another embodiment, the network  610  may be a GPRS (General Packet Radio Service) network. In another embodiment, the network  610  may be any appropriate cellular data network or cell-based radio network technology. In another embodiment, the network  610  may be an IEEE (Institute of Electrical and Electronics Engineers) 802.11B wireless network. In still another embodiment, the network  610  may be any suitable network or combination of networks. Although one network  610  is shown, in other embodiments any number of networks (of the same or different types) may be present. 
   As was described in detail above, aspects of an embodiment pertain to specific apparatus and method elements implementable on a computer or other electronic device. In another embodiment, the invention may be implemented as a program product for use with an electronic device. The programs defining the functions of this embodiment may be delivered to an electronic device via a variety of signal-bearing media, which include, but are not limited to: 
   (1) information permanently stored on a non-rewriteable storage medium, e.g., a read-only memory device attached to or within an electronic device, such as a CD-ROM readable by a CD-ROM drive; 
   (2) alterable information stored on a rewriteable storage medium, e.g., a hard disk drive or diskette; or 
   (3) information conveyed to an electronic device by a communications medium, such as through a computer or a telephone network, including wireless communications. 
   Such signal-bearing media, when carrying machine-readable instructions that direct the functions of the present invention, represent embodiments of the present invention.

Metadata:
Filing Date: 20020806
Publication Date: 20080408
Grant Date: 20080408
Priority Date: 20020806
Inventors: VOAS ED
FULLERTON GUYERIK B.
Assignee: APPLE INC
CPC Classifications: [{"code": "G09G2340/12", "inventive": false, "first": false, "tree": "[]"}, {"code": "G09G5/14", "inventive": true, "first": true, "tree": "[]"}, {"code": "G09G2340/12", "inventive": false, "first": false, "tree": "[]"}, {"code": "G09G2310/04", "inventive": false, "first": false, "tree": "[]"}, {"code": "G09G2310/04", "inventive": false, "first": false, "tree": "[]"}, {"code": "G09G5/14", "inventive": true, "first": true, "tree": "[]"}]
Family ID: 39263509