IP Library Granted Patent US 8,842,131
Granted Patent B2
US 8,842,131 · App. 13/347,667 · Granted Sep 23, 2014

System and method for framework clipping

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,842,131
App. No.
13/347,667
Granted
Sep 23, 2014
Kind
B2
Abstract

A method and system for framework clipping are disclosed. A user interface tree of widgets corresponding to widgets requiring clipping is traversed. For each encountered widget, layer allocation operations are performed which include selecting a current, previous, or next layer to which to allocate the widget and determining whether the selected layer can accommodate the widget, where a determination that the selected layer cannot accommodate the widget results in a bit from a stencil buffer being allocated to the selected layer. A value of the selected layer is incremented to account for the widget being allocated to the selected layer A stencil test mask is generated as a combination of value of the layers previous to a current layer. The stencil test mask is written to the stencil buffer, and the layer allocation operations are repeated for each remaining widget.

Claims (64)

1. A method, comprising:

traversing a user interface tree of widgets corresponding to widgets requiring clipping that are present in a scene to be rendered;

for each encountered widget, performing layer allocation operations comprising:

selecting a current, previous, or next layer to which to allocate the widget;

determining whether the selected layer can accommodate the widget;

based on a determination that the selected layer cannot accommodate the widget,

allocating a bit from a stencil buffer to the selected layer and incrementing a value of the selected layer to account for the widget being allocated to the selected layer;

based on a determination that the selected layer can accommodate the widget, incrementing the value of the selected layer to account for the widget being allocated to the selected layer;

generating a stencil test mask formed as a combination of the values of layers previous to a current layer;

writing the stencil test mask to a stencil buffer; and

repeating the layer allocation operations for each remaining widget,

generating, by a processor, a reference layer comprising a logical OR of the current value of all layers;

generating a draw test mask comprising bits of the stencil buffer that are allocated to all layers;

applying the draw test mask to the stencil buffer;

passing contents of the stencil buffer to a frame buffer for drawing a pixel;

generating a write mask that contains bits allocated to the current laver, the write mask preventing writing to other layers; and

applying both the stencil test mask and the draw test mask to the reference layer and the current value of the stencil buffer before the pixel is drawn.

2. The method of claim 1 , wherein each layer supports 2 n-1 widgets, wherein n is the number of bits allocated to the layer.

3. The method of claim 1 , further comprising:

based on a selection of a previous layer to which to allocate the widget, resetting the value of the current layer to zero.

4. The method of claim 1 , wherein the stencil buffer has 8 bits.

5. The method of claim 1 , wherein the value of the current layer is set as writeable to the stencil buffer and the values of the other layers are set as non-writeable to the stencil buffer.

6. A non-transitory machine-readable storage medium storing a set of instructions that, when executed by at least one processor, causes the at least one processor to perform operations comprising:

traversing a user interface tree of widgets corresponding to widgets requiring clipping that are present in a scene to be rendered;

for each encountered widget, performing layer allocation operations comprising:

selecting a current, previous, or next layer to which to allocate the widget;

determining whether the selected layer can accommodate the widget;

based on a determination that the selected layer cannot accommodate the widget, allocating a bit from a stencil buffer to the selected layer and incrementing a value of the selected layer to account for the widget being allocated to the selected layer;

based on a determination that the selected layer can accommodate the widget, incrementing the value of the selected layer to account for the widget being allocated to the selected layer;

generating a stencil test mask formed as a combination of the values of layers previous to a current layer;

writing the stencil test mask to a stencil buffer; and

repeating the layer allocation operations for each remaining widget,

generating a reference layer comprising a logical OR of the current value of all layers;

generating a draw test mask comprising bits of the stencil buffer that are allocated to all layers;

applying the draw test mask to the stencil buffer;

passing contents of the stencil buffer to a frame buffer for drawing a pixel;

generating a write mask that contains bits allocated to the current layer, the write mask preventing writing to other layers: and

applying both the stencil test mask and the draw test mask to the reference layer and the current value of the stencil buffer before the pixel is drawn.

7. The machine-readable storage medium of claim 6 , wherein each layer supports 2 n-1 widgets, wherein n is the number of bits allocated to the layer.

8. The machine-readable storage medium of claim 6 , further comprising:

based on a selection of a previous layer to which to allocate the widget, resetting the value of the current layer to zero.

9. The machine-readable storage medium of claim 6 , wherein the stencil buffer has 8 bits.

10. The machine-readable storage medium of claim 6 , wherein the value of the current layer is set as writeable to the stencil buffer and the values of the other layers are set as non-writeable to the stencil buffer.

11. A system, comprising:

at least one processor;

a framework clipping module implemented by the at least one processor and configured to:

traverse a user interface tree of widgets corresponding to widgets requiring clipping that are present in a scene to be rendered;

for each encountered widget, perform layer allocation operations comprising:

