diff --git a/package.json b/package.json
index 6e98ad7d9..b230a8c7f 100644
--- a/package.json
+++ b/package.json
@@ -17,7 +17,9 @@
"dep-graph": "madge --image graph.svg --extensions ts ./src/parser",
"docs": "ts-node scripts/compile-doc-examples.ts",
"benchmark": "node ./benchmarks/index.js",
- "scrape-roku-docs": "ts-node scripts/scrape-roku-docs.ts"
+ "scrape-roku-docs": "ts-node scripts/scrape-roku-docs.ts",
+ "rescrape-roku-docs": "rm scripts/.cache.json && ts-node scripts/scrape-roku-docs.ts"
+
},
"mocha": {
"spec": "src/**/*.spec.ts",
diff --git a/scripts/.cache.json b/scripts/.cache.json
index 70d51f9ca..7f20c3d19 100644
--- a/scripts/.cache.json
+++ b/scripts/.cache.json
@@ -1 +1 @@
-{"https://developer.roku.com/api/v1/get-dev-cms-doc?filePath=left-nav%2Freferences.json&locale=en-us":"{\n \"content\": \"{\\n \\\"Reference overview\\\":\\\"/docs/references/references-overview.md\\\",\\n\\n \\\"SceneGraph\\\":{\\n \\\"Component functions\\\":{\\n \\\"init()\\\":\\\"/docs/references/scenegraph/component-functions/init.md\\\",\\n \\\"onKeyEvent()\\\":\\\"/docs/references/scenegraph/component-functions/onkeyevent.md\\\"\\n },\\n \\\"XML elements\\\":{\\n \\\"\\\":\\\"/docs/references/scenegraph/xml-elements/component.md\\\",\\n \\\"\\\":\\\"/docs/references/scenegraph/xml-elements/interface.md\\\",\\n \\\"\n\n\n\n\n```",
+ "description": "Extends [**Group**](https://developer.roku.com/docs/references/scenegraph/layout-group-nodes/group.md\"**Group**\")\n\nThe SimpleLabel node class is used to display a single line of text. SimpleLabel is a lightweight complement to the Label node. It supports simplified font style specification and is more memory efficient than the Label node.\n\nThe SimpleLabel node class supports:\n\n* Specifying either a built-in system font or a TrueType/OpenType font file\n* Specifying the color of the font\n* Customizable Horizontal and Vertical origin\n\nThe following shows a text layout derived from the SimpleLabel node:\n\n![roku815px - simpleLabel node](https://image.roku.com/ZHZscHItMTc2/simplelabel.png \"simplelabel\")\n\nWith ui\\_resolutions=hd specified in the manifest, the following displays the text string \"Application Development Made Easy!\" using the medium bold system font, centered horizontally on display, and with the baseline of the text at the vertical center of the display.\n\n```\n\n\n\n\n\n\n\n\n\n\n\n```",
"events": [],
"extends": {
"name": "Group",
@@ -4406,7 +4519,7 @@
{
"accessPermission": "READ_ONLY",
"default": "0",
- "description": "indicates the index of the selected button when the user selects one of the buttons in the button area.",
+ "description": "Indicates the index of the selected button when the user selects one of the buttons in the button area.",
"name": "buttonSelected",
"type": "int"
},
@@ -4452,7 +4565,7 @@
},
"standardkeyboarddialog": {
"availableSince": "10.0",
- "description": "_Available since Roku OS 10.0_\n\nExtends [StandardDialog](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/standard-dialog.md\"**Standard Dialog**\")\n\nThe **StandardKeyboardDialog** node enables text and voice entry of strings consisting of alphanumeric characters as well as many commonly used symbols. It is similar to the legacy [KeyboardDialog](https://developer.roku.com/docs/references/scenegraph/dialog-nodes/keyboarddialog.md node, but includes voice entry functionality, which is provided through its internal **DynamicKeyboard** node.\n\n![keyboard-dialog](https://image.roku.com/ZHZscHItMTc2/keyboard-dialog.jpg)",
+ "description": "_Available since Roku OS 10.0_\n\nExtends [StandardDialog](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/standard-dialog.md\"**Standard Dialog**\")\n\nThe **StandardKeyboardDialog** node enables text and voice entry of strings consisting of alphanumeric characters as well as many commonly used symbols. It is similar to the legacy [KeyboardDialog](https://developer.roku.com/docs/references/scenegraph/dialog-nodes/keyboarddialog.md node, but includes voice entry functionality, which is provided through its internal **DynamicKeyboard** node.\n\n![roku815px - keyboard-dialog](https://image.roku.com/ZHZscHItMTc2/keyboard-dialog.jpg)",
"events": [],
"extends": {
"name": "StandardDialog",
@@ -4464,7 +4577,7 @@
"default": "[ ]",
"description": "List of buttons to be displayed in the button area at the bottom of the dialog. Each string in the buttons array adds a new button to the button area. > Minimize the number of buttons in the dialog to ensure that all buttons are visible without the user having to scroll up and down.",
"name": "buttons",
- "type": "array of string"
+ "type": "array of strings"
},
{
"accessPermission": "Access Permission",
@@ -4485,7 +4598,7 @@
"default": "[ ]",
"description": "One or more blocks of text, which are typically used to describe information about the data to be entered. Each string in the array is displayed as a separate block of text with the standard amount of space left between the blocks. > Minimize the message length to avoid having a scrollbar automatically added to the content area. If multiple strings are specified or any string is too long, the dialog may not be able to fit within the height of the display.",
"name": "message",
- "type": "array of string"
+ "type": "array of strings"
},
{
"accessPermission": "READ_WRITE",
@@ -4515,7 +4628,7 @@
},
"standardmessagedialog": {
"availableSince": "10.0",
- "description": "_Available since Roku OS 10.0_\n\nExtends [StandardDialog](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/standard-dialog.md\"**Standard Dialog**\")\n\nThe **StandardMessageDialog** node is used to displays a message to the user. It is similar to the legacy [Dialog](https://developer.roku.com/docs/references/scenegraph/dialog-nodes/dialog.md node. It may contain the following items (from top to bottom):\n\n* One or more blocks of text at the top.\n* One bulleted / numbered list.\n* One or more blocks of text at the bottom.\n\n![standard-message-dialog](https://image.roku.com/ZHZscHItMTc2/standard-message-dialog.jpg)",
+ "description": "_Available since Roku OS 10.0_\n\nExtends [StandardDialog](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/standard-dialog.md\"**Standard Dialog**\")\n\nThe **StandardMessageDialog** node is used to displays a message to the user. It is similar to the legacy [Dialog](https://developer.roku.com/docs/references/scenegraph/dialog-nodes/dialog.md node. It may contain the following items (from top to bottom):\n\n* One or more blocks of text at the top.\n* One bulleted / numbered list.\n* One or more blocks of text at the bottom.\n\n![roku815px - standard-message-dialog](https://image.roku.com/ZHZscHItMTc2/standard-message-dialog.jpg)",
"events": [],
"extends": {
"name": "StandardDialog",
@@ -4527,14 +4640,14 @@
"default": "[ ]",
"description": "One or more blocks of informational text displayed at the bottom of the dialog's content area. Each string in the array is displayed as a separate block of text with the standard amount of space left between the blocks. > To separate lines of text, add each line as an element in the array. Do not use newline characters.",
"name": "bottomMessage",
- "type": "array of string"
+ "type": "array of strings"
},
{
"accessPermission": "READ_WRITE",
"default": "[ ]",
"description": "An array of strings displayed as a bulleted or numbered list. The list is displayed in the content area below the message and above the bottom message.",
"name": "bulletText",
- "type": "array of string"
+ "type": "array of strings"
},
{
"accessPermission": "READ_WRITE",
@@ -4548,14 +4661,14 @@
"default": "[ ]",
"description": "List of buttons to be displayed in the button area at the bottom of the dialog. Each string in the buttons array adds a new button to the button area. > Minimize the number of buttons in the dialog to ensure they are all visible when the dialog is displayed.",
"name": "buttons",
- "type": "array of string"
+ "type": "array of strings"
},
{
"accessPermission": "READ_WRITE",
"default": "[ ]",
"description": "One or more blocks of informational text displayed at the top of the dialog's content area. Each string in the array is displayed as a separate block of text with the standard amount of space left between the blocks. > To separate lines of text, add each line as an element in the array. Do not use newline characters.",
"name": "message",
- "type": "array of string"
+ "type": "array of strings"
},
{
"accessPermission": "READ_WRITE",
@@ -4571,7 +4684,7 @@
},
"standardpinpaddialog": {
"availableSince": "10.0",
- "description": "_Available since Roku OS 10.0_\n\nExtends [StandardDialog](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/standard-dialog.md\"**Standard Dialog**\")\n\nThe **StandardPinPadDialog** node enables text and voice entry of numeric characters—typically, short numeric PIN codes. It is similar to the legacy [PinDialog](https://developer.roku.com/docs/references/scenegraph/dialog-nodes/pindialog.md node, but includes additional voice entry of the numeric digits. This additional functionality is provided through the node's internal DynamicPinPad and VoiceTextEditBox nodes.\n\n![pin-pad-dialog](https://image.roku.com/ZHZscHItMTc2/pin-pad-dialog.jpg)",
+ "description": "_Available since Roku OS 10.0_\n\nExtends [StandardDialog](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/standard-dialog.md\"**Standard Dialog**\")\n\nThe **StandardPinPadDialog** node enables text and voice entry of numeric characters—typically, short numeric PIN codes. It is similar to the legacy [PinDialog](https://developer.roku.com/docs/references/scenegraph/dialog-nodes/pindialog.md node, but includes additional voice entry of the numeric digits. This additional functionality is provided through the node's internal DynamicPinPad and VoiceTextEditBox nodes.\n\n![roku815px - pin-pad-dialog](https://image.roku.com/ZHZscHItMTc2/pin-pad-dialog.jpg)",
"events": [],
"extends": {
"name": "StandardDialog",
@@ -4583,14 +4696,14 @@
"default": "[ ]",
"description": "List of buttons to be displayed in the button area at the bottom of the dialog. Each string in the buttons array adds a new button to the button area. > Minimize the number of buttons in the dialog to ensure that all buttons are visible without the user having to scroll up and down.",
"name": "buttons",
- "type": "array of string"
+ "type": "array of strings"
},
{
"accessPermission": "READ_WRITE",
"default": "[ ]",
"description": "One or more blocks of text, which are typically used to describe information about the data to be entered. Each string in the array is displayed as a separate block of text with the standard amount of space left between the blocks. > Minimize the message length to avoid having a scrollbar automatically added to the content area. If multiple strings are specified or any string is too long, the dialog may not be able to fit within the height of the display.",
"name": "message",
- "type": "array of string"
+ "type": "array of strings"
},
{
"accessPermission": "READ_WRITE",
@@ -4620,7 +4733,7 @@
},
"standardprogressdialog": {
"availableSince": "10.0",
- "description": "_Available since Roku OS 10.0_\n\nExtends [StandardDialog](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/standard-dialog.md\"**Standard Dialog**\")\n\nThe StandardProgressDialog node displays a spinning progress indicator that includes a short progress message to the user. It is similar to the legacy [ProgressDialog](https://developer.roku.com/docs/references/scenegraph/dialog-nodes/progressdialog.md) node.\n\n![progress-dialog-title](https://image.roku.com/ZHZscHItMTc2/progress-dialog-title-v2.jpg)",
+ "description": "_Available since Roku OS 10.0_\n\nExtends [StandardDialog](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/standard-dialog.md\"**Standard Dialog**\")\n\nThe StandardProgressDialog node displays a spinning progress indicator that includes a short progress message to the user. It is similar to the legacy [ProgressDialog](https://developer.roku.com/docs/references/scenegraph/dialog-nodes/progressdialog.md node.\n\n![roku815px - progress-dialog-title](https://image.roku.com/ZHZscHItMTc2/progress-dialog-title-v2.jpg)",
"events": [],
"extends": {
"name": "StandardDialog",
@@ -4646,6 +4759,34 @@
"name": "StandardProgressDialog",
"url": "https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/standard-progress-dialog.md"
},
+ "stddlgactioncarditem": {
+ "availableSince": "11.0",
+ "description": "_Available since Roku OS 11.0_\n\nExtends [StdDlgItemBase](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-item-base.md",
+ "events": [],
+ "extends": {
+ "name": "StdDlgItemBase",
+ "url": "https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-item-base.md"
+ },
+ "fields": [
+ {
+ "accessPermission": "READ_WRITE",
+ "default": "false",
+ "description": "Indicates whether the \\*\\*StdDlgActionCardItem\\*\\* node is in the checked or unchecked state when the \\*\\*iconType\\*\\* field is set to \"checkbox\" or \"radiobutton\". The icon shown for an action card is based on the value of this field.",
+ "name": "iconStatus",
+ "type": "bool"
+ },
+ {
+ "accessPermission": "READ_WRITE",
+ "default": "\"none\"",
+ "description": "Specifies the icon used for a \\*\\*StdDlgActionCardItem\\*\\* node. This may be one of the following values:\n\n| Value | Type | Description |\n| --- | --- | --- |\n| none | string | No icon is shown. |\n| more\\_info | string | A right arrow icon is displayed to the right of the **StdDlgActionCardItem** child nodes. This icon is typically used to indicate that more information will be shown when the action card is selected. Typically, this additional content is displayed in another dialog. |\n| checkbox | string | A checkbox icon is shown to the left of the StdDlgActionCardItem child nodes.When the **iconStatus** field is set to \"true\", this adds a checkmark inside the box.When the **iconStatus** field is set to \"false\", an empty box icon is displayed. |\n| radiobutton | string | A radio button icon is shown to the left of the StdDlgActionCardItem child nodes.When the **iconStatus** field is set to \"true\", this adds a filled circle inside the box.When the **iconStatus** field is set to \"false\", an empty circle icon is displayed. |",
+ "name": "iconType",
+ "type": "string"
+ }
+ ],
+ "interfaces": [],
+ "name": "StdDlgActionCardItem",
+ "url": "https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-action-card-item.md"
+ },
"stddlgareabase": {
"availableSince": "10.0",
"description": "_Available since Roku OS 10.0_\n\nExtends [Group](https://developer.roku.com/docs/references/scenegraph/layout-group-nodes/group.md\n\nThe **StdDlgAreaBase** node is the base class and provides the common functionality for the three StandardDialog area nodes: [**StdDlgTitleArea**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-title-area.md, [**StdDlgContentArea**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-content-area.md and [**StdDlgButtonArea**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-button-area.md.",
@@ -4661,7 +4802,7 @@
},
"stddlgbullettextitem": {
"availableSince": "10.0",
- "description": "_Available since Roku OS 10.0_\n\nExtends [StdDlgItemBase](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-item-base.md\"**StdDlgItemBase**\")\n\nThe **StdDlgBulletTextItem** node is used to display a bulleted list of text in the dialog's content area. It should only be used as a child of a [**StdDlgContentArea**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-content-area.md node.\n\n![StdDlgBulletTextItem](https://image.roku.com/ZHZscHItMTc2/StdDlgBulletTextItem-v2.jpg)",
+ "description": "_Available since Roku OS 10.0_\n\nExtends [StdDlgItemBase](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-item-base.md\"**StdDlgItemBase**\")\n\nThe **StdDlgBulletTextItem** node is used to display a bulleted list of text in the dialog's content area. It should only be used as a child of a [**StdDlgContentArea**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-content-area.md node.\n\n![roku815px - StdDlgBulletTextItem](https://image.roku.com/ZHZscHItMTc2/StdDlgBulletTextItem-v2.jpg)",
"events": [],
"extends": {
"name": "StdDlgItemBase",
@@ -4673,7 +4814,7 @@
"default": "[ ]",
"description": "An array of strings displayed as a bulleted or numbered list. The list is displayed in the content area below the message and above the bottom message.",
"name": "bulletText",
- "type": "array of string"
+ "type": "array of strings"
},
{
"accessPermission": "READ_WRITE",
@@ -4689,7 +4830,7 @@
},
"stddlgbutton": {
"availableSince": "10.0",
- "description": "_Available since Roku OS 10.0_\n\nExtends [Group](https://developer.roku.com/docs/references/scenegraph/layout-group-nodes/group.md\"**Group**\")\n\n**StdDlgButton** is the class used for each button in the [button area](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/standard-dialog-framework-overview.mdstructure). The buttons are displayed in the order in which they are listed as children of the [**StdDlgButtonArea** node](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-button-area.md. The size and layout of each button are controlled by the StandardDialog layout algorithm. **StdDlgButton** nodes should only be used as children of a **StdDlgButtonArea** node.\n\n![std-dlg-button](https://image.roku.com/ZHZscHItMTc2/std-dlg-button-3.jpg)",
+ "description": "_Available since Roku OS 10.0_\n\nExtends [Group](https://developer.roku.com/docs/references/scenegraph/layout-group-nodes/group.md\"**Group**\")\n\n**StdDlgButton** is the class used for each button in the [button area](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/standard-dialog-framework-overview.mdstructure). The buttons are displayed in the order in which they are listed as children of the [**StdDlgButtonArea** node](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-button-area.md. The size and layout of each button are controlled by the StandardDialog layout algorithm. **StdDlgButton** nodes should only be used as children of a **StdDlgButtonArea** node.\n\n![roku815px - std-dlg-button](https://image.roku.com/ZHZscHItMTc2/std-dlg-button-3.jpg)",
"events": [],
"extends": {
"name": "Group",
@@ -4717,7 +4858,7 @@
},
"stddlgbuttonarea": {
"availableSince": "10.0",
- "description": "_Available since Roku OS 10.0_\n\nExtends [StdDlgAreaBase](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-area-base.md\"**StdDlgAreaBase**\")\n\nThe **StdDlgButtonArea** node is always positioned at the bottom of the [StandardDialog](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/standard-dialog.md. It contains zero or more child nodes of type [**StdDlgButton**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-button.md or a type that extends **StdDlgButton**. Each of the **StdDlgButton** nodes provides an option to perform some task related to the purpose of the dialog. For example, dialogs often have \"Continue\" and \"Cancel\" buttons in the bottom area. The buttons are positioned and sized so that they are arranged vertically in the order in which their **StdDlgButton** child nodes are listed.\n\nA dialog may only have a single button area, and the button area is optional.\n\n![std-dlg-button-area](https://image.roku.com/ZHZscHItMTc2/std-dlg-button-area.jpg)",
+ "description": "_Available since Roku OS 10.0_\n\nExtends [StdDlgAreaBase](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-area-base.md\"**StdDlgAreaBase**\")\n\nThe **StdDlgButtonArea** node is always positioned at the bottom of the [StandardDialog](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/standard-dialog.md. It contains zero or more child nodes of type [**StdDlgButton**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-button.md or a type that extends **StdDlgButton**. Each of the **StdDlgButton** nodes provides an option to perform some task related to the purpose of the dialog. For example, dialogs often have \"Continue\" and \"Cancel\" buttons in the bottom area. The buttons are positioned and sized so that they are arranged vertically in the order in which their **StdDlgButton** child nodes are listed.\n\nA dialog may only have a single button area, and the button area is optional.\n\n![roku815px - std-dlg-button-area](https://image.roku.com/ZHZscHItMTc2/std-dlg-button-area.jpg)",
"events": [],
"extends": {
"name": "StdDlgAreaBase",
@@ -4730,7 +4871,7 @@
},
"stddlgcontentarea": {
"availableSince": "10.0",
- "description": "_Available since Roku OS 10.0_\n\nExtends [StdDlgAreaBase](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-area-base.md\"**StdDlgAreaBase**\")\n\nThe **StdDlgContentArea** node contains the main body of the dialog. It is positioned between the title area and the button area.\n\nIt contains zero or more child nodes that extend [**StdDlgItemBase**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-item-base.md (for example, [**StdDlgTextItem**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-text-item.md, [**StdDlgProgressItem**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-progress-item.md, [**StdDlgGraphicItem**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-graphic-item.md, and other dialog building blocks). The layout and position of the [**StdDlgItemBase** nodes](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-item-base.md are based on the dialog's width; the nodes are arranged vertically from top to bottom in the content area based on the order in which they are listed. The content area should contain only [**StdDlgItemBase** nodes](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-item-base.md; otherwise, its layout and rendering are undefined.\n\nA dialog may only have a single content area, and the content area is optional.\n\n![content-area](https://image.roku.com/ZHZscHItMTc2/content-area.jpg)",
+ "description": "_Available since Roku OS 10.0_\n\nExtends [StdDlgAreaBase](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-area-base.md\"**StdDlgAreaBase**\")\n\nThe **StdDlgContentArea** node contains the main body of the dialog. It is positioned between the title area and the button area.\n\nIt contains zero or more child nodes that extend [**StdDlgItemBase**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-item-base.md (for example, [**StdDlgTextItem**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-text-item.md, [**StdDlgProgressItem**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-progress-item.md, [**StdDlgGraphicItem**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-graphic-item.md, and other dialog building blocks). The layout and position of the [**StdDlgItemBase** nodes](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-item-base.md are based on the dialog's width; the nodes are arranged vertically from top to bottom in the content area based on the order in which they are listed. The content area should contain only [**StdDlgItemBase** nodes](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-item-base.md; otherwise, its layout and rendering are undefined.\n\n![roku815px - content-area](https://image.roku.com/ZHZscHItMTc2/content-area.jpg)",
"events": [],
"extends": {
"name": "StdDlgAreaBase",
@@ -4741,9 +4882,37 @@
"name": "StdDlgContentArea",
"url": "https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-content-area.md"
},
+ "stddlgcustomitem": {
+ "availableSince": "10.5",
+ "description": "_Available since Roku OS 10.5_\n\nExtends [StdDlgItemBase](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-item-base.md\"**StdDlgItemBase**\")\n\nThe **StdDlgCustomItem** node is used to display free-form dialog items in the content area that require a custom layout.\n\n![roku400px - - custom-item](https://image.roku.com/ZHZscHItMTc2/std-dlg-custom-item-multi-column.jpeg)",
+ "events": [],
+ "extends": {
+ "name": "StdDlgItemBase",
+ "url": "https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-item-base.md"
+ },
+ "fields": [
+ {
+ "accessPermission": "READ_WRITE",
+ "default": "0",
+ "description": "Specifies the desired width of the custom item, which is passed to the content area's layout algorithm. This field is typically specified when the custom item includes a \\[DynamicCustomKeyboard node\\](https://developer.roku.com/docs/references/scenegraph/dynamic-voice-keyboard-nodes/dynamic-custom-keyboard.md, which has a width that is determined by the KDF file of the custom keyboard.",
+ "name": "fixedWidthField",
+ "type": "float"
+ },
+ {
+ "accessPermission": "READ_ONLY",
+ "default": "0",
+ "description": "The width of the custom item, which is enforced by the content area's layout algorithm.",
+ "name": "widthField",
+ "type": "float"
+ }
+ ],
+ "interfaces": [],
+ "name": "StdDlgCustomItem",
+ "url": "https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-custom-item.md"
+ },
"stddlgdeterminateprogressitem": {
"availableSince": "10.0",
- "description": "_Available since Roku OS 10.0_\n\nExtends [StdDlgItemBase](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-item-base.md\"**StdDlgItemBase**\")\n\nThe **StdDlgDeterminateProgressItem** node is used to display a progress indicator in the dialog's content area. It provides the percentage of progress that has been completed for a task that takes a limited amount of time. It should only be used as a child of a [**StdDlgContentArea**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-content-area.md node.\n\n![std-dlg-determinate-progress-item](https://image.roku.com/ZHZscHItMTc2/std-dlg-determinate-progress-item-2.jpg)",
+ "description": "_Available since Roku OS 10.0_\n\nExtends [StdDlgItemBase](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-item-base.md\"**StdDlgItemBase**\")\n\nThe **StdDlgDeterminateProgressItem** node is used to display a progress indicator in the dialog's content area. It provides the percentage of progress that has been completed for a task that takes a limited amount of time. It should only be used as a child of a [**StdDlgContentArea**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-content-area.md node.\n\n![roku815px - std-dlg-determinate-progress-item](https://image.roku.com/ZHZscHItMTc2/std-dlg-determinate-progress-item-2.jpg)",
"events": [],
"extends": {
"name": "StdDlgItemBase",
@@ -4771,7 +4940,7 @@
},
"stddlggraphicitem": {
"availableSince": "10.0",
- "description": "_Available since Roku OS 10.0_\n\nExtends [StdDlgItemBase](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-item-base.md\"**StdDlgItemBase**\")\n\nThe **StdDlgGraphicItem** node is used to display an image in the dialog's content area with an optional text label displayed to the left, right, above, or below the image. It should only be used as a child of a [**StdDlgContentArea**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-content-area.md node.\n\n![std-dlg-graphic-item](https://image.roku.com/ZHZscHItMTc2/std-dlg-graphic-item.jpg)",
+ "description": "_Available since Roku OS 10.0_\n\nExtends [StdDlgItemBase](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-item-base.md\"**StdDlgItemBase**\")\n\nThe **StdDlgGraphicItem** node is used to display an image in the dialog's content area with an optional text label displayed to the left, right, above, or below the image. It should only be used as a child of a [**StdDlgContentArea**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-content-area.md node.\n\n![roku815px - std-dlg-graphic-item](https://image.roku.com/ZHZscHItMTc2/std-dlg-graphic-item.jpg)",
"events": [],
"extends": {
"name": "StdDlgItemBase",
@@ -4820,11 +4989,11 @@
},
"stddlgitembase": {
"availableSince": "10.0",
- "description": "_Available since Roku OS 10.0_\n\nExtends [Group](https://developer.roku.com/docs/references/scenegraph/layout-group-nodes/group.md)\n\n**StdDlgItemBase** is the base class for all the content area items. It provides the common functionality for all StdDlg\\[_x_\\]Item nodes (for example, [**StdDlgBulletTextItem**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-bullet-text-item.md, [**StdDlgTextItem**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-text-item.md, [**StdDlgKeyboardItem**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-keyboard-item.md, [**StdDlgProgressItem**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-progress-item.md, [**StdDlgGraphicItem**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-graphic-item.md, and the other dialog building block nodes).",
+ "description": "_Available since Roku OS 10.0_\n\nExtends [Group](https://developer.roku.com/docs/references/scenegraph/layout-group-nodes/group.md\n\n**StdDlgItemBase** is the base class for all the content area items. It provides the common functionality for all StdDlg\\[_x_\\]Item nodes (for example, [**StdDlgBulletTextItem**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-bullet-text-item.md, [**StdDlgTextItem**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-text-item.md, [**StdDlgKeyboardItem**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-keyboard-item.md, [**StdDlgProgressItem**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-progress-item.md, [**StdDlgGraphicItem**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-graphic-item.md, and the other dialog building block nodes).",
"events": [],
"extends": {
"name": "Group",
- "url": "https://developer.roku.comhttps://developer.roku.com/docs/references/scenegraph/layout-group-nodes/group.md"
+ "url": "https://developer.roku.com/docs/references/scenegraph/layout-group-nodes/group.md"
},
"fields": [
{
@@ -4839,9 +5008,30 @@
"name": "StdDlgItemBase",
"url": "https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-item-base.md"
},
+ "stddlgitemgroup": {
+ "availableSince": "11.0",
+ "description": "_Available since Roku OS 11.0_\n\nExtends [StdDlgItemBase](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-item-base.md\n\nThe **StdDlgItemGroup** node is used to visually group a set of StdDlgAreaBase child nodes in a custom dialog. Developers can use this node to reduce the vertical spacing between the StdDlgItemBase child nodes. For [**StdDlgActionCardItem**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-action-card-item.md nodes, the **StdDlgItemGroup** node enforces the rule that when multiple items **StdDlgActionCardItem** nodes have their **iconType** field set to \"radiobutton\", only one may have its **selected** status be set to \"true\".\n\nThe **StdDlgItemGroup** node may contain one or more [**StdDlgItemBase**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-item-base.md child nodes (for example, StdDlgTextItem, StdDlgGraphicItem, and so on) as its children. It will visually group those child **StdDlgItemBase** nodes by reducing the amount of vertical space between them. However, the primary benefit of the StdDlgItemGroup node is managing **StdDlgActionCardItem** child nodes that have their **iconType** field set to \"radiobutton\".\n\n![roku815px - actionCards-radio-checkbox-items](https://image.roku.com/ZHZscHItMTc2/actionCards-radio-checkbox-items.jpg)\n\n> See the [**stdDlgActionCardItem** documentation](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-action-card-item.mdradiobutton-icontype) for code demonstarting how to use the **StdDlgItemGroup** node in a custom dialog.",
+ "events": [],
+ "extends": {
+ "name": "StdDlgItemBase",
+ "url": "https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-item-base.md"
+ },
+ "fields": [
+ {
+ "accessPermission": "READ_WRITE",
+ "default": "0",
+ "description": "The index of the currently selected \\[StdDlgAreaBase\\](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-area-base.md child node. This field is updated when the user selects any of the \\[StdDlgActionCardItem\\](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-action-card-item.md child nodes. This field can also be updated via BrightScript to change which child node in the StdDlgItemGroup is selected. When this field is updated and it corresponds to a \\[StdDlgActionCardItem\\](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-action-card-item.md node that has its \\*\\*iconType\\*\\* field set to \"radiobutton\", the \\*\\*StdDlgItemGroup\\*\\* node enforces the \"only 1 of \\_n\\_\" rule for radio buttons by setting the \\*\\*iconStatus\\*\\* field of the other radio button action card items to \"false\".",
+ "name": "selectedIndex",
+ "type": "integer"
+ }
+ ],
+ "interfaces": [],
+ "name": "StdDlgItemGroup",
+ "url": "https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-item-group.md"
+ },
"stddlgkeyboarditem": {
"availableSince": "10.0",
- "description": "_Available since Roku OS 10.0_\n\nExtends [StdDlgItemBase](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-item-base.md\"**StdDlgItemBase**\")\n\nThe **StdDlgKeyboardItem** node is used to display a keyboard or PINpad in the dialog's content area. It provides text and voice entry of strings containing alphanumeric characters and symbols or numeric digits. It should only be used as a child of a [**StdDlgContentArea**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-content-area.md node.\n\n![std-dlg-keyboard-item](https://image.roku.com/ZHZscHItMTc2/std-dlg-keyboard-item.jpg)",
+ "description": "_Available since Roku OS 10.0_\n\nExtends [StdDlgItemBase](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-item-base.md\"**StdDlgItemBase**\")\n\nThe **StdDlgKeyboardItem** node is used to display a keyboard or PINpad in the dialog's content area. It provides text and voice entry of strings containing alphanumeric characters and symbols or numeric digits. It should only be used as a child of a [**StdDlgContentArea**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-content-area.md node.\n\n![roku815px - std-dlg-keyboard-item](https://image.roku.com/ZHZscHItMTc2/std-dlg-keyboard-item.jpg)",
"events": [],
"extends": {
"name": "StdDlgItemBase",
@@ -4874,9 +5064,44 @@
"name": "StdDlgKeyboardItem",
"url": "https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-keyboard-item.md"
},
+ "stddlgmultistyletextitem": {
+ "availableSince": "11.0",
+ "description": "_Available since Roku OS 11.0_\n\nExtends [StdDlgItemBase](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-item-base.md",
+ "events": [],
+ "extends": {
+ "name": "StdDlgItemBase",
+ "url": "https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-item-base.md"
+ },
+ "fields": [
+ {
+ "accessPermission": "READ_WRITE",
+ "default": "\"\"",
+ "description": "Specifies the string to be spoken when the screen reader reads the text item. By default, the screen reader reads the string specified in the \\*\\*text\\*\\* field.",
+ "name": "audioGuideText",
+ "type": "string"
+ },
+ {
+ "accessPermission": "READ_WRITE",
+ "default": "{}",
+ "description": "Defines the size, URI, and color of a font style. This field may contain one or more font styles.",
+ "name": "drawingStyles",
+ "type": "associative array of associative arrays"
+ },
+ {
+ "accessPermission": "READ_WRITE",
+ "default": "\"\"",
+ "description": "Specifies the text to be displayed",
+ "name": "text",
+ "type": "string"
+ }
+ ],
+ "interfaces": [],
+ "name": "StdDlgMultiStyleTextItem",
+ "url": "https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-multi-style-text-item.md"
+ },
"stddlgprogressitem": {
"availableSince": "10.0",
- "description": "_Available since Roku OS 10.0_\n\nExtends [StdDlgItemBase](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-item-base.md\"**StdDlgItemBase**\")\n\nThe **StdDlgProgressItem** node is used to display a spinning progress indicator in the dialog's content area. It provides the status of a task that takes an indeterminate amount of time. It should only be used as a child of a [**StdDlgContentArea**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-content-area.md node.\n\n![std-dlg-progress-item](https://image.roku.com/ZHZscHItMTc2/std-dlg-progress-item.jpg)",
+ "description": "_Available since Roku OS 10.0_\n\nExtends [StdDlgItemBase](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-item-base.md\"**StdDlgItemBase**\")\n\nThe **StdDlgProgressItem** node is used to display a spinning progress indicator in the dialog's content area. It provides the status of a task that takes an indeterminate amount of time. It should only be used as a child of a [**StdDlgContentArea**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-content-area.md node.\n\n![roku815px - std-dlg-progress-item](https://image.roku.com/ZHZscHItMTc2/std-dlg-progress-item.jpg)",
"events": [],
"extends": {
"name": "StdDlgItemBase",
@@ -4895,9 +5120,51 @@
"name": "StdDlgProgressItem",
"url": "https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-progress-item.md"
},
+ "stddlgsidecardarea": {
+ "availableSince": "11.0",
+ "description": "_Available since Roku OS 11.0_\n\nExtends [StdDlgAreaBase](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-area-base.md",
+ "events": [],
+ "extends": {
+ "name": "StdDlgAreaBase",
+ "url": "https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-area-base.md"
+ },
+ "fields": [
+ {
+ "accessPermission": "READ_WRITE",
+ "default": "true",
+ "description": "Specifies whether the \\*\\*StdDlgSideCardArea\\*\\* node extends to the edge of the dialog's background image or respects the background image's 9-patch margins. \\* \\*\\*true\\*\\*: The origin of the \\*\\*StdDlgSideCardArea\\*\\* node's coordinate system is set to the top/left edge of the dialog's background image. \\* \\*\\*false\\*\\*: The origin of the \\*\\*StdDlgSideCardArea\\*\\* node's coordinate system is based on the background image's 9-patch margins.",
+ "name": "extendToDialogEdge",
+ "type": "boolean"
+ },
+ {
+ "accessPermission": "READ_WRITE",
+ "default": "\"right\"",
+ "description": "Specifies on which side of the custom dialog the StdDlgSideCardArea node appears: \"left\" or \"right\".",
+ "name": "horizAlign",
+ "type": "string"
+ },
+ {
+ "accessPermission": "READ_WRITE",
+ "default": "false",
+ "description": "Specifies whether a thin vertical divider line is displayed between the \\*\\*StdDlgSideCardArea\\*\\* and the vertical column that contains the dialog's child \\*\\*StdDlgAreaBase\\*\\* nodes (\\[TitleArea\\](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-title-area.md, \\[StdDlgContentArea(s)\\](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-content-area.md, and/or \\[StdDlgButtonArea\\](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-button-area.md). The divider line, if shown, uses the \\*\\*DialogSecondaryItemColor\\*\\* field from the current \\[RSG palette\\](https://developer.roku.com/docs/references/scenegraph/scene.mdfields).",
+ "name": "showDivider",
+ "type": "boolean"
+ },
+ {
+ "accessPermission": "READ_WRITE",
+ "default": "0.0f",
+ "description": "Specifies the width of the \\*\\*StdDlgSideCardArea\\*\\* node. If this field is set to its default value (0.0), the width is set to the width of the \\[\\*\\*StdDlgContentArea\\*\\*\\]((https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-content-area.md) node's bounding rectangle (the union of the width of all of its child nodes). If set to a value greater than 0.0, the width of the \\*\\*StdDlgSideCardArea\\*\\* node is fixed to that explicit value. The height of \\*\\*StdDlgSideCardArea\\*\\* node is based on the StandardDialog layout logic. This sets the height to a maximum of the height of the \\*\\*StdDlgSideCardArea\\*\\* bounding rectangle and the height of the vertical column containing the dialog's child \\[\\*\\*StdDlgAreaBase\\*\\*\\](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-area-base.md nodes. This is constrained by the maximum permissible height of the dialog such that it is fully visible onscreen.",
+ "name": "width",
+ "type": "float"
+ }
+ ],
+ "interfaces": [],
+ "name": "StdDlgSideCardArea",
+ "url": "https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-side-card-area.md"
+ },
"stddlgtextitem": {
"availableSince": "10.0",
- "description": "_Available since Roku OS 10.0_\n\nExtends [StdDlgItemBase](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-item-base.md\"**StdDlgItemBase**\")\n\nThe **StdDlgTextItem** node is used to display a block of text. It should only be used as a child of a [**StdDlgContentArea**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-content-area.md node.\n\n![StdDlgTextItem](https://image.roku.com/ZHZscHItMTc2/std-dlg-text-item.jpg)\n\n> To separate lines of text, use multiple **StdDlgTextItem** nodes. Do not use newline characters.",
+ "description": "_Available since Roku OS 10.0_\n\nExtends [StdDlgItemBase](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-item-base.md\"**StdDlgItemBase**\")\n\nThe **StdDlgTextItem** node is used to display a block of text. It should only be used as a child of a [**StdDlgContentArea**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-content-area.md node.\n\n![roku815px - StdDlgTextItem](https://image.roku.com/ZHZscHItMTc2/std-dlg-text-item.jpg)\n\n> To separate lines of text, use multiple **StdDlgTextItem** nodes. Do not use newline characters.",
"events": [],
"extends": {
"name": "StdDlgItemBase",
@@ -4907,7 +5174,7 @@
{
"accessPermission": "READ_WRITE",
"default": "\"\"",
- "description": "Specifies the string to be spoken when the audio guide reads the text item. By default, the audio guide reads the string specified in the \\*\\*text\\*\\* field.",
+ "description": "Specifies the string to be spoken when the screen reader reads the text item. By default, the screen reader reads the string specified in the \\*\\*text\\*\\* field.",
"name": "audioGuideText",
"type": "string"
},
@@ -4932,7 +5199,7 @@
},
"stddlgtitlearea": {
"availableSince": "10.0",
- "description": "_Available since Roku OS 10.0_\n\nExtends [StdDlgAreaBase](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-area-base.md\"**StdDlgAreaBase**\")\n\nThe **StdDlgTitleArea** node contains the dialog's title information, which is always displayed at the top of the dialog. The title area may also include optional icons that appear left or right justified. The **StdDlgTitleArea** should only be used as a child node of a [**StandardDialog**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/standard-dialog.md.\n\nA dialog may a single title area, and the title area is optional (but is typically used in nearly all cases)\n\n![title-area-icon](https://image.roku.com/ZHZscHItMTc2/title-area-icon.jpg)",
+ "description": "_Available since Roku OS 10.0_\n\nExtends [StdDlgAreaBase](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-area-base.md\"**StdDlgAreaBase**\")\n\nThe **StdDlgTitleArea** node contains the dialog's title information, which is always displayed at the top of the dialog. The title area may also include optional icons that appear left or right justified. The **StdDlgTitleArea** should only be used as a child node of a [**StandardDialog**](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/standard-dialog.md.\n\nA dialog may contain a single title area, and the title area is optional (but is typically used in nearly all cases)\n\n![roku815px - title-area-icon](https://image.roku.com/ZHZscHItMTc2/title-area-icon.jpg)",
"events": [],
"extends": {
"name": "StdDlgAreaBase",
@@ -5173,7 +5440,7 @@
"url": "https://developer.roku.com/docs/references/scenegraph/list-and-grid-nodes/targetset.md"
},
"task": {
- "description": "Extends [**Node**](https://developer.roku.com/docs/references/scenegraph/node.md\n\nThe Task node class allows you to specify a function to be spawned in a different thread, and run asynchronously with respect to both the scene rendering thread and the main application thread. A Task node also allows you to run functions that cannot be run in SceneGraph node or component, typically BrightScript code functions involving operations such as reading data from servers and file system manipulation. (You also cannot, and should not, run functions in a SceneGraph application for operations that are functionally the same as SceneGraph nodes and components, such as playing videos.) A list of all the BrightScript functions and components that cannot be used in SceneGraph applications or can only be used in a Task node can be found in [BrightScript Support](/docs/developer-program/core-concepts/scenegraph-brightscript/brightscript-support.md \"BrightScript Support\").\n\nA Task node is typically used to read data from a server to create a ContentNode node to configure a SceneGraph node or component (see [ContentNode](https://developer.roku.com/docs/references/scenegraph/control-nodes/contentnode.md\"ContentNode\")). A Task node used for this purpose can be thought of as a content reader. Since ContentNode nodes are required to configure many components rendered in a scene, such as lists, panels, and grids, and you will generally want to read the data for those types of nodes from your server, you should create a Task node as a content reader for each of those components that you use in your scene.\n\nThe Task node class was designed with three general development use cases:\n\n* A new Task node object is created for each asynchronous operation. The input data needed for the operation is set in the Task node object [](https://developer.roku.com/docs/references/scenegraph/xml-elements/interface.md\"\") fields in the render thread, along with an observer of the output field data, and the Task node control field is set to RUN. After the output data is returned to the render thread, the Task node object is not used again.\n* A Task node object is used multiple times for several identical asynchronous operations. In this case, the input data for each operation is set in the existing Task node object, with another observer for the output field data, and the Task node control field is again set to RUN. This may be more efficient than creating a new Task node object for each of the identical operations.\n* A Task node observes its input fields using the port form of the ifSGNodeField [observeField()](https://developer.roku.com/docs/references/brightscript/interfaces/ifsgnodefield.mdobservefieldfieldname-as-string-functionname-as-string-as-boolean \"observeField()\") method, and returns output data with each field change. In this case, the Task node acts like a continuous server.\n\nSince Task nodes launch asynchronous threads, and have no provisions for locks and mutexes, you must be careful to avoid race, deadlock, and other asynchronous thread errors. Here are a few tips for using Task nodes:\n\n* Avoid accessing files which must be persistent before thread completion, to avoid a subsequent Task node or other thread access of the same file before the thread completes. It is easier and safer to use a dynamically-created string or other data object to hold temporary thread data to avoid having a subsequent or existing thread overwrite and corrupt the data.\n* Be very careful if you access any object in a Task node that may exist in another thread. It is better to completely separate all objects in any other possible thread from the Task node thread by setting the fields of the Task node with copies of the minimum amount of data needed to run the thread.\n* In the Task node init() function, perform the minimum required amount of initialization of the Task node and any included thread functions. If you intend to trigger an asynchronous task based on a Task node input field change, in many cases, you should only set up the observer for the field in init().\n* Use the port form of the ifSGNodeField [observeField()](https://developer.roku.com/docs/references/brightscript/interfaces/ifsgnodefield.mdobservefieldfieldname-as-string-functionname-as-string-as-boolean \"observeField()\") rather than the onChange attribute. This will avoid triggering the thread in response to a render thread event before the Task node observers are set up.\n* It is more efficient to use a persistent Task node that is triggered by an field change than to create a new Task node every time a particular asynchronous thread is required. If needed, you can communicate that the particular asynchronous thread is no longer required through an field as well, either through the triggering field, or a special field used for control of the Task node.\n* You can use a single Task node object to run any number of different asynchronous threads by setting the functionName field to the Task node function you want before setting the control field to RUN. If you do not use the input data fields to trigger running the thread, this is equivalent to calling an asynchronous function, and passing the input data fields as arguments to the function. The output data fields can likewise be considered as the return value of a asynchronous function call, but to avoid blocking you must observe the fields, or the state field, as a callback event to handle the results in the calling thread.\n\nAlso review \"[SceneGraph threads](/docs/developer-program/core-concepts/threads.md \"SceneGraph\")\" for in-depth information on using Task nodes most efficiently.",
+ "description": "Extends [**Node**](https://developer.roku.com/docs/references/scenegraph/node.md\n\nThe Task node class allows you to specify a function to be spawned in a different thread, and run asynchronously with respect to both the scene rendering thread and the main application thread. A Task node also allows you to run functions that cannot be run in SceneGraph node or component, typically BrightScript code functions involving operations such as reading data from servers and file system manipulation. (You also cannot, and should not, run functions in a SceneGraph application for operations that are functionally the same as SceneGraph nodes and components, such as playing videos.) A list of all the BrightScript functions and components that cannot be used in SceneGraph applications or can only be used in a Task node can be found in [BrightScript Support](/docs/developer-program/core-concepts/scenegraph-brightscript/brightscript-support.md \"BrightScript Support\").\n\nA Task node is typically used to read data from a server to create a ContentNode to configure a SceneGraph node or component (see [ContentNode](https://developer.roku.com/docs/references/scenegraph/control-nodes/contentnode.md\"ContentNode\")). A Task node used for this purpose can be thought of as a content reader. Since ContentNodes are required to configure many components rendered in a scene, such as lists, panels, and grids, and you will generally want to read the data for those types of nodes from your server, you should create a Task node as a content reader for each of those components that you use in your scene.\n\nThe Task node class was designed with three general development use cases:\n\n* A new Task node object is created for each asynchronous operation. The input data needed for the operation is set in the Task node object [](https://developer.roku.com/docs/references/scenegraph/xml-elements/interface.md\"\") fields in the render thread, along with an observer of the output field data, and the Task node control field is set to RUN. After the output data is returned to the render thread, the Task node object is not used again.\n* A Task node object is used multiple times for several identical asynchronous operations. In this case, the input data for each operation is set in the existing Task node object, with another observer for the output field data, and the Task node control field is again set to RUN. This may be more efficient than creating a new Task node object for each of the identical operations.\n* A Task node observes its input fields using the port form of the ifSGNodeField [observeField()](https://developer.roku.com/docs/references/brightscript/interfaces/ifsgnodefield.mdobservefieldfieldname-as-string-functionname-as-string-as-boolean \"observeField()\") method, and returns output data with each field change. In this case, the Task node acts like a continuous server.\n\nSince Task nodes launch asynchronous threads, and have no provisions for locks and mutexes, you must be careful to avoid race, deadlock, and other asynchronous thread errors. Here are a few tips for using Task nodes:\n\n* Avoid accessing files which must be persistent before thread completion, to avoid a subsequent Task node or other thread access of the same file before the thread completes. It is easier and safer to use a dynamically-created string or other data object to hold temporary thread data to avoid having a subsequent or existing thread overwrite and corrupt the data.\n* Be very careful if you access any object in a Task node that may exist in another thread. It is better to completely separate all objects in any other possible thread from the Task node thread by setting the fields of the Task node with copies of the minimum amount of data needed to run the thread.\n* In the Task node init() function, perform the minimum required amount of initialization of the Task node and any included thread functions. If you intend to trigger an asynchronous task based on a Task node input field change, in many cases, you should only set up the observer for the field in init().\n* Use the port form of the ifSGNodeField [observeField()](https://developer.roku.com/docs/references/brightscript/interfaces/ifsgnodefield.mdobservefieldfieldname-as-string-functionname-as-string-as-boolean \"observeField()\") rather than the onChange attribute. This will avoid triggering the thread in response to a render thread event before the Task node observers are set up.\n* It is more efficient to use a persistent Task node that is triggered by an \\\\\\\\ field change than to create a new Task node every time a particular asynchronous thread is required. If needed, you can communicate that the particular asynchronous thread is no longer required through an field as well, either through the triggering field, or a special field used for control of the Task node.\n* You can use a single Task node object to run any number of different asynchronous threads by setting the functionName field to the Task node function you want before setting the control field to RUN. If you do not use the input data fields to trigger running the thread, this is equivalent to calling an asynchronous function, and passing the input data fields as arguments to the function. The output data fields can likewise be considered as the return value of a asynchronous function call, but to avoid blocking you must observe the fields, or the state field, as a callback event to handle the results in the calling thread.\n\nAlso review \"[SceneGraph threads](/docs/developer-program/core-concepts/threads.md \"SceneGraph\")\" for in-depth information on using Task nodes most efficiently.",
"events": [],
"extends": {
"name": "Node",
@@ -5256,6 +5523,13 @@
"name": "hintTextColor",
"type": "color"
},
+ {
+ "accessPermission": "READ_WRITE",
+ "default": "false",
+ "description": "Specifies whether to display the end or beginning of text that overflows its available width: \\* \\*\\*true\\*\\*. The end of the text is shown. For example, \"the quick brown fox jumps over the lazy dog\" would be truncated to \"...jumps over the lazy dog\". \\* \\*\\*false\\*\\*. The start of the text is shown (for example, \"the quick brown fox jumps...\").",
+ "name": "leadingEllipsis _Available since Roku OS 11.0_",
+ "type": "Boolean"
+ },
{
"accessPermission": "Read-Write",
"default": "15",
@@ -5297,7 +5571,7 @@
"url": "https://developer.roku.com/docs/references/scenegraph/widget-nodes/texteditbox.md"
},
"timegrid": {
- "description": "OTT providers can use the TimeGrid node to implement an Electronic Program Guide (EPG) in their channels. In an EPG, channels are represented as horizontal rows, one for each channel. Each row has a channel name on the left, and a set of programs airing on that channel to the right. The size of each program depends on its duration. One of these programs has a remote control focus highlight indicator on it, and this highlight can be moved around using the remote control (as long as the TimeGrid node has remote control focus).\n\nThe TimeGrid node also features an alternative Now/Next view that lists only the programs currently airing and airing next, with their respective start times. See [Now/Next mode](https://developer.roku.com/docs/references/scenegraph/list-and-grid-nodes/timegrid.mdnownext-mode) for more information.\n\n![time grid](https://image.roku.com/ZHZscHItMTc2/epg-standard.jpg \"time grid\")",
+ "description": "OTT providers can use the TimeGrid node to implement an Electronic Program Guide (EPG) in their channels. In an EPG, channels are represented as horizontal rows, one for each channel. Each row has a channel name on the left, and a set of programs airing on that channel to the right. The size of each program depends on its duration. One of these programs has a remote control focus highlight indicator on it, and this highlight can be moved around using the remote control (as long as the TimeGrid node has remote control focus).\n\nThe TimeGrid node also features an alternative Now/Next view that lists only the programs currently airing and airing next, with their respective start times. See [Now/Next mode](https://developer.roku.com/docs/references/scenegraph/list-and-grid-nodes/timegrid.mdnownext-mode) for more information.\n\n![roku815px - time grid](https://image.roku.com/ZHZscHItMTc2/epg-standard.jpg \"time grid\")",
"events": [],
"fields": [],
"interfaces": [],
@@ -5404,7 +5678,7 @@
{
"accessPermission": "READ_WRITE",
"default": "NULL",
- "description": "The ContentNode node with the \\[Content Meta-Data\\](/docs/developer-program/getting-started/architecture/content-metadata.md) for the video, or a video playlist (a sequence of videos) to be played. If a video playlist is to be played, the children of this ContentNode node comprise the playlist, and each ContentNode child must have all attributes required to play that video. For example, if the videos \"A\" and \"B\" are to be played, three ContentNode nodes must be created: the parent ContentNode (which is largely ignored), one ContentNode child for \"A,\" and one ContentNode child for \"B.\" The parent node is set into this content field, and when video playback is started, all of its children will be played in sequence. Any changes made to the playlist after playback has started are ignored. See the \\`contentIsPlaylist\\` and \\`contentIndex\\` fields, for more information on playlists.",
+ "description": "The ContentNode with the \\[Content Meta-Data\\](/docs/developer-program/getting-started/architecture/content-metadata.md) for the video, or a video playlist (a sequence of videos) to be played. If a video playlist is to be played, the children of this ContentNode comprise the playlist, and each ContentNode child must have all attributes required to play that video. For example, if the videos \"A\" and \"B\" are to be played, three ContentNodes must be created: the parent ContentNode (which is largely ignored), one ContentNode child for \"A,\" and one ContentNode child for \"B.\" The parent node is set into this content field, and when video playback is started, all of its children will be played in sequence. Any changes made to the playlist after playback has started are ignored. See the \\`contentIsPlaylist\\` and \\`contentIndex\\` fields, for more information on playlists.",
"name": "content",
"type": "ContentNode"
},
@@ -5431,16 +5705,30 @@
},
{
"accessPermission": "READ_ONLY",
- "default": "0",
- "description": "The error code associated with the video play error set in the \\`state\\` field. Use the \\*\\*errorStr\\*\\* and and \\*\\*errorInfo\\*\\* fields for more descriptive diagnostic information to help identify and resolve the cause of the error.",
- "name": "errorCode",
- "type": "integer"
+ "default": "{}",
+ "description": "Provides the following video decoder statistics related to the start of video playback:\n\n| Key | Type | Value |\n| --- | --- | --- |\n| renderCount | integer | The number of frames that have been rendered since playback was started. This value is incremented each time a new frame is rendered |\n| repeatCount | integer | The number of frames that have been repeated since playback was started.This value is incremented each time a new frame is not available in time and the current frame is rendered an additional frame period. |\n| frameDropCount | integer | The number of frames that have been dropped since playback was started.This value is incremented each time the presentation time of a decoded frame is too old to be rendered and the next frame is rendered instead. |\n| streamErrorCount | integer | The number of bitstream errors since playback was started.This value is incremented each time the decoder detects a bitstream error. |\n\nSet the \\*\\*enableDecoderStats\\*\\* field to true to enable updates to this field.",
+ "name": "decoderStats (_Available since Roku OS 11.0_)",
+ "type": "roAssociativeArray"
},
{
- "accessPermission": "READ-ONLY",
- "default": "",
- "description": "A diagnostic message to help resolve the video play error set in the \\`state\\` field. The roAssociativeArray contains the following fields:\n\n| Field | Type | Description |\n| --- | --- | --- |\n| clip\\_id | integer | The unique ID for the clip |\n| ignored | integer | Indicates whether the error generated an exception (0) or was ignored resulting in the next item in the content list being played (1). |\n| source | string | The module that generated the error. |\n| category | String | The type of error, which includes: \"http\", \"drm\", \"mediaerror\", or \"mediaplayer\". |\n| error\\_code | integer | The internal Roku code associated with the error. Use the **dbgmsg** field for debugging. |\n| dbgmsg | string | A verbose debug message that can help identify the root cause of the error. |\n| error\\_attributes | string | The error attribute, which includes the clip\\_id (the unique ID of the clip that failed to play). |",
- "name": "errorInfo",
+ "accessPermission": "READ_WRITE",
+ "default": "false",
+ "description": "Enables updates to the \\*\\*decoderStats\\*\\* field.",
+ "name": "enableDecoderStats (_Available since Roku OS 11.0_)",
+ "type": "boolean"
+ },
+ {
+ "accessPermission": "READ_ONLY",
+ "default": "0",
+ "description": "The error code associated with the video play error set in the \\`state\\` field. Use the \\*\\*errorStr\\*\\* and and \\*\\*errorInfo\\*\\* fields for more descriptive diagnostic information to help identify and resolve the cause of the error.",
+ "name": "errorCode",
+ "type": "integer"
+ },
+ {
+ "accessPermission": "READ_ONLY",
+ "default": "",
+ "description": "A diagnostic message to help resolve the video play error set in the \\`state\\` field. The roAssociativeArray contains the following fields:\n\n| Field | Type | Description |\n| --- | --- | --- |\n| clip\\_id | integer | The unique ID for the clip |\n| ignored | integer | Indicates whether the error generated an exception (0) or was ignored resulting in the next item in the content list being played (1). |\n| source | string | The module that generated the error. |\n| category | String | The type of error, which includes: \"http\", \"drm\", \"mediaerror\", or \"mediaplayer\". |\n| error\\_code | integer | The internal Roku code associated with the error. Use the **dbgmsg** field for debugging. |\n| dbgmsg | string | A verbose debug message that can help identify the root cause of the error. |\n| error\\_attributes | string | The error attribute, which includes the clip\\_id (the unique ID of the clip that failed to play). |\n| drmerrcode _Available since Roku OS 10.5_ | integer | The error code returned by the DRM system, if any, when a video player error occurs |",
+ "name": "errorInfo",
"type": "roAssociativeArray"
},
{
@@ -5451,7 +5739,7 @@
"type": "string"
},
{
- "accessPermission": "READ-ONLY",
+ "accessPermission": "READ_ONLY",
"default": "",
"description": "A diagnostic message to help resolve the video play error set in the \\`state\\` field. The format of the errorStr is as follows: category:{category\\\\\\_name}:error:{error\\\\\\_code}:ignored:{0|1}:{source}:{source\\\\\\_name}:{additional catcher comment}:{error\\\\\\_string}:extra:{error\\\\\\_attributes}\n\n| errorStr Field | Type | Description |\n| --- | --- | --- |\n| category\\_name | string | The type of error, which includes: \"http\", \"drm\", \"mediaerror\", or \"mediaplayer\". |\n| error\\_code | integer | The unique code associated with the error. |\n| ignored | integer | Indicates whether the error generated an exception (0) or was ignored resulting in the next item in the content list being played (1). |\n| source | string | The module that generated the error. |\n| source\\_name | string | The module that generated the error. |\n| additional catcher comment | string | Typically, the comment added when the exception is caught. |\n| error\\_string | string | A text message describing the video play error. |\n| error\\_attributes | string | The error attribute, which includes the clip\\_id (the unique ID of the clip that failed to play). |",
"name": "errorStr",
@@ -5471,6 +5759,62 @@
"name": "nextContentIndex",
"type": "integer"
},
+ {
+ "accessPermission": "READ_WRITE",
+ "default": "0",
+ "description": "The index of the button that has focus in the \\*\\*playbackActionButtons\\*\\* field.",
+ "name": "playbackActionButtonFocused (_Available since Roku OS 11.5_)",
+ "type": "integer"
+ },
+ {
+ "accessPermission": "WRITE",
+ "default": "OX121212FF",
+ "description": "Specifies the color of the button label text when the button has key focus.",
+ "name": "playbackActionButtonFocusedTextColor (_Available since Roku OS 11.5_)",
+ "type": "Color"
+ },
+ {
+ "accessPermission": "WRITE",
+ "default": "SmallBoldSystemFont",
+ "description": "Specifies the font of the button label when the button has key focus.",
+ "name": "playbackActionButtonFocusedTextFont (_Available since Roku OS 11.5_)",
+ "type": "Font"
+ },
+ {
+ "accessPermission": "WRITE",
+ "default": "-",
+ "description": "Specifies the button background color when the button has key focus.",
+ "name": "playbackActionButtonFocusIndicatorBlendColor (_Available since Roku OS 11.5_)",
+ "type": "Color"
+ },
+ {
+ "accessPermission": "READ_WRITE",
+ "default": "[]",
+ "description": "Component that shows the buttons and other specified UI elements on the pause screen at the start of playback. Each element in the array has following fields:\n\n| Field | Type | Default | Description |\n| --- | --- | --- | --- |\n| text | string | system default | Text for the button label |\n| icon | uri | \"\" | A 9-patch or PNG of the icon to be displayed when the button does not have. |\n| focusIcon | uri | \"\" | A 9-patch or PNG of the icon to be displayed when the button has focus. |\n| buttonIsDisabled | Boolean | false | Controls whether the button is disabled (true) or enabled (false). A disabled button is skipped and does not have focus while the user navigates the different playback action buttons with the directional pad on the Roku remote control. |\n| bottomRowButtons | array of strings | \\[ \\] | List of buttons to be displayed in the the bottom row the pause screen. Each string in the buttons array adds a new button to the bottom row. |\n| bottomRowButtonFocused | int | 0 | Indicates the index of the button that gained focus when the user moved the focus onto a button in the bottom row. |\n| bottomRowButtonSelected | int | 0 | Indicates the index of the selected button when the user selects one of the buttons in the bottom row. |",
+ "name": "playbackActionButtons (_Available since Roku OS 11.5_)",
+ "type": "roArray of roAssociativeArrays"
+ },
+ {
+ "accessPermission": "READ_WRITE",
+ "default": "0",
+ "description": "The index of the button that is selected in the \\*\\*playbackActionButtons\\*\\* field.",
+ "name": "playbackActionButtonSelected (_Available since Roku OS 11.5_)",
+ "type": "integer"
+ },
+ {
+ "accessPermission": "WRITE",
+ "default": "0xEFEFEFFF",
+ "description": "Specifies the color of the button label text when the button does not have key focus.",
+ "name": "playbackActionButtonUnfocusedTextColor (_Available since Roku OS 11.5_)",
+ "type": "Color"
+ },
+ {
+ "accessPermission": "WRITE",
+ "default": "SmallSystemFont",
+ "description": "Specifies the font of the button label when the button does not have key focus.",
+ "name": "playbackActionButtonUnfocusedTextFont (_Available since Roku OS 11.5_)",
+ "type": "Font"
+ },
{
"accessPermission": "READ_ONLY",
"default": "",
@@ -5500,10 +5844,10 @@
},
"fields": [
{
- "accessPermission": "READ_WRITE",
+ "accessPermission": "READ-ONLY",
"default": "false",
- "description": "The direction in which the voice hint tooltip points: \\* true. The voice hint tooltip points right. \\* false. The voice hint tooltip points left.",
- "name": "flipVoiceToolTip",
+ "description": "Checks whether the user is currently dictating to the keyboard.",
+ "name": "isDictating _Available since Roku OS 10.5_",
"type": "boolean"
},
{
@@ -5520,6 +5864,13 @@
"name": "voiceEntryType",
"type": "string"
},
+ {
+ "accessPermission": "WRITE-ONLY",
+ "default": "\"\"",
+ "description": "Specify which characters may or may not be entered on the keyboard via dictation. For example, setting this field to \"^\\\\\\[A-Za-z0-9\\\\\\_-\\\\\\]\\\\\\*$\" prevents any special characters from being entered.",
+ "name": "voiceInputRegexFilter _Available since Roku OS 10.5_",
+ "type": "string"
+ },
{
"accessPermission": "READ_WRITE",
"default": "FHD: 321HD: 214",
@@ -5565,13 +5916,8 @@
"url": "https://developer.roku.com/docs/references/brightscript/components/roappinfo.md"
},
"roappmanager": {
- "constructors": [
- {
- "params": [],
- "returnType": "roAppManager"
- }
- ],
- "description": "The Application Manager APIs set application level attributes, which mostly affect the look-and-feel of the application. The use of screen styles gives each application a consistent look-and-feel, but it's often desirable to customize attributes such as colors, fonts, and logos for each application. Setting artwork and colors allows the developer to specify a theme for their application. If these values are not set, the application will use default values.\n\nThe table below describes each attribute and its values, the screen types to which it applies, and the Roku OS version in which the attribute was first supported. Unless otherwise indicated, an attribute is supported in all Roku OS versions after the one in which it was first supported.\n\nTo save space, the screen types in the table are specified by a two letter code:\n\n| Code | Screen Type |\n| --- | --- |\n| Co | roCodeRegistrationScreen |\n| Di | roMessageDialog, roOneLineDialog, roPinEntryDialog |\n| Gr | roGridScreen |\n| Ke | roKeyboardScreen |\n| Li | roListScreen |\n| Pa | roParagraphScreen |\n| Po | roPosterScreen |\n| Se | roSearchScreen |\n| Sp | roSpringboardScreen |\n| Te | roTextScreen |\n\nAll attribute values are strings. Numeric values are specified as decimal strings.\n\n| Attribute | Screen Types | Values | Example | Version |\n| --- | --- | --- | --- | --- |\n| BackgroundColor | Gr Li Pa Po Se Sp Te | HTML HEX Color Value | #E0DFDF | 1.0 |\n| BreadcrumbDelimiter | Gr Li Pa Po Se Sp Te | HTML HEX Color Value | #FF00FF | 1.0 |\n| BreadcrumbTextLeft | Gr Li Pa Po Se Sp Te | HTML HEX Color Value | #FF00FF | 1.0 |\n| BreadcrumbTextRight | Gr Li Pa Po Se Sp Te | HTML HEX Color Value | #FF00FF | 1.0 |\n| ButtonHighlightColor | Di Se Sp | HTML HEX Color Value | #FF00FF | 1.0 |\n| ButtonMenuHighlightText | Di Se Sp | HTML HEX Color Value | #0033FF | 1.0 |\n| ButtonMenuNormalOverlayText | Di Se Sp | HTML HEX Color Value | #B0B0B0 | 1.0 |\n| ButtonMenuNormalText | Di Se Sp | HTML HEX Color Value | #686868 | 1.0 |\n| ButtonNormalColor | Di Se Sp | HTML HEX Color Value | #FF00FF | 1.0 |\n| CounterSeparator | Gr Po | HTML HEX Color Value | #00FF00 | 2.7 |\n| CounterTextLeft | Gr Po | HTML HEX Color Value | #FF0000 | 2.7 |\n| CounterTextRight | Gr Po | HTML HEX Color Value | #0000FF | 2.7 |\n| DialogBodyText | Di | HTML HEX Color Value. Must be a grayscale value | #808080 | 3.1 |\n| DialogTitleText | Di | HTML HEX Color Value. Must be a grayscale value | #363636 | 3.1 |\n| EpisodeSynopsisText | Po | HTML HEX Color Value | #FF00FF | 1.0 |\n| FilterBannerActiveColor | Po | HTML HEX Color Value | #FF00FF | 1.0 |\n| FilterBannerActiveHD | Po | URL to set HD Filter Banner Active/Focus Highlighter | pkg:/images/Filter\\_ActiveHint\\_HD.png | 1.0 |\n| FilterBannerActiveSD | Po | URL to set SD Filter Banner Active/Focus Highlighter | pkg:/images/Filter\\_ActiveHint\\_SD43.png | 1.0 |\n| FilterBannerInactiveColor | Po | HTML HEX Color Value | #FF00FF | 1.0 |\n| FilterBannerInactiveHD | Po | URL to set HD Filter Banner Inactive Highlighter | pkg:/images/Filter\\_InactiveHint\\_HD.png | 1.0 |\n| FilterBannerInactiveSD | Po | URL to set SD Filter Banner Inactive Highlighter | pkg:/images/Filter\\_ActiveHint\\_SD43.png | 1.0 |\n| FilterBannerSideColor | Po | HTML HEX Color Value | #FF00FF | 1.0 |\n| FilterBannerSliceHD | Po | URL to set HD Filter Banner Background Image | pkg:/images/Filter\\_ActiveHint\\_HD.png | 1.0 |\n| FilterBannerSliceSD | Po | URL to set SD Filter Banner Background Image | pkg:/images/Filter\\_ActiveHint\\_SD43.png | 1.0 |\n| GridScreenBackgroundColor | Gr | HTML HEX Color Value Must be a grayscale value | #363636 | 2.7 |\n| GridScreenBorderOffsetHD | Gr | String representing point \"(x, y)\" that is the offset from the upper left corner of the focused HD image. Set to the negative width & height of border | (-25,-25) | 2.8 |\n| GridScreenBorderOffsetSD | Gr | String representing point \"(x, y)\" that is the offset from the upper left corner of the focused SD image. Set to the negative width & height of border | (-20,-20) | 2.8 |\n| GridScreenDescriptionDateColor | Gr | HTML HEX Color Value | #FF005B | 2.7 |\n| GridScreenDescriptionImageHD | Gr | URL to set HD Description callout background image on Grid | pkg:/images/Description\\_Background\\_HD.ng | 2.8 |\n| GridScreenDescriptionImageSD | Gr | URL to set SD Description callout background image on Grid | pkg:/images/Description\\_Background\\_SD43.ng | 2.8 |\n| GridScreenDescriptionOffsetHD | Gr | String representing point \"(x, y)\" that is the offset from the upper left corner of the focused HD image. Negative values have the description above and to the left of the focused image | (190,255) | 2.8 |\n| GridScreenDescriptionOffsetSD | Gr | String representing point \"(x, y)\" that is the offset from the upper left corner of the focused SD image. Negative values have the description above and to the left of the focused image | (125,170) | 2.8 |\n| GridScreenDescriptionRuntimeColor | Gr | HTML HEX Color Value | #5B005B | 2.7 |\n| GridScreenDescriptionSynopsisColor | Gr | HTML HEX Color Value | #606000 | 2.7 |\n| GridScreenDescriptionTitleColor | Gr | HTML HEX Color Value | #00FFFF | 2.7 |\n| GridScreenFocusBorderHD | Gr | URL to set HD Focus image on Active Grid Poster | pkg:/images/Border\\_16x9\\_HD.png | 2.8 |\n| GridScreenFocusBorderSD | Gr | URL to set SD Focus image on Active Grid Poster | pkg:/images/Border\\_16x9\\_SD43.png | 2.8 |\n| GridScreenListNameColor | Gr | HTML HEX Color Value. Must be a grayscale value | #FFFFFF | 2.7 |\n| GridScreenLogoHD | Gr | Logo formatted for display in the overhang | pkg:/images/gridlogoHD.png | 2.7 |\n| GridScreenLogoOffsetHD\\_X | Gr | Offset in pixels from the top-left origin of the display. Range 0 to 1280 | 592 | 2.7 |\n| GridScreenLogoOffsetHD\\_Y | Gr | Offset in pixels from the top-left origin of the display. Range 0 to 720 | 31 | 2.7 |\n| GridScreenLogoOffsetSD\\_X | Gr | Offset in pixels from the top-left origin of the display. Range 0 to 720 | 324 | 2.7 |\n| GridScreenLogoOffsetSD\\_Y | Gr | Offset in pixels from the top-left origin of the display. Range 0 to 480 | 21 | 2.7 |\n| GridScreenLogoSD | Gr | Logo formatted for display in the overhang | pkg:/images/gridlogoSD.png | 2.7 |\n| GridScreenMessageColor | Gr | HTML HEX Color Value. Must be a grayscale value | #808080 | 2.7 |\n| GridScreenOverhangHeightHD | Gr | The HD overhang height. Default: \"69\" | 75 | 2.8 |\n| GridScreenOverhangHeightSD | Gr | The SD overhang height. Default: \"49\" | 55 | 2.8 |\n| GridScreenOverhangSliceHD | Gr | URI for the overhang slice (thin piece of top of screen border) | pkg:/images/gridoverhangHD.png | 2.7 |\n| GridScreenOverhangSliceSD | Gr | URI for the overhang slice (thin piece of top of screen border) | pkg:/images/gridoverhangSD.png | 2.7 |\n| GridScreenRetrievingColor | Gr | HTML HEX Color Value. Must be a grayscale value | #CCCCCC | 2.7 |\n| ListItemHighlightHD | Gr Li Po | URL to set HD highlight image | pkg:/images/listitem\\_highlight\\_hd.png | 3.1 |\n| ListItemHighlightSD | Gr Li Po | URL to set SD highlight image | pkg:/images/listitem\\_highlight\\_sd.png | 3.1 |\n| ListItemHighlightText | Gr Li Po | HTML HEX Color Value | #CCCC00 | 3.1 |\n| ListItemText | Gr Li Po | HTML HEX Color Value | #CCCC00 | 3.1 |\n| ListScreenDescriptionText | Li | HTML HEX Color Value | #CCCC00 | 3.1 |\n| ListScreenTitleColor | Li | HTML HEX Color Value | #CC0000 | 3.1 |\n| OverhangPrimaryLogoHD | Co Ke Li Pa Po Se Sp Te | Small application logo formatted for display in overhang top left | pkg:/images/co\\_logo\\_sd.png | 1.0 |\n| OverhangPrimaryLogoOffsetHD\\_X | Co Ke Li Pa Po Se Sp Te | Offset in pixels from the top-left origin of the display films.Range 0 to 1280 | 25 | 1.0 |\n| OverhangPrimaryLogoOffsetHD\\_Y | Co Ke Li Pa Po Se Sp Te | Offset in pixels from the top-left origin of the display films.Range 0 to 720 | 50 | 1.0 |\n| OverhangPrimaryLogoOffsetSD\\_X | Co Ke Li Pa Po Se Sp Te | Offset in pixels from the top-left origin of the display films.Range 0 to 720 | 25 | 1.0 |\n| OverhangPrimaryLogoOffsetSD\\_Y | Co Ke Li Pa Po Se Sp Te | Offset in pixels from the top-left origin of the display films.Range 0 to 480 | 50 | 1.0 |\n| OverhangPrimaryLogoSD | Co Ke Li Pa Po Se Sp Te | Small application logo formatted for display in overhang top left | pkg:/images/co\\_logo\\_sd.png | 1.0 |\n| OverhangSecondaryLogoHD | Co Ke Li Pa Po Se Sp Te | Small application logo formatted for display in overhang top left | pkg:/images/co\\_logo\\_hd.png | 1.0 |\n| OverhangSecondaryLogoOffsetHD\\_X | Co Ke Li Pa Po Se Sp Te | Offset in pixels from the top-left origin of the display films. Range 0 to 1280 | 25 | 1.0 |\n| OverhangSecondaryLogoOffsetHD\\_Y | Co Ke Li Pa Po Se Sp Te | Offset in pixels from the top-left origin of the display films. Range 0 to 720 | 50 | 1.0 |\n| OverhangSecondaryLogoOffsetSD\\_X | Co Ke Li Pa Po Se Sp Te | Offset in pixels from the top-left origin of the display films. Range 0 to 720 | 25 | 1.0 |\n| OverhangSecondaryLogoOffsetSD\\_Y | Co Ke Li Pa Po Se Sp Te | Offset in pixels from the top-left origin of the display films. Range 0 to 480 | 50 | 1.0 |\n| OverhangSecondaryLogoSD | Co Ke Li Pa Po Se Sp Te | Small application logo formatted for display in overhang top left | pkg:/images/co\\_logo\\_sd.png | 1.0 |\n| OverhangSliceHD | Co Ke Li Pa Po Se Sp Te | URI for the overhang slice (thin piece of border at the top of the screen in HD size) | pkg:/images/overhang\\_hd.png | 1.0 |\n| OverhangSliceSD | Co Ke Li Pa Po Se Sp Te | URI for the overhang slice (thin piece of top of screen border) | pkg:/images/overhang\\_sd.png | 1.0 |\n| ParagraphBodyText | Co Pa Te | HTML HEX Color Value | #FF00FF | 1.0 |\n| ParagraphHeaderText | Co Pa Te | HTML HEX Color Value | #FF00FF | 1.0 |\n| PosterScreenLine1Text | Po | HTML HEX Color Value | #FF00FF | 1.0 |\n| PosterScreenLine2Text | Po | HTML HEX Color Value | #FF00FF | 1.0 |\n| RegistrationCodeColor | Co | HTML HEX Color Value | #FF00FF | 1.0 |\n| RegistrationFocalColor | Co | HTML HEX Color Value | #FF00FF | 1.0 |\n| RegistrationFocalRectColor | Co | HTML HEX Color Value | #10FF80 | |\n| RegistrationFocalRectHD | Co | Position and size of the HD focal rectangle. Four integer: (x,y,width,height) | (228,360,120,82) | |\n| RegistrationFocalRectSD | Co | Position and size of the SD focal rectangle. Four integer: (x,y,width,height) | (172,220,90,76) | |\n| SpringboardActorColor | Sp | HTML HEX Color Value | #FF00FF | 1.0 |\n| SpringboardAlbumColor | Sp | HTML HEX Color Value | #FF00FF | 1.0 |\n| SpringboardAlbumLabel | Sp | Album Label | on | 1.0 |\n| SpringboardAlbumLabelColor | Sp | HTML HEX Color Value | #FF00FF | 1.0 |\n| SpringboardAllow6Buttons | Sp | boolean string | true | |\n| SpringboardArtistColor | Sp | HTML HEX Color Value | #FF00FF | 1.0 |\n| SpringboardArtistLabel | Sp | Artist Label | by | 1.0 |\n| SpringboardArtistLabelColor | Sp | HTML HEX Color Value | #FF00FF | 1.0 |\n| SpringboardDirectorColor | Sp | HTML HEX Color Value | #FF00FF | 1.0 |\n| SpringboardDirectorText | Sp | Director Label | Written by | 1.0 |\n| SpringboardDirectorLabelColor | Sp | HTML HEX Color Value | #FF00FF | 1.0 |\n| SpringboardDirectorPrefixText | Sp | HTML HEX Color Value | #FF00FF | |\n| SpringboardGenreColor | Sp | HTML HEX Color Value | #FF00FF | 1.0 |\n| SpringboardRuntimeColor | Sp | HTML HEX Color Value | #FF00FF | 1.0 |\n| SpringboardSynopsisColor | Sp | HTML HEX Color Value | #FF00FF | 1.0 |\n| SpringboardTitleText | Sp | HTML HEX Color Value | #FF00FF | 1.0 |\n| TextScreenBodyBackgroundColor | Te | HTML HEX Color Value. Must be a grayscale value | #808080 | 4.3 |\n| TextScreenBodyText | Te | HTML HEX Color Value | #363636 | 4.3 |\n| TextScreenScrollBarColor | Te | HTML HEX Color Value | #CC0000 | 4.3 |\n| TextScreenScrollThumbColor | Te | HTML HEX Color Value | #00CC00 | 4.3 |\n| ThemeType | | Theme type. Generic-dark is the only valid value. Otherwise the default theme applies | generic-dark | 2.7 |\n\n**Example**\n\n```\nSub SetApplicationTheme()\n app = CreateObject(\"roAppManager\")\n theme = CreateObject(\"roAssociativeArray\")\n theme.OverhangSliceHD = \"pkg:/images/Overhang_Slice_HD.png\"\n theme.OverhangPrimaryLogoSD = \"pkg:/images/Logo_Overhang_SD43.png\"\n theme.OverhangPrimaryLogoOffsetSD_X = \"72\"\n theme.OverhangPrimaryLogoOffsetSD_Y = \"25\"\n theme.OverhangPrimaryLogoHD = \"pkg:/images/Logo_Overhang_HD.png\"\n theme.OverhangPrimaryLogoOffsetHD_X = \"123\"\n theme.OverhangPrimaryLogoOffsetHD_Y = \"48\"\n app.SetTheme(theme)\nEnd Sub\n```",
+ "constructors": [],
+ "description": "The roAppManager component is used to returns information about the channel application.",
"events": [],
"interfaces": [
{
@@ -5582,6 +5928,25 @@
"name": "roAppManager",
"url": "https://developer.roku.com/docs/references/brightscript/components/roappmanager.md"
},
+ "roappmemorymonitor": {
+ "availableSince": "10.5",
+ "constructors": [],
+ "description": "_Available since Roku OS 10.5_\n\nThe **roAppMemoryMonitor** component is used to subscribe channels to low-memory notifications. When a channel is subscribed, it receives a [roAppMemoryMonitorEvent](https://developer.roku.com/docs/references/brightscript/events/roappmemorymonitorevent.md when it reaches a specific percentage of the per-channel memory limit (80%).\n\n> To use the roAppMemoryMonitor functions, you must add the **run\\_as\\_process=1** attribute to the [channel manifest](/docs/developer-program/getting-started/architecture/channel-manifest.md).\n> \n> This feature is only supported on [current Roku device models](/docs/specs/hardware.md#current-roku-models).",
+ "events": [
+ {
+ "name": "roAppMemoryMonitorEvent",
+ "url": "https://developer.roku.com/docs/references/brightscript/events/roappmemorymonitorevent.md"
+ }
+ ],
+ "interfaces": [
+ {
+ "name": "ifAppMemoryMonitor",
+ "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifappmemorymonitor.md"
+ }
+ ],
+ "name": "roAppMemoryMonitor",
+ "url": "https://developer.roku.com/docs/references/brightscript/components/roappmemorymonitor.md"
+ },
"roarray": {
"constructors": [
{
@@ -5595,14 +5960,14 @@
{
"default": null,
"isRequired": true,
- "name": "resizeAs",
+ "name": "resize",
"type": "Boolean"
}
],
"returnType": "roArray"
}
],
- "description": "An array stores an indexed collection of BrightScript objects. Each entry of an array can be a different type, or they may all of the same type.\n\nAn roArray is created with two parameters:\n\n**CreateObject(\"roArray\", size As Integer, resizeAs Boolean)**\n\nSize is the initial number of elements allocated for the array. If resize is true, the array will be resized if needed to accommodate more elements. If the array is large, this might be slow. The \"dim\" statement may be used instead of CreateObject to allocate a new array. Dim has the advantage in that it automatically creates arrays of arrays for multi-dimensional arrays.",
+ "description": "An array stores an indexed collection of BrightScript objects. Each entry of an array can be a different type, or they may all of the same type.\n\nAn roArray is created with two parameters:\n\n**CreateObject(\"roArray\", size as Integer, resize as Boolean)**\n\nSize is the initial number of elements allocated for the array. If resize is true, the array will be resized if needed to accommodate more elements. If the array is large, this might be slow. The \"dim\" statement may be used instead of CreateObject to allocate a new array. Dim has the advantage in that it automatically creates arrays of arrays for multi-dimensional arrays.",
"events": [],
"interfaces": [
{
@@ -5657,7 +6022,7 @@
},
"roaudioguide": {
"constructors": [],
- "description": "> This component is only available on the following devices: Roku Streaming Stick (3600X), Roku Express (3700X) and Express+ (3710X), Roku Premiere (4620X) and Premiere+ (4630X), Roku Ultra (4640X), and any Roku TV running Roku OS version 7.5 and later.\n\nThe roAudioGuide component provides Audio Guide support for applications that require custom speech beyond what is provided by automatic Audio Guide in SDK and Scene Graph components.\n\nThough some of the roAudioGuide API is similar to [roTextToSpeech](https://developer.roku.com/docs/references/brightscript/components/rotexttospeech.md\"roTextToSpeech\"), roAudioGuide provides support specific to Audio Guide, including:\n\n* Speaks when Audio Guide is enabled, and doesn't speak if it isn't.\n* Automatically splits up text to reduce lag.\n* Uses the correct voice, language, volume, and speech rate for Audio Guide.\n* Tries to be \"smart\" by pre-processing the text for correct pronunciation of things like currency, email addresses, acronyms, media-related names and titles, etc.\n\nUsually, roAudioGuide would be used on its own, but it can be used in conjunction with [roTextToSpeech](https://developer.roku.com/docs/references/brightscript/components/rotexttospeech.md\"roTextToSpeech\").",
+ "description": "> This component is only available on the following devices: Roku Streaming Stick (3600X), Roku Express (3700X) and Express+ (3710X), Roku Premiere (4620X) and Premiere+ (4630X), Roku Ultra (4640X), and any Roku TV running Roku OS version 7.5 and later.\n\nThe roAudioGuide component provides screen reader support for applications that require custom speech beyond what is provided by the automatic screen reader in SDK and Scene Graph components.\n\nThough some of the roAudioGuide API is similar to [roTextToSpeech](https://developer.roku.com/docs/references/brightscript/components/rotexttospeech.md\"roTextToSpeech\"), roAudioGuide provides support specific to screen reader, including:\n\n* Speaks when the screen reader is enabled, and doesn't speak if it isn't.\n* Automatically splits up text to reduce lag.\n* Uses the correct voice, language, volume, and speech rate for the screen reader.\n* Tries to be \"smart\" by pre-processing the text for correct pronunciation of things like currency, email addresses, acronyms, media-related names and titles, etc.\n\nUsually, roAudioGuide would be used on its own, but it can be used in conjunction with [roTextToSpeech](https://developer.roku.com/docs/references/brightscript/components/rotexttospeech.md\"roTextToSpeech\").",
"events": [],
"interfaces": [
{
@@ -5727,7 +6092,7 @@
"params": [
{
"isRequired": true,
- "name": "param1",
+ "name": "filename",
"type": "dynamic"
}
],
@@ -5862,25 +6227,27 @@
"name": "roByteArray",
"url": "https://developer.roku.com/docs/references/brightscript/components/robytearray.md"
},
- "rocaptionrenderer": {
+ "rocecstatus": {
"constructors": [],
- "deprecatedDescription": "This component is deprecated and will be removed from Roku OS on January 1st, 2019.\n\nBeginning July 1st, 2017, any new channels using this component will be rejected during certification.\n\nBeginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.\n",
- "description": "> This component is deprecated and will be removed from Roku OS on January 1st, 2019.\n> \n> Beginning July 1st, 2017, any new channels using this component will be rejected during certification.\n> \n> Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.\n\nThe roCaptionRenderer component provides a mechanism for BrightScript channels to render closed captions in video played back with the roVideoPlayer. Prior to the v 5.2 Roku firmware, captions could only be rendered in roVideoScreen.\n\nPrior to the 5.2 Roku OS version, closed captions could only be rendered in roVideoScreen. Now channels that use roVideoPlayer embedded in an roScreen or roImageCanvas can also take advantage of Roku's closed captioning support. roCaptionRenderer supports two different modes, which is set using the [SetMode()](https://developer.roku.com/docs/references/brightscript/interfaces/ifcaptionrenderer.mdsetmodemode-as-integer-as-void \"SetMode()\") method. Depending on the mode set, and the type of screen being used, the BrightScript channel needs to do different levels of work to render captions. These different workflows are highlighted in the tables below:\n\n**Model 1**\n\n| roScreen | roImageCanvas |\n| --- | --- |\n| Call [SetScreen()](https://developer.roku.com/docs/references/brightscript/interfaces/ifcaptionrenderer.mdsetscreenscreen-as-object-as-void \"SetScreen()\") | Call [SetScreen()](https://developer.roku.com/docs/references/brightscript/interfaces/ifcaptionrenderer.mdsetscreenscreen-as-object-as-void \"SetScreen()\") |\n| Call [UpdateCaption()](https://developer.roku.com/docs/references/brightscript/interfaces/ifcaptionrenderer.mdupdatecaption-as-void \"UpdateCaption()\") | |\n\n**Model 2**\n\n| roScreen | roImageCanvas |\n| --- | --- |\n| All caption rendering is done by the channel's BrightScript code | All caption rendering is done by the channel's BrightScript code |\n\nBrightScript channels do not create roCaptionRenderer instances directly using CreateObject(). Instead, when an roVideoPlayer is created, it contains an roCaptionRenderer. BrightScript channels call [ifVideoPlayer.GetCaptionRenderer()](https://developer.roku.com/docs/references/brightscript/interfaces/ifvideoplayer.mdgetcaptionrenderer-as-object \"ifVideoPlayer.GetCaptionRenderer()\") to get the caption renderer associated with their video player.\n\n**Example**\n\n```\nFunction Main() as void\n mode = 1\n fonts = CreateObject(\"roFontRegistry\")\n fonts.Register(\"pkg:/fonts/vSHandprinted.otf\")\n font = fonts.GetFont(\"vSHandprinted\", 28, 500, false)\n screen = CreateObject(\"roScreen\", true)\n port = CreateObject(\"roMessagePort\")\n screen.Clear(&h00)\n screen.SwapBuffers()\n screen.SetMessagePort(port)\n timer = CreateObject(\"roTimespan\")\n screenSize = {}\n screenSize.width = screen.GetWidth()\n screenSize.height = screen.GetHeight()\n\n player = CreateObject(\"roVideoPlayer\")\n player.SetContentList([\n {\n Stream : { url :\"http://ecn.channel9.msdn.com/o9/content/smf/smoothcontent/elephantsdream/Elephants_Dream_1024-h264-st-aac.ism/manifest\" }\n StreamFormat : \"ism\"\n TrackIDAudio: \"audio_eng\"\n TrackIDSubtitle: \"ism/textstream_eng\"\n }\n ])\n\n captions = player.GetCaptionRenderer()\n if (mode = 1)\n captions.SetScreen(screen)\n endif\n captions.SetMode(mode)\n captions.SetMessagePort(port)\n captions.ShowSubtitle(true)\n\n player.play()\n\n while true\n msg = wait(250, port)\n if type(msg) = \"roCaptionRendererEvent\"\n if msg.isCaptionText()\n print \"isCaptionText\"\n if msg.GetMessage() <> invalid and msg.GetMessage() <> \"\"\n DrawCaptionString(screen, screenSize, msg.GetMessage(), font)\n timer.Mark()\n else if timer.TotalSeconds() > 2\n ClearCaptionString(screen)\n endif\n else if msg.isCaptionUpdateRequest()\n print \"isCaptionUpdateRequest()\"\n UpdateCaptions(screen, captions)\n end if\n endif\n end while\nEnd Function\n\nFunction UpdateCaptions(screen as object, captions as object) as Void\n screen.Clear(&h00)\n captions.UpdateCaption()\n screen.SwapBuffers()\nEnd Function\n\nFunction DrawCaptionString(screen as object, screenSize as object, caption as String, font as object) as Void\n screen.Clear(&h00)\n textHeight = font.GetOneLineHeight()\n textWidth = font.GetOneLineWidth(caption, screenSize.width)\n x = (screenSize.width - textWidth) / 2\n y = screenSize.height - textHeight\n screen.DrawText(caption, x, y, &hd5d522ff, font)\n screen.SwapBuffers()\nEnd Function\n\nFunction ClearCaptionString(screen as object) as void\n screen.Clear(&h00)\n screen.SwapBuffers()\nEnd Function\n```",
+ "description": "The roCECStatus component enables channels to identify the active-source status for set boxes.",
"events": [
{
- "name": "roCaptionRendererEvent",
- "url": "https://developer.roku.com/docs/references/brightscript/event/rocaptionrendererevent.md"
+ "name": "roCECStatusEvent",
+ "url": "https://developer.roku.com/docs/references/brightscript/events/rocecstatusevent.md"
}
],
"interfaces": [
{
- "name": "ifCaptionRenderer",
- "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifcaptionrenderer.md"
+ "name": "ifCECStatus",
+ "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifcecstatus.md"
+ },
+ {
+ "name": "ifMessagePort",
+ "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifmessageport.md"
}
],
- "isDeprecated": true,
- "name": "roCaptionRenderer",
- "url": "https://developer.roku.com/docs/references/brightscript/components/rocaptionrenderer.md"
+ "name": "roCECStatus",
+ "url": "https://developer.roku.com/docs/references/brightscript/components/rocecstatus.md"
},
"rochannelstore": {
"constructors": [
@@ -5889,7 +6256,7 @@
"returnType": "roChannelStore"
}
],
- "description": "The roChannelStore component allows the application to perform a purchase of an In-Channel Product or upgrade a channel. Most of the purchase flow, screens and messaging associated with the financial transaction are handled by the Roku OS outside of control or monitoring by BrightScript code. The BrightScript code merely initiates the purchase and receives a final result. This will engender trust with users and give them confidence that they are dealing with the Roku Channel Store.\n\nThe roChannelStore component allows purchasing only those In-Channel Products which are associated with the running channel. Please see [Adding in-channel products](/docs/developer-program/roku-pay/quickstart/in-channel-products.md \"Adding in-channel products\") for details on how to create an In-Channel Product and associate it with a channel. After one or Products are created, GetCatalog() can be used to retrieve a list of Products and their attributes. DoOrder() can be called to initiate a purchase of one or more of the Products.\n\nThe roChannelStore object has a FakeServer() method that will enable you to test the purchase flow scenarios without actually making a real transaction in the Roku channel store. This will be useful in the development of your channel, but should never be used in the actual channel you publish.\n\nThis object is created without any arguments:\n\n`CreateObject(\"roChannelStore\")`\n\n> Because [ifChannelStore.DoOrder()](https://developer.roku.com/docs/references/brightscript/interfaces/ifchannelstore.mddoorder-as-boolean \"ifChannelStore.DoOrder()\") needs to read the product type returned by GetCatalog(), only one instance of roChannelStore should ever be used for a complete purchase flow - you should never create a separate roChannelStore object to complete a purchase that was initiated by a different instance of roChannelStore.",
+ "description": "The roChannelStore component allows the application to perform a purchase of an In-Channel Product or upgrade a channel. Most of the purchase flow, screens and messaging associated with the financial transaction are handled by the Roku OS outside of control or monitoring by BrightScript code. The BrightScript code merely initiates the purchase and receives a final result. This will engender trust with users and give them confidence that they are dealing with the Roku Channel Store.\n\nThe roChannelStore component allows purchasing only those In-Channel Products which are associated with the running channel. Please see [Adding in-channel products](/docs/developer-program/roku-pay/quickstart/in-channel-products.md \"Adding in-channel products\") for details on how to create an In-Channel Product and associate it with a channel. After one or Products are created, GetCatalog() can be used to retrieve a list of Products and their attributes. DoOrder() can be called to initiate a purchase of one or more of the Products.\n\nThis object is created without any arguments:\n\n`CreateObject(\"roChannelStore\")`\n\n> Because [ifChannelStore.DoOrder()](https://developer.roku.com/docs/references/brightscript/interfaces/ifchannelstore.mddoorder-as-boolean \"ifChannelStore.DoOrder()\") needs to read the product type returned by GetCatalog(), only one instance of roChannelStore should ever be used for a complete purchase flow - you should never create a separate roChannelStore object to complete a purchase that was initiated by a different instance of roChannelStore.",
"events": [
{
"name": "roChannelStoreEvent",
@@ -5913,39 +6280,6 @@
"name": "roChannelStore",
"url": "https://developer.roku.com/docs/references/brightscript/components/rochannelstore.md"
},
- "rocoderegistrationscreen": {
- "constructors": [
- {
- "params": [],
- "returnType": "roCodeRegistrationScreen"
- }
- ],
- "deprecatedDescription": "This component is deprecated and will be removed from Roku OS on January 1st, 2019.\n\nBeginning July 1st, 2017, any new channels using this component will be rejected during certification.\n\nBeginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.\n",
- "description": "> This component is deprecated and will be removed from Roku OS on January 1st, 2019.\n> \n> Beginning July 1st, 2017, any new channels using this component will be rejected during certification.\n> \n> Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.\n\nThe Code Registration Screen is designed to present the user a registration code, and the information required to instruct the user on how to register with a service provider. This screen is designed for a rendezvous registration process, where the user is presented a code and the URL for a registration site. The user goes to the site and enters their code, which causes the device and the account to be linked. In the background, the script is polling for completion and the screen is closed to display an activation successful screen when done.\n\n**Diagram: roCodeRegistrationScreen**\n\n![Diagram: roCodeRegistrationScreen](https://image.roku.com/ZHZscHItMTc2/roCodeRegistrationScreenImage1.png \"roCodeRegistrationScreenImage1\")\n\n**Example**\n\n```\nFunction ShowMessageDialog() As Void\n port = CreateObject(\"roMessagePort\")\n screen = CreateObject(\"roCodeRegistrationScreen\")\n screen.SetMessagePort(port)\n screen.SetTitle(\"[Registration screen title]\")\n screen.AddParagraph(\"[Registration screen paragraphs are justified to right and left edges]\")\n screen.AddFocalText(\" \", \"spacing-dense\")\n screen.AddFocalText(\"From your computer,\", \"spacing-dense\")\n screen.AddFocalText(\"go to mysite.com/roku\", \"spacing-dense\")\n screen.AddFocalText(\"and enter this code:\", \"spacing-dense\")\n screen.AddFocalText(\" \", \"spacing-dense\")\n screen.SetRegistrationCode(\"retrieving code...\")\n screen.AddParagraph(\"[Registration screen paragraphs are justified to right and left edges and may continue on multiple lines]\")\n screen.AddButton(0, \"get a new code\")\n screen.AddButton(1, \"back\")\n screen.Show()\n sleep (10000) 'simulate fetching registration code from webapi\n screen.SetRegistrationCode(\"ABC7TG\")\n screen.Show()\n while true\n dlgMsg = wait(0, dialog.GetMessagePort())\n exit while\n end while\n End Function\n```\n\n**Image: roCodeRegistrationScreen example results**\n\n![cdregistscrn1](https://image.roku.com/ZHZscHItMTc2/cdregistscrn1.jpg \"cdregistscrn1\")\n\n![cdregistscrn2](https://image.roku.com/ZHZscHItMTc2/cdregistscrn2.jpg \"cdregistscrn2\")",
- "events": [
- {
- "name": "roCodeRegistrationScreenEvent",
- "url": "https://developer.roku.com/docs/references/brightscript/events/rocoderegistrationscreenevent.md"
- }
- ],
- "interfaces": [
- {
- "name": "ifCodeRegistrationScreen",
- "url": "https://developer.roku.com/docs/references/brightscript/interfaces/iifCodeRegistrationScreen.md"
- },
- {
- "name": "ifGetMessagePort",
- "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifgetmessageport.md"
- },
- {
- "name": "ifSetMessagePort",
- "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifsetmessageport.md"
- }
- ],
- "isDeprecated": true,
- "name": "roCodeRegistrationScreen",
- "url": "https://developer.roku.com/docs/references/brightscript/components/rocoderegistrationscreen.md"
- },
"rocompositor": {
"constructors": [
{
@@ -5975,7 +6309,7 @@
"events": [
{
"name": "roSocketEvent",
- "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifappinfo.md"
+ "url": "https://developer.roku.com/docs/references/brightscript/events/rosocketevent.md"
}
],
"interfaces": [
@@ -6087,6 +6421,20 @@
"name": "roDouble",
"url": "https://developer.roku.com/docs/references/brightscript/components/rodouble.md"
},
+ "rodsa": {
+ "availableSince": "10.5",
+ "constructors": [],
+ "description": "_Available since Roku OS 10.5_\n\nThe DSA component provides support for the ECDSA and EdDSA (with Ed25519 form) digital signature algorithms. It is used to provide cryptographically signed evidence that an ad request originated from an actual Roku device.",
+ "events": [],
+ "interfaces": [
+ {
+ "name": "ifDsa",
+ "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifdsa.md"
+ }
+ ],
+ "name": "roDsa",
+ "url": "https://developer.roku.com/docs/references/brightscript/components/rodsa.md"
+ },
"roevpcipher": {
"constructors": [],
"description": "The EVP Cipher component provides an interface to the OpenSSL EVP library of symmetric cipher commands. The EVP library provides a high-level interface to cryptographic functions to implement digital \"envelopes\".\n\nThese commands allow data to be encrypted or decrypted using various block and stream ciphers using keys based on passwords or explicitly provided.\n\nSome of the ciphers do not have large keys and others have security implications if not used correctly. A beginner is advised to just use a strong block cipher in CBC mode such as bf or des3. All the block ciphers normally use PKCS#5 padding also known as standard block padding. If padding is disabled then the input data must be a multiple of the cipher block length.\n\n> For additional information on the OpenSSL library of symmetric ciphers see: [https://www.openssl.org/docs/manmaster/man1/enc.html](https://www.openssl.org/docs/manmaster/man1/enc.html).\n\n**List of supported ciphers**\n\n| Name | Cipher | Key size (bits) | Block size (bits) |\n| --- | --- | --- | --- |\n| bf-cbc | Blowfish in CBC mode | 128 | 64 |\n| bf | Alias for bf-cbc | 128 | 64 |\n| bf-cfb | Blowfish in CFB mode | 128 | 64 |\n| bf-ecb | Blowfish in ECB mode | 128 | 64 |\n| bf-ofb | Blowfish in OFB mode | 128 | 64 |\n| des-cbc | DES in CBC mode | 56 | 64 |\n| des | Alias for des-cbc | 56 | 64 |\n| des-cfb | DES in CBC mode | 56 | 64 |\n| des-ecb | DES in ECB mode | 56 | 64 |\n| des-ofb | DES in OFB mode | 56 | 64 |\n| des-ede-cbc | Two key triple DES EDE in CBC mode | 80 | 64 |\n| des-ede | Two key triple DES EDE in ECB mode | 80 | 64 |\n| des-ede-cfb | Two key triple DES EDE in CFB mode | 80 | 64 |\n| des-ede-ofb | Two key triple DES EDE in OFB mode | 80 | 64 |\n| des-ede3-cbc | Three key triple DES EDE in CBC mode | 112 | 64 |\n| des-ede3 | Three key triple DES EDE in ECB mode | 112 | 64 |\n| des3 | Alias for des-ede3-cbc | 112 | 64 |\n| des-ede3-cfb | Three key triple DES EDE in CFB mode | 112 | 64 |\n| des-ede3-ofb | Three key triple DES EDE in OFB mode | 112 | 64 |\n| desx | DESX algorithm | approx. 119 | 64 |\n| desx-cbc | DESX in CBC mode | approx. 119 | 64 |\n| aes-\\[128/192/256\\]-cbc | 128/192/256 bit AES in CBC mode | 128,192,256 | 128 |\n| aes-\\[128/192/256\\] | Alias for aes-\\[128/192/256\\]-cbc | 128,192,256 | 128 |\n| aes-\\[128/192/256\\]-cfb | 128/192/256 bit AES in 128 bit CFB mode | 128,192,256 | 128 |\n| aes-\\[128/192/256\\]-cfb1 | 128/192/256 bit AES in 1 bit CFB mode | 128,192,256 | 128 |\n| aes-\\[128/192/256\\]-cfb8 | 128/192/256 bit AES in 8 bit CFB mode | 128,192,256 | 128 |\n| aes-\\[128/192/256\\]-ecb | 128/192/256 bit AES in ECB mode | 128,192,256 | 128 |\n| aes-\\[128/192/256\\]-ofb | 128/192/256 bit AES in OFB mode | 128,192,256 | 128 |",
@@ -6179,43 +6527,6 @@
"name": "roFont",
"url": "https://developer.roku.com/docs/references/brightscript/components/rofont.md"
},
- "rofontmetrics": {
- "constructors": [
- {
- "params": [
- {
- "default": null,
- "isRequired": true,
- "name": "font",
- "type": "String"
- }
- ],
- "returnType": "roFontMetrics"
- },
- {
- "params": [
- {
- "isRequired": true,
- "name": "param1",
- "type": "dynamic"
- }
- ],
- "returnType": "roFontMetrics"
- }
- ],
- "deprecatedDescription": "This class is deprecated. Developers should use [roFont](/docs/references/brightscript/components/roFont.md \"roFont\") methods (GetOneLineHeight and GetOneLineWidth).\n",
- "description": "> This class is deprecated. Developers should use [roFont](https://developer.roku.com/docs/references/brightscript/components/roFont.md\"roFont\") methods (GetOneLineHeight and GetOneLineWidth).\n\nThe roFontMetrics object allows you to get display size information for a specific font returned by the roFontRegistry.Get() method.\n\nIn order to use this object, you must first initialize the roFontMetrics object with a font name that had been previously registered with the roFontRegistry, then the total rendered size of strings in that font can be returned by roFontMetrics.Size().\n\nThis object is created with a string that represents the font to use in its size calculations:\n\n`CreateObject(\"roFontMetrics\", String font)`\n\n**Example: Simple use of roFontRegistry and roFontMetrics to render a string on the roImageCanvas**\n\n```\nhelloString = \"Hello ImageCanvas\"\n\nfontReg = CreateObject(\"roFontRegistry\")\nfontReg.Register(\"pkg:/fonts/LCDMono.ttf\")\nfont = fontReg.Get(\"LCDMono\",36,50,false) ' 36pt, 50 is normal\n ' weight, no italics\n\nfontMetrics = CreateObject(\"roFontMetrics\", font)\nstringSize = fontMetrics.size(helloString)\n\ncanvasItem = { \n Text:helloString\n TextAttrs:{Color:\"#FFCCCCCC\", Font:font, \n HAlign:\"HCenter\",\n VAlign:\"VCenter\", Direction:\"LeftToRight\"}\n TargetRect:{x:390,y:357, w:stringSize.w,h:stringSize.h}\n}\n\ncanvas = CreateObject(\"roImageCanvas\")\nport = CreateObject(\"roMessagePort\")\ncanvas.SetMessagePort(m.port)\n'Set opaque background\ncanvas.SetLayer(0, {Color:\"#FF000000\", CompositionMode:\"Source\"})\ncanvas.SetRequireAllImagesToDraw(true)\ncanvas.SetLayer(1, canvasItem)\ncanvas.Show()\n```",
- "events": [],
- "interfaces": [
- {
- "name": "ifFontMetrics",
- "url": "https://developer.roku.com/docs/references/brightscript/interfaces/iffontmetrics.md"
- }
- ],
- "isDeprecated": true,
- "name": "roFontMetrics",
- "url": "https://developer.roku.com/docs/references/brightscript/components/rofontmetrics.md"
- },
"rofontregistry": {
"constructors": [
{
@@ -6223,7 +6534,7 @@
"returnType": "roFontRegistry"
}
],
- "description": "The roFontRegistry object allows you to create roFont objects, either using the default font or using fonts in TrueType or OpenType files packaged with your application.\n\nThis object is created with no parameters:\n\n`CreateObject(\"roFontRegistry\")`\n\n**Example**\n\n```\nreg = CreateObject(\"roFontRegistry\")\nfont = reg.GetDefaultFont(30, false, false)\nscreen = CreateObject(\"roScreen\")\nscreen.DrawText(\"hello world\", 100, 100, &hFFFFFFFF, font)\n```\n\n**Example using a font file**\n\n```\nreg.Register(\"pkg:/fonts/myfont.ttf\")\nfont = reg.GetFont(\"MyFont\", 30, false, false)\nscreen = CreateObject(\"roScreen\")\nscreen.DrawText(\"hello world\", 100, 100, &hFFFFFFFF, font)\n```\n\nFont files can quickly get very large, so be conscious of the size of the font files you include with your application. You should be able to find very good font files that are 50k or less. Anything larger is probably too big. The customvideoplayer sample application is a good example of usage.",
+ "description": "The roFontRegistry object allows you to create roFont objects, either using the default font or using fonts in TrueType or OpenType files packaged with your application.\n\nThis object is created with no parameters:\n\n`CreateObject(\"roFontRegistry\")`\n\n**Example**\n\n```\nreg = CreateObject(\"roFontRegistry\")\nfont = reg.GetDefaultFont(30, false, false)\nscreen = CreateObject(\"roScreen\")\nscreen.DrawText(\"hello world\", 100, 100, &hFFFFFFFF, font)\n```\n\n**Example using a font file**\n\n```\nreg.Register(\"pkg:/fonts/myfont.ttf\")\nfont = reg.GetFont(\"MyFont\", 30, false, false)\nscreen = CreateObject(\"roScreen\")\nscreen.DrawText(\"hello world\", 100, 100, &hFFFFFFFF, font)\n```\n\nFont files can quickly get very large, so be conscious of the size of the font files you include with your application. You should be able to find very good font files that are 50k or less. Anything larger is probably too big.",
"events": [],
"interfaces": [
{
@@ -6251,43 +6562,6 @@
"name": "roFunction",
"url": "https://developer.roku.com/docs/references/brightscript/components/rofunction.md"
},
- "rogridscreen": {
- "constructors": [
- {
- "params": [],
- "returnType": "roGridScreen"
- }
- ],
- "deprecatedDescription": "This component is deprecated and will be removed from Roku OS on January 1st, 2019.\n\nBeginning July 1st, 2017, any new channels using this component will be rejected during certification.\n\nBeginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.\n",
- "description": "> This component is deprecated and will be removed from Roku OS on January 1st, 2019.\n> \n> Beginning July 1st, 2017, any new channels using this component will be rejected during certification.\n> \n> Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.\n\nThe Grid Screen provides a graphical display of poster art from multiple content categories from within a single screen.\n\nUsers can browse within a category list by scrolling horizonally and between category lists by scrolling vertically. There is an optional callout box in the lower right corner of the screen that can display details about the focused item without leaving the screen. Each item in the grid screen is represented by an image (aka poster), so any type of item that can be visually represented by an image can be displayed in the poster screen. It is used to show lists of data to users and common patterns include content categories, movies, podcasts, pictures, and search results. The initial release of roGridScreen only enabled the default list style, \"portrait\", using the following art sizes:\n\n* Artwork sizes: SD=110x150; HD=210x270\n\nIt also required grid posters to be .jpg files.\n\nLater Roku OS versions added mixed aspect ratio grids, and the [ifGridScreen](https://developer.roku.com/docs/references/brightscript/interfaces/ifgridscreen.md\"ifGridScreen\") interface [SetListPosterStyles()](https://developer.roku.com/docs/references/brightscript/interfaces/ifgridscreen.mdsetlistposterstylesstyles-as-object-as-void \"SetListPosterStyles()\") to set the aspect ratio of each row in the grid. If you want a mixed aspect ratio grid, you must call SetListPosterStyles() before you call [SetContentList()](https://developer.roku.com/docs/references/brightscript/interfaces/ifgridscreen.mdsetcontentlistrowindex-as-integer-contentlist-as-object-as-void \"SetContentList()\"), to avoid possible distortion of the graphic images in the grid.\n\n**Since Roku OS version 2.8**\n\nFile types of .png and .gif files are now supported, though they are converted internally to .jpg by the roGridScreen so they have a performance penalty.\n\nIn v2.8, there are now multiple grid styles that are specified in the SetGridStyle()method below. It's also worth going back and reviewing the appManager theme parameters in [roAppManager](https://developer.roku.com/docs/references/brightscript/components/roappmanager.md\"roAppManager\"), as v2.8 adds some new grid parameters. The border around the focused poster screen can be customized with the GridScreenFocusBorder images in png format. PNG files can have a transparent color value that you will need to allow the focused poster image to show through the border image. The corresponding offsets should be negative offsets that would be up and to the left of the top left corner of the poster image. The width of the borders should be the absolute values of the offsets and the rest of the image should be transparent inside. The GridScreenDescriptionImage is also positioned relative to the top left corner of the focused image. It can be positioned up and to the left with negative x and y offsets, below and to the right with positive offsets, or in the other corners with mixed signed x and y offsets. It's recommended that you include a \"callout\" tip pointing to the focused image in the GridScreenDescriptionImage.\n\n**Diagram: roGridScreen**\n\n![Diagram: roGridScreen](https://image.roku.com/ZHZscHItMTc2/roGridScreen.png \"roGridScreen\")\n\nThis object is created with no parameters:\n\n`CreateObject(\"roGridScreen\")`\n\n**Example**\n\n```\nFunction Main()\n port = CreateObject(\"roMessagePort\")\n grid = CreateObject(\"roGridScreen\")\n grid.SetMessagePort(port)\n rowTitles = CreateObject(\"roArray\", 10, true)\n for j = 0 to 10\n rowTitles.Push(\"[Row Title \" + j.toStr() + \" ] \")\n end for\n grid.SetupLists(rowTitles.Count())\n grid.SetListNames(rowTitles)\n for j = 0 to 10\n list = CreateObject(\"roArray\", 10, true)\n for i = 0 to 10\n o = CreateObject(\"roAssociativeArray\")\n o.ContentType = \"episode\"\n o.Title = \"[Title\" + i.toStr() + \"]\"\n o.ShortDescriptionLine1 = \"[ShortDescriptionLine1]\"\n o.ShortDescriptionLine2 = \"[ShortDescriptionLine2]\"\n o.Description = \"\"\n o.Description = \"[Description] \"\n o.Rating = \"NR\"\n o.StarRating = \"75\"\n o.ReleaseDate = \"[ SceneGraph Audio and Video nodes always create a new roHttpAgent object and do not share it, and can use a different mechanism for HTTPS and cookie support, that involves setting certificates and cookies as Content Meta-Data attributes for the node ContentNode node.",
+ "description": "All SceneGraph nodes can use the roHttpAgent component to support cookies, custom HTTP headers, and support secure HTTP file transfer protocols, such as passing certificates to the server as part of a URL transfer. An roHttpAgent component object is created by default for all SceneGraph nodes for this purpose. The roHttpAgent object supports the [ifHttpAgent](https://developer.roku.com/docs/references/brightscript/interfaces/ifhttpagent.md\"ifHttpAgent\") interface used by many BrightScript components to allow secure HTTP file transfer protocols. Child nodes of a SceneGraph node automatically inherit the parent roHttpAgent object, unless a new roHttpAgent object is created, or an existing roHttpAgent is set for a child node. There are two roSGNode [ifSGNodeHttpAgentAccess](https://developer.roku.com/docs/references/brightscript/interfaces/ifsgnodehttpagentaccess.md\"ifSGNodeHttpAgentAccess\") interface methods that allow a specific roHttpAgent object to be selected and set for a specific SceneGraph node.\n\nAn roHttpAgent object is created automatically for all SceneGraph nodes, or can be created with no parameters:\n\n`CreateObject(\"roHttpAgent\")`\n\n> SceneGraph Audio and Video nodes always create a new roHttpAgent object and do not share it, and can use a different mechanism for HTTPS and cookie support, that involves setting certificates and cookies as Content Meta-Data attributes for the node ContentNode.",
"events": [],
"interfaces": [
{
@@ -6341,37 +6615,13 @@
"name": "roHttpAgent",
"url": "https://developer.roku.com/docs/references/brightscript/components/rohttpagent.md"
},
- "roimagecanvas": {
+ "roimagemetadata": {
"constructors": [
{
"params": [],
- "returnType": "roImageCanvas"
- }
- ],
- "deprecatedDescription": "This component is deprecated and will be removed from Roku OS on January 1st, 2019.\n\nBeginning July 1st, 2017, any new channels using this component will be rejected during certification.\n\nBeginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.\n",
- "description": "> This component is deprecated and will be removed from Roku OS on January 1st, 2019.\n> \n> Beginning July 1st, 2017, any new channels using this component will be rejected during certification.\n> \n> Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.\n\nThe roImageCanvas component provides an interface to render graphic elements at specific spots on the screen.\n\nAlthough it is not intended to be a full-fledged graphics component for high-performance gaming, it does provide a simple interface for building custom animations out of arrays of images displayed on the screen.\n\nAn item (graphical element) may be one of three types: image, text, or colored rectangle. The item type is determined by the [Content Meta-data](/docs/developer-program/getting-started/architecture/content-metadata.md \"Content Meta-data\") fields set on the item.",
- "events": [
- {
- "name": "roImageCanvasEvent",
- "url": "https://developer.roku.com/docs/references/brightscript/events/roimagecanvasevent.md"
- }
- ],
- "interfaces": [
- {
- "name": "ifHttpAgent",
- "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifhttpagent.md"
- },
- {
- "name": "ifImageCanvas",
- "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifimagecanvas.md"
+ "returnType": "roImageMetadata"
}
],
- "isDeprecated": true,
- "name": "roImageCanvas",
- "url": "https://developer.roku.com/docs/references/brightscript/components/roimagecanvas.md"
- },
- "roimagemetadata": {
- "constructors": [],
"description": "The roImageMetadata component provides developers access to image file metadata included in many .jpg EXIF headers.\n\nroImageMetadata currently only works with local file Urls.\n\nThis object is created without any arguments:\n\n`CreateObject(\"roImageMetadata\")`",
"events": [],
"interfaces": [
@@ -6445,39 +6695,6 @@
"name": "roInvalid",
"url": "https://developer.roku.com/docs/references/brightscript/components/roinvalid.md"
},
- "rokeyboardscreen": {
- "constructors": [
- {
- "params": [],
- "returnType": "roKeyboardScreen"
- }
- ],
- "deprecatedDescription": "This component is deprecated and will be removed from Roku OS on January 1st, 2019.\n\nBeginning July 1st, 2017, any new channels using this component will be rejected during certification.\n\nBeginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.\n",
- "description": "> This component is deprecated and will be removed from Roku OS on January 1st, 2019.\n> \n> Beginning July 1st, 2017, any new channels using this component will be rejected during certification.\n> \n> Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.\n\nThe Keyboard Screen is designed to allow the user to enter an alpha-numeric string for searching, username/password registration or other purposes.\n\nThis component is generally used as part of a sequence of screens and the results are displayed on the subsequent screen in the sequence. In the case of a search screen, results are displayed on the roPosterScreen and categories may be used to segregate TV and Movie results.\n\n**Diagram: roKeyboardScreen**\n\n![**Diagram: roKeyboardScreen**](https://image.roku.com/ZHZscHItMTc2/roKeyboardScreenImage1.png \"roKeyboardScreenImage1\")\n\n**Example**\n\n```\nSub Main()\n screen = CreateObject(\"roKeyboardScreen\")\n port = CreateObject(\"roMessagePort\")\n screen.SetMessagePort(port)\n screen.SetTitle(\"Search Screen\")\n screen.SetText(\"default\")\n screen.SetDisplayText(\"enter text to search\")\n screen.SetMaxLength(8)\n screen.AddButton(1, \"finished\")\n screen.AddButton(2, \"back\")\n screen.Show()\n\n while true\n msg = wait(0, screen.GetMessagePort())\n print \"message received\"\n if type(msg) = \"roKeyboardScreenEvent\"\n if msg.isScreenClosed()\n return\n else if msg.isButtonPressed() then\n print \"Evt:\"; msg.GetMessage ();\" idx:\"; msg.GetIndex()\n if msg.GetIndex() = 1\n searchText = screen.GetText()\n print \"search text: \"; searchText\n return\n endif\n endif\n endif\n end while\nEnd Sub\n```\n\n**Image: roKeyboardScreen example results**\n\n![Image: roKeyboardScreen example results](https://image.roku.com/ZHZscHItMTc2/roKeyboardScreenImage2.png \"roKeyboardScreenImage2\")",
- "events": [
- {
- "name": "roKeyboardScreenEvent",
- "url": "https://developer.roku.com/docs/references/brightscript/events/rokeyboardscreenevent.md"
- }
- ],
- "interfaces": [
- {
- "name": "ifGetMessagePort",
- "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifgetmessageport.md"
- },
- {
- "name": "ifKeyboardScreen",
- "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifkeyboardscreen.md"
- },
- {
- "name": "ifSetMessagePort",
- "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifsetmessageport.md"
- }
- ],
- "isDeprecated": true,
- "name": "roKeyboardScreen",
- "url": "https://developer.roku.com/docs/references/brightscript/components/rokeyboardscreen.md"
- },
"rolist": {
"constructors": [
{
@@ -6516,38 +6733,6 @@
"name": "roList",
"url": "https://developer.roku.com/docs/references/brightscript/components/rolist.md"
},
- "rolistscreen": {
- "constructors": [],
- "deprecatedDescription": "This component is deprecated and will be removed from Roku OS on January 1st, 2019.\n\nBeginning July 1st, 2017, any new channels using this component will be rejected during certification.\n\nBeginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.\n",
- "description": "> This component is deprecated and will be removed from Roku OS on January 1st, 2019.\n> \n> Beginning July 1st, 2017, any new channels using this component will be rejected during certification.\n> \n> Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.\n\nThe List Screen provides a graphical display of content in a vertical list within a single screen.\n\nUsers can browse the content by scrolling the text list vertically. The vertical list is displayed on the left side of the screen and the poster is displayed on the right side of the screen. As the user scrolls through the content, the poster is updated with the poster art of the focused list item. There is an optional short description text below the poster that can display the description of the focused item and gets updated as the user scrolls the list.\n\nThe poster art uses the following art sizes:\n\n```\n Artwork sizes: SD=136x124; HD=250x250\n```\n\nroListScreen has a default dark highlight for the focused list item. The highlight can be customized by including a .png file with the following dimensions:\n\n```\n Highlight sizes: SD=304x38; HD=511x54\n```\n\n![List Screen Draft](https://image.roku.com/ZHZscHItMTc2/roListScreen.png \"roListScreen\")",
- "events": [
- {
- "name": "roListScreenEvent",
- "url": "https://developer.roku.com/docs/references/brightscript/events/rolistscreenevent.md"
- }
- ],
- "interfaces": [
- {
- "name": "ifGetMessagePort",
- "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifgetmessageport.md"
- },
- {
- "name": "ifHttpAgent",
- "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifhttpagent.md"
- },
- {
- "name": "ifListScreen",
- "url": "https://developer.roku.com/docs/references/brightscript/interfaces/iflistscreen.md"
- },
- {
- "name": "ifSetMessagePort",
- "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifsetmessageport.md"
- }
- ],
- "isDeprecated": true,
- "name": "roListScreen",
- "url": "https://developer.roku.com/docs/references/brightscript/components/rolistscreen.md"
- },
"rolocalization": {
"constructors": [
{
@@ -6583,39 +6768,6 @@
"name": "roLongInteger",
"url": "https://developer.roku.com/docs/references/brightscript/components/rolonginteger.md"
},
- "romessagedialog": {
- "constructors": [
- {
- "params": [],
- "returnType": "roMessageDialog"
- }
- ],
- "deprecatedDescription": "This component is deprecated and will be removed from Roku OS on January 1st, 2019.\n\nBeginning July 1st, 2017, any new channels using this component will be rejected during certification.\n\nBeginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.\n",
- "description": "> This component is deprecated and will be removed from Roku OS on January 1st, 2019.\n> \n> Beginning July 1st, 2017, any new channels using this component will be rejected during certification.\n> \n> Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.\n\nThe Message Dialog displays a formatted, multi-line text message to the user. The dialog may optionally be displayed with a busy animation to indicate progress on a long running operation. The dialog will automatically handle formatting of text and resize to fit. It may also display buttons to get user acknowledgment or a selection choice.\n\nThe following example shows an roMessageDialog with a single done button. When the title, text and button are added, the dialog automatically formats and resizes the dialog as needed for display when Show() is called.\n\n**Diagram: roMessageDialog**\n\n![Diagram: roMessageDialog](https://image.roku.com/ZHZscHItMTc2/roMessageDialog.png \"roMessageDialog\")\n\n**Example**\n\nThe following code example creates a message dialog and displays it to the user. Note that dialogs are not full screen and that the previous screen is dimmed and displays in the background. When the user presses the message dialog button, the dialog is dismissed and the previous screen comes to the foreground. Since dialog.EnableBackButton(true) is also called, the message dialog is dismissed when the remote control's back button is pressed as well. You can of course add additional buttons to your message dialogs that do things other than dismiss the dialog. You would simply need to implement button specific event handling code for these cases in the dlgMsg.isButtonPressed() code block.\n\n```\nFunction ShowMessageDialog() As Void\n port = CreateObject(\"roMessagePort\")\n dialog = CreateObject(\"roMessageDialog\")\n dialog.SetMessagePort(port)\n dialog.SetTitle(\"[Message dialog title]\")\n dialog.SetText(\"[Message dialog text............]\")\n\n dialog.AddButton(1, \"[button text]\")\n dialog.EnableBackButton(true)\n dialog.Show()\n While True\n dlgMsg = wait(0, dialog.GetMessagePort())\n If type(dlgMsg) = \"roMessageDialogEvent\"\n if dlgMsg.isButtonPressed()\n if dlgMsg.GetIndex() = 1\n exit while\n end if\n else if dlgMsg.isScreenClosed()\n exit while\n end if\n end if\n end while\nEnd Function\n```\n\n**Image: roMessageDialog example results**\n\n![roMessageDialog example results](https://image.roku.com/ZHZscHItMTc2/roMessageDialogimage2.png \"roMessageDialogimage2\")",
- "events": [
- {
- "name": "roMessageDialogEvent",
- "url": "https://developer.roku.com/docs/references/brightscript/events/romessagedialogevent.md"
- }
- ],
- "interfaces": [
- {
- "name": "ifGetMessagePort",
- "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifgetmessageport.md"
- },
- {
- "name": "ifMessageDialog",
- "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifmessagedialog.md"
- },
- {
- "name": "ifSetMessagePort",
- "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifsetmessageport.md"
- }
- ],
- "isDeprecated": true,
- "name": "roMessageDialog",
- "url": "https://developer.roku.com/docs/references/brightscript/components/romessagedialog.md"
- },
"romessageport": {
"constructors": [
{
@@ -6636,7 +6788,7 @@
},
"romicrophone": {
"constructors": [],
- "description": "The roMicrophone API allows channel applications to receive audio data from the user’s microphone-supported remote control device or mobile phone. When a user initiates recording on their remote control device or mobile phone (via the Roku Mobile App) for the first time within the application, the application will request the user’s permission for the application to access the microphone by displaying a UI dialog box.\n\nThe application will only receive microphone access if the permission is granted by the user.\n\n![microphone-access](https://image.roku.com/ZHZscHItMTc2/microphone-access.jpg \"microphone-access\")\n\nAfter the permission is granted, whenever a user activates the microphone, the application will display a notice informing the user that the microphone is currently being used by the application.\n\nFrom the settings menu (Settings > Privacy > Microphone), the user can revoke microphone permissions from individual applications, at which time the particular application will not be able to access the microphone unless the user re-enables microphone permissions.\n\nFrom the settings menu, the user may also:\n\n* (a) enable universal microphone access permissions for all applications (thereby eliminating the need to request microphone permission on an application by application basis), and\n* (b) prohibit all applications from accessing the microphone.\n\n![microphone-setting](https://image.roku.com/ZHZscHItMTc2/microphone-setting.jpg \"microphone-setting\")\n\nWhen integrating the roMicrophone API, you acknowledge and agree to the following:\n\n* (i) that you will notify your users of your collection, use, and disclosure of any voice recordings or other derived data that you receive through the roMicrophone API;\n* (ii) you will not modify, circumvent, obscure, or otherwise diminish the notices provided by the roMicrophone API to users when they activate or enable microphone recording from their remote control device or mobile phone;\n* (iii) you will not collect any information from, or otherwise activate, the microphone on any remote control device or mobile phone using the roMicrophone API feature without receiving the requisite permissions from the user;\n* (iv) you have and will maintain a legally adequate privacy policy;\n* (v) you have and will maintain all necessary rights and consents from users to use the roMicrophone API features; and\n* (vi) your use of the roMicrophone API features will comply with all applicable laws, rules, and regulations.\n\nYOU FURTHER AGREE YOU WILL NOT USE THE roMicrophone API AND FEATURES IN CONNECTION WITH CONTENT OR CHANNELS DIRECTED TOWARD CHILDREN OR IN CONNECTION WITH USERS KNOWN TO BE CHILDREN. If Roku discovers or determines that you are using the roMicrophone API and features in connection with content or channels directed toward children or with users known to be children, Roku reserves the right to disable or otherwise limit your access to the roMicrophone API feature and related functionality.\n\nYOU MAY NOT ENABLE THE roMicrophone API FEATURES IF YOU DO NOT AGREE TO ABOVE. PLEASE CONTACT ROKU FOR FURTHER INFORMATION. Implementation\n\nThe application should display a focusable button or indicator in the UI that the user selects by pressing and holding the OK button. In response to the OK press event, the application can call:\n\n* [StartRecording()](https://developer.roku.com/docs/references/brightscript/interfaces/ifmicrophone.md\"StartRecording\") - to receive streamed audio data from the microphone asynchronously or\n* [RecordToFile()](https://developer.roku.com/docs/references/brightscript/interfaces/ifmicrophone.md\"RecordToFile()\") - to have the audio data directly captured to a WAV format output file.\n\n> Roku OS will display a HUD to let the user initially consent to be recorded and to subsequently be informed when the microphone is being used. Recording is performed as long as the user holds down the OK button, or until a limit is reached or if an error should occur.",
+ "description": "The roMicrophone API allows channel applications to receive audio data from the user’s microphone-supported remote control device or mobile phone. When a user initiates recording on their remote control device or mobile phone (via the Roku Mobile App) for the first time within the application, the application will request the user’s permission for the application to access the microphone by displaying a UI dialog box.\n\nThe application will only receive microphone access if the permission is granted by the user.\n\n![roku815px - microphone-access](https://image.roku.com/ZHZscHItMTc2/microphone-access.jpg \"microphone-access\")\n\nAfter the permission is granted, whenever a user activates the microphone, the application will display a notice informing the user that the microphone is currently being used by the application.\n\nFrom the settings menu (Settings > Privacy > Microphone), the user can revoke microphone permissions from individual applications, at which time the particular application will not be able to access the microphone unless the user re-enables microphone permissions.\n\nFrom the settings menu, the user may also:\n\n* (a) enable universal microphone access permissions for all applications (thereby eliminating the need to request microphone permission on an application by application basis), and\n* (b) prohibit all applications from accessing the microphone.\n\n![roku815px - microphone-setting](https://image.roku.com/ZHZscHItMTc2/microphone-setting.jpg \"microphone-setting\")\n\nWhen integrating the roMicrophone API, you acknowledge and agree to the following:\n\n* (i) that you will notify your users of your collection, use, and disclosure of any voice recordings or other derived data that you receive through the roMicrophone API;\n* (ii) you will not modify, circumvent, obscure, or otherwise diminish the notices provided by the roMicrophone API to users when they activate or enable microphone recording from their remote control device or mobile phone;\n* (iii) you will not collect any information from, or otherwise activate, the microphone on any remote control device or mobile phone using the roMicrophone API feature without receiving the requisite permissions from the user;\n* (iv) you have and will maintain a legally adequate privacy policy;\n* (v) you have and will maintain all necessary rights and consents from users to use the roMicrophone API features; and\n* (vi) your use of the roMicrophone API features will comply with all applicable laws, rules, and regulations.\n\nYOU FURTHER AGREE YOU WILL NOT USE THE roMicrophone API AND FEATURES IN CONNECTION WITH CONTENT OR CHANNELS DIRECTED TOWARD CHILDREN OR IN CONNECTION WITH USERS KNOWN TO BE CHILDREN. If Roku discovers or determines that you are using the roMicrophone API and features in connection with content or channels directed toward children or with users known to be children, Roku reserves the right to disable or otherwise limit your access to the roMicrophone API feature and related functionality.\n\nYOU MAY NOT ENABLE THE roMicrophone API FEATURES IF YOU DO NOT AGREE TO ABOVE. PLEASE CONTACT ROKU FOR FURTHER INFORMATION. Implementation\n\nThe application should display a focusable button or indicator in the UI that the user selects by pressing and holding the OK button. In response to the OK press event, the application can call:\n\n* [StartRecording()](https://developer.roku.com/docs/references/brightscript/interfaces/ifmicrophone.md\"StartRecording\") - to receive streamed audio data from the microphone asynchronously or\n* [RecordToFile()](https://developer.roku.com/docs/references/brightscript/interfaces/ifmicrophone.md\"RecordToFile()\") - to have the audio data directly captured to a WAV format output file.\n\n> Roku OS will display a HUD to let the user initially consent to be recorded and to subsequently be informed when the microphone is being used. Recording is performed as long as the user holds down the OK button, or until a limit is reached or if an error should occur.",
"events": [
{
"name": "roMicrophoneEvent",
@@ -6660,69 +6812,8 @@
"name": "roMicrophone",
"url": "https://developer.roku.com/docs/references/brightscript/components/romicrophone.md"
},
- "roonelinedialog": {
- "constructors": [],
- "deprecatedDescription": "This component is deprecated and will be removed from Roku OS on January 1st, 2019.\n\nBeginning July 1st, 2017, any new channels using this component will be rejected during certification.\n\nBeginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.\n",
- "description": "> This component is deprecated and will be removed from Roku OS on January 1st, 2019.\n> \n> Beginning July 1st, 2017, any new channels using this component will be rejected during certification.\n> \n> Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.\n\nThe One Line Dialog is a special type of dialog optimized for single line text.\n\nUnlike the message dialog ([roMessageDialog](https://developer.roku.com/docs/references/brightscript/components/roMessageDialog.md\"roMessageDialog\")) which displays formatted multi-line messages, roOneLineDialog displays a single line of text centered for the user.\n\nThis dialog is optimized for rendering of single-line text strings. It is generally used for displaying text to indicate that an operation is in progress. When the operation completes, the dialog is destroyed and the message dialog disappears.",
- "events": [
- {
- "name": "roOneLineDialogEvent",
- "url": "https://developer.roku.com/docs/references/brightscript/events/roonelinedialogevent.md"
- }
- ],
- "interfaces": [
- {
- "name": "ifGetMessagePort",
- "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifGetMessagePort.md"
- },
- {
- "name": "ifOneLineDialog",
- "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifonelinedialog.md"
- },
- {
- "name": "ifSetMessagePort",
- "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifsetmessageport.md"
- }
- ],
- "isDeprecated": true,
- "name": "roOneLineDialog",
- "url": "https://developer.roku.com/docs/references/brightscript/components/roonelinedialog.md"
- },
- "roparagraphscreen": {
- "constructors": [
- {
- "params": [],
- "returnType": "roParagraphScreen"
- }
- ],
- "deprecatedDescription": "This component is deprecated and will be removed from Roku OS on January 1st, 2019.\n\nBeginning July 1st, 2017, any new channels using this component will be rejected during certification.\n\nBeginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.\n",
- "description": "> This component is deprecated and will be removed from Roku OS on January 1st, 2019.\n> \n> Beginning July 1st, 2017, any new channels using this component will be rejected during certification.\n> \n> Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.\n\nThe Paragraph Screen provides a way to display text and selection choices to the user.\n\nThis type of screen is frequently used for implementing wizard functionality to guide the user through a specific task. The caller may specify header text which is displayed at the top of the screen and one or more paragraphs of text on the screen. In addition, one or more buttons may be added to the screen to get user input or allow navigation. The screen is designed to automatically format the text, headings and buttons and create the photo-fit for them on screen. Some care must be taken to not provide too much text or clipping may occur.\n\n![roParagraphScreen image](https://image.roku.com/ZHZscHItMTc2/roParagraphScreenImage1.png \"roParagraphScreenImage1\")\n\nThis object is created with no parameters:\n\n`CreateObject(\"roParagraphScreen\")`\n\n**Example**\n\n```\nFunction ShowParagraphScreen() As Void\n port = CreateObject(\"roMessagePort\")\n screen = CreateObject(\"roParagraphScreen\")\n screen.SetMessagePort(port)\n screen.SetTitle(\"[Screen Title]\")\n screen.AddHeaderText(\"[Header Text]\")\n screen.AddParagraph(\"[Paragraph text 1 - Text in the paragraph screen is justified to the right and left edges]\")\n screen.AddParagraph(\"[Paragraph text 2 - Multiple paragraphs may be added to the screen by simply making additional calls]\")\n screen.AddButton(1, \"[button text 1]\")\n screen.AddButton(2, \"[button text 2]\")\n screen.Show()\n while true\n msg = wait(0, screen.GetMessagePort())\n if type(msg) = \" roParagraphScreenEvent\"\n exit while\n endif\n end while\nEnd Function\n```\n\n**Image: roParagraphScreen example results**\n\n![Image: roParagraphScreen example results](https://image.roku.com/ZHZscHItMTc2/roParagraphScreenImage2.png \"roParagraphScreenImage2\")",
- "events": [
- {
- "name": "roParagraphScreenEvent",
- "url": "https://developer.roku.com/docs/references/brightscript/events/roparagraphscreenevent.md"
- }
- ],
- "interfaces": [
- {
- "name": "ifGetMessagePort",
- "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifgetmessageport.md"
- },
- {
- "name": "ifParagraphScreen",
- "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifparagraphscreen.md"
- },
- {
- "name": "ifSetMessagePort",
- "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifsetmessageport.md"
- }
- ],
- "isDeprecated": true,
- "name": "roParagraphScreen",
- "url": "https://developer.roku.com/docs/references/brightscript/components/roparagraphscreen.md"
- },
- "ropath": {
- "constructors": [
+ "ropath": {
+ "constructors": [
{
"params": [
{
@@ -6737,14 +6828,14 @@
"params": [
{
"isRequired": true,
- "name": "param1",
+ "name": "filename",
"type": "dynamic"
}
],
"returnType": "roPath"
}
],
- "description": "The roPath component provides developers an easy way to create valid file system paths.\n\nThe roPath component is a convenience class that implements [ifString](https://developer.roku.com/docs/references/brightscript/interfaces/ifstring.md\"ifString\") while providing additional validation and path inspection functionality. See [File System](docs/developer-program/getting-started/architecture/file-system.md \"File System\") for more information about valid path names.\n\nThis object is created with a string that represents the initial path:\n\n`CreateObject(\"roPath\", \"ext1:/vid\")`\n\n**Example**\n\n```\npath = CreateObject(\"roPath\", filename)\nparts = path.Split()\nif parts.phy = \"tmp:\" then print \"this is a temp file\"\nif parts.extension = \".bmp\" then print \"this is a bitmap file\"\n```",
+ "description": "The roPath component provides developers an easy way to create valid file system paths.\n\nThe roPath component is a convenience class that implements [ifString](https://developer.roku.com/docs/references/brightscript/interfaces/ifstring.md\"ifString\") while providing additional validation and path inspection functionality. See [File System](/docs/developer-program/getting-started/architecture/file-system.md \"File System\") for more information about valid path names.\n\nThis object is created with a string that represents the initial path:\n\n`CreateObject(\"roPath\", \"ext1:/vid\")`\n\n**Example**\n\n```\npath = CreateObject(\"roPath\", filename)\nparts = path.Split()\nif parts.phy = \"tmp:\" then print \"this is a temp file\"\nif parts.extension = \".bmp\" then print \"this is a bitmap file\"\n```",
"events": [],
"interfaces": [
{
@@ -6759,63 +6850,6 @@
"name": "roPath",
"url": "https://developer.roku.com/docs/references/brightscript/components/ropath.md"
},
- "ropinentrydialog": {
- "constructors": [],
- "deprecatedDescription": "This component is deprecated and will be removed from Roku OS on January 1st, 2019.\n\nBeginning July 1st, 2017, any new channels using this component will be rejected during certification.\n\nBeginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.\n",
- "description": "> This component is deprecated and will be removed from Roku OS on January 1st, 2019.\n> \n> Beginning July 1st, 2017, any new channels using this component will be rejected during certification.\n> \n> Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.\n\nThe Pin Entry Dialog is designed to allow the user to enter a numeric PIN for purchasing content.\n\nUsers establish a PIN on the partner's website for purchasing transactions. The roPinEntryDialog allows the script to present the user with a pop-up, modal dialog for PIN entry and then the script can subsequently call the API's to conclude the purchase transaction. When the last digit is entered, focus jumps to the first button.\n\n**Image: roPinEntryDialog sample**\n\n![roPinEntryDialog](https://image.roku.com/ZHZscHItMTc2/roPinEntryDialog.png \"roPinEntryDialog\")",
- "events": [
- {
- "name": "roPinEntryDialogEvent",
- "url": "https://developer.roku.com/docs/references/brightscript/events/ropinentrydialogevent.md"
- }
- ],
- "interfaces": [
- {
- "name": "ifGetMessagePort",
- "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifgetmessageport.md"
- },
- {
- "name": "ifPinEntryDialog",
- "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifpinentrydialog.md"
- },
- {
- "name": "ifSetMessagePort",
- "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifsetmessageport.md"
- }
- ],
- "isDeprecated": true,
- "name": "roPinEntryDialog",
- "url": "https://developer.roku.com/docs/references/brightscript/components/ropinentrydialog.md"
- },
- "roposterscreen": {
- "constructors": [
- {
- "params": [],
- "returnType": "roPosterScreen"
- }
- ],
- "deprecatedDescription": "This component is deprecated and will be removed from Roku OS on January 1st, 2019.\n\nBeginning July 1st, 2017, any new channels using this component will be rejected during certification.\n\nBeginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.\n",
- "description": "> This component is deprecated and will be removed from Roku OS on January 1st, 2019.\n> \n> Beginning July 1st, 2017, any new channels using this component will be rejected during certification.\n> \n> Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.\n\nThis object is created with no parameters:\n\n`CreateObject(\"roPosterScreen\")`\n\nThe Poster Screen provides a graphical display of poster art for content selection or can be used as a submenu to provide hierarchical structure to the application.\n\nIn some cases, applications may wish to present a flat single-level list of titles in a queue, but the Poster Screen can also be used at multiple levels in the application to provide hierarchical browsing. It also provides an optional \"filter banner\" for displaying categories representing filtered subsets of the data or categorized groups.\n\nEach item in the poster screen is represented by an image (aka poster), so any type of item that can be visually represented by an image can be displayed in the poster screen. It is used to show lists of data to users and common patterns include content categories, movies, podcasts, and search results.\n\nJust below the overhang is the filter banner. It allows a method of easily selecting or filtering content based on categories. The categories are set by the developer during screen initialization, and the script is notified when a new category is highlighted or selected. Based on the event notification, the script can set the desired content in the view. The filter banner is optional.\n\n**Diagram: roPosterScreen (flat-category)**\n\n![Diagram: roPosterScreen (flat-category)](https://image.roku.com/ZHZscHItMTc2/roPosterScreenImage1.png \"roPosterScreenImage1\")\n\nShortDescriptionLine1 from the content metadata. Generally the category title.\n\nShortDescriptionLine2 from the content metadata. Generally a description for the category.\n\n**Diagram: roPosterScreen (arced-landscape)**\n\n![Diagram: roPosterScreen (arced-landscape](https://image.roku.com/ZHZscHItMTc2/roPosterScreenImage2.png \"roPosterScreenImage2\")\n\n**Diagram: roPosterScreen (arced-portrait)**\n\n![Diagram: roPosterScreen (arced-portrait)](https://image.roku.com/ZHZscHItMTc2/roPosterScreenImage3.png \"roPosterScreenImage3\")\n\n**Diagram: roPosterScreen (flat-episodic)**\n\n![Diagram: roPosterScreen (flat-episodic)](https://image.roku.com/ZHZscHItMTc2/roPosterScreenImage4.png \"roPosterScreenImage4\")\n\nTV content is often displayed as a series of episodes within a season. The flat-episodic screen type provides a standard way to display episodic content, such as a TV series.\n\nThere is also a flat-episodic-16x9-episodic screen type to display episodic content with 16x9 images.\n\nThe paragraph text allows the user to view the synopsis for the currently selected episode. As the user scrolls right/left to select a new episode, the paragraph text and the short description lines are updated to reflect the description of the highlighted episode\n\nIn order to see poster art in the side posters instead of episode numbers, please ensure that the SDPosterUrl and HDPosterUrl are defined for the content and that episodeNumber is not defined for that content. EpisodeNumber overrides the poster URL.\n\n**Example**\n\n```\nFunction Main()\n port = CreateObject(\"roMessagePort\")\n poster = CreateObject(\"roPosterScreen\")\n poster.SetBreadcrumbText(\"[location1]\", \"[location2]\")\n poster.SetMessagePort(port)\n list = CreateObject(\"roArray\", 10, true)\n For i = 0 To 10\n o = CreateObject(\"roAssociativeArray\")\n o.ContentType = \"episode\"\n o.Title = \"[Title]\"\n o.ShortDescriptionLine1 = \"[ShortDescriptionLine1]\"\n o.ShortDescriptionLine2 = \"[ShortDescriptionLine2]\"\n o.Description = \"\"\n o.Description = \"[Description] \"\n o.Rating = \"NR\"\n o.StarRating = \"75\"\n o.ReleaseDate = \"[ This component is deprecated and will be removed from Roku OS on January 1st, 2019.\n> \n> Beginning July 1st, 2017, any new channels using this component will be rejected during certification.\n> \n> Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.\n\nThe Search History object implements the system wide storage of search terms for use in implementing the roSearchScreen.\n\nAs the user searches for content, recent searches are placed into the search history. This allows the user to easily re-execute these commands later without typing on the keyboard. The initial list of recent searches is displayed on the roSearchScreen to assist the user in finding content to watch. This history is used system wide, so that the user can find references to their search in multiple types of content.\n\nThis object is created with no parameters:\n\n`CreateObject(\"roSearchHistory\")`\n\n**Example**\n\n```\nhistory = CreateObject(\"roSearchHistory\")\nlist = history.GetAsArray()\nprint \"There are \"; list.Count(); \" items in the history\"\n```",
- "events": [],
- "interfaces": [
- {
- "name": "ifSearchHistory",
- "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifsearchhistory.md"
- }
- ],
- "isDeprecated": true,
- "name": "roSearchHistory",
- "url": "https://developer.roku.com/docs/references/brightscript/components/rosearchhistory.md"
- },
- "rosearchscreen": {
- "constructors": [
- {
- "params": [],
- "returnType": "roSearchScreen"
- }
- ],
- "deprecatedDescription": "This component is deprecated and will be removed from Roku OS on January 1st, 2019.\n\nBeginning July 1st, 2017, any new channels using this component will be rejected during certification.\n\nBeginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.\n",
- "description": "> This component is deprecated and will be removed from Roku OS on January 1st, 2019.\n> \n> Beginning July 1st, 2017, any new channels using this component will be rejected during certification.\n> \n> Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.\n\nThe Search Screen provides a standard way to allow users to enter text for searching.\n\nThis screen features a simplified keyboard (a-z, 0-9) designed to provide just the keys necessary to perform case-insensitive searches without punctuation.\n\nIdeally, the user would enter a search string and the backend service would perform that query in a case-insensitive manner ignoring special characters like punctuation. The script is notified as each key is pressed so that a progress disclosure search can be performed if supported by the back-end service. In addition, the script can control the text displayed on the screen and will receive events when the text entry is complete.\n\nIn addition to entering search strings, this screen features a list that can be used to display search results or show the most recent searches. It's desirable for the screen to maintain a list of recent searches for the user to allow them to easily repeat a recent query without typing. In some implementations, it may be desirable to use this list to show a progressive set of results after each character while the user is typing.\n\nThis object is created with no parameters:\n\n`CreateObject(\"roSearchScreen\")`\n\n**Example**\n\n```\nREM ******************************************************\nREM Main routine - example of search screen usage\nREM ******************************************************\nSub Main()\n print \"start\"\n 'toggle the search suggestions vs. search history behavior\n 'this allow you to generate both versions of the example below\n displayHistory = false\n history = CreateObject(\"roArray\", 1, true)\n 'prepopulate the search history with sample results\n history.Push(\"seinfeld\")\n history.Push(\"fraiser\")\n history.Push(\"cheers\")\n port = CreateObject(\"roMessagePort\")\n screen = CreateObject(\"roSearchScreen\")\n 'commenting out SetBreadcrumbText() hides breadcrumb on screen\n screen.SetBreadcrumbText(\"\", \"search\")\n screen.SetMessagePort(port)\n if displayHistory\n screen.SetSearchTermHeaderText(\"Recent Searches:\")\n screen.SetSearchButtonText(\"search\")\n screen.SetClearButtonText(\"clear history\")\n screen.SetClearButtonEnabled(true) 'defaults to true\n screen.SetSearchTerms(history)\n else\n screen.SetSearchTermHeaderText(\"Suggestions:\")\n screen.SetSearchButtonText(\"search\")\n screen.SetClearButtonEnabled(false)\n endif\n print \"Doing show screen...\"\n screen.Show()\n print \"Waiting for a message from the screen...\"\n ' search screen main event loop\n done = false\n while done = false\n msg = wait(0, screen.GetMessagePort())\n if type(msg) = \"roSearchScreenEvent\"\n if msg.isScreenClosed()\n print \"screen closed\"\n done = true\n else if msg.isCleared()\n print \"search terms cleared\"\n history.Clear()\n else if msg.isPartialResult()\n print \"partial search: \"; msg.GetMessage()\n if not displayHistory\n screen.SetSearchTerms(GenerateSearchSuggestions(msg.GetMessage()))\n endif\n else if msg.isFullResult()\n print \"full search: \"; msg.GetMessage()\n history.Push(msg.GetMessage())\n if displayHistory\n screen.AddSearchTerm(msg.GetMessage())\n end if\n 'uncomment to exit the screen after a full search result:\n 'done = true\n else\n print \"Unknown event: \"; msg.GetType(); \" msg: \"; msg.GetMessage()\n endif\n endif\n endwhile\n print \"Exiting...\"\nEnd Sub\n\nFunction GenerateSearchSuggestions(partSearchText As String) As Object\n availableContent = [\n \"ghost in the shell\"\n \"parasite dolls\"\n \"final fantasy\"\n \"ninja scroll\"\n \"space ghost\"\n \"hellboy\"\n \"star wars\"\n \"terminator\"\n \"house of cards\"\n \"dexter\"\n ]\n suggestions = []\n if partSearchText <> \"\"\n partSearchText = LCase(partSearchText)\n for each available in availableContent\n if available.Instr(partSearchText) >= 0\n suggestions.Push(available)\n end if\n end for\n end if\n return suggestions\nEnd Function\n```\n\n**Image: roSearchScreen example results (search suggestions)**\n\n![Image: roSearchScreen example results (search suggestions)](https://image.roku.com/ZHZscHItMTc2/roSearchScreen.png \"roSearchScreen\")",
- "events": [
- {
- "name": "roSearchScreenEvent",
- "url": "https://developer.roku.com/docs/references/brightscript/events/rosearchscreenevent.md"
- }
- ],
- "interfaces": [
- {
- "name": "ifGetMessagePort",
- "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifgetmessageport.md"
- },
- {
- "name": "ifSearchScreen",
- "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifsearchscreen.md"
- },
- {
- "name": "ifSetMessagePort",
- "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifsetmessageport.md"
- }
- ],
- "isDeprecated": true,
- "name": "roSearchScreen",
- "url": "https://developer.roku.com/docs/references/brightscript/components/rosearchscreen.md"
- },
"rosgnode": {
"constructors": [
{
@@ -7172,35 +7171,6 @@
"name": "roSGScreen",
"url": "https://developer.roku.com/docs/references/brightscript/components/rosgscreen.md"
},
- "roslideshow": {
- "constructors": [
- {
- "params": [],
- "returnType": "roSlideShow"
- }
- ],
- "deprecatedDescription": "This component is deprecated and will be removed from Roku OS on January 1st, 2019.\n\nBeginning July 1st, 2017, any new channels using this component will be rejected during certification.\n\nBeginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.\n",
- "description": "> This component is deprecated and will be removed from Roku OS on January 1st, 2019.\n> \n> Beginning July 1st, 2017, any new channels using this component will be rejected during certification.\n> \n> Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.\n\nThe Slide Show screen provides the ability to setup a photo slide show to playback a series of images.\n\nImages may be jpg, png or gif files. The developer can control the sequencing and timing of the slideshow. The object is designed to accept an array of [Content Meta-Data](/docs/developer-program/getting-started/architecture/content-metadata.md \"Content Meta-Data\") objects, describing the images and providing URLs for accessing each image. TextOverlayUL, TextOverlayUR, and TextOverlayBody are content meta-data properties used to display a text overlay.\n\nThis object is created with no parameters:\n\n`CreateObject(\"roSlideShow\")`",
- "events": [
- {
- "name": "roSlideShowEvent",
- "url": "https://developer.roku.com/docs/references/brightscript/events/roslideshowevent.md"
- }
- ],
- "interfaces": [
- {
- "name": "ifHttpAgent",
- "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifhttpagent.md"
- },
- {
- "name": "ifSlideShow",
- "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifslideshow.md"
- }
- ],
- "isDeprecated": true,
- "name": "roSlideShow",
- "url": "https://developer.roku.com/docs/references/brightscript/components/roslideshow.md"
- },
"rosocketaddress": {
"constructors": [
{
@@ -7219,41 +7189,6 @@
"name": "roSocketAddress",
"url": "https://developer.roku.com/docs/references/brightscript/components/rosocketaddress.md"
},
- "rospringboardscreen": {
- "constructors": [
- {
- "params": [],
- "returnType": "roSpringboardScreen"
- }
- ],
- "description": "The Springboard Screen shows detailed information about an individual piece of content and provides options for actions that may be taken on that content.\n\nThe detailed description of the content is displayed with poster art for the title. Artwork may be displayed portrait or landscape orientation depending on the ContentType set in the [Content Meta-Data](/docs/developer-program/getting-started/architecture/content-metadata.md \"Content Meta-Data\").\n\nThe caller may add one or more buttons to the screen with actions such as Play, Resume, Purchase or More Info. The script is notified via an event when a button is selected and it is the responsibility of the script writer to handle that event as desired and perform the requested action.\n\n![worddav-button-actions](https://image.roku.com/ZHZscHItMTc2/worddav3570180012b8208f098d035b989f8fa8.png \"worddav3570180012b8208f098d035b989f8fa8\")\n\nThis object is created with no parameters:\n\n`CreateObject(\"roSpringboardScreen\")`\n\n* Orientation for artwork is based on ContentType setting and may be portrait or landscape.\n \n* The audio springboard is capable of adding a progress bar.\n \n* If the ContentType is audio, the album art dimensions are:\n \n\n```\n SD: 124 x 112\n HD: 188 x 188\n```\n\n* If the ContentType is episode, the album art dimensions are:\n\n```\n SD: 180 x 122\n HD: 264 x 198\n```\n\n* If the ContentType is any other value, the album art dimensions are:\n\n```\n SD: 112 x 142\n HD: 148 x 212\n```\n\n* Up to 5 user-defined buttons may be displayed. Buttons are displayed in the order they are added and always appear in a fixed region of the screen\n \n* The description text will be formatted and justified (right and left edges) to fit between the margins. When the maximum length is reached, the text will be clipped and terminated with an ellipsis. The font is variable pitch, so the maximum number of characters is dependent on the text. The spacing is approximately 85 characters per line x 4 lines = 340 characters. The fonts and character spacing for HD and SD are similar, and display approximately the same number of characters, but the relationship is not exactly 1:1.\n \n* The star rating can show either community StarRating (red) or UserStarRating (yellow). If both values are set, the control will display the UserStarRating. If ratings are not desired, it can be removed by calling SetStaticRatingEnabled(false), providing more space to display actor names.\n \n* The Length attribute will display a formatted string or show length. If the value is zero, this field will display 0m, if the attribute is not set/missing then this field will not be displayed.\n \n\n**Example**\n\nThe following example shows the process of creating an roSpringboardScreen, setting up the content meta-data, showing the screen and waiting for an event. This example is simplified for clarity and it's assumed the real-world applications will use techniques like getting data from web services using roUrlTransfer.\n\n![springboard-audio](https://image.roku.com/ZHZscHItMTc2/springboard-audio.png \"springboard-audio\")\n\n```\nFunction Main()\n port = CreateObject(\"roMessagePort\")\n springBoard = CreateObject(\"roSpringboardScreen\")\n springBoard.SetBreadcrumbText(\"[location 1]\", \"[location2]\")\n springBoard.SetMessagePort(port)\n o = CreateObject(\"roAssociativeArray\")\n o.ContentType = \"episode\"\n o.Title = \"[Title]\"\n o.ShortDescriptionLine1 = \"[ShortDescriptionLine1]\"\n o.ShortDescriptionLine2 = \"[ShortDescriptionLine2]\"\n o.Description = \"\"\n For i = 1 To 15\n o.Description = o.Description + \"[Description] \"\n End For\n o.SDPosterUrl = \"\"\n o.HDPosterUrl = \"\"\n o.Rating = \"NR\"\n o.StarRating = \"75\"\n o.ReleaseDate = \"[mm/dd/yyyy]\"\n o.Length = 5400\n o.Categories = CreateObject(\"roArray\", 10, true)\n o.Categories.Push(\"[Category1]\")\n o.Categories.Push(\"[Category2]\")\n o.Categories.Push(\"[Category3]\")\n o.Actors = CreateObject(\"roArray\", 10, true)\n o.Actors.Push(\"[Actor1]\")\n o.Actors.Push(\"[Actor2]\")\n o.Actors.Push(\"[Actor3]\")\n o.Director = \"[Director]\"\n springBoard.SetContent(o)\n springBoard.Show()\n While True\n msg = wait(0, port)\n If msg.isScreenClosed() Then\n Return -1\n Elseif msg.isButtonPressed()\n print \"msg: \"; msg.GetMessage(); \"idx: \"; msg.GetIndex()\n Endif\n End While\nEnd Function\n```\n\nThe following screen is displayed when this code is executed:\n\n![worddav-code-displayed](https://image.roku.com/ZHZscHItMTc2/worddav256ada1e0e0cdc53d79428655ca7702b.png \"worddav256ada1e0e0cdc53d79428655ca7702b\")",
- "events": [
- {
- "name": "roSpringboardScreenEvent",
- "url": "https://developer.roku.com/docs/references/brightscript/events/rospringboardscreenevent.md"
- }
- ],
- "interfaces": [
- {
- "name": "ifGetMessagePort",
- "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifgetmessageport.md"
- },
- {
- "name": "ifHttpAgent",
- "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifhttpagent.md"
- },
- {
- "name": "ifSetMessagePort",
- "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifsetmessageport.md"
- },
- {
- "name": "ifSpringboardScreen",
- "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifspringboardscreen.md"
- }
- ],
- "name": "roSpringboardScreen",
- "url": "https://developer.roku.com/docs/references/brightscript/components/rospringboardscreen.md"
- },
"rosprite": {
"constructors": [],
"description": "The roSprite object cannot be created directly with a CreateObject() call. It must be associated with a managing roCompositor object. This association is implicitly created by creating an roSprite object with the roCompositor methods NewSprite() or NewAnimatedSprite().",
@@ -7332,7 +7267,12 @@
"url": "https://developer.roku.com/docs/references/brightscript/components/rostring.md"
},
"rosystemlog": {
- "constructors": [],
+ "constructors": [
+ {
+ "params": [],
+ "returnType": "roSystemLog"
+ }
+ ],
"description": "The roSystemLog component enables the application to receive events from the Roku Streaming Player that are intended for reporting errors and trends, rather than trigger a response to a user action.\n\nAll of the log event messages are sent to the roMessagePort that is registered on the [roSystemLogEvent](https://developer.roku.com/docs/references/brightscript/events/rosystemlogevent.md\"roSystemLogEvent\") object. See roSystemLogEvent for details on the messages.\n\nThis object is created with no parameters:\n\n`CreateObject(\"roSystemLog\")`\n\nThe roSystemLog component requires specific Design Patterns in your BrightScript Application. Take care to:\n\n* Use one roMessagePort throughout the application (instead of creating a new roMessagePort for each screen).\n* Create one roSystemLog instance at startup that remains for the entire lifetime of the application.\n* Pass the global roMessagePort referenced in the first bullet point to SetMessagePort() on the roSystemLog component.\n* Enable the desired log types using EnableType().\n* Handle the [roSystemLogEvents](https://developer.roku.com/docs/references/brightscript/events/rosystemlogevent.md\"roSystemLogEvents\") in all message loops.",
"events": [],
"interfaces": [
@@ -7344,34 +7284,6 @@
"name": "roSystemLog",
"url": "https://developer.roku.com/docs/references/brightscript/components/rosystemlog.md"
},
- "rotextscreen": {
- "constructors": [],
- "deprecatedDescription": "This component is deprecated and will be removed from Roku OS on January 1st, 2019.\n\nBeginning July 1st, 2017, any new channels using this component will be rejected during certification.\n\nBeginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.\n",
- "description": "> This component is deprecated and will be removed from Roku OS on January 1st, 2019.\n> \n> Beginning July 1st, 2017, any new channels using this component will be rejected during certification.\n> \n> Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.\n\nroTextScreen provides a way of displaying large amounts of scrollable text.\n\nThis type of screen can be used to display help text, credits, license agreements, or other large amounts of text that require scrolling.\n\nThe interface allows you to set the text and specify zero or more buttons.\n\nIf no buttons are specified, then the user can exit the screen by pressing BACK or OK.",
- "events": [
- {
- "name": "roTextScreenEvent",
- "url": "https://developer.roku.com/docs/references/brightscript/events/rotextscreenevent.md"
- }
- ],
- "interfaces": [
- {
- "name": "ifGetMessagePort",
- "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifgetmessageport.md"
- },
- {
- "name": "ifSetMessagePort",
- "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifsetmessageport.md"
- },
- {
- "name": "ifTextScreen",
- "url": "https://developer.roku.com/docs/references/brightscript/interfaces/iftextscreen.md"
- }
- ],
- "isDeprecated": true,
- "name": "roTextScreen",
- "url": "https://developer.roku.com/docs/references/brightscript/components/rotextscreen.md"
- },
"rotexttospeech": {
"constructors": [
{
@@ -7379,7 +7291,7 @@
"returnType": "roTextToSpeech"
}
],
- "description": "> Please note this component is only available on the following devices: Roku Streaming Stick (3600X), Roku Express (3700X) and Express+ (3710X), Roku Premiere (4620X) and Premiere+ (4630X), Roku Ultra (4640X), and any Roku TV running Roku OS version 7.2 and later.\n\nThe roTextToSpeech component provides text to speech capabilities to applications.\n\nAn roTextToSpeech component object is created with no parameters:\n\n`CreateObject(\"roTextToSpeech\")`",
+ "description": "> To implement CVAA/screen reader support in your channel, use the [roAudioGuide](https://developer.roku.com/docs/references/brightscript/components/roaudioguide.md component object. The roTextToSpeech component object is typically used for book readers and other special-purpose applications.\n> \n> Please note this component is only available on the following devices: Roku Streaming Stick (3600X), Roku Express (3700X) and Express+ (3710X), Roku Premiere (4620X) and Premiere+ (4630X), Roku Ultra (4640X), and any Roku TV running Roku OS version 7.2 and later.\n\nThe roTextToSpeech component provides text to speech capabilities to applications.\n\nAn roTextToSpeech component object is created with no parameters:\n\n`CreateObject(\"roTextToSpeech\")`",
"events": [
{
"name": "roTextToSpeechEvent",
@@ -7526,7 +7438,7 @@
"returnType": "roVideoPlayer"
}
],
- "description": "The roVideoPlayer component implements a video player with more programmatic control, but less user control than the roVideoScreen component.\n\nThe roVideoPlayer can be used in conjunction with the roImageCanvas to do graphical overlays, windowed video, zoom, and programmatic control of playlists and trick play. When using with the roImageCanvas, you can put the roVideoPlayer is at a lower z-order layer than other imageCanvas layers and implement overlays on top of the playing video.\n\nUnlike the roVideoScreen component roVideoPlayer does not have automatic trick play modes and built in controls to support that trick play. Any trick play requires the developer to build his own controls using buttons on the roImageCanvas.\n\nNote that all the video playback notes under roVideoScreen apply to the roVideoPlayer. The customvideoplayer sample application is a good example of roVideoPlayer usage.\n\nThis object is created with no parameters:\n\n`CreateObject(\"roVideoPlayer\")`",
+ "description": "The roVideoPlayer component implements a video player with programmatic controls.\n\nThis object is created with no parameters:\n\n`CreateObject(\"roVideoPlayer\")`",
"events": [
{
"name": "roVideoPlayerEvent",
@@ -7554,43 +7466,6 @@
"name": "roVideoPlayer",
"url": "https://developer.roku.com/docs/references/brightscript/components/rovideoplayer.md"
},
- "rovideoscreen": {
- "constructors": [
- {
- "params": [],
- "returnType": "roVideoScreen"
- }
- ],
- "deprecatedDescription": "This component is deprecated and will be removed from Roku OS on January 1st, 2019.\n\nBeginning July 1st, 2017, any new channels using this component will be rejected during certification.\n\nBeginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.\n",
- "description": "> This component is deprecated and will be removed from Roku OS on January 1st, 2019.\n> \n> Beginning July 1st, 2017, any new channels using this component will be rejected during certification.\n> \n> Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.\n\nThe Video Screen object implements the video playback portion of the user interface.\n\nThis object is created with no parameters:\n\n`CreateObject(\"roVideoScreen\")`\n\nThe API's to the video screen allow the developer to setup a fully featured playback environment with minimal coding. The developer is responsible for initial playback setup and providing the required data (e.g. StreamURLs, SteamsBitrates, etc.) as part of the [Content Meta-Data](/docs/developer-program/getting-started/architecture/content-metadata.md \"Content Meta-Data\"). Once created and displayed, the screen will respond to events and manage the playback experience for the user.\n\nThe roVideoScreen is designed for streaming content. The preferred implementation should provide multiple bitrates (ideally four) of video to provide a high quality user experience under a variety of network conditions. Using the StreamBitrates and StreamURLs provided in the content meta-data for the item, the roVideoScreen will automatically monitor and select the best stream based on the users measured bandwidth. If network performance changes, the system will adapt and rebuffer to stream at a different bandwidth if necessary. Note that the StreamURLs, StreamBitrates, StreamQualities and StreamStickyHttpRedirects are all arrays that are aligned with each other. For example, the first stream listed would be the 0th element of all of these arrays.\n\nThe bitrates should represent the actual bitrate of the stream. The bitrate is used for both the display of the dots as well as the stream selection algorithm. The dots work a follows; If the stream bitrate equals:\n\n* 0 = no dots\n* < 500 Kbps= 1 dot\n* < 800 Kbps = 2 dots\n* <1.1 Mbps = 3 dots\n* > \\= 1.1 Mbps = 4 dots\n \n\nThe dots are displayed automatically based on the bitrate of the stream selected unless there is a single stream and the bitrate is set to zero, then it won't show any dots. The StreamQuality attribute is used to select streams and indicates if a stream is HD or not. If the attribute for HDBranded is set to true and the stream is HD, the HD icon will show beside the quality dots. If the StreamQuality is set to HD, and the user display type is set to SD, the HD stream will not be selected.\n\nThe roVideoScreen automatically provides trick mode for all supported content types. There are two type of trick modes supported; scene based selection and time-based selection. If BIF image files are provided for a title, scene-based trick modes will appear. (See the BIF File format Documentation for more information) The user will be presented with the images and progress bar needed for SEEK, FF, REW within a stream. The following image shows how trick modes are rendered with BIF files:\n\n![IMAGE](https://image.roku.com/ZHZscHItMTc2/worddavdc8a50b63d70082736fbebee19c18eff.png \"worddavdc8a50b63d70082736fbebee19c18eff\")\n\nThe FF/REW functionality provides three speeds; slow, medium and fast. At slower speeds, the system displays the current frame in the center of the screen and additional frames on the side for contextual information. At higher speeds, the side frames disappear and only the center image is displayed. The I-frames within the video do not need to precisely align with the time stamp of the image frames in the BIF file. When the user stops and selects a frame, the video playback begins at the first I-frame less than or equal to the time position of the selected frame.\n\nWhen BIF images are not available, the system will default to a time based trick play behavior. The user control is still the same, but only the progress bar is displayed and the user will not see individual scenes within the video. This mode is the default, so if images are not available for an individual title, the system will always provide this functionality by default.\n\nThe system will only seek to locations on an I-Frame boundary. Window Media (WMA9 or VC-1) uses the simple index object to determine the I-frame locations and H.264 uses the MOOV atom to determine the correct offsets. If the BIF images are at a consistent time intervals which do not align to I-Frame boundaries, the system will use the nearest I-Frame less than or equal to the time of the BIF image. MP4 or Windows Media are the preferred formats.\n\n**Important Notes on Video Playback**\n\n* The dimensions vary on a title-by-title basis depending on the source material and the target aspect ratio for the encode (e.g. 4:3 or 16:9). Content is always encoded at full width and the height is adjusted. For example, a 1.66 aspect ratio source is encoded as a 720x432 video and displayed as letterboxed for a 4:3 display.\n \n* The frame rate used for encoding is dependent on the source material. Film content is generally 23.976 fps, while video content is generally at 29.97.\n \n* For typical streaming video applications, we recommend a range of 384Kbps to 4.5Mbps. For USB playback, we recommend that you stay under 8.0 Mbps. This provides a good balance between quality and support for a wide number of users. In some cases lower and higher bitrates have been used, but this frequently results in poor quality or limits the % of the installed base that can view this encoding.\n \n* It is critical that the StreamURLs, StreamBitrates, StreamQualities and StreamStickyHttpRedirects arrays are all aligned with each other. For example, the first stream listed would be the 0th element of all of these arrays. You may have multiple streams in the arrays and the system will automatically pick the most appropriate stream based on the users available bandwidth and video settings.\n \n* The StreamQualities array identifies streams as either SD or HD. If the user is configured for SD the system will not select HD streams for playback.\n \n* The optional StreamStartTimeOffset is the offset into the stream which is considered to be the new origin of playback.\n \n* Live – declares the video as live and replaces the time remaining text in the progress bar with \"live\".\n \n* HLS Http Live Streaming support is included in the Roku OS (Introduced in Roku OS2.6). We currently support version 3 of the Http Live Streaming protocol (Pantos – Draft submitted to IETF November 19, 2010 [http://tools.ietf.org/html/draft-pantos-http-live-streaming-05](http://tools.ietf.org/html/draft-pantos-http-live-streaming-05) ). When using HLS, the StreamUrls and StreamQualities array should each have exactly one element. If the HLS stream has only a single bitrate stream, the StreamBitrates array should contain one element specifying that bitrate. If the stream contains more than one variant stream at multiple bitrates, the StreamBitrates array should contain one element with a value of zero. Please see the Video Encoding Guide for information about creating HLS .m3u8 files and segmented .ts files from your current h264 encoded video or distributing live video over HLS to the Roku box.\n \n* In addition to the support for version 2 of the HLS Pantos draft spec, the Roku box supports .m3u8 files that are compressed via deflate or gzip.\n \n * The HTTP response for a query that returns a gzip-compressed file must contain the header: Content-Encoding: gzip\n * The HTTP response for a query that returns a deflate-compressed file must contain the header: Content-Encoding: deflate\n* \"Trick Modes\" and seeking work a little differently with HLS streams. There are a couple of ways that seeking works with HLS and they are different than other streams.\n \n One way of seeking uses the \"target duration\" specified in the .m3u8 file. The first segment in an m3u8 file is assigned a time offset:\n \n T = G \\* N\n \n where G is the \"target duration\" value and N is the sequence number of the segment. Each subsequent segment is assigned a time offset equal to T (the time offset of the first segment) plus the duration value of all earlier segments. The duration of a segment is determined by the EXTINF line before that segment.\n \n* Smooth Streaming (since v4.7) and later by setting the StreamFormat to \"ism\" and setting the streamURL to the MANIFEST url.\n \n * The player type (ContentMetaData.StreamFormat) is \"ism\"\n * The stream URL is the URL that points to the manifest\n * Only H.264 and/or AAC encoding formats are currently supported.\n * Only direct PlayReady licensing is supported. Indirect licensing is currently unsupported. That is, for decryption to work, the ProtectionHeader must be available in the manifest and the LA\\_URL should contain a valid URL to an accessible PlayReady license server.\n * If there are multiple audio tracks, a track will be chosen based on the StreamIndex.Language attribute in the manifest. If the StreamIndex.Language attribute is not populated, the audio track will be chosen arbitrarily. To select a specific audio track before playback, set the ContentMetaData.TrackIDAudio field to the desired track's StreamIndex.Name attribute.\n * If there are multiple video tracks, a track will be chosen arbitrarily. To select a specific video track before playback, set the ContentMetaData.TrackIDVideo field to the desired track's StreamIndex.Name attribute.\n* Standard PlayReady SDK 2.0 Direct License Acquisition Over-the-Air (since v4.8) works by reading the Rights Management Protection Header in the Smooth Streaming Manifest Url. The Roku OS retrieves the license from the PlayReady license server at the license acquisition url endpoint in the Protection Header.\n \n\n```\n#EXT-X_TARGETDURATION:10\n#EXT-X-MEDIA-SEQUENCE:37\n#EXTINF:10\nurl1\n#EXTINF:8\nurl2\n#EXTINF:10\nurl3\n```\n\nThe segment url1 has a time offset of 370, url2 is 380, and url3 is 388. Note that if no TARGETDURATION is specified, the default is 1, so the first segment in the file will have a nonzero time offset (equal to the target duration). The PlayStart content-meta data value allows direct seeking to an offset that is valid within the window of data in the current .m3u8 file.\n\nThere is a second way to seek in an HLS stream. If the m3u8 file has #EXT-X-PROGRAM-DATE-TIME entries, you can seek to a particular date/time by passing a value equal to a modified Unix epoch value. The modified epoch is 1/1/2004 rather than the standard Unix epoch of 1/1/1970. A Unix time value can be converted to an HLS seek time by subtracting 1072915200 (the number of seconds between 1/1/1970 and 1/1/2004). Once again, setting the PlayStart content meta data value allows direct seeking to a specific time offset.\n\nFor example, to seek to the segment marked with the date/time of 7/4/2010 11:30, set PlayStart to 205327800. An example shell expression showing this arithmetic is:\n\n```\n% expr `date -d \"7/4/2010Z11:30:00.000\" +%s` - 1072915200\n205327800\n```\n\nIn BrightScript, the same calculation might be:\n\n```\ndt = CreateObject(\"roDateTime\")\ndt.fromISO8601String(\"7/4/2010T11:30:00.000\")\nitemContentMetaData.PlayStart = dt. asSeconds() - 1072915200 '205327800\n```\n\n1. In Roku OS version 2.6, we've introduced support for SRT files. Please see the content meta-data parameter SubtitleUrl for pointing to a matching SRT file for your video content.\n \n2. In Roku OS version 2.7, we've introduced 1080p support. Please see the content meta-data parameter FullHD for specifying 1080p resolution. Playback at 1080p resolution will only occur when the user has set the display type to HDTV 1080p. Another content meta-data parameter, FrameRate, specifies the frames per second of the video. Valid values are 24 and 30. If the user's display type is set to 1080p and FullHD for the content is false or not set, HD playback will be at 720p resolution. If the user's display type is set to HDTV 720p and FullHD content is set to 1080p resolution, the box will downscale the content to 720p resolution.\n \n\n**Example**\n\n```\n'**********************************************************************\n' This example function is passed an associative array representing a ' piece of content (e.g. a TV episode) There are other attributes\n' (title, description, etc.) but this example focuses on showing\n' attributes required for initiating playback. It creates a video\n' screen, sets the content and starts playback by calling Show()\n'**********************************************************************\nFunction showVideoScreen(episode As Object)\n if type(episode) <> \"roAssociativeArray\" then\n print \"invalid data passed to showVideoScreen\"\n return -1\n endif\n port = CreateObject(\"roMessagePort\")\n screen = CreateObject(\"roVideoScreen\")\n ' Note: HDBranded controls whether the \"HD\" logo is displayed for a\n ' title. This is separate from IsHD because its possible to\n' have an HD title where you don't want to show the HD logo\n' branding for the title. Set these two as appropriate for\n' your content\n episode.HDBranded = false\n episode.IsHD = false\n ' Note: The preferred way to specify stream info in v2.6 is to use\n' the Stream roAssociativeArray content meta data parameter.\n\nepisode.Stream = { url:\"http://myserver.mydomain.com/mycontent.mp4\",\nbitrate:2000\nquality:false\ncontentid:\"mycontent-2000\"\n}\nepisode.StreamFormat: \"mp4\"\n ' now just tell the screen about the title to be played, set the\n ' message port for where you will receive events and call show to\n ' begin playback. You should see a buffering screen and then\n ' playback will start immediately when we have enough data buffered.\n screen.SetContent(episode)\n screen.SetMessagePort(port)\n screen.Show()\n ' Wait in a loop on the message port for events to be received.\n ' We will just quit the loop and return to the calling function\n ' when the users terminates playback, but there are other things\n ' you could do here like monitor playback position and see events\n ' from the streaming player. Look for status messages from the video\n ' player for status and failure events that occur during playback\n while true\n msg = wait(0, port)\n\n if type(msg) = \"roVideoScreenEvent\" then\n print \"showVideoScreen | msg = \"; msg.GetMessage() \" | index = \"; msg.GetIndex()\n if msg.isScreenClosed()\n print \"Screen closed\"\n exit while\n else if msg.isStatusMessage()\n print \"status message: \"; msg.GetMessage()\n else if msg.isPlaybackPosition()\n print \"playback position: \"; msg.GetIndex()\n else if msg.isFullResult()\n print \"playback completed\"\n exit while\n else if msg.isPartialResult()\n print \"playback interrupted\"\n exit while\n else if msg.isRequestFailed()\n print \"request failed - error: \"; msg.GetIndex();\" - \"; msg.GetMessage()\n exit while\n end if\n end if\n end while\nEnd Function\n```",
- "events": [
- {
- "name": "roVideoScreenEvent",
- "url": "https://developer.roku.com/docs/references/brightscript/events/rovideoscreenevent.md"
- }
- ],
- "interfaces": [
- {
- "name": "ifGetMessagePort",
- "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifgetmessageport.md"
- },
- {
- "name": "ifHttpAgent",
- "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifhttpagent.md"
- },
- {
- "name": "ifSetMessagePort",
- "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifsetmessageport.md"
- },
- {
- "name": "ifVideoScreen",
- "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifvideoscreen.md"
- }
- ],
- "isDeprecated": true,
- "name": "roVideoScreen",
- "url": "https://developer.roku.com/docs/references/brightscript/components/rovideoscreen.md"
- },
"roxmlelement": {
"constructors": [],
"description": "roXMLElement is used to contain an XML tree.\n\nFor instance,\n\n```\nthis is some text\n```\n\nWould parse such that:\n\n```\n Name = \"tag1\"\n Attributes = invalid\n Body = roString with \"this is some text\"\n```\n\n**Example**\n\n```\n \n```\n\nWould parse such that:\n\n```\n Name = \"emptytag\"\n Attributes = roAssociativeArray, with one entry { caveman: \"barney\" }\n Body = invalid\n```\n\nIf the tag contains other tags, body will be of type roXMLList.\n\nTo generate XML, create an roXMLElement, then use functions like SetName(), AddAttribute(), SetBody(), AddElementWithBody(), AddElement(), AddBodyElement(), and AddText() functions to build the XML object hierarchy.\n\nThen call GenXML() to return the XML as a string.\n\nGenXML() takes one parameter (boolean) that indicates whether the generated xml should have the tag at the top.\n\n**Example: Subroutine to print out the contents of an roXMLElement tree**\n\n```\nPrintXML(root, 0)\n\nSub PrintXML(element As Object, depth As Integer)\n print tab(depth*3);\"Name: \";element.GetName()\n if not element.GetAttributes().IsEmpty() then\n print tab(depth*3);\"Attributes: \";\n for each a in element.GetAttributes()\n print a;\"=\";left(element.GetAttributes()[a], 20);\n if element.GetAttributes().IsNext() then print \", \";\n end for\n print\n end if\n if element.GetText()<>invalid then\n print tab(depth*3);\"Contains Text: \";left(element.GetText(), 40)\n end if\n if element.GetChildElements()<>invalid\n print tab(depth*3);\"Contains roXMLList:\"\n for each e in element.GetChildElements()\n PrintXML(e, depth+1)\n end for\n end if\n print\nend sub\n```\n\n**Example: Generating XML**\n\n```\nroot.SetName(\"myroot\")\nroot.AddAttribute(\"key1\", \"value1\")\nroot.AddAttribute(\"key2\", \"value2\")\nne = root.AddBodyElement()\nne.SetName(\"sub\")\nne.SetBody(\"this is the sub1 text\")\nne = root.AddBodyElement()\nne.SetName(\"subelement2\")\nne.SetBody(\"more sub text\")\nne.AddAttribute(\"k\", \"v\")\nne = root.AddElement(\"subelement3\")\nne.SetBody(\"more sub text 3\")\nroot.AddElementWithBody(\"sub\", \"another sub (#4)\")\nPrintXML(root, 0)\nprint root.GenXML(false)\n```",
@@ -7631,3785 +7506,368 @@
"implementers": [],
"methods": [],
"name": "AppManagerTheme",
- "properties": [
- {
- "default": "invalid",
- "description": "HTML HEX Color Value. Screen types: Gr Li Pa Po Se Sp Te. Example: #E0DFDF",
- "name": "BackgroundColor",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "HTML HEX Color Value. Screen types: Gr Li Pa Po Se Sp Te. Example: #FF00FF",
- "name": "BreadcrumbDelimiter",
- "type": "string"
- },
+ "properties": []
+ },
+ "ifappinfo": {
+ "implementers": [
{
- "default": "invalid",
- "description": "HTML HEX Color Value. Screen types: Gr Li Pa Po Se Sp Te. Example: #FF00FF",
- "name": "BreadcrumbTextLeft",
- "type": "string"
- },
+ "description": "Returns information about the application",
+ "name": "roAppInfo",
+ "url": "https://developer.roku.com/docs/references/brightscript/components/roappinfo.md"
+ }
+ ],
+ "methods": [
{
- "default": "invalid",
- "description": "HTML HEX Color Value. Screen types: Gr Li Pa Po Se Sp Te. Example: #FF00FF",
- "name": "BreadcrumbTextRight",
- "type": "string"
+ "description": "Returns the app's developer ID, or the keyed developer ID, if the application is sideloaded.",
+ "name": "GetDevID",
+ "params": [],
+ "returnDescription": "Channel's Developer ID",
+ "returnType": "String"
},
{
- "default": "invalid",
- "description": "HTML HEX Color Value. Screen types: Di Se Sp. Example: #FF00FF",
- "name": "ButtonHighlightColor",
- "type": "string"
+ "description": "Returns the app's channel ID.",
+ "name": "GetID",
+ "params": [],
+ "returnDescription": "Channel ID; e.g., \"12345\" or \"dev\"",
+ "returnType": "String"
},
{
- "default": "invalid",
- "description": "HTML HEX Color Value. Screen types: Di Se Sp. Example: #0033FF",
- "name": "ButtonMenuHighlightText",
- "type": "string"
+ "description": "Returns the subtitle value from the manifest.",
+ "name": "GetSubtitle",
+ "params": [],
+ "returnDescription": "Possible subtitle configuration",
+ "returnType": "String"
},
{
- "default": "invalid",
- "description": "HTML HEX Color Value. Screen types: Di Se Sp. Example: #B0B0B0",
- "name": "ButtonMenuNormalOverlayText",
- "type": "string"
+ "description": "Returns the title value from the manifest.",
+ "name": "GetTitle",
+ "params": [],
+ "returnDescription": "Title of the channel",
+ "returnType": "String"
},
{
- "default": "invalid",
- "description": "HTML HEX Color Value. Screen types: Di Se Sp. Example: #686868",
- "name": "ButtonMenuNormalText",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "HTML HEX Color Value. Screen types: Di Se Sp. Example: #FF00FF",
- "name": "ButtonNormalColor",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "HTML HEX Color Value. Screen types: Gr Po. Example: #00FF00",
- "name": "CounterSeparator",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "HTML HEX Color Value. Screen types: Gr Po. Example: #FF0000",
- "name": "CounterTextLeft",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "HTML HEX Color Value. Screen types: Gr Po. Example: #0000FF",
- "name": "CounterTextRight",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "HTML HEX Color Value. Must be a grayscale value. Screen types: Di. Example: #808080",
- "name": "DialogBodyText",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "HTML HEX Color Value. Must be a grayscale value. Screen types: Di. Example: #363636",
- "name": "DialogTitleText",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "HTML HEX Color Value. Screen types: Po. Example: #FF00FF",
- "name": "EpisodeSynopsisText",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "HTML HEX Color Value. Screen types: Po. Example: #FF00FF",
- "name": "FilterBannerActiveColor",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "URL to set HD Filter Banner Active/Focus Highlighter. Screen types: Po. Example: pkg:/images/Filter\\_ActiveHint\\_HD.png",
- "name": "FilterBannerActiveHD",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "URL to set SD Filter Banner Active/Focus Highlighter. Screen types: Po. Example: pkg:/images/Filter\\_ActiveHint\\_SD43.png",
- "name": "FilterBannerActiveSD",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "HTML HEX Color Value. Screen types: Po. Example: #FF00FF",
- "name": "FilterBannerInactiveColor",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "URL to set HD Filter Banner Inactive Highlighter. Screen types: Po. Example: pkg:/images/Filter\\_InactiveHint\\_HD.png",
- "name": "FilterBannerInactiveHD",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "URL to set SD Filter Banner Inactive Highlighter. Screen types: Po. Example: pkg:/images/Filter\\_ActiveHint\\_SD43.png",
- "name": "FilterBannerInactiveSD",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "HTML HEX Color Value. Screen types: Po. Example: #FF00FF",
- "name": "FilterBannerSideColor",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "URL to set HD Filter Banner Background Image. Screen types: Po. Example: pkg:/images/Filter\\_ActiveHint\\_HD.png",
- "name": "FilterBannerSliceHD",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "URL to set SD Filter Banner Background Image. Screen types: Po. Example: pkg:/images/Filter\\_ActiveHint\\_SD43.png",
- "name": "FilterBannerSliceSD",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "HTML HEX Color Value Must be a grayscale value. Screen types: Gr. Example: #363636",
- "name": "GridScreenBackgroundColor",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "String representing point \"(x, y)\" that is the offset from the upper left corner of the focused HD image. Set to the negative width & height of border. Screen types: Gr. Example: (-25,-25)",
- "name": "GridScreenBorderOffsetHD",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "String representing point \"(x, y)\" that is the offset from the upper left corner of the focused SD image. Set to the negative width & height of border. Screen types: Gr. Example: (-20,-20)",
- "name": "GridScreenBorderOffsetSD",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "HTML HEX Color Value. Screen types: Gr. Example: #FF005B",
- "name": "GridScreenDescriptionDateColor",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "URL to set HD Description callout background image on Grid. Screen types: Gr. Example: pkg:/images/Description\\_Background\\_HD.ng",
- "name": "GridScreenDescriptionImageHD",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "URL to set SD Description callout background image on Grid. Screen types: Gr. Example: pkg:/images/Description\\_Background\\_SD43.ng",
- "name": "GridScreenDescriptionImageSD",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "String representing point \"(x, y)\" that is the offset from the upper left corner of the focused HD image. Negative values have the description above and to the left of the focused image. Screen types: Gr. Example: (190,255)",
- "name": "GridScreenDescriptionOffsetHD",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "String representing point \"(x, y)\" that is the offset from the upper left corner of the focused SD image. Negative values have the description above and to the left of the focused image. Screen types: Gr. Example: (125,170)",
- "name": "GridScreenDescriptionOffsetSD",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "HTML HEX Color Value. Screen types: Gr. Example: #5B005B",
- "name": "GridScreenDescriptionRuntimeColor",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "HTML HEX Color Value. Screen types: Gr. Example: #606000",
- "name": "GridScreenDescriptionSynopsisColor",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "HTML HEX Color Value. Screen types: Gr. Example: #00FFFF",
- "name": "GridScreenDescriptionTitleColor",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "URL to set HD Focus image on Active Grid Poster. Screen types: Gr. Example: pkg:/images/Border\\_16x9\\_HD.png",
- "name": "GridScreenFocusBorderHD",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "URL to set SD Focus image on Active Grid Poster. Screen types: Gr. Example: pkg:/images/Border\\_16x9\\_SD43.png",
- "name": "GridScreenFocusBorderSD",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "HTML HEX Color Value. Must be a grayscale value. Screen types: Gr. Example: #FFFFFF",
- "name": "GridScreenListNameColor",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "Logo formatted for display in the overhang. Screen types: Gr. Example: pkg:/images/gridlogoHD.png",
- "name": "GridScreenLogoHD",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "Offset in pixels from the top-left origin of the display. Range 0 to 1280. Screen types: Gr. Example: 592",
- "name": "GridScreenLogoOffsetHD_X",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "Offset in pixels from the top-left origin of the display. Range 0 to 720. Screen types: Gr. Example: 31",
- "name": "GridScreenLogoOffsetHD_Y",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "Offset in pixels from the top-left origin of the display. Range 0 to 720. Screen types: Gr. Example: 324",
- "name": "GridScreenLogoOffsetSD_X",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "Offset in pixels from the top-left origin of the display. Range 0 to 480. Screen types: Gr. Example: 21",
- "name": "GridScreenLogoOffsetSD_Y",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "Logo formatted for display in the overhang. Screen types: Gr. Example: pkg:/images/gridlogoSD.png",
- "name": "GridScreenLogoSD",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "HTML HEX Color Value. Must be a grayscale value. Screen types: Gr. Example: #808080",
- "name": "GridScreenMessageColor",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "The HD overhang height. Default: \"69\". Screen types: Gr. Example: 75",
- "name": "GridScreenOverhangHeightHD",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "The SD overhang height. Default: \"49\". Screen types: Gr. Example: 55",
- "name": "GridScreenOverhangHeightSD",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "URI for the overhang slice (thin piece of top of screen border). Screen types: Gr. Example: pkg:/images/gridoverhangHD.png",
- "name": "GridScreenOverhangSliceHD",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "URI for the overhang slice (thin piece of top of screen border). Screen types: Gr. Example: pkg:/images/gridoverhangSD.png",
- "name": "GridScreenOverhangSliceSD",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "HTML HEX Color Value. Must be a grayscale value. Screen types: Gr. Example: #CCCCCC",
- "name": "GridScreenRetrievingColor",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "URL to set HD highlight image. Screen types: Gr Li Po. Example: pkg:/images/listitem\\_highlight\\_hd.png",
- "name": "ListItemHighlightHD",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "URL to set SD highlight image. Screen types: Gr Li Po. Example: pkg:/images/listitem\\_highlight\\_sd.png",
- "name": "ListItemHighlightSD",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "HTML HEX Color Value. Screen types: Gr Li Po. Example: #CCCC00",
- "name": "ListItemHighlightText",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "HTML HEX Color Value. Screen types: Gr Li Po. Example: #CCCC00",
- "name": "ListItemText",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "HTML HEX Color Value. Screen types: Li. Example: #CCCC00",
- "name": "ListScreenDescriptionText",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "HTML HEX Color Value. Screen types: Li. Example: #CC0000",
- "name": "ListScreenTitleColor",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "Small application logo formatted for display in overhang top left. Screen types: Co Ke Li Pa Po Se Sp Te. Example: pkg:/images/co\\_logo\\_sd.png",
- "name": "OverhangPrimaryLogoHD",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "Offset in pixels from the top-left origin of the display films.Range 0 to 1280. Screen types: Co Ke Li Pa Po Se Sp Te. Example: 25",
- "name": "OverhangPrimaryLogoOffsetHD_X",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "Offset in pixels from the top-left origin of the display films.Range 0 to 720. Screen types: Co Ke Li Pa Po Se Sp Te. Example: 50",
- "name": "OverhangPrimaryLogoOffsetHD_Y",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "Offset in pixels from the top-left origin of the display films.Range 0 to 720. Screen types: Co Ke Li Pa Po Se Sp Te. Example: 25",
- "name": "OverhangPrimaryLogoOffsetSD_X",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "Offset in pixels from the top-left origin of the display films.Range 0 to 480. Screen types: Co Ke Li Pa Po Se Sp Te. Example: 50",
- "name": "OverhangPrimaryLogoOffsetSD_Y",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "Small application logo formatted for display in overhang top left. Screen types: Co Ke Li Pa Po Se Sp Te. Example: pkg:/images/co\\_logo\\_sd.png",
- "name": "OverhangPrimaryLogoSD",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "Small application logo formatted for display in overhang top left. Screen types: Co Ke Li Pa Po Se Sp Te. Example: pkg:/images/co\\_logo\\_hd.png",
- "name": "OverhangSecondaryLogoHD",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "Offset in pixels from the top-left origin of the display films. Range 0 to 1280. Screen types: Co Ke Li Pa Po Se Sp Te. Example: 25",
- "name": "OverhangSecondaryLogoOffsetHD_X",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "Offset in pixels from the top-left origin of the display films. Range 0 to 720. Screen types: Co Ke Li Pa Po Se Sp Te. Example: 50",
- "name": "OverhangSecondaryLogoOffsetHD_Y",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "Offset in pixels from the top-left origin of the display films. Range 0 to 720. Screen types: Co Ke Li Pa Po Se Sp Te. Example: 25",
- "name": "OverhangSecondaryLogoOffsetSD_X",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "Offset in pixels from the top-left origin of the display films. Range 0 to 480. Screen types: Co Ke Li Pa Po Se Sp Te. Example: 50",
- "name": "OverhangSecondaryLogoOffsetSD_Y",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "Small application logo formatted for display in overhang top left. Screen types: Co Ke Li Pa Po Se Sp Te. Example: pkg:/images/co\\_logo\\_sd.png",
- "name": "OverhangSecondaryLogoSD",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "URI for the overhang slice (thin piece of border at the top of the screen in HD size). Screen types: Co Ke Li Pa Po Se Sp Te. Example: pkg:/images/overhang\\_hd.png",
- "name": "OverhangSliceHD",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "URI for the overhang slice (thin piece of top of screen border). Screen types: Co Ke Li Pa Po Se Sp Te. Example: pkg:/images/overhang\\_sd.png",
- "name": "OverhangSliceSD",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "HTML HEX Color Value. Screen types: Co Pa Te. Example: #FF00FF",
- "name": "ParagraphBodyText",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "HTML HEX Color Value. Screen types: Co Pa Te. Example: #FF00FF",
- "name": "ParagraphHeaderText",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "HTML HEX Color Value. Screen types: Po. Example: #FF00FF",
- "name": "PosterScreenLine1Text",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "HTML HEX Color Value. Screen types: Po. Example: #FF00FF",
- "name": "PosterScreenLine2Text",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "HTML HEX Color Value. Screen types: Co. Example: #FF00FF",
- "name": "RegistrationCodeColor",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "HTML HEX Color Value. Screen types: Co. Example: #FF00FF",
- "name": "RegistrationFocalColor",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "HTML HEX Color Value. Screen types: Co. Example: #10FF80",
- "name": "RegistrationFocalRectColor",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "Position and size of the HD focal rectangle. Four integer: (x,y,width,height). Screen types: Co. Example: (228,360,120,82)",
- "name": "RegistrationFocalRectHD",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "Position and size of the SD focal rectangle. Four integer: (x,y,width,height). Screen types: Co. Example: (172,220,90,76)",
- "name": "RegistrationFocalRectSD",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "HTML HEX Color Value. Screen types: Sp. Example: #FF00FF",
- "name": "SpringboardActorColor",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "HTML HEX Color Value. Screen types: Sp. Example: #FF00FF",
- "name": "SpringboardAlbumColor",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "Album Label. Screen types: Sp. Example: on",
- "name": "SpringboardAlbumLabel",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "HTML HEX Color Value. Screen types: Sp. Example: #FF00FF",
- "name": "SpringboardAlbumLabelColor",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "boolean string. Screen types: Sp. Example: true",
- "name": "SpringboardAllow6Buttons",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "HTML HEX Color Value. Screen types: Sp. Example: #FF00FF",
- "name": "SpringboardArtistColor",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "Artist Label. Screen types: Sp. Example: by",
- "name": "SpringboardArtistLabel",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "HTML HEX Color Value. Screen types: Sp. Example: #FF00FF",
- "name": "SpringboardArtistLabelColor",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "HTML HEX Color Value. Screen types: Sp. Example: #FF00FF",
- "name": "SpringboardDirectorColor",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "HTML HEX Color Value. Screen types: Sp. Example: #FF00FF",
- "name": "SpringboardDirectorLabelColor",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "HTML HEX Color Value. Screen types: Sp. Example: #FF00FF",
- "name": "SpringboardDirectorPrefixText",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "Director Label. Screen types: Sp. Example: Written by",
- "name": "SpringboardDirectorText",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "HTML HEX Color Value. Screen types: Sp. Example: #FF00FF",
- "name": "SpringboardGenreColor",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "HTML HEX Color Value. Screen types: Sp. Example: #FF00FF",
- "name": "SpringboardRuntimeColor",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "HTML HEX Color Value. Screen types: Sp. Example: #FF00FF",
- "name": "SpringboardSynopsisColor",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "HTML HEX Color Value. Screen types: Sp. Example: #FF00FF",
- "name": "SpringboardTitleText",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "HTML HEX Color Value. Must be a grayscale value. Screen types: Te. Example: #808080",
- "name": "TextScreenBodyBackgroundColor",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "HTML HEX Color Value. Screen types: Te. Example: #363636",
- "name": "TextScreenBodyText",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "HTML HEX Color Value. Screen types: Te. Example: #CC0000",
- "name": "TextScreenScrollBarColor",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "HTML HEX Color Value. Screen types: Te. Example: #00CC00",
- "name": "TextScreenScrollThumbColor",
- "type": "string"
- },
- {
- "default": "invalid",
- "description": "Theme type. Generic-dark is the only valid value. Otherwise the default theme applies. Screen types: . Example: generic-dark",
- "name": "ThemeType",
- "type": "string"
- }
- ]
- },
- "ifappinfo": {
- "implementers": [
- {
- "description": "Returns information about the application",
- "name": "roAppInfo",
- "url": "https://developer.roku.com/docs/references/brightscript/components/roappinfo.md"
- }
- ],
- "methods": [
- {
- "description": "Returns the app's developer ID, or the keyed developer ID, if the application is sideloaded.",
- "name": "GetDevID",
- "params": [],
- "returnDescription": "Channel's Developer ID",
- "returnType": "String"
- },
- {
- "description": "Returns the app's channel ID.",
- "name": "GetID",
- "params": [],
- "returnDescription": "Channel ID; e.g., \"12345\" or \"dev\"",
- "returnType": "String"
- },
- {
- "description": "Returns the subtitle value from the manifest.",
- "name": "GetSubtitle",
- "params": [],
- "returnDescription": "Possible subtitle configuration",
- "returnType": "String"
- },
- {
- "description": "Returns the title value from the manifest.",
- "name": "GetTitle",
- "params": [],
- "returnDescription": "Title of the channel",
- "returnType": "String"
- },
- {
- "description": "Returns the named manifest value, or an empty string if the entry is does not exist.",
- "name": "GetValue",
- "params": [
- {
- "default": null,
- "description": "The manifest value to be returned.",
- "isRequired": true,
- "name": "key",
- "type": "String"
- }
- ],
- "returnDescription": "Manifest value; empty string",
- "returnType": "String"
- },
- {
- "description": "Returns the conglomerate version number from the manifest, as formatted major\\_version + minor\\_version + build\\_version.",
- "name": "GetVersion",
- "params": [],
- "returnDescription": "Channel version number. e.g. \"1.2.3\"",
- "returnType": "String"
- },
- {
- "description": "Returns true if the application is sideloaded, i.e. the channel ID is \"dev\".",
- "name": "IsDev",
- "params": [],
- "returnDescription": "True/ False",
- "returnType": "Boolean"
- }
- ],
- "name": "ifAppInfo",
- "properties": [],
- "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifappinfo.md"
- },
- "ifappmanager": {
- "implementers": [
- {
- "description": "Returns information about the application",
- "name": "roAppManager",
- "url": "https://developer.roku.com/docs/references/brightscript/components/roappmanager.md"
- }
- ],
- "methods": [
- {
- "description": "Clears a previously set attribute and reverts to its default value.",
- "name": "ClearThemeAttribute",
- "params": [
- {
- "default": null,
- "description": "The theme attribute to be cleared.",
- "isRequired": true,
- "name": "attributeName",
- "type": "String"
- }
- ],
- "returnType": "Void"
- },
- {
- "description": "Returns the user's screensaver wait time setting in number of minutes, or zero if the screensaver is disabled.",
- "name": "GetScreensaverTimeout",
- "params": [],
- "returnDescription": "The number of minutes set for the screensaver wait time.",
- "returnType": "Integer"
- },
- {
- "description": "Returns an [roTimespan](https://developer.roku.com/docs/references/brightscript/components/rotimespan.md\"roTimespan\") object, which is \"marked\" when the user clicked on the application button on the home screen.Calling the TotalMilliseconds() method on the returned roTimespan object returns the total number of milliseconds since the application started.",
- "name": "GetUptime",
- "params": [],
- "returnDescription": "An [roTimespan](/docs/references/brightscript/components/rotimespan.md \"roTimespan\") object.",
- "returnType": "Object"
- },
- {
- "description": "This method returns true if a channel with the specified channelID and the minimum version required is installed.",
- "name": "IsAppInstalled",
- "params": [
- {
- "default": null,
- "description": "The unique id of the channel.",
- "isRequired": true,
- "name": "channelID",
- "type": "String"
- },
- {
- "default": null,
- "description": "The minimum version number of the channel to be used for the query.",
- "isRequired": true,
- "name": "version",
- "type": "String"
- }
- ],
- "returnDescription": "A boolean indicating whether the specified channel is installed.",
- "returnType": "Boolean"
- },
- {
- "description": "Launches the channel with the specified channelID and the specified version, with the playback experience upon launching the channel based on the provided params.",
- "name": "LaunchApp",
- "params": [
- {
- "default": null,
- "description": "The unique ID of the channel to be launched.",
- "isRequired": true,
- "name": "channelID",
- "type": "String"
- },
- {
- "default": null,
- "description": "The minimum version of the channel required to launch the channel. If the specified version (or later) is not being used, the channel is not launched. To skip the version check, pass an empty string.",
- "isRequired": true,
- "name": "version",
- "type": "String"
- },
- {
- "default": null,
- "description": "Key-value pairs specifying the playback experience upon launching the channel. For example, if deep linking parameters are passed into the method, the content ID specifies the content to be played upon launching the channel, and the mediaType determines whether the content is launched directly into playback, launched into playback using bookmarks, or an episode selection screen for the content is displayed). To launch the channel store springboard of a channel, use the **ShowChannelStoreSpringboard()** method. You can also do this by passing a channelID of \"11\" is passed into this method (`LaunchApp(\"11\", \"\", params)`). In this case, the params field would include a content ID (`params = {contentID: \"myAwesomeMovie_123\"}`).",
- "isRequired": true,
- "name": "params",
- "type": "roAssociativeArray"
- }
- ],
- "returnType": "Void"
- },
- {
- "description": "Enables or disables automatic Audio Guide and override any manifest setting.This is useful for channels that want to temporarily turn off automatic Audio Guide for specific screens.",
- "name": "SetAutomaticAudioGuideEnabled",
- "params": [
- {
- "default": null,
- "description": "A flag indicating whether to enable or disable the automatic audio guide.",
- "isRequired": true,
- "name": "enabled",
- "type": "Boolean"
- }
- ],
- "returnType": "Void"
- },
- {
- "description": "Updates video or audio [content metadata](/docs/developer-program/getting-started/architecture/content-metadata.md) during playback. This method takes a subset of content metadata parameters to be updated. These values override any previously ones sent to the Roku Media Player, and they are used until this function is called again or until the [**roAppManager**](https://developer.roku.com/docs/references/brightscript/components/roappmanager.md instance is deleted.",
- "name": "SetNowPlayingContentMetaData",
- "params": [
- {
- "default": null,
- "description": "The video or audio [content metadata](/docs/developer-program/getting-started/architecture/content-metadata.md) parameters to be updated (for example, the title and contentType)",
- "isRequired": true,
- "name": "contentMetaData",
- "type": "roAssociativeArray"
- }
- ],
- "returnType": "Void"
- },
- {
- "description": "Sets a group of theme attributes for the application.",
- "name": "SetTheme",
- "params": [
- {
- "default": null,
- "description": "The attributeArray is an [roAssociativeArray](https://developer.roku.com/docs/references/brightscript/components/roassociativearray.md\"roAssociativeArray\") of attribute/value pairs. The program may create the roAssociativeArray at runtime or read it from an XML file using the [roXMLElement](https://developer.roku.com/docs/references/brightscript/components/roxmlelement.md\"roXMLElement\") object. Existing values for attributes will be overwritten by the values provided. Any values set by a previous SetTheme or SetThemeAttribute call, but not included in the array currently provided by with the subsequent call will remain unchanged. See [roAppManager](https://developer.roku.com/docs/references/brightscript/components/roappmanager.md\"roAppManager\") the list of valid attributes.",
- "isRequired": true,
- "name": "attributeArray",
- "type": "Object"
- }
- ],
- "returnType": "Void"
- },
- {
- "description": "Set an individual theme attribute for the application.",
- "name": "SetThemeAttribute",
- "params": [
- {
- "default": null,
- "description": "The attributeName is the name of one of the settable theme attributes and the value is the desired setting. If the attributeName is not valid, no action is performed.",
- "isRequired": true,
- "name": "attributeName",
- "type": "String"
- },
- {
- "default": null,
- "description": "This attributeValue will override the default value for that attribute or modify the value provided by a previous SetTheme or SetThemeAttribute call to the new value provided.",
- "isRequired": true,
- "name": "attributeValue",
- "type": "String"
- }
- ],
- "returnType": "Void"
- },
- {
- "description": "This method allows a channel to tell Roku when the user is signed in or signed out of the channelIf the channel is removed, the Roku OS will call SetUserSignedIn(false) on the channel's behalf.",
- "name": "SetUserSignedIn",
- "params": [
- {
- "default": null,
- "description": "Set to true to indicate that the user is signed in; set to false to indicate the user is signed out.",
- "isRequired": true,
- "name": "signedIn",
- "type": "Boolean"
- }
- ],
- "returnType": "Void"
- },
- {
- "description": "Launches the channel store springboard of the specified channel. The channel store springboard contains detailed information about the channel, including ratings, version, date of last update, developer name, and a description.",
- "name": "ShowChannelStoreSpringboard",
- "params": [
- {
- "default": null,
- "description": "The unique ID of the channel to be launched.",
- "isRequired": true,
- "name": "channelID",
- "type": "String"
- }
- ],
- "returnType": "Void"
- }
- ],
- "name": "ifAppManager",
- "properties": [],
- "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifappmanager.md"
- },
- "ifarray": {
- "implementers": [
- {
- "description": "An array stores an indexed collection of BrightScript objects. Each entry of an array can be a different type, or they may all of the same type",
- "name": "roArray",
- "url": "https://developer.roku.com/docs/references/brightscript/components/roarray.md"
- },
- {
- "description": "The byte array component is used to contain and manipulate an arbitrary array of bytes",
- "name": "roByteArray",
- "url": "https://developer.roku.com/docs/references/brightscript/components/robytearray.md"
- },
- {
- "description": "The list object implements the interfaces: ifList, ifArray, ifEnum and therefore can behave like an array that can dynamically add members",
- "name": "roList",
- "url": "https://developer.roku.com/docs/references/brightscript/components/rolist.md"
- },
- {
- "description": "Contains a list of roXML objects",
- "name": "roXMLList",
- "url": "https://developer.roku.com/docs/references/brightscript/components/roxmllist.md"
- }
- ],
- "methods": [
- {
- "description": "Appends the entries in one **roArray** to another. If the passed array contains entries that have not been set to a value, they are not appended.",
- "name": "Append",
- "params": [
- {
- "default": null,
- "description": "The **roArray** to be appended to the target array.",
- "isRequired": true,
- "name": "array",
- "type": "Object"
- }
- ],
- "returnType": "Void"
- },
- {
- "description": "Deletes all the entries in the array.",
- "name": "Clear",
- "params": [],
- "returnType": "Void"
- },
- {
- "description": "Returns the length of the array, which is one more than the index of highest entry.",
- "name": "Count",
- "params": [],
- "returnDescription": "The length of the array.",
- "returnType": "Integer"
- },
- {
- "description": "Deletes the indicated array entry, and shifts all entries up. This decreases the array length by one.",
- "name": "Delete",
- "params": [
- {
- "default": null,
- "isRequired": true,
- "name": "index",
- "type": "Integer"
- }
- ],
- "returnDescription": "A flag indicating whether the specified array entry has been removed. If the entry was successfully deleted, returns true. If index is out of range, returns false and does not change the array.",
- "returnType": "Boolean"
- },
- {
- "description": "Returns the last (highest index) array entry without removing it. If the array is empty, returns invalid",
- "name": "Peek",
- "params": [],
- "returnDescription": "Invalid",
- "returnType": "Dynamic"
- },
- {
- "description": "Returns the last entry (highest index) from the array and removes it from the array. If the array is empty, returns invalid and does not change the array.",
- "name": "Pop",
- "params": [],
- "returnDescription": "The last (highest index) array entry.",
- "returnType": "Dynamic"
- },
- {
- "description": "Adds the specified value to the end of the array.",
- "name": "Push",
- "params": [
- {
- "default": null,
- "description": "The value to be added to the beginning of the array.",
- "isRequired": true,
- "name": "tvalue",
- "type": "Dynamic"
- }
- ],
- "returnType": "Void"
- },
- {
- "description": "Removes the first entry (zero index) from the beginning of the array and shifts the other entries up. This method is similar to the [Pop method](#pushtvalue-as-dynamic-as-void), but removes the first entry in the array instead of the last.",
- "name": "Shift",
- "params": [],
- "returnDescription": "The first entry (zero index) removed from the array.",
- "returnType": "Dynamic"
- },
- {
- "description": "Adds the specified value to the beginning of the array (at the zero index) and shifts the other entries down. This method is similar to the [Push method](#push-as-dynamic), but removes the first entry in the array instead of the last.",
- "name": "Unshift",
- "params": [
- {
- "default": null,
- "description": "The value to be added to the beginning of the array.",
- "isRequired": true,
- "name": "tvalue",
- "type": "Dynamic"
- }
- ],
- "returnType": "Void"
- }
- ],
- "name": "ifArray",
- "properties": [],
- "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifarray.md"
- },
- "ifarrayget": {
- "description": "The ifArrayGet interface supports the array indexing operator \\[ \\]\n\n(See [Array Operator](https://developer.roku.com/docs/references/brightscript/language/expressions-variables-types.mdeffects-of-type-conversions-on-accuracy \"Array Operator\"))",
- "implementers": [
- {
- "description": "An array stores an indexed collection of BrightScript objects. Each entry of an array can be a different type, or they may all of the same type",
- "name": "roArray",
- "url": "https://developer.roku.com/docs/references/brightscript/components/roarray.md"
- },
- {
- "description": "The byte array component is used to contain and manipulate an arbitrary array of bytes",
- "name": "roByteArray",
- "url": "https://developer.roku.com/docs/references/brightscript/components/robytearray.md"
- },
- {
- "description": "The list object implements the interfaces: ifList, ifArray, ifEnum and therefore can behave like an array that can dynamically add members",
- "name": "roList",
- "url": "https://developer.roku.com/docs/references/brightscript/components/rolist.md"
- },
- {
- "description": "Contains a list of roXML objects",
- "name": "roXMLList",
- "url": "https://developer.roku.com/docs/references/brightscript/components/roxmllist.md"
- }
- ],
- "methods": [
- {
- "description": "Returns an array entry based on the provided index.",
- "name": "GetEntry",
- "params": [
- {
- "default": null,
- "description": "The index of the array entry to be returned.",
- "isRequired": true,
- "name": "index",
- "type": "Integer"
- }
- ],
- "returnDescription": "The array entry corresponding to the provided index, or invalid if the entry has not been set.",
- "returnType": "Dynamic"
- }
- ],
- "name": "ifArrayGet",
- "properties": [],
- "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifarrayget.md"
- },
- "ifarrayjoin": {
- "implementers": [
- {
- "description": "Returns information about the application",
- "name": "roArray",
- "url": "https://developer.roku.com/docs/references/brightscript/components/roarray.md"
- }
- ],
- "methods": [
- {
- "description": "Creates a string by joining all array elements together separated by the specified separator. All elements must be of type string; otherwise, an empty string is returned",
- "name": "Join",
- "params": [
- {
- "default": null,
- "description": "The string used to separate elements in an array.",
- "isRequired": true,
- "name": "separator",
- "type": "String"
- }
- ],
- "returnDescription": "A String containing the array elements.",
- "returnType": "String"
- }
- ],
- "name": "ifArrayJoin",
- "properties": [],
- "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifarrayjoin.md"
- },
- "ifarrayset": {
- "description": "The ifArraySet interface supports the array indexing operator \\[\\].\n\n(See ArrayOperator)",
- "implementers": [
- {
- "description": "An array stores an indexed collection of BrightScript objects. Each entry of an array can be a different type, or they may all of the same type",
- "name": "roArray",
- "url": "https://developer.roku.com/docs/references/brightscript/components/roarray.md"
- },
- {
- "description": "The byte array component is used to contain and manipulate an arbitrary array of bytes",
- "name": "roByteArray",
- "url": "https://developer.roku.com/docs/references/brightscript/components/robytearray.md"
- },
- {
- "description": "The list object implements the interfaces: ifList, ifArray, ifEnum and therefore can behave like an array that can dynamically add members",
- "name": "roList",
- "url": "https://developer.roku.com/docs/references/brightscript/components/rolist.md"
- },
- {
- "description": "Contains a list of roXML objects",
- "name": "roXMLList",
- "url": "https://developer.roku.com/docs/references/brightscript/components/roxmllist.md"
- }
- ],
- "methods": [
- {
- "description": "Sets an entry at a given index to the passed value. If index is beyond the bounds of the array, the array is expanded to accommodate it.",
- "name": "SetEntry",
- "params": [
- {
- "default": null,
- "description": "The entry to be updated.",
- "isRequired": true,
- "name": "index",
- "type": "Integer"
- },
- {
- "default": null,
- "description": "The new value for the specified entry.",
- "isRequired": true,
- "name": "tvalue",
- "type": "Dynamic"
- }
- ],
- "returnType": "Void"
- }
- ],
- "name": "ifArraySet",
- "properties": [],
- "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifarrayset.md"
- },
- "ifarraysort": {
- "implementers": [
- {
- "description": "Returns information about the application",
- "name": "roArray",
- "url": "https://developer.roku.com/docs/references/brightscript/components/roarray.md"
- }
- ],
- "methods": [
- {
- "description": "Reverses the order of elements in an array.",
- "name": "Reverse",
- "params": [],
- "returnType": "Void"
- },
- {
- "description": "Performs a stable sort on an array.",
- "name": "Sort",
- "params": [
- {
- "default": null,
- "description": "Items are arbitrarily grouped by comparable type of number or string, and are sorted within the group with a logical comparison. If \"r\" is included in flags, a reverse sort is performed. If \"i\" is included in flags, a case-insensitive sort is performed. If invalid flags are specified, the sort is not performed.",
- "isRequired": true,
- "name": "flags",
- "type": "String"
- }
- ],
- "returnType": "Void"
- },
- {
- "description": "Performs a stable sort of an array of associative arrays by value of a common field.",
- "name": "SortBy",
- "params": [
- {
- "default": null,
- "description": "The field to be used for sorting.",
- "isRequired": true,
- "name": "fieldName",
- "type": "String"
- },
- {
- "default": null,
- "description": "Items are arbitrarily grouped by comparable type of number or string, and are sorted within the group with a logical comparison. If \"r\" is included in flags, a reverse sort is performed. If \"i\" is included in flags, a case-insensitive sort is performed. If invalid flags are specified, the sort is not performed.",
- "isRequired": true,
- "name": "flags",
- "type": "String"
- }
- ],
- "returnType": "Void"
- }
- ],
- "name": "ifArraySort",
- "properties": [],
- "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifarraysort.md"
- },
- "ifassociativearray": {
- "implementers": [
- {
- "description": "An associative array allows objects to be associated with string keys",
- "name": "roAssociativeArray",
- "url": "https://developer.roku.com/docs/references/brightscript/components/roassociativearray.md"
- },
- {
- "description": "The roSGNode object is the BrightScript equivalent of SceneGraph XML file node creation",
- "name": "roSGNode",
- "url": "https://developer.roku.com/docs/references/brightscript/components/rosgnode.md"
- }
- ],
- "methods": [
- {
- "description": "Adds a new entry to the array associating the supplied value with the supplied key string. Only one value may be associated with a key. If the key is already associated with a value, the existing value is discarded.",
- "name": "AddReplace",
- "params": [
- {
- "default": null,
- "description": "The key to be added to the associative array.",
- "isRequired": true,
- "name": "key",
- "type": "String"
- },
- {
- "default": null,
- "description": "The value of the key to be added to the associative array.",
- "isRequired": true,
- "name": "value",
- "type": "Dynamic"
- }
- ],
- "returnType": "Void"
- },
- {
- "description": "Appends an associative array to this calling object. If any key in the **aa** parameter is already associated with a value in the calling object, the current value is discarded and is replaced with the value provided in the **aa** parameter.",
- "name": "Append",
- "params": [
- {
- "default": null,
- "description": "The associative array to be appended to the calling object.",
- "isRequired": true,
- "name": "aa",
- "type": "Object"
- }
- ],
- "returnType": "Void"
- },
- {
- "description": "Remove all key/values from the associative array.",
- "name": "Clear",
- "params": [],
- "returnType": "Void"
- },
- {
- "description": "Returns the number of keys in the associative array.",
- "name": "Count",
- "params": [],
- "returnDescription": "The number of keys in the associative array.",
- "returnType": "Integer"
- },
- {
- "description": "Deletes an entry from an associative array based on the key.",
- "name": "Delete",
- "params": [
- {
- "default": null,
- "description": "The key associated with the entry to be deleted.",
- "isRequired": true,
- "name": "key",
- "type": "String"
- }
- ],
- "returnDescription": "A flag indicating whether an entry is associated with the specified key exists. If there is no associated object then false is returned. If there is such an object then true is returned.",
- "returnType": "Boolean"
- },
- {
- "description": "Looks for an entry in the associative array associated with the specified key.",
- "name": "DoesExist",
- "params": [
- {
- "default": null,
- "description": "The key associated with the entry to be checked.",
- "isRequired": true,
- "name": "key",
- "type": "String"
- }
- ],
- "returnDescription": "A flag indicating whether an entry is associated with the specified key exists. If there is no associated object then false is returned. If there is such an object then true is returned.",
- "returnType": "Boolean"
- },
- {
- "description": "Returns an array containing the associative array key/value pairs in lexicographical order of key.",
- "name": "Items",
- "params": [],
- "returnDescription": "An array of associative array keys/value pairs.",
- "returnType": "Object"
- },
- {
- "description": "Returns an array containing the associative array keys in lexicographical order.",
- "name": "Keys",
- "params": [],
- "returnDescription": "An array of associative array keys.",
- "returnType": "Object"
- },
- {
- "description": "Returns the value in the array associated with the specified key. The key comparison is case-insensitive, unless the **SetModeCaseSensitive()** method has been called.",
- "name": "Lookup",
- "params": [
- {
- "default": null,
- "description": "The key associated with the value to be retrieved from the associative array.",
- "isRequired": true,
- "name": "key",
- "type": "String"
- }
- ],
- "returnDescription": "Returns the value in the array associated with the specified key. If there is no value associated with the key, the type \"invalid\" is returned.",
- "returnType": "Dynamic"
- },
- {
- "description": "Same as the [Lookup()](#lookupkey-as-string-as-dynamic) method except that the key comparison is always case insensitive, regardless of the case mode.",
- "name": "LookupCI",
- "params": [
- {
- "default": null,
- "description": "The key (case-insensitive) associated with the value to be retrieved from the associative array.",
- "isRequired": true,
- "name": "key",
- "type": "String"
- }
- ],
- "returnDescription": "Returns the value in the array associated with the specified key. If there is no value associated with the key, the type \"invalid\" is returned.",
- "returnType": "Dynamic"
- },
- {
- "description": "Makes all subsequent associative array lookups case sensitive (by default, lookups are case insensitive).",
- "name": "SetModeCaseSensitive",
- "params": [],
- "returnType": "Void"
- }
- ],
- "name": "ifAssociativeArray",
- "properties": [],
- "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifassociativearray.md"
- },
- "ifaudioguide": {
- "description": "> Please note this component is only available on the following devices: Roku Streaming Stick (3600X), Roku Express (3700X) and Express+ (3710X), Roku Premiere (4620X) and Premiere+ (4630X), Roku Ultra (4640X), and any Roku TV running Roku OS version 7.5 and later.",
- "implementers": [
- {
- "description": "Returns information about the application",
- "name": "roAudioGuide",
- "url": "https://developer.roku.com/docs/references/brightscript/components/roaudioguide.md"
- }
- ],
- "methods": [
- {
- "description": "Interrupts and stops any current text to speech spoken string, to be used when the application does not want the text to speech to continue.",
- "name": "Flush",
- "params": [],
- "returnType": "Void"
- },
- {
- "description": "Returns an ID for the spoken string to notify observer callbacks about a specific spoken string. This ID can be used with the [roTextToSpeechEvent](https://developer.roku.com/docs/references/brightscript/events/rotexttospeechevent.md\"roTextToSpeechEvent\").This method will automatically split up text to reduce lag. Due to this automatic splitting, the roTextToSpeechEvent 0 (\"Started speech\") event for the returned ID may not be sent until later than expected. The roTextToSpeechEvents 1 (\"Speech has completed\") and 2 (\"Speech has been flushed\") events are sent at the expected times.",
- "name": "Say",
- "params": [
- {
- "default": null,
- "description": "The string to be spoken.",
- "isRequired": true,
- "name": "text",
- "type": "String"
- },
- {
- "default": null,
- "description": "Set to true to make the Audio Guide immediately stop speaking any other speech before speaking. Set to false to make the Audio Guide wait until any current speech is done before speaking.",
- "isRequired": true,
- "name": "flushSpeech",
- "type": "Boolean"
- },
- {
- "default": null,
- "description": "Set to true to ignore calls to the say() method with the same text. Set to false to speak when calls to the say() method are sent with the same text.",
- "isRequired": true,
- "name": "dontRepeat",
- "type": "Boolean"
- }
- ],
- "returnDescription": "An ID associated with the spoken string to be used to notify observer callbacks.",
- "returnType": "Integer"
- },
- {
- "description": "If Audio Guide is enabled, causes text to speech to continue to suppress any application background sound for the amount of time specified by duration (in milliseconds).This can be used to add clarity for longer spoken text that may have pauses that might otherwise allow application background sound to be heard. This method does nothing if Audio Guide is currently disabled.",
- "name": "Silence",
- "params": [
- {
- "default": null,
- "description": "The number of milliseconds to suppress application background sounds.",
- "isRequired": true,
- "name": "duration",
- "type": "Integer"
- }
- ],
- "returnDescription": "The number of milliseconds that the background sound has been silenced.",
- "returnType": "Integer"
- }
- ],
- "name": "ifAudioGuide",
- "properties": [],
- "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifaudioguide.md"
- },
- "ifaudiometadata": {
- "implementers": [
- {
- "description": "This component provides developers access to audio file metadata included in many audio files",
- "name": "roAudioMetadata",
- "url": "https://developer.roku.com/docs/references/brightscript/components/roaudiometadata.md"
- }
- ],
- "methods": [
- {
- "description": "Returns an associative array with a simple set of audio properties.",
- "name": "GetAudioProperties",
- "params": [],
- "returnDescription": "An associative array that may be set to one of the following values (these are values that may involve reading a larger portion of the file and thus may take longer to retrieve than tags):",
- "returnType": "Object"
- },
- {
- "description": "Returns the cover art, if available.",
- "name": "GetCoverArt",
- "params": [],
- "returnDescription": "An associative array with two entries: \"bytes\" and \"type\".",
- "returnType": "Object"
- },
- {
- "description": "Returns an associative array that contains a simple set of tags that are common to most audio formats.",
- "name": "GetTags",
- "params": [],
- "returnDescription": "An associative array that may be set to one of the following values:",
- "returnType": "Object"
- },
- {
- "description": "Sets the URL to the audio file. Only file URLs are initially supported",
- "name": "SetUrl",
- "params": [
- {
- "default": null,
- "description": "The URL of the audio file.",
- "isRequired": true,
- "name": "url",
- "type": "String"
- }
- ],
- "returnType": "Void"
- }
- ],
- "name": "ifAudioMetaData",
- "properties": [],
- "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifaudiometadata.md"
- },
- "ifaudioplayer": {
- "implementers": [
- {
- "description": "The Audio Player object provides the ability to setup the playing of a series of audio streams",
- "name": "roAudioMetadata",
- "url": "https://developer.roku.com/docs/references/brightscript/components/roaudiometadata.md"
- }
- ],
- "methods": [
- {
- "description": "Adds a new ContentMetaData item to the end of the content list for the Audio Player.",
- "name": "AddContent",
- "params": [
- {
- "default": null,
- "description": "The new ContentMetaData item to be added to the content list.",
- "isRequired": true,
- "name": "contentItem",
- "type": "Object"
- }
- ],
- "returnType": "Void"
- },
- {
- "description": "Clears the content list.",
- "name": "ClearContent",
- "params": [],
- "returnType": "Void"
- },
- {
- "description": "Puts the Audio Player into pause mode. It is an error to Pause if player is not in play mode.",
- "name": "Pause",
- "params": [],
- "returnDescription": "A flag indicating whether the Audio Player was successfully set to pause mode.",
- "returnType": "Boolean"
- },
- {
- "description": "Puts the Audio Player into play mode starting at the current item in the Content List. This will stop any currently playing content.",
- "name": "Play",
- "params": [],
- "returnDescription": "A flag indicating whether the Audio Player was successfully set to play mode.",
- "returnType": "Boolean"
- },
- {
- "description": "Puts the Audio Player into play mode starting from the pause point. It is an error to Resume if the player is not in pause mode.",
- "name": "Resume",
- "params": [],
- "returnDescription": "A flag indicating whether the Audio Player was successfully set to play mode.",
- "returnType": "Boolean"
- },
- {
- "description": "Set the start point of playback for the current item to offsetMs milliseconds.",
- "name": "Seek",
- "params": [
- {
- "default": null,
- "description": "The offset to be used to determine the start point of the current content item.",
- "isRequired": true,
- "name": "offsetMs",
- "type": "Integer"
- }
- ],
- "returnDescription": "A flag indicating whether the Audio Player was successfully set to the specified offset.",
- "returnType": "Boolean"
- },
- {
- "description": "Sets the content list to be played by the Audio Player.",
- "name": "SetContentList",
- "params": [
- {
- "default": null,
- "isRequired": true,
- "name": "contentList",
- "type": "Object"
- }
- ],
- "returnType": "Void"
- },
- {
- "description": "Enables/disables the automatic replaying of the Content List.",
- "name": "SetLoop",
- "params": [
- {
- "default": null,
- "description": "Set to true to have the Audio Player automatically begin playing the first item in the content list after playing the last item. Set to false to have the Audio Player stop after playing the last item in the content list.",
- "isRequired": true,
- "name": "enable",
- "type": "Boolean"
- }
- ],
- "returnType": "Void"
- },
- {
- "description": "Sets the next item in the Content List to be played.",
- "name": "SetNext",
- "params": [
- {
- "default": null,
- "description": "Item is the zero-based index of the item in the content list. This item will be played after the currently playing item finishes.",
- "isRequired": true,
- "name": "item",
- "type": "Integer"
- }
- ],
- "returnType": "Void"
- },
- {
- "description": "Specifies the timedMetaData keys that the channel is interested in receiving from the timedMetaData event.",
- "name": "SetTimedMetaDataForKeys",
- "params": [
- {
- "default": null,
- "description": "The set of keys to be received from the timedMetaData event. If the keys array is empty, all the timed metadata associated with the current stream is sent with the isTimedMetaData event. If the keys array is invalid, then do not return any keys to the BrightScript channel. Any keys not specified with this method are deleted by the Roku OS and never returned to the BrightScript application.",
- "isRequired": true,
- "name": "keys",
- "type": "Dynamic"
- }
- ],
- "returnType": "Void"
- },
- {
- "description": "Stops the Audio Player from playing or pausing and cleanup.",
- "name": "Stop",
- "params": [],
- "returnDescription": "A flag indicating whether the Audio Player was successfully stopped.",
- "returnType": "Boolean"
- }
- ],
- "name": "ifAudioPlayer",
- "properties": [],
- "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifaudioplayer.md"
- },
- "ifaudioresource": {
- "implementers": [
- {
- "description": "The roAudioResouce allows .wav files to be cached to memory and quickly played at any time",
- "name": "roAudioResource",
- "url": "https://developer.roku.com/docs/references/brightscript/components/roaudioresource.md"
- }
- ],
- "methods": [
- {
- "description": "Returns an [roAssociativeArray](https://developer.roku.com/docs/references/brightscript/components/roassociativearray.md\"roAssociativeArray\") array containing the indicated metadata parameters about the audio resource.",
- "name": "GetMetaData",
- "params": [],
- "returnDescription": "An associative array with the following integer values:",
- "returnType": "Object"
- },
- {
- "description": "Checks whether this audio resource is currently playing.",
- "name": "IsPlaying",
- "params": [],
- "returnDescription": "A flag indicating whether the calling audio resource is playing.",
- "returnType": "Boolean"
- },
- {
- "description": "Returns the device-dependent maximum number of audio streams that can be mixed together and presented simultaneously.",
- "name": "MaxSimulStreams",
- "params": [],
- "returnDescription": "Typically, 1-2.",
- "returnType": "Integer"
- },
- {
- "description": "Stops playing the audio resource. If the resource is not currently playing, has no effect.",
- "name": "Stop",
- "params": [],
- "returnType": "Void"
- },
- {
- "description": "This method triggers the start of the audio resource sound playback. The effect of Trigger(volume) is identical to Trigger(volume, 0).",
- "name": "Trigger",
- "params": [
- {
- "default": null,
- "description": "The volume is a number between 0 and 100 (percentage of full volume). A value of 50 should be used for normal volume.",
- "isRequired": true,
- "name": "volume",
- "type": "Integer"
- }
- ],
- "returnType": "Void"
- },
- {
- "description": "Triggers the start of the audio resource sound playback. This method will interrupt any playing sound when the index is the same. It will mix with any playing sound if the index is different.",
- "name": "Trigger",
- "params": [
- {
- "default": null,
- "description": "The volume is a number between 0 and 100 (percentage of full volume). 50 should be used for normal volume.",
- "isRequired": true,
- "name": "volume",
- "type": "Integer"
- },
- {
- "default": null,
- "description": "The index is a value between 0 and [MaxSimulStreams()](#maxsimulstreams-as-integer) allowing for multiple sounds to be mixed.",
- "isRequired": true,
- "name": "index",
- "type": "Integer"
- }
- ],
- "returnType": "Void"
- }
- ],
- "name": "ifAudioResource",
- "properties": [],
- "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifaudioresource.md"
- },
- "ifboolean": {
- "description": "Interface equivalent for intrinsic type Boolean.",
- "implementers": [
- {
- "description": "Object equivalent for intrinsic type Boolean",
- "name": "roBoolean",
- "url": "https://developer.roku.com/docs/references/brightscript/components/roboolean.md"
- }
- ],
- "methods": [
- {
- "description": "Gets the boolean value stored in the calling boolean object.",
- "name": "GetBoolean",
- "params": [],
- "returnDescription": "The boolean value stored in the calling boolean object.",
- "returnType": "Boolean"
- },
- {
- "description": "Sets the calling boolean object to the specified true/false value.",
- "name": "SetBoolean",
- "params": [
- {
- "default": null,
- "description": "True/false.",
- "isRequired": true,
- "name": "value",
- "type": "Boolean"
- }
- ],
- "returnType": "Void"
- }
- ],
- "name": "ifBoolean",
- "properties": [],
- "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifboolean.md"
- },
- "ifbytearray": {
- "implementers": [
- {
- "description": "The byte array component is used to contain and manipulate an arbitrary array of bytes",
- "name": "roByteArray",
- "url": "https://developer.roku.com/docs/references/brightscript/components/robytearray.md"
- }
- ],
- "methods": [
- {
- "description": "Appends the contents of the Byte Array to the specified file.",
- "name": "AppendFile",
- "params": [
- {
- "default": null,
- "description": "The path to the file to be appended to the ByteArray.",
- "isRequired": true,
- "name": "path",
- "type": "String"
- }
- ],
- "returnDescription": "A flag indicating whether the file was successfully appended to the calling ByteArray.",
- "returnType": "Boolean"
- },
- {
- "description": "Appends the contents of the Byte Array to the specified file.",
- "name": "AppendFile",
- "params": [
- {
- "default": null,
- "description": "The path to the file to be appended to the Byte Array.",
- "isRequired": true,
- "name": "path",
- "type": "String"
- },
- {
- "default": null,
- "description": "The position in the file from which to start appending bytes.",
- "isRequired": true,
- "name": "start_pos",
- "type": "Integer"
- },
- {
- "default": null,
- "description": "The length of the bytes to be appended to the Byte Array, starting from the specified starting position.",
- "isRequired": true,
- "name": "length",
- "type": "Integer"
- }
- ],
- "returnDescription": "A flag indicating whether the file was successfully appended to the calling ByteArray.",
- "returnType": "Boolean"
- },
- {
- "description": "Sets the contents of the Byte Array to the specified string using UTF-8 encoding. Any data currently in the Byte Array is discarded.",
- "name": "FromAsciiString",
- "params": [
- {
- "default": null,
- "description": "The string to which the ByteArray is to be set.",
- "isRequired": true,
- "name": "s",
- "type": "String"
- }
- ],
- "returnType": "Void"
- },
- {
- "description": "Sets the contents of the Byte Array to the specified value. Any data currently in the Byte Array is discarded.",
- "name": "FromBase64String",
- "params": [
- {
- "default": null,
- "description": "A valid base-64 encoding",
- "isRequired": true,
- "name": "s",
- "type": "String"
- }
- ],
- "returnType": "Void"
- },
- {
- "description": "Sets the contents of the Byte Array to the specified value. Any data currently in the Byte Array is discarded.",
- "name": "FromHexString",
- "params": [
- {
- "default": null,
- "description": "An even number of hexadecimal digits. The string must contain valid hexadecimal digits, or the result is undefined",
- "isRequired": true,
- "name": "hexstring",
- "type": "String"
- }
- ],
- "returnType": "Void"
- },
- {
- "description": "Calculates a CRC-32 of the contents of the Byte Array.",
- "name": "GetCRC32",
- "params": [],
- "returnDescription": "The calculated CRC-32 checksum.",
- "returnType": "Integer"
- },
- {
- "description": "Calculates a CRC-32 of a subset of bytes within the Byte Array.",
- "name": "GetCRC32",
- "params": [
- {
- "default": null,
- "description": "The starting index of the subset of bytes to be used in the CRC-32 calculation.",
- "isRequired": true,
- "name": "start",
- "type": "Integer"
- },
- {
- "default": null,
- "description": "The length of the bytes to be included.",
- "isRequired": true,
- "name": "length",
- "type": "Integer"
- }
- ],
- "returnDescription": "The calculated CRC-32 checksum.",
- "returnType": "Integer"
- },
- {
- "description": "Returns the signed byte at the specified zero-based index in the Byte ArrayUse the [ifArrayGet.GetEntry()](https://developer.roku.com/docs/references/brightscript/interfaces/ifarrayget.mdgetentryindex-as-integer-as-dynamic) method or the \\[ \\] array operator to read an unsigned byte in the Byte Array.",
- "name": "GetSignedByte",
- "params": [
- {
- "default": null,
- "description": "The index of the signed byte to be returned.",
- "isRequired": true,
- "name": "index",
- "type": "Integer"
- }
- ],
- "returnDescription": "The signed byte at the specified zero-based index in the Byte Array.",
- "returnType": "Integer"
- },
- {
- "description": "Returns the signed long (four bytes) starting at the specified zero-based index in the Byte Array.",
- "name": "GetSignedLong",
- "params": [
- {
- "default": null,
- "description": "The index of the ByteArray from which to start retrieving the signed long.",
- "isRequired": true,
- "name": "index",
- "type": "Integer"
- }
- ],
- "returnDescription": "A signed long.",
- "returnType": "Integer"
- },
- {
- "description": "Returns true if the CPU architecture is little-endian.",
- "name": "IsLittleEndianCPU",
- "params": [],
- "returnDescription": "A flag indicating whether the CPU architecture is little-endian.",
- "returnType": "Boolean"
- },
- {
- "description": "Reads the specified file into the Byte Array. Any data currently in the Byte Array is discarded.",
- "name": "ReadFile",
- "params": [
- {
- "default": null,
- "description": "The path to the file to be read.",
- "isRequired": true,
- "name": "path",
- "type": "String"
- }
- ],
- "returnDescription": "A flag indicating whether the bytes were successfully read into the Byte Array.",
- "returnType": "Boolean"
- },
- {
- "description": "Reads the specified file into the Byte Array. Any data currently in the Byte Array is discarded.",
- "name": "ReadFile",
- "params": [
- {
- "default": null,
- "description": "The path to the file to be read.",
- "isRequired": true,
- "name": "path",
- "type": "String"
- },
- {
- "default": null,
- "description": "The index of the file from which to start reading bytes.",
- "isRequired": true,
- "name": "start_pos",
- "type": "Integer"
- },
- {
- "default": null,
- "description": "The length of the bytes to be read from the file, starting from the specified starting position.",
- "isRequired": true,
- "name": "length",
- "type": "Integer"
- }
- ],
- "returnDescription": "A flag indicating whether the bytes were successfully read into the Byte Array.",
- "returnType": "Boolean"
- },
- {
- "description": "If the size of the Byte Array is less than min\\_size, expands the Byte Array to min\\_size. Also sets the auto-resize attribute of the Byte Array to the specified value.",
- "name": "SetResize",
- "params": [
- {
- "default": null,
- "description": "The minimum size to which the calling Byte Array is to be expanded.",
- "isRequired": true,
- "name": "min_size",
- "type": "Integer"
- },
- {
- "default": null,
- "description": "A flag specifying whether auto resize is enabled on the calling Byte Array.",
- "isRequired": true,
- "name": "auto_resize",
- "type": "Boolean"
- }
- ],
- "returnType": "Void"
- },
- {
- "description": "Returns the contents of the Byte Array as a string. The contents must be valid UTF-8 (or ASCII subset), or the result is undefined",
- "name": "ToAsciiString",
- "params": [],
- "returnDescription": "A String containing the contents of the ByteArray.",
- "returnType": "String"
- },
- {
- "description": "Returns a base-64 string representing the contents of the Byte Array.",
- "name": "ToBase64String",
- "params": [],
- "returnDescription": "A base-64 string representing the contents of the Byte Array.",
- "returnType": "String"
- },
- {
- "description": "Returns a hexadecimal string representing the contents of the Byte Array, two digits per byte.",
- "name": "ToHexString",
- "params": [],
- "returnDescription": "A hexadecimal string.",
- "returnType": "String"
- },
- {
- "description": "Writes the bytes contained in the Byte Array to the specified file.",
- "name": "WriteFile",
- "params": [
- {
- "default": null,
- "description": "The path to the file to which the bytes are to be written.",
- "isRequired": true,
- "name": "path",
- "type": "String"
- }
- ],
- "returnDescription": "A flag indicating whether the bytes were successfully written to the file.",
- "returnType": "Boolean"
- },
- {
- "description": "Writes a subset of the bytes contained in the Byte Array to the specified file.",
- "name": "WriteFile",
- "params": [
- {
- "default": null,
- "description": "The path to the file to which the bytes are to be written.",
- "isRequired": true,
- "name": "path",
- "type": "String"
- },
- {
- "default": null,
- "description": "The index of the calling ByteArray from which to start writing bytes.",
- "isRequired": true,
- "name": "start_index",
- "type": "Integer"
- },
- {
- "default": null,
- "description": "The length of the bytes to be written to the file, starting from the specified index.",
- "isRequired": true,
- "name": "length",
- "type": "Integer"
- }
- ],
- "returnDescription": "A flag indicating whether the bytes were successfully written to the file.",
- "returnType": "Boolean"
- }
- ],
- "name": "ifByteArray",
- "properties": [],
- "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifbytearray.md"
- },
- "ifcaptionrenderer": {
- "description": "> This component is no longer updated and will be deprecated on January 1st, 2019.Beginning July 1st, 2017, any new channels using this component will be rejected during certification.Beginning January 1st, 2018, any updates to existing channels using this component will be rejected during certification.",
- "implementers": [
- {
- "description": "Returns information about the application",
- "name": "roCaptionRenderer",
- "url": "https://developer.roku.com/docs/references/brightscript/components/rocaptionrenderer.md"
- }
- ],
- "methods": [
- {
- "description": "The ChangeSubtitleTrack function is used to change the caption source after playback has begun.",
- "name": "ChangeSubtitleTrack",
- "params": [
- {
- "default": null,
- "description": "One of the 608 channels or ttml text tracks to be selected. The 608 channels are specified as 'eia608/' where is 1, 2, 3, or 4. The ttml text tracks are specified as 'ism/