select a current, previous, or next layer to which to allocate the widget;

determine whether the selected layer can accommodate the widget;

based on a determination that the selected layer cannot accommodate the widget, allocate a bit from a stencil buffer to the selected layer and incrementing a value of the selected layer to account for the widget being allocated to the selected layer;

based on a determination that the selected layer can accommodate the widget, increment the value of the selected layer to account for the widget being allocated to the selected layer;

generate a stencil test mask formed as a combination of the values of layers previous to a current layer;

write the stencil test mask to a stencil buffer; and

repeat the layer allocation operations for each remaining widget,

generate a reference layer comprising a logical OR of the current value of all layers;

generate a draw test mask comprising bits of the stencil buffer that are allocated to all layers;

apply the draw test mask to the stencil buffer;

pass contents of the stencil buffer to a frame buffer for drawing a pixel;

generate a write mask that contains bits allocated to the current layer, the write mask preventing writing to other layers; and

apply both the stencil test mask and the draw test mask to the reference layer and the current value of the stencil buffer before the pixel is drawn.

12. The system of claim 11 , wherein each layer supports 2 n-1 widgets, wherein n is the number of bits allocated to the layer.

13. The system of claim 11 , wherein the framework clipping module is further configured to reset the value of the current layer to zero based on a selection of a previous layer to which to allocate the widget.

14. The system of claim 11 , wherein the value of the current layer is set as writeable to the stencil buffer and the values of the other layers are set as non-writeable to the stencil buffer.

Assignments (12)
PARTIAL RELEASE OF SECURITY INTEREST IN PATENTS Recorded Oct 27, 2022
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: ROVI PRODUCT CORPORATION (AS SUCCESSOR-IN-INTEREST TO ROVI GUIDES, INC.)
Reel/Frame 061786/0768 →
CHANGE OF NAME Recorded Oct 23, 2022
From: ROVI GUIDES, INC.
To: ADEIA GUIDES INC.
Reel/Frame 061746/0981 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 23, 2022
From: ADEIA GUIDES INC.
To: ROVI PRODUCT CORPORATION
Reel/Frame 061747/0001 →
RELEASE OF SECURITY INTEREST Recorded Jun 5, 2020
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: ROVI SOLUTIONS CORPORATION; ROVI TECHNOLOGIES CORPORATION; ROVI GUIDES, INC.; TIVO SOLUTIONS, INC.; VEVEO, INC.
Reel/Frame 053481/0790 →
RELEASE OF SECURITY INTEREST Recorded Jun 5, 2020
From: HPS INVESTMENT PARTNERS, LLC
To: ROVI SOLUTIONS CORPORATION; ROVI TECHNOLOGIES CORPORATION; ROVI GUIDES, INC.; TIVO SOLUTIONS, INC.; VEVEO, INC.
Reel/Frame 053458/0749 →
SECURITY INTEREST Recorded Jun 1, 2020
From: ROVI SOLUTIONS CORPORATION; ROVI TECHNOLOGIES CORPORATION; ROVI GUIDES, INC.; TIVO SOLUTIONS INC.; VEVEO, INC.; INVENSAS CORPORATION; INVENSAS BONDING TECHNOLOGIES, INC.; TESSERA, INC.; TESSERA ADVANCED TECHNOLOGIES, INC.; DTS, INC.; PHORUS, INC.; IBIQUITY DIGITAL CORPORATION
To: BANK OF AMERICA, N.A.
Reel/Frame 053468/0001 →
PATENT SECURITY AGREEMENT Recorded Nov 25, 2019
From: ROVI SOLUTIONS CORPORATION; ROVI TECHNOLOGIES CORPORATION; ROVI GUIDES, INC.; TIVO SOLUTIONS, INC.; VEVEO, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 051110/0006 →
RELEASE OF SECURITY INTEREST IN PATENT RIGHTS Recorded Nov 25, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
To: FANHATTAN, INC.
Reel/Frame 051109/0959 →
SECURITY INTEREST Recorded Nov 22, 2019
From: ROVI SOLUTIONS CORPORATION; ROVI TECHNOLOGIES CORPORATION; ROVI GUIDES, INC.; TIVO SOLUTIONS, INC.; VEVEO, INC.
To: HPS INVESTMENT PARTNERS, LLC, AS COLLATERAL AGENT
Reel/Frame 051143/0468 →
MERGER Recorded Jul 18, 2019
From: FANHATTAN, INC.
To: ROVI GUIDES, INC.
Reel/Frame 049794/0995 →
SECURITY INTEREST Recorded Mar 31, 2017
From: FANHATTAN, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 041814/0400 →
MERGER AND CHANGE OF NAME Recorded Jan 30, 2015
From: FANHATTAN LLC; FANHATTAN HOLDING CORPORATION
To: FANHATTAN, INC.
Reel/Frame 034868/0420 →