91829 lines
5.5 MiB
91829 lines
5.5 MiB
<html><body>
|
|
<style>
|
|
|
|
body, h1, h2, h3, div, span, p, pre, a {
|
|
margin: 0;
|
|
padding: 0;
|
|
border: 0;
|
|
font-weight: inherit;
|
|
font-style: inherit;
|
|
font-size: 100%;
|
|
font-family: inherit;
|
|
vertical-align: baseline;
|
|
}
|
|
|
|
body {
|
|
font-size: 13px;
|
|
padding: 1em;
|
|
}
|
|
|
|
h1 {
|
|
font-size: 26px;
|
|
margin-bottom: 1em;
|
|
}
|
|
|
|
h2 {
|
|
font-size: 24px;
|
|
margin-bottom: 1em;
|
|
}
|
|
|
|
h3 {
|
|
font-size: 20px;
|
|
margin-bottom: 1em;
|
|
margin-top: 1em;
|
|
}
|
|
|
|
pre, code {
|
|
line-height: 1.5;
|
|
font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
|
|
}
|
|
|
|
pre {
|
|
margin-top: 0.5em;
|
|
}
|
|
|
|
h1, h2, h3, p {
|
|
font-family: Arial, sans serif;
|
|
}
|
|
|
|
h1, h2, h3 {
|
|
border-bottom: solid #CCC 1px;
|
|
}
|
|
|
|
.toc_element {
|
|
margin-top: 0.5em;
|
|
}
|
|
|
|
.firstline {
|
|
margin-left: 2 em;
|
|
}
|
|
|
|
.method {
|
|
margin-top: 1em;
|
|
border: solid 1px #CCC;
|
|
padding: 1em;
|
|
background: #EEE;
|
|
}
|
|
|
|
.details {
|
|
font-weight: bold;
|
|
font-size: 14px;
|
|
}
|
|
|
|
</style>
|
|
|
|
<h1><a href="sheets_v4.html">Google Sheets API</a> . <a href="sheets_v4.spreadsheets.html">spreadsheets</a></h1>
|
|
<h2>Instance Methods</h2>
|
|
<p class="toc_element">
|
|
<code><a href="sheets_v4.spreadsheets.developerMetadata.html">developerMetadata()</a></code>
|
|
</p>
|
|
<p class="firstline">Returns the developerMetadata Resource.</p>
|
|
|
|
<p class="toc_element">
|
|
<code><a href="sheets_v4.spreadsheets.sheets.html">sheets()</a></code>
|
|
</p>
|
|
<p class="firstline">Returns the sheets Resource.</p>
|
|
|
|
<p class="toc_element">
|
|
<code><a href="sheets_v4.spreadsheets.values.html">values()</a></code>
|
|
</p>
|
|
<p class="firstline">Returns the values Resource.</p>
|
|
|
|
<p class="toc_element">
|
|
<code><a href="#batchUpdate">batchUpdate(spreadsheetId, body, x__xgafv=None)</a></code></p>
|
|
<p class="firstline">Applies one or more updates to the spreadsheet.</p>
|
|
<p class="toc_element">
|
|
<code><a href="#create">create(body, x__xgafv=None)</a></code></p>
|
|
<p class="firstline">Creates a spreadsheet, returning the newly created spreadsheet.</p>
|
|
<p class="toc_element">
|
|
<code><a href="#get">get(spreadsheetId, ranges=None, includeGridData=None, x__xgafv=None)</a></code></p>
|
|
<p class="firstline">Returns the spreadsheet at the given ID.</p>
|
|
<p class="toc_element">
|
|
<code><a href="#getByDataFilter">getByDataFilter(spreadsheetId, body, x__xgafv=None)</a></code></p>
|
|
<p class="firstline">Returns the spreadsheet at the given ID.</p>
|
|
<h3>Method Details</h3>
|
|
<div class="method">
|
|
<code class="details" id="batchUpdate">batchUpdate(spreadsheetId, body, x__xgafv=None)</code>
|
|
<pre>Applies one or more updates to the spreadsheet.
|
|
|
|
Each request is validated before
|
|
being applied. If any request is not valid then the entire request will
|
|
fail and nothing will be applied.
|
|
|
|
Some requests have replies to
|
|
give you some information about how
|
|
they are applied. The replies will mirror the requests. For example,
|
|
if you applied 4 updates and the 3rd one had a reply, then the
|
|
response will have 2 empty replies, the actual reply, and another empty
|
|
reply, in that order.
|
|
|
|
Due to the collaborative nature of spreadsheets, it is not guaranteed that
|
|
the spreadsheet will reflect exactly your changes after this completes,
|
|
however it is guaranteed that the updates in the request will be
|
|
applied together atomically. Your changes may be altered with respect to
|
|
collaborator changes. If there are no collaborators, the spreadsheet
|
|
should reflect your changes.
|
|
|
|
Args:
|
|
spreadsheetId: string, The spreadsheet to apply the updates to. (required)
|
|
body: object, The request body. (required)
|
|
The object takes the form of:
|
|
|
|
{ # The request for updating any aspect of a spreadsheet.
|
|
"responseRanges": [ # Limits the ranges included in the response spreadsheet.
|
|
# Meaningful only if include_spreadsheet_response is 'true'.
|
|
"A String",
|
|
],
|
|
"includeSpreadsheetInResponse": True or False, # Determines if the update response should include the spreadsheet
|
|
# resource.
|
|
"responseIncludeGridData": True or False, # True if grid data should be returned. Meaningful only if
|
|
# if include_spreadsheet_in_response is 'true'.
|
|
# This parameter is ignored if a field mask was set in the request.
|
|
"requests": [ # A list of updates to apply to the spreadsheet.
|
|
# Requests will be applied in the order they are specified.
|
|
# If any request is not valid, no requests will be applied.
|
|
{ # A single kind of update to apply to a spreadsheet.
|
|
"duplicateFilterView": { # Duplicates a particular filter view. # Duplicates a filter view.
|
|
"filterId": 42, # The ID of the filter being duplicated.
|
|
},
|
|
"sortRange": { # Sorts data in rows based on a sort order per column. # Sorts data in a range.
|
|
"range": { # A range on a sheet. # The range to sort.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
"sortSpecs": [ # The sort order per column. Later specifications are used when values
|
|
# are equal in the earlier specifications.
|
|
{ # A sort order associated with a specific column or row.
|
|
"sortOrder": "A String", # The order data should be sorted.
|
|
"dimensionIndex": 42, # The dimension the sort should be applied to.
|
|
},
|
|
],
|
|
},
|
|
"textToColumns": { # Splits a column of text into multiple columns, # Converts a column of text into many columns of text.
|
|
# based on a delimiter in each cell.
|
|
"source": { # A range on a sheet. # The source data range. This must span exactly one column.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
"delimiter": "A String", # The delimiter to use. Used only if delimiterType is
|
|
# CUSTOM.
|
|
"delimiterType": "A String", # The delimiter type to use.
|
|
},
|
|
"updateEmbeddedObjectPosition": { # Update an embedded object's position (such as a moving or resizing a # Updates an embedded object's (e.g. chart, image) position.
|
|
# chart or image).
|
|
"newPosition": { # The position of an embedded object such as a chart. # An explicit position to move the embedded object to.
|
|
# If newPosition.sheetId is set,
|
|
# a new sheet with that ID will be created.
|
|
# If newPosition.newSheet is set to true,
|
|
# a new sheet will be created with an ID that will be chosen for you.
|
|
"newSheet": True or False, # If true, the embedded object is put on a new sheet whose ID
|
|
# is chosen for you. Used only when writing.
|
|
"sheetId": 42, # The sheet this is on. Set only if the embedded object
|
|
# is on its own sheet. Must be non-negative.
|
|
"overlayPosition": { # The location an object is overlaid on top of a grid. # The position at which the object is overlaid on top of a grid.
|
|
"anchorCell": { # A coordinate in a sheet. # The cell the object is anchored to.
|
|
# All indexes are zero-based.
|
|
"rowIndex": 42, # The row index of the coordinate.
|
|
"columnIndex": 42, # The column index of the coordinate.
|
|
"sheetId": 42, # The sheet this coordinate is on.
|
|
},
|
|
"widthPixels": 42, # The width of the object, in pixels. Defaults to 600.
|
|
"offsetYPixels": 42, # The vertical offset, in pixels, that the object is offset
|
|
# from the anchor cell.
|
|
"offsetXPixels": 42, # The horizontal offset, in pixels, that the object is offset
|
|
# from the anchor cell.
|
|
"heightPixels": 42, # The height of the object, in pixels. Defaults to 371.
|
|
},
|
|
},
|
|
"fields": "A String", # The fields of OverlayPosition
|
|
# that should be updated when setting a new position. Used only if
|
|
# newPosition.overlayPosition
|
|
# is set, in which case at least one field must
|
|
# be specified. The root `newPosition.overlayPosition` is implied and
|
|
# should not be specified.
|
|
# A single `"*"` can be used as short-hand for listing every field.
|
|
"objectId": 42, # The ID of the object to moved.
|
|
},
|
|
"addFilterView": { # Adds a filter view. # Adds a filter view.
|
|
"filter": { # A filter view. # The filter to add. The filterViewId
|
|
# field is optional; if one is not set, an id will be randomly generated. (It
|
|
# is an error to specify the ID of a filter that already exists.)
|
|
"title": "A String", # The name of the filter view.
|
|
"namedRangeId": "A String", # The named range this filter view is backed by, if any.
|
|
#
|
|
# When writing, only one of range or named_range_id
|
|
# may be set.
|
|
"filterViewId": 42, # The ID of the filter view.
|
|
"range": { # A range on a sheet. # The range this filter view covers.
|
|
#
|
|
# When writing, only one of range or named_range_id
|
|
# may be set.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
"sortSpecs": [ # The sort order per column. Later specifications are used when values
|
|
# are equal in the earlier specifications.
|
|
{ # A sort order associated with a specific column or row.
|
|
"sortOrder": "A String", # The order data should be sorted.
|
|
"dimensionIndex": 42, # The dimension the sort should be applied to.
|
|
},
|
|
],
|
|
"criteria": { # The criteria for showing/hiding values per column.
|
|
# The map's key is the column index, and the value is the criteria for
|
|
# that column.
|
|
"a_key": { # Criteria for showing/hiding rows in a filter or filter view.
|
|
"hiddenValues": [ # Values that should be hidden.
|
|
"A String",
|
|
],
|
|
"condition": { # A condition that can evaluate to true or false. # A condition that must be true for values to be shown.
|
|
# (This does not override hiddenValues -- if a value is listed there,
|
|
# it will still be hidden.)
|
|
# BooleanConditions are used by conditional formatting,
|
|
# data validation, and the criteria in filters.
|
|
"values": [ # The values of the condition. The number of supported values depends
|
|
# on the condition type. Some support zero values,
|
|
# others one or two values,
|
|
# and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
|
|
{ # The value of the condition.
|
|
"relativeDate": "A String", # A relative date (based on the current date).
|
|
# Valid only if the type is
|
|
# DATE_BEFORE,
|
|
# DATE_AFTER,
|
|
# DATE_ON_OR_BEFORE or
|
|
# DATE_ON_OR_AFTER.
|
|
#
|
|
# Relative dates are not supported in data validation.
|
|
# They are supported only in conditional formatting and
|
|
# conditional filters.
|
|
"userEnteredValue": "A String", # A value the condition is based on.
|
|
# The value is parsed as if the user typed into a cell.
|
|
# Formulas are supported (and must begin with an `=` or a '+').
|
|
},
|
|
],
|
|
"type": "A String", # The type of condition.
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
"updateConditionalFormatRule": { # Updates a conditional format rule at the given index, # Updates an existing conditional format rule.
|
|
# or moves a conditional format rule to another index.
|
|
"index": 42, # The zero-based index of the rule that should be replaced or moved.
|
|
"rule": { # A rule describing a conditional format. # The rule that should replace the rule at the given index.
|
|
"ranges": [ # The ranges that are formatted if the condition is true.
|
|
# All the ranges must be on the same grid.
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
"booleanRule": { # A rule that may or may not match, depending on the condition. # The formatting is either "on" or "off" according to the rule.
|
|
"condition": { # A condition that can evaluate to true or false. # The condition of the rule. If the condition evaluates to true,
|
|
# the format is applied.
|
|
# BooleanConditions are used by conditional formatting,
|
|
# data validation, and the criteria in filters.
|
|
"values": [ # The values of the condition. The number of supported values depends
|
|
# on the condition type. Some support zero values,
|
|
# others one or two values,
|
|
# and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
|
|
{ # The value of the condition.
|
|
"relativeDate": "A String", # A relative date (based on the current date).
|
|
# Valid only if the type is
|
|
# DATE_BEFORE,
|
|
# DATE_AFTER,
|
|
# DATE_ON_OR_BEFORE or
|
|
# DATE_ON_OR_AFTER.
|
|
#
|
|
# Relative dates are not supported in data validation.
|
|
# They are supported only in conditional formatting and
|
|
# conditional filters.
|
|
"userEnteredValue": "A String", # A value the condition is based on.
|
|
# The value is parsed as if the user typed into a cell.
|
|
# Formulas are supported (and must begin with an `=` or a '+').
|
|
},
|
|
],
|
|
"type": "A String", # The type of condition.
|
|
},
|
|
"format": { # The format of a cell. # The format to apply.
|
|
# Conditional formatting can only apply a subset of formatting:
|
|
# bold, italic,
|
|
# strikethrough,
|
|
# foreground color &
|
|
# background color.
|
|
"numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
|
|
"pattern": "A String", # Pattern string used for formatting. If not set, a default pattern based on
|
|
# the user's locale will be used if necessary for the given type.
|
|
# See the [Date and Number Formats guide](/sheets/api/guides/formats) for
|
|
# more information about the supported patterns.
|
|
"type": "A String", # The type of the number format.
|
|
# When writing, this field must be set.
|
|
},
|
|
"textDirection": "A String", # The direction of the text in the cell.
|
|
"padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
|
|
# When updating padding, every field must be specified.
|
|
"top": 42, # The top padding of the cell.
|
|
"left": 42, # The left padding of the cell.
|
|
"right": 42, # The right padding of the cell.
|
|
"bottom": 42, # The bottom padding of the cell.
|
|
},
|
|
"horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
|
|
"backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"verticalAlignment": "A String", # The vertical alignment of the value in the cell.
|
|
"borders": { # The borders of the cell. # The borders of the cell.
|
|
"top": { # A border along a cell. # The top border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"right": { # A border along a cell. # The right border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"bottom": { # A border along a cell. # The bottom border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"left": { # A border along a cell. # The left border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
},
|
|
"textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell
|
|
"angle": 42, # The angle between the standard orientation and the desired orientation.
|
|
# Measured in degrees. Valid values are between -90 and 90. Positive
|
|
# angles are angled upwards, negative are angled downwards.
|
|
#
|
|
# Note: For LTR text direction positive angles are in the
|
|
# counterclockwise direction, whereas for RTL they are in the clockwise
|
|
# direction
|
|
"vertical": True or False, # If true, text reads top to bottom, but the orientation of individual
|
|
# characters is unchanged.
|
|
# For example:
|
|
#
|
|
# | V |
|
|
# | e |
|
|
# | r |
|
|
# | t |
|
|
# | i |
|
|
# | c |
|
|
# | a |
|
|
# | l |
|
|
},
|
|
"hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
|
|
"textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
"wrapStrategy": "A String", # The wrap strategy for the value in the cell.
|
|
},
|
|
},
|
|
"gradientRule": { # A rule that applies a gradient color scale format, based on # The formatting will vary based on the gradients in the rule.
|
|
# the interpolation points listed. The format of a cell will vary
|
|
# based on its contents as compared to the values of the interpolation
|
|
# points.
|
|
"maxpoint": { # A single interpolation point on a gradient conditional format. # The final interpolation point.
|
|
# These pin the gradient color scale according to the color,
|
|
# type and value chosen.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"type": "A String", # How the value should be interpreted.
|
|
"value": "A String", # The value this interpolation point uses. May be a formula.
|
|
# Unused if type is MIN or
|
|
# MAX.
|
|
},
|
|
"midpoint": { # A single interpolation point on a gradient conditional format. # An optional midway interpolation point.
|
|
# These pin the gradient color scale according to the color,
|
|
# type and value chosen.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"type": "A String", # How the value should be interpreted.
|
|
"value": "A String", # The value this interpolation point uses. May be a formula.
|
|
# Unused if type is MIN or
|
|
# MAX.
|
|
},
|
|
"minpoint": { # A single interpolation point on a gradient conditional format. # The starting interpolation point.
|
|
# These pin the gradient color scale according to the color,
|
|
# type and value chosen.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"type": "A String", # How the value should be interpreted.
|
|
"value": "A String", # The value this interpolation point uses. May be a formula.
|
|
# Unused if type is MIN or
|
|
# MAX.
|
|
},
|
|
},
|
|
},
|
|
"sheetId": 42, # The sheet of the rule to move. Required if new_index is set,
|
|
# unused otherwise.
|
|
"newIndex": 42, # The zero-based new index the rule should end up at.
|
|
},
|
|
"updateDimensionGroup": { # Updates the state of the specified group. # Updates the state of the specified group.
|
|
"fields": "A String", # The fields that should be updated. At least one field must be specified.
|
|
# The root `dimensionGroup` is implied and should not be specified.
|
|
# A single `"*"` can be used as short-hand for listing every field.
|
|
"dimensionGroup": { # A group over an interval of rows or columns on a sheet, which can contain or # The group whose state should be updated. The range and depth of the group
|
|
# should specify a valid group on the sheet, and all other fields updated.
|
|
# be contained within other groups. A group can be collapsed or expanded as a
|
|
# unit on the sheet.
|
|
"range": { # A range along a single dimension on a sheet. # The range over which this group exists.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open: the start index is inclusive
|
|
# and the end index is exclusive.
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
"endIndex": 42, # The end (exclusive) of the span, or not set if unbounded.
|
|
"startIndex": 42, # The start (inclusive) of the span, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this span is on.
|
|
"dimension": "A String", # The dimension of the span.
|
|
},
|
|
"collapsed": True or False, # This field is true if this group is collapsed. A collapsed group remains
|
|
# collapsed if an overlapping group at a shallower depth is expanded.
|
|
#
|
|
# A true value does not imply that all dimensions within the group are
|
|
# hidden, since a dimension's visibility can change independently from this
|
|
# group property. However, when this property is updated, all dimensions
|
|
# within it are set to hidden if this field is true, or set to visible if
|
|
# this field is false.
|
|
"depth": 42, # The depth of the group, representing how many groups have a range that
|
|
# wholly contains the range of this group.
|
|
},
|
|
},
|
|
"deleteDimension": { # Deletes the dimensions from the sheet. # Deletes rows or columns in a sheet.
|
|
"range": { # A range along a single dimension on a sheet. # The dimensions to delete from the sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open: the start index is inclusive
|
|
# and the end index is exclusive.
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
"endIndex": 42, # The end (exclusive) of the span, or not set if unbounded.
|
|
"startIndex": 42, # The start (inclusive) of the span, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this span is on.
|
|
"dimension": "A String", # The dimension of the span.
|
|
},
|
|
},
|
|
"addProtectedRange": { # Adds a new protected range. # Adds a protected range.
|
|
"protectedRange": { # A protected range. # The protected range to be added. The
|
|
# protectedRangeId field is optional; if
|
|
# one is not set, an id will be randomly generated. (It is an error to
|
|
# specify the ID of a range that already exists.)
|
|
"unprotectedRanges": [ # The list of unprotected ranges within a protected sheet.
|
|
# Unprotected ranges are only supported on protected sheets.
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
"requestingUserCanEdit": True or False, # True if the user who requested this protected range can edit the
|
|
# protected area.
|
|
# This field is read-only.
|
|
"description": "A String", # The description of this protected range.
|
|
"namedRangeId": "A String", # The named range this protected range is backed by, if any.
|
|
#
|
|
# When writing, only one of range or named_range_id
|
|
# may be set.
|
|
"range": { # A range on a sheet. # The range that is being protected.
|
|
# The range may be fully unbounded, in which case this is considered
|
|
# a protected sheet.
|
|
#
|
|
# When writing, only one of range or named_range_id
|
|
# may be set.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
"editors": { # The editors of a protected range. # The users and groups with edit access to the protected range.
|
|
# This field is only visible to users with edit access to the protected
|
|
# range and the document.
|
|
# Editors are not supported with warning_only protection.
|
|
"domainUsersCanEdit": True or False, # True if anyone in the document's domain has edit access to the protected
|
|
# range. Domain protection is only supported on documents within a domain.
|
|
"users": [ # The email addresses of users with edit access to the protected range.
|
|
"A String",
|
|
],
|
|
"groups": [ # The email addresses of groups with edit access to the protected range.
|
|
"A String",
|
|
],
|
|
},
|
|
"protectedRangeId": 42, # The ID of the protected range.
|
|
# This field is read-only.
|
|
"warningOnly": True or False, # True if this protected range will show a warning when editing.
|
|
# Warning-based protection means that every user can edit data in the
|
|
# protected range, except editing will prompt a warning asking the user
|
|
# to confirm the edit.
|
|
#
|
|
# When writing: if this field is true, then editors is ignored.
|
|
# Additionally, if this field is changed from true to false and the
|
|
# `editors` field is not set (nor included in the field mask), then
|
|
# the editors will be set to all the editors in the document.
|
|
},
|
|
},
|
|
"deleteEmbeddedObject": { # Deletes the embedded object with the given ID. # Deletes an embedded object (e.g, chart, image) in a sheet.
|
|
"objectId": 42, # The ID of the embedded object to delete.
|
|
},
|
|
"pasteData": { # Inserts data into the spreadsheet starting at the specified coordinate. # Pastes data (HTML or delimited) into a sheet.
|
|
"coordinate": { # A coordinate in a sheet. # The coordinate at which the data should start being inserted.
|
|
# All indexes are zero-based.
|
|
"rowIndex": 42, # The row index of the coordinate.
|
|
"columnIndex": 42, # The column index of the coordinate.
|
|
"sheetId": 42, # The sheet this coordinate is on.
|
|
},
|
|
"type": "A String", # How the data should be pasted.
|
|
"delimiter": "A String", # The delimiter in the data.
|
|
"html": True or False, # True if the data is HTML.
|
|
"data": "A String", # The data to insert.
|
|
},
|
|
"appendCells": { # Adds new cells after the last row with data in a sheet, # Appends cells after the last row with data in a sheet.
|
|
# inserting new rows into the sheet if necessary.
|
|
"fields": "A String", # The fields of CellData that should be updated.
|
|
# At least one field must be specified.
|
|
# The root is the CellData; 'row.values.' should not be specified.
|
|
# A single `"*"` can be used as short-hand for listing every field.
|
|
"rows": [ # The data to append.
|
|
{ # Data about each cell in a row.
|
|
"values": [ # The values in the row, one per column.
|
|
{ # Data about a specific cell.
|
|
"pivotTable": { # A pivot table. # A pivot table anchored at this cell. The size of pivot table itself
|
|
# is computed dynamically based on its data, grouping, filters, values,
|
|
# etc. Only the top-left cell of the pivot table contains the pivot table
|
|
# definition. The other cells will contain the calculated values of the
|
|
# results of the pivot in their effective_value fields.
|
|
"valueLayout": "A String", # Whether values should be listed horizontally (as columns)
|
|
# or vertically (as rows).
|
|
"rows": [ # Each row grouping in the pivot table.
|
|
{ # A single grouping (either row or column) in a pivot table.
|
|
"showTotals": True or False, # True if the pivot table should include the totals for this grouping.
|
|
"repeatHeadings": True or False, # True if the headings in this pivot group should be repeated.
|
|
# This is only valid for row groupings and is ignored by columns.
|
|
#
|
|
# By default, we minimize repitition of headings by not showing higher
|
|
# level headings where they are the same. For example, even though the
|
|
# third row below corresponds to "Q1 Mar", "Q1" is not shown because
|
|
# it is redundant with previous rows. Setting repeat_headings to true
|
|
# would cause "Q1" to be repeated for "Feb" and "Mar".
|
|
#
|
|
# +--------------+
|
|
# | Q1 | Jan |
|
|
# | | Feb |
|
|
# | | Mar |
|
|
# +--------+-----+
|
|
# | Q1 Total |
|
|
# +--------------+
|
|
"label": "A String", # The labels to use for the row/column groups which can be customized. For
|
|
# example, in the following pivot table, the row label is `Region` (which
|
|
# could be renamed to `State`) and the column label is `Product` (which
|
|
# could be renamed `Item`). Pivot tables created before December 2017 do
|
|
# not have header labels. If you'd like to add header labels to an existing
|
|
# pivot table, please delete the existing pivot table and then create a new
|
|
# pivot table with same parameters.
|
|
#
|
|
# +--------------+---------+-------+
|
|
# | SUM of Units | Product | |
|
|
# | Region | Pen | Paper |
|
|
# +--------------+---------+-------+
|
|
# | New York | 345 | 98 |
|
|
# | Oregon | 234 | 123 |
|
|
# | Tennessee | 531 | 415 |
|
|
# +--------------+---------+-------+
|
|
# | Grand Total | 1110 | 636 |
|
|
# +--------------+---------+-------+
|
|
"valueMetadata": [ # Metadata about values in the grouping.
|
|
{ # Metadata about a value in a pivot grouping.
|
|
"collapsed": True or False, # True if the data corresponding to the value is collapsed.
|
|
"value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to.
|
|
# (Note that formulaValue is not valid,
|
|
# because the values will be calculated.)
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
},
|
|
],
|
|
"valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by.
|
|
# If not specified, sorting is alphabetical by this group's values.
|
|
"buckets": [ # Determines the bucket from which values are chosen to sort.
|
|
#
|
|
# For example, in a pivot table with one row group & two column groups,
|
|
# the row group can list up to two values. The first value corresponds
|
|
# to a value within the first column group, and the second value
|
|
# corresponds to a value in the second column group. If no values
|
|
# are listed, this would indicate that the row should be sorted according
|
|
# to the "Grand Total" over the column groups. If a single value is listed,
|
|
# this would correspond to using the "Total" of that bucket.
|
|
{ # The kinds of value that a cell in a spreadsheet can have.
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
],
|
|
"valuesIndex": 42, # The offset in the PivotTable.values list which the values in this
|
|
# grouping should be sorted by.
|
|
},
|
|
"sortOrder": "A String", # The order the values in this group should be sorted.
|
|
"groupRule": { # An optional setting on a PivotGroup that defines buckets for the values # The group rule to apply to this row/column group.
|
|
# in the source data column rather than breaking out each individual value.
|
|
# Only one PivotGroup with a group rule may be added for each column in
|
|
# the source data, though on any given column you may add both a
|
|
# PivotGroup that has a rule and a PivotGroup that does not.
|
|
"histogramRule": { # Allows you to organize the numeric values in a source data column into # A HistogramRule.
|
|
# buckets of a constant size. All values from HistogramRule.start to
|
|
# HistogramRule.end are placed into groups of size
|
|
# HistogramRule.interval. In addition, all values below
|
|
# HistogramRule.start are placed in one group, and all values above
|
|
# HistogramRule.end are placed in another. Only
|
|
# HistogramRule.interval is required, though if HistogramRule.start
|
|
# and HistogramRule.end are both provided, HistogramRule.start must
|
|
# be less than HistogramRule.end. For example, a pivot table showing
|
|
# average purchase amount by age that has 50+ rows:
|
|
#
|
|
# +-----+-------------------+
|
|
# | Age | AVERAGE of Amount |
|
|
# +-----+-------------------+
|
|
# | 16 | $27.13 |
|
|
# | 17 | $5.24 |
|
|
# | 18 | $20.15 |
|
|
# ...
|
|
# +-----+-------------------+
|
|
# could be turned into a pivot table that looks like the one below by
|
|
# applying a histogram group rule with a HistogramRule.start of 25,
|
|
# an HistogramRule.interval of 20, and an HistogramRule.end
|
|
# of 65.
|
|
#
|
|
# +-------------+-------------------+
|
|
# | Grouped Age | AVERAGE of Amount |
|
|
# +-------------+-------------------+
|
|
# | < 25 | $19.34 |
|
|
# | 25-45 | $31.43 |
|
|
# | 45-65 | $35.87 |
|
|
# | > 65 | $27.55 |
|
|
# +-------------+-------------------+
|
|
# | Grand Total | $29.12 |
|
|
# +-------------+-------------------+
|
|
"start": 3.14, # The minimum value at which items are placed into buckets
|
|
# of constant size. Values below start are lumped into a single bucket.
|
|
# This field is optional.
|
|
"interval": 3.14, # The size of the buckets that are created. Must be positive.
|
|
"end": 3.14, # The maximum value at which items are placed into buckets
|
|
# of constant size. Values above end are lumped into a single bucket.
|
|
# This field is optional.
|
|
},
|
|
"manualRule": { # Allows you to manually organize the values in a source data column into # A ManualRule.
|
|
# buckets with names of your choosing. For example, a pivot table that
|
|
# aggregates population by state:
|
|
#
|
|
# +-------+-------------------+
|
|
# | State | SUM of Population |
|
|
# +-------+-------------------+
|
|
# | AK | 0.7 |
|
|
# | AL | 4.8 |
|
|
# | AR | 2.9 |
|
|
# ...
|
|
# +-------+-------------------+
|
|
# could be turned into a pivot table that aggregates population by time zone
|
|
# by providing a list of groups (for example, groupName = 'Central',
|
|
# items = ['AL', 'AR', 'IA', ...]) to a manual group rule.
|
|
# Note that a similar effect could be achieved by adding a time zone column
|
|
# to the source data and adjusting the pivot table.
|
|
#
|
|
# +-----------+-------------------+
|
|
# | Time Zone | SUM of Population |
|
|
# +-----------+-------------------+
|
|
# | Central | 106.3 |
|
|
# | Eastern | 151.9 |
|
|
# | Mountain | 17.4 |
|
|
# ...
|
|
# +-----------+-------------------+
|
|
"groups": [ # The list of group names and the corresponding items from the source data
|
|
# that map to each group name.
|
|
{ # A group name and a list of items from the source data that should be placed
|
|
# in the group with this name.
|
|
"items": [ # The items in the source data that should be placed into this group. Each
|
|
# item may be a string, number, or boolean. Items may appear in at most one
|
|
# group within a given ManualRule. Items that do not appear in any
|
|
# group will appear on their own.
|
|
{ # The kinds of value that a cell in a spreadsheet can have.
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
],
|
|
"groupName": { # The kinds of value that a cell in a spreadsheet can have. # The group name, which must be a string. Each group in a given
|
|
# ManualRule must have a unique group name.
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
},
|
|
],
|
|
},
|
|
"dateTimeRule": { # Allows you to organize the date-time values in a source data column into # A DateTimeRule.
|
|
# buckets based on selected parts of their date or time values. For example,
|
|
# consider a pivot table showing sales transactions by date:
|
|
#
|
|
# +----------+--------------+
|
|
# | Date | SUM of Sales |
|
|
# +----------+--------------+
|
|
# | 1/1/2017 | $621.14 |
|
|
# | 2/3/2017 | $708.84 |
|
|
# | 5/8/2017 | $326.84 |
|
|
# ...
|
|
# +----------+--------------+
|
|
# Applying a date-time group rule with a DateTimeRuleType of YEAR_MONTH
|
|
# results in the following pivot table.
|
|
#
|
|
# +--------------+--------------+
|
|
# | Grouped Date | SUM of Sales |
|
|
# +--------------+--------------+
|
|
# | 2017-Jan | $53,731.78 |
|
|
# | 2017-Feb | $83,475.32 |
|
|
# | 2017-Mar | $94,385.05 |
|
|
# ...
|
|
# +--------------+--------------+
|
|
"type": "A String", # The type of date-time grouping to apply.
|
|
},
|
|
},
|
|
"sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on.
|
|
#
|
|
# For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0`
|
|
# means this group refers to column `C`, whereas the offset `1` would refer
|
|
# to column `D`.
|
|
},
|
|
],
|
|
"source": { # A range on a sheet. # The range the pivot table is reading data from.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
"values": [ # A list of values to include in the pivot table.
|
|
{ # The definition of how a value in a pivot table should be calculated.
|
|
"formula": "A String", # A custom formula to calculate the value. The formula must start
|
|
# with an `=` character.
|
|
"name": "A String", # A name to use for the value.
|
|
"sourceColumnOffset": 42, # The column offset of the source range that this value reads from.
|
|
#
|
|
# For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0`
|
|
# means this value refers to column `C`, whereas the offset `1` would
|
|
# refer to column `D`.
|
|
"summarizeFunction": "A String", # A function to summarize the value.
|
|
# If formula is set, the only supported values are
|
|
# SUM and
|
|
# CUSTOM.
|
|
# If sourceColumnOffset is set, then `CUSTOM`
|
|
# is not supported.
|
|
"calculatedDisplayType": "A String", # If specified, indicates that pivot values should be displayed as
|
|
# the result of a calculation with another pivot value. For example, if
|
|
# calculated_display_type is specified as PERCENT_OF_GRAND_TOTAL, all the
|
|
# pivot values are displayed as the percentage of the grand total. In
|
|
# the Sheets UI, this is referred to as "Show As" in the value section of a
|
|
# pivot table.
|
|
},
|
|
],
|
|
"criteria": { # An optional mapping of filters per source column offset.
|
|
#
|
|
# The filters are applied before aggregating data into the pivot table.
|
|
# The map's key is the column offset of the source range that you want to
|
|
# filter, and the value is the criteria for that column.
|
|
#
|
|
# For example, if the source was `C10:E15`, a key of `0` will have the filter
|
|
# for column `C`, whereas the key `1` is for column `D`.
|
|
"a_key": { # Criteria for showing/hiding rows in a pivot table.
|
|
"visibleValues": [ # Values that should be included. Values not listed here are excluded.
|
|
"A String",
|
|
],
|
|
},
|
|
},
|
|
"columns": [ # Each column grouping in the pivot table.
|
|
{ # A single grouping (either row or column) in a pivot table.
|
|
"showTotals": True or False, # True if the pivot table should include the totals for this grouping.
|
|
"repeatHeadings": True or False, # True if the headings in this pivot group should be repeated.
|
|
# This is only valid for row groupings and is ignored by columns.
|
|
#
|
|
# By default, we minimize repitition of headings by not showing higher
|
|
# level headings where they are the same. For example, even though the
|
|
# third row below corresponds to "Q1 Mar", "Q1" is not shown because
|
|
# it is redundant with previous rows. Setting repeat_headings to true
|
|
# would cause "Q1" to be repeated for "Feb" and "Mar".
|
|
#
|
|
# +--------------+
|
|
# | Q1 | Jan |
|
|
# | | Feb |
|
|
# | | Mar |
|
|
# +--------+-----+
|
|
# | Q1 Total |
|
|
# +--------------+
|
|
"label": "A String", # The labels to use for the row/column groups which can be customized. For
|
|
# example, in the following pivot table, the row label is `Region` (which
|
|
# could be renamed to `State`) and the column label is `Product` (which
|
|
# could be renamed `Item`). Pivot tables created before December 2017 do
|
|
# not have header labels. If you'd like to add header labels to an existing
|
|
# pivot table, please delete the existing pivot table and then create a new
|
|
# pivot table with same parameters.
|
|
#
|
|
# +--------------+---------+-------+
|
|
# | SUM of Units | Product | |
|
|
# | Region | Pen | Paper |
|
|
# +--------------+---------+-------+
|
|
# | New York | 345 | 98 |
|
|
# | Oregon | 234 | 123 |
|
|
# | Tennessee | 531 | 415 |
|
|
# +--------------+---------+-------+
|
|
# | Grand Total | 1110 | 636 |
|
|
# +--------------+---------+-------+
|
|
"valueMetadata": [ # Metadata about values in the grouping.
|
|
{ # Metadata about a value in a pivot grouping.
|
|
"collapsed": True or False, # True if the data corresponding to the value is collapsed.
|
|
"value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to.
|
|
# (Note that formulaValue is not valid,
|
|
# because the values will be calculated.)
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
},
|
|
],
|
|
"valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by.
|
|
# If not specified, sorting is alphabetical by this group's values.
|
|
"buckets": [ # Determines the bucket from which values are chosen to sort.
|
|
#
|
|
# For example, in a pivot table with one row group & two column groups,
|
|
# the row group can list up to two values. The first value corresponds
|
|
# to a value within the first column group, and the second value
|
|
# corresponds to a value in the second column group. If no values
|
|
# are listed, this would indicate that the row should be sorted according
|
|
# to the "Grand Total" over the column groups. If a single value is listed,
|
|
# this would correspond to using the "Total" of that bucket.
|
|
{ # The kinds of value that a cell in a spreadsheet can have.
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
],
|
|
"valuesIndex": 42, # The offset in the PivotTable.values list which the values in this
|
|
# grouping should be sorted by.
|
|
},
|
|
"sortOrder": "A String", # The order the values in this group should be sorted.
|
|
"groupRule": { # An optional setting on a PivotGroup that defines buckets for the values # The group rule to apply to this row/column group.
|
|
# in the source data column rather than breaking out each individual value.
|
|
# Only one PivotGroup with a group rule may be added for each column in
|
|
# the source data, though on any given column you may add both a
|
|
# PivotGroup that has a rule and a PivotGroup that does not.
|
|
"histogramRule": { # Allows you to organize the numeric values in a source data column into # A HistogramRule.
|
|
# buckets of a constant size. All values from HistogramRule.start to
|
|
# HistogramRule.end are placed into groups of size
|
|
# HistogramRule.interval. In addition, all values below
|
|
# HistogramRule.start are placed in one group, and all values above
|
|
# HistogramRule.end are placed in another. Only
|
|
# HistogramRule.interval is required, though if HistogramRule.start
|
|
# and HistogramRule.end are both provided, HistogramRule.start must
|
|
# be less than HistogramRule.end. For example, a pivot table showing
|
|
# average purchase amount by age that has 50+ rows:
|
|
#
|
|
# +-----+-------------------+
|
|
# | Age | AVERAGE of Amount |
|
|
# +-----+-------------------+
|
|
# | 16 | $27.13 |
|
|
# | 17 | $5.24 |
|
|
# | 18 | $20.15 |
|
|
# ...
|
|
# +-----+-------------------+
|
|
# could be turned into a pivot table that looks like the one below by
|
|
# applying a histogram group rule with a HistogramRule.start of 25,
|
|
# an HistogramRule.interval of 20, and an HistogramRule.end
|
|
# of 65.
|
|
#
|
|
# +-------------+-------------------+
|
|
# | Grouped Age | AVERAGE of Amount |
|
|
# +-------------+-------------------+
|
|
# | < 25 | $19.34 |
|
|
# | 25-45 | $31.43 |
|
|
# | 45-65 | $35.87 |
|
|
# | > 65 | $27.55 |
|
|
# +-------------+-------------------+
|
|
# | Grand Total | $29.12 |
|
|
# +-------------+-------------------+
|
|
"start": 3.14, # The minimum value at which items are placed into buckets
|
|
# of constant size. Values below start are lumped into a single bucket.
|
|
# This field is optional.
|
|
"interval": 3.14, # The size of the buckets that are created. Must be positive.
|
|
"end": 3.14, # The maximum value at which items are placed into buckets
|
|
# of constant size. Values above end are lumped into a single bucket.
|
|
# This field is optional.
|
|
},
|
|
"manualRule": { # Allows you to manually organize the values in a source data column into # A ManualRule.
|
|
# buckets with names of your choosing. For example, a pivot table that
|
|
# aggregates population by state:
|
|
#
|
|
# +-------+-------------------+
|
|
# | State | SUM of Population |
|
|
# +-------+-------------------+
|
|
# | AK | 0.7 |
|
|
# | AL | 4.8 |
|
|
# | AR | 2.9 |
|
|
# ...
|
|
# +-------+-------------------+
|
|
# could be turned into a pivot table that aggregates population by time zone
|
|
# by providing a list of groups (for example, groupName = 'Central',
|
|
# items = ['AL', 'AR', 'IA', ...]) to a manual group rule.
|
|
# Note that a similar effect could be achieved by adding a time zone column
|
|
# to the source data and adjusting the pivot table.
|
|
#
|
|
# +-----------+-------------------+
|
|
# | Time Zone | SUM of Population |
|
|
# +-----------+-------------------+
|
|
# | Central | 106.3 |
|
|
# | Eastern | 151.9 |
|
|
# | Mountain | 17.4 |
|
|
# ...
|
|
# +-----------+-------------------+
|
|
"groups": [ # The list of group names and the corresponding items from the source data
|
|
# that map to each group name.
|
|
{ # A group name and a list of items from the source data that should be placed
|
|
# in the group with this name.
|
|
"items": [ # The items in the source data that should be placed into this group. Each
|
|
# item may be a string, number, or boolean. Items may appear in at most one
|
|
# group within a given ManualRule. Items that do not appear in any
|
|
# group will appear on their own.
|
|
{ # The kinds of value that a cell in a spreadsheet can have.
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
],
|
|
"groupName": { # The kinds of value that a cell in a spreadsheet can have. # The group name, which must be a string. Each group in a given
|
|
# ManualRule must have a unique group name.
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
},
|
|
],
|
|
},
|
|
"dateTimeRule": { # Allows you to organize the date-time values in a source data column into # A DateTimeRule.
|
|
# buckets based on selected parts of their date or time values. For example,
|
|
# consider a pivot table showing sales transactions by date:
|
|
#
|
|
# +----------+--------------+
|
|
# | Date | SUM of Sales |
|
|
# +----------+--------------+
|
|
# | 1/1/2017 | $621.14 |
|
|
# | 2/3/2017 | $708.84 |
|
|
# | 5/8/2017 | $326.84 |
|
|
# ...
|
|
# +----------+--------------+
|
|
# Applying a date-time group rule with a DateTimeRuleType of YEAR_MONTH
|
|
# results in the following pivot table.
|
|
#
|
|
# +--------------+--------------+
|
|
# | Grouped Date | SUM of Sales |
|
|
# +--------------+--------------+
|
|
# | 2017-Jan | $53,731.78 |
|
|
# | 2017-Feb | $83,475.32 |
|
|
# | 2017-Mar | $94,385.05 |
|
|
# ...
|
|
# +--------------+--------------+
|
|
"type": "A String", # The type of date-time grouping to apply.
|
|
},
|
|
},
|
|
"sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on.
|
|
#
|
|
# For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0`
|
|
# means this group refers to column `C`, whereas the offset `1` would refer
|
|
# to column `D`.
|
|
},
|
|
],
|
|
},
|
|
"hyperlink": "A String", # A hyperlink this cell points to, if any.
|
|
# This field is read-only. (To set it, use a `=HYPERLINK` formula
|
|
# in the userEnteredValue.formulaValue
|
|
# field.)
|
|
"effectiveValue": { # The kinds of value that a cell in a spreadsheet can have. # The effective value of the cell. For cells with formulas, this is
|
|
# the calculated value. For cells with literals, this is
|
|
# the same as the user_entered_value.
|
|
# This field is read-only.
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
"formattedValue": "A String", # The formatted value of the cell.
|
|
# This is the value as it's shown to the user.
|
|
# This field is read-only.
|
|
"userEnteredValue": { # The kinds of value that a cell in a spreadsheet can have. # The value the user entered in the cell. e.g, `1234`, `'Hello'`, or `=NOW()`
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# serial number format.
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
"note": "A String", # Any note on the cell.
|
|
"effectiveFormat": { # The format of a cell. # The effective format being used by the cell.
|
|
# This includes the results of applying any conditional formatting and,
|
|
# if the cell contains a formula, the computed number format.
|
|
# If the effective format is the default format, effective format will
|
|
# not be written.
|
|
# This field is read-only.
|
|
"numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
|
|
"pattern": "A String", # Pattern string used for formatting. If not set, a default pattern based on
|
|
# the user's locale will be used if necessary for the given type.
|
|
# See the [Date and Number Formats guide](/sheets/api/guides/formats) for
|
|
# more information about the supported patterns.
|
|
"type": "A String", # The type of the number format.
|
|
# When writing, this field must be set.
|
|
},
|
|
"textDirection": "A String", # The direction of the text in the cell.
|
|
"padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
|
|
# When updating padding, every field must be specified.
|
|
"top": 42, # The top padding of the cell.
|
|
"left": 42, # The left padding of the cell.
|
|
"right": 42, # The right padding of the cell.
|
|
"bottom": 42, # The bottom padding of the cell.
|
|
},
|
|
"horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
|
|
"backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"verticalAlignment": "A String", # The vertical alignment of the value in the cell.
|
|
"borders": { # The borders of the cell. # The borders of the cell.
|
|
"top": { # A border along a cell. # The top border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"right": { # A border along a cell. # The right border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"bottom": { # A border along a cell. # The bottom border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"left": { # A border along a cell. # The left border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
},
|
|
"textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell
|
|
"angle": 42, # The angle between the standard orientation and the desired orientation.
|
|
# Measured in degrees. Valid values are between -90 and 90. Positive
|
|
# angles are angled upwards, negative are angled downwards.
|
|
#
|
|
# Note: For LTR text direction positive angles are in the
|
|
# counterclockwise direction, whereas for RTL they are in the clockwise
|
|
# direction
|
|
"vertical": True or False, # If true, text reads top to bottom, but the orientation of individual
|
|
# characters is unchanged.
|
|
# For example:
|
|
#
|
|
# | V |
|
|
# | e |
|
|
# | r |
|
|
# | t |
|
|
# | i |
|
|
# | c |
|
|
# | a |
|
|
# | l |
|
|
},
|
|
"hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
|
|
"textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
"wrapStrategy": "A String", # The wrap strategy for the value in the cell.
|
|
},
|
|
"userEnteredFormat": { # The format of a cell. # The format the user entered for the cell.
|
|
#
|
|
# When writing, the new format will be merged with the existing format.
|
|
"numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
|
|
"pattern": "A String", # Pattern string used for formatting. If not set, a default pattern based on
|
|
# the user's locale will be used if necessary for the given type.
|
|
# See the [Date and Number Formats guide](/sheets/api/guides/formats) for
|
|
# more information about the supported patterns.
|
|
"type": "A String", # The type of the number format.
|
|
# When writing, this field must be set.
|
|
},
|
|
"textDirection": "A String", # The direction of the text in the cell.
|
|
"padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
|
|
# When updating padding, every field must be specified.
|
|
"top": 42, # The top padding of the cell.
|
|
"left": 42, # The left padding of the cell.
|
|
"right": 42, # The right padding of the cell.
|
|
"bottom": 42, # The bottom padding of the cell.
|
|
},
|
|
"horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
|
|
"backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"verticalAlignment": "A String", # The vertical alignment of the value in the cell.
|
|
"borders": { # The borders of the cell. # The borders of the cell.
|
|
"top": { # A border along a cell. # The top border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"right": { # A border along a cell. # The right border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"bottom": { # A border along a cell. # The bottom border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"left": { # A border along a cell. # The left border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
},
|
|
"textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell
|
|
"angle": 42, # The angle between the standard orientation and the desired orientation.
|
|
# Measured in degrees. Valid values are between -90 and 90. Positive
|
|
# angles are angled upwards, negative are angled downwards.
|
|
#
|
|
# Note: For LTR text direction positive angles are in the
|
|
# counterclockwise direction, whereas for RTL they are in the clockwise
|
|
# direction
|
|
"vertical": True or False, # If true, text reads top to bottom, but the orientation of individual
|
|
# characters is unchanged.
|
|
# For example:
|
|
#
|
|
# | V |
|
|
# | e |
|
|
# | r |
|
|
# | t |
|
|
# | i |
|
|
# | c |
|
|
# | a |
|
|
# | l |
|
|
},
|
|
"hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
|
|
"textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
"wrapStrategy": "A String", # The wrap strategy for the value in the cell.
|
|
},
|
|
"dataValidation": { # A data validation rule. # A data validation rule on the cell, if any.
|
|
#
|
|
# When writing, the new data validation rule will overwrite any prior rule.
|
|
"showCustomUi": True or False, # True if the UI should be customized based on the kind of condition.
|
|
# If true, "List" conditions will show a dropdown.
|
|
"strict": True or False, # True if invalid data should be rejected.
|
|
"inputMessage": "A String", # A message to show the user when adding data to the cell.
|
|
"condition": { # A condition that can evaluate to true or false. # The condition that data in the cell must match.
|
|
# BooleanConditions are used by conditional formatting,
|
|
# data validation, and the criteria in filters.
|
|
"values": [ # The values of the condition. The number of supported values depends
|
|
# on the condition type. Some support zero values,
|
|
# others one or two values,
|
|
# and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
|
|
{ # The value of the condition.
|
|
"relativeDate": "A String", # A relative date (based on the current date).
|
|
# Valid only if the type is
|
|
# DATE_BEFORE,
|
|
# DATE_AFTER,
|
|
# DATE_ON_OR_BEFORE or
|
|
# DATE_ON_OR_AFTER.
|
|
#
|
|
# Relative dates are not supported in data validation.
|
|
# They are supported only in conditional formatting and
|
|
# conditional filters.
|
|
"userEnteredValue": "A String", # A value the condition is based on.
|
|
# The value is parsed as if the user typed into a cell.
|
|
# Formulas are supported (and must begin with an `=` or a '+').
|
|
},
|
|
],
|
|
"type": "A String", # The type of condition.
|
|
},
|
|
},
|
|
"textFormatRuns": [ # Runs of rich text applied to subsections of the cell. Runs are only valid
|
|
# on user entered strings, not formulas, bools, or numbers.
|
|
# Runs start at specific indexes in the text and continue until the next
|
|
# run. Properties of a run will continue unless explicitly changed
|
|
# in a subsequent run (and properties of the first run will continue
|
|
# the properties of the cell unless explicitly changed).
|
|
#
|
|
# When writing, the new runs will overwrite any prior runs. When writing a
|
|
# new user_entered_value, previous runs are erased.
|
|
{ # A run of a text format. The format of this run continues until the start
|
|
# index of the next run.
|
|
# When updating, all fields must be set.
|
|
"startIndex": 42, # The character index where this run starts.
|
|
"format": { # The format of a run of text in a cell. # The format of this run. Absent values inherit the cell's format.
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
},
|
|
],
|
|
},
|
|
],
|
|
},
|
|
],
|
|
"sheetId": 42, # The sheet ID to append the data to.
|
|
},
|
|
"duplicateSheet": { # Duplicates the contents of a sheet. # Duplicates a sheet.
|
|
"newSheetName": "A String", # The name of the new sheet. If empty, a new name is chosen for you.
|
|
"insertSheetIndex": 42, # The zero-based index where the new sheet should be inserted.
|
|
# The index of all sheets after this are incremented.
|
|
"sourceSheetId": 42, # The sheet to duplicate.
|
|
"newSheetId": 42, # If set, the ID of the new sheet. If not set, an ID is chosen.
|
|
# If set, the ID must not conflict with any existing sheet ID.
|
|
# If set, it must be non-negative.
|
|
},
|
|
"updateSheetProperties": { # Updates properties of the sheet with the specified # Updates a sheet's properties.
|
|
# sheetId.
|
|
"fields": "A String", # The fields that should be updated. At least one field must be specified.
|
|
# The root `properties` is implied and should not be specified.
|
|
# A single `"*"` can be used as short-hand for listing every field.
|
|
"properties": { # Properties of a sheet. # The properties to update.
|
|
"sheetType": "A String", # The type of sheet. Defaults to GRID.
|
|
# This field cannot be changed once set.
|
|
"index": 42, # The index of the sheet within the spreadsheet.
|
|
# When adding or updating sheet properties, if this field
|
|
# is excluded then the sheet is added or moved to the end
|
|
# of the sheet list. When updating sheet indices or inserting
|
|
# sheets, movement is considered in "before the move" indexes.
|
|
# For example, if there were 3 sheets (S1, S2, S3) in order to
|
|
# move S1 ahead of S2 the index would have to be set to 2. A sheet
|
|
# index update request is ignored if the requested index is
|
|
# identical to the sheets current index or if the requested new
|
|
# index is equal to the current sheet index + 1.
|
|
"title": "A String", # The name of the sheet.
|
|
"gridProperties": { # Properties of a grid. # Additional properties of the sheet if this sheet is a grid.
|
|
# (If the sheet is an object sheet, containing a chart or image, then
|
|
# this field will be absent.)
|
|
# When writing it is an error to set any grid properties on non-grid sheets.
|
|
"columnCount": 42, # The number of columns in the grid.
|
|
"rowGroupControlAfter": True or False, # True if the row grouping control toggle is shown after the group.
|
|
"columnGroupControlAfter": True or False, # True if the column grouping control toggle is shown after the group.
|
|
"frozenRowCount": 42, # The number of rows that are frozen in the grid.
|
|
"frozenColumnCount": 42, # The number of columns that are frozen in the grid.
|
|
"rowCount": 42, # The number of rows in the grid.
|
|
"hideGridlines": True or False, # True if the grid isn't showing gridlines in the UI.
|
|
},
|
|
"rightToLeft": True or False, # True if the sheet is an RTL sheet instead of an LTR sheet.
|
|
"tabColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the tab in the UI.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"hidden": True or False, # True if the sheet is hidden in the UI, false if it's visible.
|
|
"sheetId": 42, # The ID of the sheet. Must be non-negative.
|
|
# This field cannot be changed once set.
|
|
},
|
|
},
|
|
"addChart": { # Adds a chart to a sheet in the spreadsheet. # Adds a chart.
|
|
"chart": { # A chart embedded in a sheet. # The chart that should be added to the spreadsheet, including the position
|
|
# where it should be placed. The chartId
|
|
# field is optional; if one is not set, an id will be randomly generated. (It
|
|
# is an error to specify the ID of an embedded object that already exists.)
|
|
"chartId": 42, # The ID of the chart.
|
|
"position": { # The position of an embedded object such as a chart. # The position of the chart.
|
|
"newSheet": True or False, # If true, the embedded object is put on a new sheet whose ID
|
|
# is chosen for you. Used only when writing.
|
|
"sheetId": 42, # The sheet this is on. Set only if the embedded object
|
|
# is on its own sheet. Must be non-negative.
|
|
"overlayPosition": { # The location an object is overlaid on top of a grid. # The position at which the object is overlaid on top of a grid.
|
|
"anchorCell": { # A coordinate in a sheet. # The cell the object is anchored to.
|
|
# All indexes are zero-based.
|
|
"rowIndex": 42, # The row index of the coordinate.
|
|
"columnIndex": 42, # The column index of the coordinate.
|
|
"sheetId": 42, # The sheet this coordinate is on.
|
|
},
|
|
"widthPixels": 42, # The width of the object, in pixels. Defaults to 600.
|
|
"offsetYPixels": 42, # The vertical offset, in pixels, that the object is offset
|
|
# from the anchor cell.
|
|
"offsetXPixels": 42, # The horizontal offset, in pixels, that the object is offset
|
|
# from the anchor cell.
|
|
"heightPixels": 42, # The height of the object, in pixels. Defaults to 371.
|
|
},
|
|
},
|
|
"spec": { # The specifications of a chart. # The specification of the chart.
|
|
"fontName": "A String", # The name of the font to use by default for all chart text (e.g. title,
|
|
# axis labels, legend). If a font is specified for a specific part of the
|
|
# chart it will override this font name.
|
|
"altText": "A String", # The alternative text that describes the chart. This is often used
|
|
# for accessibility.
|
|
"subtitle": "A String", # The subtitle of the chart.
|
|
"subtitleTextFormat": { # The format of a run of text in a cell. # The subtitle text format.
|
|
# Strikethrough and underline are not supported.
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
"title": "A String", # The title of the chart.
|
|
"titleTextFormat": { # The format of a run of text in a cell. # The title text format.
|
|
# Strikethrough and underline are not supported.
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
"treemapChart": { # A <a href="/chart/interactive/docs/gallery/treemap">Treemap chart</a>. # A treemap chart specification.
|
|
"parentLabels": { # The data included in a domain or series. # The data the contains the treemap cells' parent labels.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"sizeData": { # The data included in a domain or series. # The data that determines the size of each treemap data cell. This data is
|
|
# expected to be numeric. The cells corresponding to non-numeric or missing
|
|
# data will not be rendered. If color_data is not specified, this data
|
|
# is used to determine data cell background colors as well.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"hideTooltips": True or False, # True to hide tooltips.
|
|
"colorScale": { # A color scale for a treemap chart. # The color scale for data cells in the treemap chart. Data cells are
|
|
# assigned colors based on their color values. These color values come from
|
|
# color_data, or from size_data if color_data is not specified.
|
|
# Cells with color values less than or equal to min_value will
|
|
# have minValueColor as their
|
|
# background color. Cells with color values greater than or equal to
|
|
# max_value will have
|
|
# maxValueColor as their background
|
|
# color. Cells with color values between min_value and max_value will
|
|
# have background colors on a gradient between
|
|
# minValueColor and
|
|
# maxValueColor, the midpoint of
|
|
# the gradient being midValueColor.
|
|
# Cells with missing or non-numeric color values will have
|
|
# noDataColor as their background
|
|
# color.
|
|
"noDataColor": { # Represents a color in the RGBA color space. This representation is designed # The background color for cells that have no color data associated with
|
|
# them. Defaults to #000000 if not specified.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"midValueColor": { # Represents a color in the RGBA color space. This representation is designed # The background color for cells with a color value at the midpoint between
|
|
# minValue and
|
|
# maxValue. Defaults to #efe6dc if not
|
|
# specified.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"minValueColor": { # Represents a color in the RGBA color space. This representation is designed # The background color for cells with a color value less than or equal to
|
|
# minValue. Defaults to #dc3912 if not
|
|
# specified.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"maxValueColor": { # Represents a color in the RGBA color space. This representation is designed # The background color for cells with a color value greater than or equal
|
|
# to maxValue. Defaults to #109618 if not
|
|
# specified.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
},
|
|
"labels": { # The data included in a domain or series. # The data that contains the treemap cell labels.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"colorData": { # The data included in a domain or series. # The data that determines the background color of each treemap data cell.
|
|
# This field is optional. If not specified, size_data is used to
|
|
# determine background colors. If specified, the data is expected to be
|
|
# numeric. color_scale will determine how the values in this data map to
|
|
# data cell background colors.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"maxValue": 3.14, # The maximum possible data value. Cells with values greater than this will
|
|
# have the same color as cells with this value. If not specified, defaults
|
|
# to the actual maximum value from color_data, or the maximum value from
|
|
# size_data if color_data is not specified.
|
|
"minValue": 3.14, # The minimum possible data value. Cells with values less than this will
|
|
# have the same color as cells with this value. If not specified, defaults
|
|
# to the actual minimum value from color_data, or the minimum value from
|
|
# size_data if color_data is not specified.
|
|
"headerColor": { # Represents a color in the RGBA color space. This representation is designed # The background color for header cells.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"levels": 42, # The number of data levels to show on the treemap chart. These levels are
|
|
# interactive and are shown with their labels. Defaults to 2 if not
|
|
# specified.
|
|
"hintedLevels": 42, # The number of additional data levels beyond the labeled levels to be shown
|
|
# on the treemap chart. These levels are not interactive and are shown
|
|
# without their labels. Defaults to 0 if not specified.
|
|
"textFormat": { # The format of a run of text in a cell. # The text format for all labels on the chart.
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
},
|
|
"titleTextPosition": { # Position settings for text. # The title text position.
|
|
# This field is optional.
|
|
"horizontalAlignment": "A String", # Horizontal alignment setting for the piece of text.
|
|
},
|
|
"hiddenDimensionStrategy": "A String", # Determines how the charts will use hidden rows or columns.
|
|
"pieChart": { # A <a href="/chart/interactive/docs/gallery/piechart">pie chart</a>. # A pie chart specification.
|
|
"series": { # The data included in a domain or series. # The data that covers the one and only series of the pie chart.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"domain": { # The data included in a domain or series. # The data that covers the domain of the pie chart.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"threeDimensional": True or False, # True if the pie is three dimensional.
|
|
"legendPosition": "A String", # Where the legend of the pie chart should be drawn.
|
|
"pieHole": 3.14, # The size of the hole in the pie chart.
|
|
},
|
|
"candlestickChart": { # A <a href="/chart/interactive/docs/gallery/candlestickchart">candlestick # A candlestick chart specification.
|
|
# chart</a>.
|
|
"domain": { # The domain of a CandlestickChart. # The domain data (horizontal axis) for the candlestick chart. String data
|
|
# will be treated as discrete labels, other data will be treated as
|
|
# continuous values.
|
|
"reversed": True or False, # True to reverse the order of the domain values (horizontal axis).
|
|
"data": { # The data included in a domain or series. # The data of the CandlestickDomain.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
"data": [ # The Candlestick chart data.
|
|
# Only one CandlestickData is supported.
|
|
{ # The Candlestick chart data, each containing the low, open, close, and high
|
|
# values for a series.
|
|
"lowSeries": { # The series of a CandlestickData. # The range data (vertical axis) for the low/minimum value for each candle.
|
|
# This is the bottom of the candle's center line.
|
|
"data": { # The data included in a domain or series. # The data of the CandlestickSeries.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
"highSeries": { # The series of a CandlestickData. # The range data (vertical axis) for the high/maximum value for each
|
|
# candle. This is the top of the candle's center line.
|
|
"data": { # The data included in a domain or series. # The data of the CandlestickSeries.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
"openSeries": { # The series of a CandlestickData. # The range data (vertical axis) for the open/initial value for each
|
|
# candle. This is the bottom of the candle body. If less than the close
|
|
# value the candle will be filled. Otherwise the candle will be hollow.
|
|
"data": { # The data included in a domain or series. # The data of the CandlestickSeries.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
"closeSeries": { # The series of a CandlestickData. # The range data (vertical axis) for the close/final value for each candle.
|
|
# This is the top of the candle body. If greater than the open value the
|
|
# candle will be filled. Otherwise the candle will be hollow.
|
|
"data": { # The data included in a domain or series. # The data of the CandlestickSeries.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
},
|
|
],
|
|
},
|
|
"subtitleTextPosition": { # Position settings for text. # The subtitle text position.
|
|
# This field is optional.
|
|
"horizontalAlignment": "A String", # Horizontal alignment setting for the piece of text.
|
|
},
|
|
"backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the entire chart.
|
|
# Not applicable to Org charts.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"maximized": True or False, # True to make a chart fill the entire space in which it's rendered with
|
|
# minimum padding. False to use the default padding.
|
|
# (Not applicable to Geo and Org charts.)
|
|
"waterfallChart": { # A waterfall chart. # A waterfall chart specification.
|
|
"stackedType": "A String", # The stacked type.
|
|
"hideConnectorLines": True or False, # True to hide connector lines between columns.
|
|
"domain": { # The domain of a waterfall chart. # The domain data (horizontal axis) for the waterfall chart.
|
|
"reversed": True or False, # True to reverse the order of the domain values (horizontal axis).
|
|
"data": { # The data included in a domain or series. # The data of the WaterfallChartDomain.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
"connectorLineStyle": { # Properties that describe the style of a line. # The line style for the connector lines.
|
|
"width": 42, # The thickness of the line, in px.
|
|
"type": "A String", # The dash type of the line.
|
|
},
|
|
"series": [ # The data this waterfall chart is visualizing.
|
|
{ # A single series of data for a waterfall chart.
|
|
"hideTrailingSubtotal": True or False, # True to hide the subtotal column from the end of the series. By default,
|
|
# a subtotal column will appear at the end of each series. Setting this
|
|
# field to true will hide that subtotal column for this series.
|
|
"positiveColumnsStyle": { # Styles for a waterfall chart column. # Styles for all columns in this series with positive values.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the column.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"label": "A String", # The label of the column's legend.
|
|
},
|
|
"subtotalColumnsStyle": { # Styles for a waterfall chart column. # Styles for all subtotal columns in this series.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the column.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"label": "A String", # The label of the column's legend.
|
|
},
|
|
"negativeColumnsStyle": { # Styles for a waterfall chart column. # Styles for all columns in this series with negative values.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the column.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"label": "A String", # The label of the column's legend.
|
|
},
|
|
"customSubtotals": [ # Custom subtotal columns appearing in this series. The order in which
|
|
# subtotals are defined is not significant. Only one subtotal may be
|
|
# defined for each data point.
|
|
{ # A custom subtotal column for a waterfall chart series.
|
|
"dataIsSubtotal": True or False, # True if the data point at subtotal_index is the subtotal. If false,
|
|
# the subtotal will be computed and appear after the data point.
|
|
"subtotalIndex": 42, # The 0-based index of a data point within the series. If
|
|
# data_is_subtotal is true, the data point at this index is the
|
|
# subtotal. Otherwise, the subtotal appears after the data point with
|
|
# this index. A series can have multiple subtotals at arbitrary indices,
|
|
# but subtotals do not affect the indices of the data points. For
|
|
# example, if a series has three data points, their indices will always
|
|
# be 0, 1, and 2, regardless of how many subtotals exist on the series or
|
|
# what data points they are associated with.
|
|
"label": "A String", # A label for the subtotal column.
|
|
},
|
|
],
|
|
"data": { # The data included in a domain or series. # The data being visualized in this series.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
],
|
|
"firstValueIsTotal": True or False, # True to interpret the first value as a total.
|
|
},
|
|
"basicChart": { # The specification for a basic chart. See BasicChartType for the list # A basic chart specification, can be one of many kinds of charts.
|
|
# See BasicChartType for the list of all
|
|
# charts this supports.
|
|
# of charts this supports.
|
|
"stackedType": "A String", # The stacked type for charts that support vertical stacking.
|
|
# Applies to Area, Bar, Column, Combo, and Stepped Area charts.
|
|
"headerCount": 42, # The number of rows or columns in the data that are "headers".
|
|
# If not set, Google Sheets will guess how many rows are headers based
|
|
# on the data.
|
|
#
|
|
# (Note that BasicChartAxis.title may override the axis title
|
|
# inferred from the header values.)
|
|
"series": [ # The data this chart is visualizing.
|
|
{ # A single series of data in a chart.
|
|
# For example, if charting stock prices over time, multiple series may exist,
|
|
# one for the "Open Price", "High Price", "Low Price" and "Close Price".
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color for elements (i.e. bars, lines, points) associated with this
|
|
# series. If empty, a default color is used.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"series": { # The data included in a domain or series. # The data being visualized in this chart series.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"targetAxis": "A String", # The minor axis that will specify the range of values for this series.
|
|
# For example, if charting stocks over time, the "Volume" series
|
|
# may want to be pinned to the right with the prices pinned to the left,
|
|
# because the scale of trading volume is different than the scale of
|
|
# prices.
|
|
# It is an error to specify an axis that isn't a valid minor axis
|
|
# for the chart's type.
|
|
"lineStyle": { # Properties that describe the style of a line. # The line style of this series. Valid only if the
|
|
# chartType is AREA,
|
|
# LINE, or SCATTER.
|
|
# COMBO charts are also supported if the
|
|
# series chart type is
|
|
# AREA or LINE.
|
|
"width": 42, # The thickness of the line, in px.
|
|
"type": "A String", # The dash type of the line.
|
|
},
|
|
"type": "A String", # The type of this series. Valid only if the
|
|
# chartType is
|
|
# COMBO.
|
|
# Different types will change the way the series is visualized.
|
|
# Only LINE, AREA,
|
|
# and COLUMN are supported.
|
|
},
|
|
],
|
|
"interpolateNulls": True or False, # If some values in a series are missing, gaps may appear in the chart (e.g,
|
|
# segments of lines in a line chart will be missing). To eliminate these
|
|
# gaps set this to true.
|
|
# Applies to Line, Area, and Combo charts.
|
|
"legendPosition": "A String", # The position of the chart legend.
|
|
"lineSmoothing": True or False, # Gets whether all lines should be rendered smooth or straight by default.
|
|
# Applies to Line charts.
|
|
"compareMode": "A String", # The behavior of tooltips and data highlighting when hovering on data and
|
|
# chart area.
|
|
"domains": [ # The domain of data this is charting.
|
|
# Only a single domain is supported.
|
|
{ # The domain of a chart.
|
|
# For example, if charting stock prices over time, this would be the date.
|
|
"reversed": True or False, # True to reverse the order of the domain values (horizontal axis).
|
|
"domain": { # The data included in a domain or series. # The data of the domain. For example, if charting stock prices over time,
|
|
# this is the data representing the dates.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
],
|
|
"chartType": "A String", # The type of the chart.
|
|
"threeDimensional": True or False, # True to make the chart 3D.
|
|
# Applies to Bar and Column charts.
|
|
"axis": [ # The axis on the chart.
|
|
{ # An axis of the chart.
|
|
# A chart may not have more than one axis per
|
|
# axis position.
|
|
"position": "A String", # The position of this axis.
|
|
"format": { # The format of a run of text in a cell. # The format of the title.
|
|
# Only valid if the axis is not associated with the domain.
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
"title": "A String", # The title of this axis. If set, this overrides any title inferred
|
|
# from headers of the data.
|
|
"titleTextPosition": { # Position settings for text. # The axis title text position.
|
|
"horizontalAlignment": "A String", # Horizontal alignment setting for the piece of text.
|
|
},
|
|
},
|
|
],
|
|
},
|
|
"histogramChart": { # A <a href="/chart/interactive/docs/gallery/histogram">histogram chart</a>. # A histogram chart specification.
|
|
# A histogram chart groups data items into bins, displaying each bin as a
|
|
# column of stacked items. Histograms are used to display the distribution
|
|
# of a dataset. Each column of items represents a range into which those
|
|
# items fall. The number of bins can be chosen automatically or specified
|
|
# explicitly.
|
|
"outlierPercentile": 3.14, # The outlier percentile is used to ensure that outliers do not adversely
|
|
# affect the calculation of bucket sizes. For example, setting an outlier
|
|
# percentile of 0.05 indicates that the top and bottom 5% of values when
|
|
# calculating buckets. The values are still included in the chart, they will
|
|
# be added to the first or last buckets instead of their own buckets.
|
|
# Must be between 0.0 and 0.5.
|
|
"series": [ # The series for a histogram may be either a single series of values to be
|
|
# bucketed or multiple series, each of the same length, containing the name
|
|
# of the series followed by the values to be bucketed for that series.
|
|
{ # A histogram series containing the series color and data.
|
|
"barColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the column representing this series in each bucket.
|
|
# This field is optional.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"data": { # The data included in a domain or series. # The data for this histogram series.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
],
|
|
"showItemDividers": True or False, # Whether horizontal divider lines should be displayed between items in each
|
|
# column.
|
|
"legendPosition": "A String", # The position of the chart legend.
|
|
"bucketSize": 3.14, # By default the bucket size (the range of values stacked in a single
|
|
# column) is chosen automatically, but it may be overridden here.
|
|
# E.g., A bucket size of 1.5 results in buckets from 0 - 1.5, 1.5 - 3.0, etc.
|
|
# Cannot be negative.
|
|
# This field is optional.
|
|
},
|
|
"bubbleChart": { # A <a href="/chart/interactive/docs/gallery/bubblechart">bubble chart</a>. # A bubble chart specification.
|
|
"bubbleBorderColor": { # Represents a color in the RGBA color space. This representation is designed # The bubble border color.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"domain": { # The data included in a domain or series. # The data containing the bubble x-values. These values locate the bubbles
|
|
# in the chart horizontally.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"bubbleTextStyle": { # The format of a run of text in a cell. # The format of the text inside the bubbles.
|
|
# Underline and Strikethrough are not supported.
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
"series": { # The data included in a domain or series. # The data contianing the bubble y-values. These values locate the bubbles
|
|
# in the chart vertically.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"legendPosition": "A String", # Where the legend of the chart should be drawn.
|
|
"bubbleMaxRadiusSize": 42, # The max radius size of the bubbles, in pixels.
|
|
# If specified, the field must be a positive value.
|
|
"bubbleOpacity": 3.14, # The opacity of the bubbles between 0 and 1.0.
|
|
# 0 is fully transparent and 1 is fully opaque.
|
|
"groupIds": { # The data included in a domain or series. # The data containing the bubble group IDs. All bubbles with the same group
|
|
# ID are drawn in the same color. If bubble_sizes is specified then
|
|
# this field must also be specified but may contain blank values.
|
|
# This field is optional.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"bubbleSizes": { # The data included in a domain or series. # The data contianing the bubble sizes. Bubble sizes are used to draw
|
|
# the bubbles at different sizes relative to each other.
|
|
# If specified, group_ids must also be specified. This field is
|
|
# optional.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"bubbleLabels": { # The data included in a domain or series. # The data containing the bubble labels. These do not need to be unique.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"bubbleMinRadiusSize": 42, # The minimum radius size of the bubbles, in pixels.
|
|
# If specific, the field must be a positive value.
|
|
},
|
|
"orgChart": { # An <a href="/chart/interactive/docs/gallery/orgchart">org chart</a>. # An org chart specification.
|
|
# Org charts require a unique set of labels in labels and may
|
|
# optionally include parent_labels and tooltips.
|
|
# parent_labels contain, for each node, the label identifying the parent
|
|
# node. tooltips contain, for each node, an optional tooltip.
|
|
#
|
|
# For example, to describe an OrgChart with Alice as the CEO, Bob as the
|
|
# President (reporting to Alice) and Cathy as VP of Sales (also reporting to
|
|
# Alice), have labels contain "Alice", "Bob", "Cathy",
|
|
# parent_labels contain "", "Alice", "Alice" and tooltips contain
|
|
# "CEO", "President", "VP Sales".
|
|
"tooltips": { # The data included in a domain or series. # The data containing the tooltip for the corresponding node. A blank value
|
|
# results in no tooltip being displayed for the node.
|
|
# This field is optional.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"parentLabels": { # The data included in a domain or series. # The data containing the label of the parent for the corresponding node.
|
|
# A blank value indicates that the node has no parent and is a top-level
|
|
# node.
|
|
# This field is optional.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"nodeColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the org chart nodes.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"labels": { # The data included in a domain or series. # The data containing the labels for all the nodes in the chart. Labels
|
|
# must be unique.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"selectedNodeColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the selected org chart nodes.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"nodeSize": "A String", # The size of the org chart nodes.
|
|
},
|
|
},
|
|
},
|
|
},
|
|
"addConditionalFormatRule": { # Adds a new conditional format rule at the given index. # Adds a new conditional format rule.
|
|
# All subsequent rules' indexes are incremented.
|
|
"index": 42, # The zero-based index where the rule should be inserted.
|
|
"rule": { # A rule describing a conditional format. # The rule to add.
|
|
"ranges": [ # The ranges that are formatted if the condition is true.
|
|
# All the ranges must be on the same grid.
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
"booleanRule": { # A rule that may or may not match, depending on the condition. # The formatting is either "on" or "off" according to the rule.
|
|
"condition": { # A condition that can evaluate to true or false. # The condition of the rule. If the condition evaluates to true,
|
|
# the format is applied.
|
|
# BooleanConditions are used by conditional formatting,
|
|
# data validation, and the criteria in filters.
|
|
"values": [ # The values of the condition. The number of supported values depends
|
|
# on the condition type. Some support zero values,
|
|
# others one or two values,
|
|
# and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
|
|
{ # The value of the condition.
|
|
"relativeDate": "A String", # A relative date (based on the current date).
|
|
# Valid only if the type is
|
|
# DATE_BEFORE,
|
|
# DATE_AFTER,
|
|
# DATE_ON_OR_BEFORE or
|
|
# DATE_ON_OR_AFTER.
|
|
#
|
|
# Relative dates are not supported in data validation.
|
|
# They are supported only in conditional formatting and
|
|
# conditional filters.
|
|
"userEnteredValue": "A String", # A value the condition is based on.
|
|
# The value is parsed as if the user typed into a cell.
|
|
# Formulas are supported (and must begin with an `=` or a '+').
|
|
},
|
|
],
|
|
"type": "A String", # The type of condition.
|
|
},
|
|
"format": { # The format of a cell. # The format to apply.
|
|
# Conditional formatting can only apply a subset of formatting:
|
|
# bold, italic,
|
|
# strikethrough,
|
|
# foreground color &
|
|
# background color.
|
|
"numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
|
|
"pattern": "A String", # Pattern string used for formatting. If not set, a default pattern based on
|
|
# the user's locale will be used if necessary for the given type.
|
|
# See the [Date and Number Formats guide](/sheets/api/guides/formats) for
|
|
# more information about the supported patterns.
|
|
"type": "A String", # The type of the number format.
|
|
# When writing, this field must be set.
|
|
},
|
|
"textDirection": "A String", # The direction of the text in the cell.
|
|
"padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
|
|
# When updating padding, every field must be specified.
|
|
"top": 42, # The top padding of the cell.
|
|
"left": 42, # The left padding of the cell.
|
|
"right": 42, # The right padding of the cell.
|
|
"bottom": 42, # The bottom padding of the cell.
|
|
},
|
|
"horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
|
|
"backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"verticalAlignment": "A String", # The vertical alignment of the value in the cell.
|
|
"borders": { # The borders of the cell. # The borders of the cell.
|
|
"top": { # A border along a cell. # The top border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"right": { # A border along a cell. # The right border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"bottom": { # A border along a cell. # The bottom border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"left": { # A border along a cell. # The left border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
},
|
|
"textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell
|
|
"angle": 42, # The angle between the standard orientation and the desired orientation.
|
|
# Measured in degrees. Valid values are between -90 and 90. Positive
|
|
# angles are angled upwards, negative are angled downwards.
|
|
#
|
|
# Note: For LTR text direction positive angles are in the
|
|
# counterclockwise direction, whereas for RTL they are in the clockwise
|
|
# direction
|
|
"vertical": True or False, # If true, text reads top to bottom, but the orientation of individual
|
|
# characters is unchanged.
|
|
# For example:
|
|
#
|
|
# | V |
|
|
# | e |
|
|
# | r |
|
|
# | t |
|
|
# | i |
|
|
# | c |
|
|
# | a |
|
|
# | l |
|
|
},
|
|
"hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
|
|
"textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
"wrapStrategy": "A String", # The wrap strategy for the value in the cell.
|
|
},
|
|
},
|
|
"gradientRule": { # A rule that applies a gradient color scale format, based on # The formatting will vary based on the gradients in the rule.
|
|
# the interpolation points listed. The format of a cell will vary
|
|
# based on its contents as compared to the values of the interpolation
|
|
# points.
|
|
"maxpoint": { # A single interpolation point on a gradient conditional format. # The final interpolation point.
|
|
# These pin the gradient color scale according to the color,
|
|
# type and value chosen.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"type": "A String", # How the value should be interpreted.
|
|
"value": "A String", # The value this interpolation point uses. May be a formula.
|
|
# Unused if type is MIN or
|
|
# MAX.
|
|
},
|
|
"midpoint": { # A single interpolation point on a gradient conditional format. # An optional midway interpolation point.
|
|
# These pin the gradient color scale according to the color,
|
|
# type and value chosen.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"type": "A String", # How the value should be interpreted.
|
|
"value": "A String", # The value this interpolation point uses. May be a formula.
|
|
# Unused if type is MIN or
|
|
# MAX.
|
|
},
|
|
"minpoint": { # A single interpolation point on a gradient conditional format. # The starting interpolation point.
|
|
# These pin the gradient color scale according to the color,
|
|
# type and value chosen.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"type": "A String", # How the value should be interpreted.
|
|
"value": "A String", # The value this interpolation point uses. May be a formula.
|
|
# Unused if type is MIN or
|
|
# MAX.
|
|
},
|
|
},
|
|
},
|
|
},
|
|
"deleteBanding": { # Removes the banded range with the given ID from the spreadsheet. # Removes a banded range
|
|
"bandedRangeId": 42, # The ID of the banded range to delete.
|
|
},
|
|
"updateProtectedRange": { # Updates an existing protected range with the specified # Updates a protected range.
|
|
# protectedRangeId.
|
|
"fields": "A String", # The fields that should be updated. At least one field must be specified.
|
|
# The root `protectedRange` is implied and should not be specified.
|
|
# A single `"*"` can be used as short-hand for listing every field.
|
|
"protectedRange": { # A protected range. # The protected range to update with the new properties.
|
|
"unprotectedRanges": [ # The list of unprotected ranges within a protected sheet.
|
|
# Unprotected ranges are only supported on protected sheets.
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
"requestingUserCanEdit": True or False, # True if the user who requested this protected range can edit the
|
|
# protected area.
|
|
# This field is read-only.
|
|
"description": "A String", # The description of this protected range.
|
|
"namedRangeId": "A String", # The named range this protected range is backed by, if any.
|
|
#
|
|
# When writing, only one of range or named_range_id
|
|
# may be set.
|
|
"range": { # A range on a sheet. # The range that is being protected.
|
|
# The range may be fully unbounded, in which case this is considered
|
|
# a protected sheet.
|
|
#
|
|
# When writing, only one of range or named_range_id
|
|
# may be set.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
"editors": { # The editors of a protected range. # The users and groups with edit access to the protected range.
|
|
# This field is only visible to users with edit access to the protected
|
|
# range and the document.
|
|
# Editors are not supported with warning_only protection.
|
|
"domainUsersCanEdit": True or False, # True if anyone in the document's domain has edit access to the protected
|
|
# range. Domain protection is only supported on documents within a domain.
|
|
"users": [ # The email addresses of users with edit access to the protected range.
|
|
"A String",
|
|
],
|
|
"groups": [ # The email addresses of groups with edit access to the protected range.
|
|
"A String",
|
|
],
|
|
},
|
|
"protectedRangeId": 42, # The ID of the protected range.
|
|
# This field is read-only.
|
|
"warningOnly": True or False, # True if this protected range will show a warning when editing.
|
|
# Warning-based protection means that every user can edit data in the
|
|
# protected range, except editing will prompt a warning asking the user
|
|
# to confirm the edit.
|
|
#
|
|
# When writing: if this field is true, then editors is ignored.
|
|
# Additionally, if this field is changed from true to false and the
|
|
# `editors` field is not set (nor included in the field mask), then
|
|
# the editors will be set to all the editors in the document.
|
|
},
|
|
},
|
|
"repeatCell": { # Updates all cells in the range to the values in the given Cell object. # Repeats a single cell across a range.
|
|
# Only the fields listed in the fields field are updated; others are
|
|
# unchanged.
|
|
#
|
|
# If writing a cell with a formula, the formula's ranges will automatically
|
|
# increment for each field in the range.
|
|
# For example, if writing a cell with formula `=A1` into range B2:C4,
|
|
# B2 would be `=A1`, B3 would be `=A2`, B4 would be `=A3`,
|
|
# C2 would be `=B1`, C3 would be `=B2`, C4 would be `=B3`.
|
|
#
|
|
# To keep the formula's ranges static, use the `$` indicator.
|
|
# For example, use the formula `=$A$1` to prevent both the row and the
|
|
# column from incrementing.
|
|
"cell": { # Data about a specific cell. # The data to write.
|
|
"pivotTable": { # A pivot table. # A pivot table anchored at this cell. The size of pivot table itself
|
|
# is computed dynamically based on its data, grouping, filters, values,
|
|
# etc. Only the top-left cell of the pivot table contains the pivot table
|
|
# definition. The other cells will contain the calculated values of the
|
|
# results of the pivot in their effective_value fields.
|
|
"valueLayout": "A String", # Whether values should be listed horizontally (as columns)
|
|
# or vertically (as rows).
|
|
"rows": [ # Each row grouping in the pivot table.
|
|
{ # A single grouping (either row or column) in a pivot table.
|
|
"showTotals": True or False, # True if the pivot table should include the totals for this grouping.
|
|
"repeatHeadings": True or False, # True if the headings in this pivot group should be repeated.
|
|
# This is only valid for row groupings and is ignored by columns.
|
|
#
|
|
# By default, we minimize repitition of headings by not showing higher
|
|
# level headings where they are the same. For example, even though the
|
|
# third row below corresponds to "Q1 Mar", "Q1" is not shown because
|
|
# it is redundant with previous rows. Setting repeat_headings to true
|
|
# would cause "Q1" to be repeated for "Feb" and "Mar".
|
|
#
|
|
# +--------------+
|
|
# | Q1 | Jan |
|
|
# | | Feb |
|
|
# | | Mar |
|
|
# +--------+-----+
|
|
# | Q1 Total |
|
|
# +--------------+
|
|
"label": "A String", # The labels to use for the row/column groups which can be customized. For
|
|
# example, in the following pivot table, the row label is `Region` (which
|
|
# could be renamed to `State`) and the column label is `Product` (which
|
|
# could be renamed `Item`). Pivot tables created before December 2017 do
|
|
# not have header labels. If you'd like to add header labels to an existing
|
|
# pivot table, please delete the existing pivot table and then create a new
|
|
# pivot table with same parameters.
|
|
#
|
|
# +--------------+---------+-------+
|
|
# | SUM of Units | Product | |
|
|
# | Region | Pen | Paper |
|
|
# +--------------+---------+-------+
|
|
# | New York | 345 | 98 |
|
|
# | Oregon | 234 | 123 |
|
|
# | Tennessee | 531 | 415 |
|
|
# +--------------+---------+-------+
|
|
# | Grand Total | 1110 | 636 |
|
|
# +--------------+---------+-------+
|
|
"valueMetadata": [ # Metadata about values in the grouping.
|
|
{ # Metadata about a value in a pivot grouping.
|
|
"collapsed": True or False, # True if the data corresponding to the value is collapsed.
|
|
"value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to.
|
|
# (Note that formulaValue is not valid,
|
|
# because the values will be calculated.)
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
},
|
|
],
|
|
"valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by.
|
|
# If not specified, sorting is alphabetical by this group's values.
|
|
"buckets": [ # Determines the bucket from which values are chosen to sort.
|
|
#
|
|
# For example, in a pivot table with one row group & two column groups,
|
|
# the row group can list up to two values. The first value corresponds
|
|
# to a value within the first column group, and the second value
|
|
# corresponds to a value in the second column group. If no values
|
|
# are listed, this would indicate that the row should be sorted according
|
|
# to the "Grand Total" over the column groups. If a single value is listed,
|
|
# this would correspond to using the "Total" of that bucket.
|
|
{ # The kinds of value that a cell in a spreadsheet can have.
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
],
|
|
"valuesIndex": 42, # The offset in the PivotTable.values list which the values in this
|
|
# grouping should be sorted by.
|
|
},
|
|
"sortOrder": "A String", # The order the values in this group should be sorted.
|
|
"groupRule": { # An optional setting on a PivotGroup that defines buckets for the values # The group rule to apply to this row/column group.
|
|
# in the source data column rather than breaking out each individual value.
|
|
# Only one PivotGroup with a group rule may be added for each column in
|
|
# the source data, though on any given column you may add both a
|
|
# PivotGroup that has a rule and a PivotGroup that does not.
|
|
"histogramRule": { # Allows you to organize the numeric values in a source data column into # A HistogramRule.
|
|
# buckets of a constant size. All values from HistogramRule.start to
|
|
# HistogramRule.end are placed into groups of size
|
|
# HistogramRule.interval. In addition, all values below
|
|
# HistogramRule.start are placed in one group, and all values above
|
|
# HistogramRule.end are placed in another. Only
|
|
# HistogramRule.interval is required, though if HistogramRule.start
|
|
# and HistogramRule.end are both provided, HistogramRule.start must
|
|
# be less than HistogramRule.end. For example, a pivot table showing
|
|
# average purchase amount by age that has 50+ rows:
|
|
#
|
|
# +-----+-------------------+
|
|
# | Age | AVERAGE of Amount |
|
|
# +-----+-------------------+
|
|
# | 16 | $27.13 |
|
|
# | 17 | $5.24 |
|
|
# | 18 | $20.15 |
|
|
# ...
|
|
# +-----+-------------------+
|
|
# could be turned into a pivot table that looks like the one below by
|
|
# applying a histogram group rule with a HistogramRule.start of 25,
|
|
# an HistogramRule.interval of 20, and an HistogramRule.end
|
|
# of 65.
|
|
#
|
|
# +-------------+-------------------+
|
|
# | Grouped Age | AVERAGE of Amount |
|
|
# +-------------+-------------------+
|
|
# | < 25 | $19.34 |
|
|
# | 25-45 | $31.43 |
|
|
# | 45-65 | $35.87 |
|
|
# | > 65 | $27.55 |
|
|
# +-------------+-------------------+
|
|
# | Grand Total | $29.12 |
|
|
# +-------------+-------------------+
|
|
"start": 3.14, # The minimum value at which items are placed into buckets
|
|
# of constant size. Values below start are lumped into a single bucket.
|
|
# This field is optional.
|
|
"interval": 3.14, # The size of the buckets that are created. Must be positive.
|
|
"end": 3.14, # The maximum value at which items are placed into buckets
|
|
# of constant size. Values above end are lumped into a single bucket.
|
|
# This field is optional.
|
|
},
|
|
"manualRule": { # Allows you to manually organize the values in a source data column into # A ManualRule.
|
|
# buckets with names of your choosing. For example, a pivot table that
|
|
# aggregates population by state:
|
|
#
|
|
# +-------+-------------------+
|
|
# | State | SUM of Population |
|
|
# +-------+-------------------+
|
|
# | AK | 0.7 |
|
|
# | AL | 4.8 |
|
|
# | AR | 2.9 |
|
|
# ...
|
|
# +-------+-------------------+
|
|
# could be turned into a pivot table that aggregates population by time zone
|
|
# by providing a list of groups (for example, groupName = 'Central',
|
|
# items = ['AL', 'AR', 'IA', ...]) to a manual group rule.
|
|
# Note that a similar effect could be achieved by adding a time zone column
|
|
# to the source data and adjusting the pivot table.
|
|
#
|
|
# +-----------+-------------------+
|
|
# | Time Zone | SUM of Population |
|
|
# +-----------+-------------------+
|
|
# | Central | 106.3 |
|
|
# | Eastern | 151.9 |
|
|
# | Mountain | 17.4 |
|
|
# ...
|
|
# +-----------+-------------------+
|
|
"groups": [ # The list of group names and the corresponding items from the source data
|
|
# that map to each group name.
|
|
{ # A group name and a list of items from the source data that should be placed
|
|
# in the group with this name.
|
|
"items": [ # The items in the source data that should be placed into this group. Each
|
|
# item may be a string, number, or boolean. Items may appear in at most one
|
|
# group within a given ManualRule. Items that do not appear in any
|
|
# group will appear on their own.
|
|
{ # The kinds of value that a cell in a spreadsheet can have.
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
],
|
|
"groupName": { # The kinds of value that a cell in a spreadsheet can have. # The group name, which must be a string. Each group in a given
|
|
# ManualRule must have a unique group name.
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
},
|
|
],
|
|
},
|
|
"dateTimeRule": { # Allows you to organize the date-time values in a source data column into # A DateTimeRule.
|
|
# buckets based on selected parts of their date or time values. For example,
|
|
# consider a pivot table showing sales transactions by date:
|
|
#
|
|
# +----------+--------------+
|
|
# | Date | SUM of Sales |
|
|
# +----------+--------------+
|
|
# | 1/1/2017 | $621.14 |
|
|
# | 2/3/2017 | $708.84 |
|
|
# | 5/8/2017 | $326.84 |
|
|
# ...
|
|
# +----------+--------------+
|
|
# Applying a date-time group rule with a DateTimeRuleType of YEAR_MONTH
|
|
# results in the following pivot table.
|
|
#
|
|
# +--------------+--------------+
|
|
# | Grouped Date | SUM of Sales |
|
|
# +--------------+--------------+
|
|
# | 2017-Jan | $53,731.78 |
|
|
# | 2017-Feb | $83,475.32 |
|
|
# | 2017-Mar | $94,385.05 |
|
|
# ...
|
|
# +--------------+--------------+
|
|
"type": "A String", # The type of date-time grouping to apply.
|
|
},
|
|
},
|
|
"sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on.
|
|
#
|
|
# For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0`
|
|
# means this group refers to column `C`, whereas the offset `1` would refer
|
|
# to column `D`.
|
|
},
|
|
],
|
|
"source": { # A range on a sheet. # The range the pivot table is reading data from.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
"values": [ # A list of values to include in the pivot table.
|
|
{ # The definition of how a value in a pivot table should be calculated.
|
|
"formula": "A String", # A custom formula to calculate the value. The formula must start
|
|
# with an `=` character.
|
|
"name": "A String", # A name to use for the value.
|
|
"sourceColumnOffset": 42, # The column offset of the source range that this value reads from.
|
|
#
|
|
# For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0`
|
|
# means this value refers to column `C`, whereas the offset `1` would
|
|
# refer to column `D`.
|
|
"summarizeFunction": "A String", # A function to summarize the value.
|
|
# If formula is set, the only supported values are
|
|
# SUM and
|
|
# CUSTOM.
|
|
# If sourceColumnOffset is set, then `CUSTOM`
|
|
# is not supported.
|
|
"calculatedDisplayType": "A String", # If specified, indicates that pivot values should be displayed as
|
|
# the result of a calculation with another pivot value. For example, if
|
|
# calculated_display_type is specified as PERCENT_OF_GRAND_TOTAL, all the
|
|
# pivot values are displayed as the percentage of the grand total. In
|
|
# the Sheets UI, this is referred to as "Show As" in the value section of a
|
|
# pivot table.
|
|
},
|
|
],
|
|
"criteria": { # An optional mapping of filters per source column offset.
|
|
#
|
|
# The filters are applied before aggregating data into the pivot table.
|
|
# The map's key is the column offset of the source range that you want to
|
|
# filter, and the value is the criteria for that column.
|
|
#
|
|
# For example, if the source was `C10:E15`, a key of `0` will have the filter
|
|
# for column `C`, whereas the key `1` is for column `D`.
|
|
"a_key": { # Criteria for showing/hiding rows in a pivot table.
|
|
"visibleValues": [ # Values that should be included. Values not listed here are excluded.
|
|
"A String",
|
|
],
|
|
},
|
|
},
|
|
"columns": [ # Each column grouping in the pivot table.
|
|
{ # A single grouping (either row or column) in a pivot table.
|
|
"showTotals": True or False, # True if the pivot table should include the totals for this grouping.
|
|
"repeatHeadings": True or False, # True if the headings in this pivot group should be repeated.
|
|
# This is only valid for row groupings and is ignored by columns.
|
|
#
|
|
# By default, we minimize repitition of headings by not showing higher
|
|
# level headings where they are the same. For example, even though the
|
|
# third row below corresponds to "Q1 Mar", "Q1" is not shown because
|
|
# it is redundant with previous rows. Setting repeat_headings to true
|
|
# would cause "Q1" to be repeated for "Feb" and "Mar".
|
|
#
|
|
# +--------------+
|
|
# | Q1 | Jan |
|
|
# | | Feb |
|
|
# | | Mar |
|
|
# +--------+-----+
|
|
# | Q1 Total |
|
|
# +--------------+
|
|
"label": "A String", # The labels to use for the row/column groups which can be customized. For
|
|
# example, in the following pivot table, the row label is `Region` (which
|
|
# could be renamed to `State`) and the column label is `Product` (which
|
|
# could be renamed `Item`). Pivot tables created before December 2017 do
|
|
# not have header labels. If you'd like to add header labels to an existing
|
|
# pivot table, please delete the existing pivot table and then create a new
|
|
# pivot table with same parameters.
|
|
#
|
|
# +--------------+---------+-------+
|
|
# | SUM of Units | Product | |
|
|
# | Region | Pen | Paper |
|
|
# +--------------+---------+-------+
|
|
# | New York | 345 | 98 |
|
|
# | Oregon | 234 | 123 |
|
|
# | Tennessee | 531 | 415 |
|
|
# +--------------+---------+-------+
|
|
# | Grand Total | 1110 | 636 |
|
|
# +--------------+---------+-------+
|
|
"valueMetadata": [ # Metadata about values in the grouping.
|
|
{ # Metadata about a value in a pivot grouping.
|
|
"collapsed": True or False, # True if the data corresponding to the value is collapsed.
|
|
"value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to.
|
|
# (Note that formulaValue is not valid,
|
|
# because the values will be calculated.)
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
},
|
|
],
|
|
"valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by.
|
|
# If not specified, sorting is alphabetical by this group's values.
|
|
"buckets": [ # Determines the bucket from which values are chosen to sort.
|
|
#
|
|
# For example, in a pivot table with one row group & two column groups,
|
|
# the row group can list up to two values. The first value corresponds
|
|
# to a value within the first column group, and the second value
|
|
# corresponds to a value in the second column group. If no values
|
|
# are listed, this would indicate that the row should be sorted according
|
|
# to the "Grand Total" over the column groups. If a single value is listed,
|
|
# this would correspond to using the "Total" of that bucket.
|
|
{ # The kinds of value that a cell in a spreadsheet can have.
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
],
|
|
"valuesIndex": 42, # The offset in the PivotTable.values list which the values in this
|
|
# grouping should be sorted by.
|
|
},
|
|
"sortOrder": "A String", # The order the values in this group should be sorted.
|
|
"groupRule": { # An optional setting on a PivotGroup that defines buckets for the values # The group rule to apply to this row/column group.
|
|
# in the source data column rather than breaking out each individual value.
|
|
# Only one PivotGroup with a group rule may be added for each column in
|
|
# the source data, though on any given column you may add both a
|
|
# PivotGroup that has a rule and a PivotGroup that does not.
|
|
"histogramRule": { # Allows you to organize the numeric values in a source data column into # A HistogramRule.
|
|
# buckets of a constant size. All values from HistogramRule.start to
|
|
# HistogramRule.end are placed into groups of size
|
|
# HistogramRule.interval. In addition, all values below
|
|
# HistogramRule.start are placed in one group, and all values above
|
|
# HistogramRule.end are placed in another. Only
|
|
# HistogramRule.interval is required, though if HistogramRule.start
|
|
# and HistogramRule.end are both provided, HistogramRule.start must
|
|
# be less than HistogramRule.end. For example, a pivot table showing
|
|
# average purchase amount by age that has 50+ rows:
|
|
#
|
|
# +-----+-------------------+
|
|
# | Age | AVERAGE of Amount |
|
|
# +-----+-------------------+
|
|
# | 16 | $27.13 |
|
|
# | 17 | $5.24 |
|
|
# | 18 | $20.15 |
|
|
# ...
|
|
# +-----+-------------------+
|
|
# could be turned into a pivot table that looks like the one below by
|
|
# applying a histogram group rule with a HistogramRule.start of 25,
|
|
# an HistogramRule.interval of 20, and an HistogramRule.end
|
|
# of 65.
|
|
#
|
|
# +-------------+-------------------+
|
|
# | Grouped Age | AVERAGE of Amount |
|
|
# +-------------+-------------------+
|
|
# | < 25 | $19.34 |
|
|
# | 25-45 | $31.43 |
|
|
# | 45-65 | $35.87 |
|
|
# | > 65 | $27.55 |
|
|
# +-------------+-------------------+
|
|
# | Grand Total | $29.12 |
|
|
# +-------------+-------------------+
|
|
"start": 3.14, # The minimum value at which items are placed into buckets
|
|
# of constant size. Values below start are lumped into a single bucket.
|
|
# This field is optional.
|
|
"interval": 3.14, # The size of the buckets that are created. Must be positive.
|
|
"end": 3.14, # The maximum value at which items are placed into buckets
|
|
# of constant size. Values above end are lumped into a single bucket.
|
|
# This field is optional.
|
|
},
|
|
"manualRule": { # Allows you to manually organize the values in a source data column into # A ManualRule.
|
|
# buckets with names of your choosing. For example, a pivot table that
|
|
# aggregates population by state:
|
|
#
|
|
# +-------+-------------------+
|
|
# | State | SUM of Population |
|
|
# +-------+-------------------+
|
|
# | AK | 0.7 |
|
|
# | AL | 4.8 |
|
|
# | AR | 2.9 |
|
|
# ...
|
|
# +-------+-------------------+
|
|
# could be turned into a pivot table that aggregates population by time zone
|
|
# by providing a list of groups (for example, groupName = 'Central',
|
|
# items = ['AL', 'AR', 'IA', ...]) to a manual group rule.
|
|
# Note that a similar effect could be achieved by adding a time zone column
|
|
# to the source data and adjusting the pivot table.
|
|
#
|
|
# +-----------+-------------------+
|
|
# | Time Zone | SUM of Population |
|
|
# +-----------+-------------------+
|
|
# | Central | 106.3 |
|
|
# | Eastern | 151.9 |
|
|
# | Mountain | 17.4 |
|
|
# ...
|
|
# +-----------+-------------------+
|
|
"groups": [ # The list of group names and the corresponding items from the source data
|
|
# that map to each group name.
|
|
{ # A group name and a list of items from the source data that should be placed
|
|
# in the group with this name.
|
|
"items": [ # The items in the source data that should be placed into this group. Each
|
|
# item may be a string, number, or boolean. Items may appear in at most one
|
|
# group within a given ManualRule. Items that do not appear in any
|
|
# group will appear on their own.
|
|
{ # The kinds of value that a cell in a spreadsheet can have.
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
],
|
|
"groupName": { # The kinds of value that a cell in a spreadsheet can have. # The group name, which must be a string. Each group in a given
|
|
# ManualRule must have a unique group name.
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
},
|
|
],
|
|
},
|
|
"dateTimeRule": { # Allows you to organize the date-time values in a source data column into # A DateTimeRule.
|
|
# buckets based on selected parts of their date or time values. For example,
|
|
# consider a pivot table showing sales transactions by date:
|
|
#
|
|
# +----------+--------------+
|
|
# | Date | SUM of Sales |
|
|
# +----------+--------------+
|
|
# | 1/1/2017 | $621.14 |
|
|
# | 2/3/2017 | $708.84 |
|
|
# | 5/8/2017 | $326.84 |
|
|
# ...
|
|
# +----------+--------------+
|
|
# Applying a date-time group rule with a DateTimeRuleType of YEAR_MONTH
|
|
# results in the following pivot table.
|
|
#
|
|
# +--------------+--------------+
|
|
# | Grouped Date | SUM of Sales |
|
|
# +--------------+--------------+
|
|
# | 2017-Jan | $53,731.78 |
|
|
# | 2017-Feb | $83,475.32 |
|
|
# | 2017-Mar | $94,385.05 |
|
|
# ...
|
|
# +--------------+--------------+
|
|
"type": "A String", # The type of date-time grouping to apply.
|
|
},
|
|
},
|
|
"sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on.
|
|
#
|
|
# For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0`
|
|
# means this group refers to column `C`, whereas the offset `1` would refer
|
|
# to column `D`.
|
|
},
|
|
],
|
|
},
|
|
"hyperlink": "A String", # A hyperlink this cell points to, if any.
|
|
# This field is read-only. (To set it, use a `=HYPERLINK` formula
|
|
# in the userEnteredValue.formulaValue
|
|
# field.)
|
|
"effectiveValue": { # The kinds of value that a cell in a spreadsheet can have. # The effective value of the cell. For cells with formulas, this is
|
|
# the calculated value. For cells with literals, this is
|
|
# the same as the user_entered_value.
|
|
# This field is read-only.
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
"formattedValue": "A String", # The formatted value of the cell.
|
|
# This is the value as it's shown to the user.
|
|
# This field is read-only.
|
|
"userEnteredValue": { # The kinds of value that a cell in a spreadsheet can have. # The value the user entered in the cell. e.g, `1234`, `'Hello'`, or `=NOW()`
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# serial number format.
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
"note": "A String", # Any note on the cell.
|
|
"effectiveFormat": { # The format of a cell. # The effective format being used by the cell.
|
|
# This includes the results of applying any conditional formatting and,
|
|
# if the cell contains a formula, the computed number format.
|
|
# If the effective format is the default format, effective format will
|
|
# not be written.
|
|
# This field is read-only.
|
|
"numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
|
|
"pattern": "A String", # Pattern string used for formatting. If not set, a default pattern based on
|
|
# the user's locale will be used if necessary for the given type.
|
|
# See the [Date and Number Formats guide](/sheets/api/guides/formats) for
|
|
# more information about the supported patterns.
|
|
"type": "A String", # The type of the number format.
|
|
# When writing, this field must be set.
|
|
},
|
|
"textDirection": "A String", # The direction of the text in the cell.
|
|
"padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
|
|
# When updating padding, every field must be specified.
|
|
"top": 42, # The top padding of the cell.
|
|
"left": 42, # The left padding of the cell.
|
|
"right": 42, # The right padding of the cell.
|
|
"bottom": 42, # The bottom padding of the cell.
|
|
},
|
|
"horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
|
|
"backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"verticalAlignment": "A String", # The vertical alignment of the value in the cell.
|
|
"borders": { # The borders of the cell. # The borders of the cell.
|
|
"top": { # A border along a cell. # The top border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"right": { # A border along a cell. # The right border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"bottom": { # A border along a cell. # The bottom border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"left": { # A border along a cell. # The left border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
},
|
|
"textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell
|
|
"angle": 42, # The angle between the standard orientation and the desired orientation.
|
|
# Measured in degrees. Valid values are between -90 and 90. Positive
|
|
# angles are angled upwards, negative are angled downwards.
|
|
#
|
|
# Note: For LTR text direction positive angles are in the
|
|
# counterclockwise direction, whereas for RTL they are in the clockwise
|
|
# direction
|
|
"vertical": True or False, # If true, text reads top to bottom, but the orientation of individual
|
|
# characters is unchanged.
|
|
# For example:
|
|
#
|
|
# | V |
|
|
# | e |
|
|
# | r |
|
|
# | t |
|
|
# | i |
|
|
# | c |
|
|
# | a |
|
|
# | l |
|
|
},
|
|
"hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
|
|
"textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
"wrapStrategy": "A String", # The wrap strategy for the value in the cell.
|
|
},
|
|
"userEnteredFormat": { # The format of a cell. # The format the user entered for the cell.
|
|
#
|
|
# When writing, the new format will be merged with the existing format.
|
|
"numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
|
|
"pattern": "A String", # Pattern string used for formatting. If not set, a default pattern based on
|
|
# the user's locale will be used if necessary for the given type.
|
|
# See the [Date and Number Formats guide](/sheets/api/guides/formats) for
|
|
# more information about the supported patterns.
|
|
"type": "A String", # The type of the number format.
|
|
# When writing, this field must be set.
|
|
},
|
|
"textDirection": "A String", # The direction of the text in the cell.
|
|
"padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
|
|
# When updating padding, every field must be specified.
|
|
"top": 42, # The top padding of the cell.
|
|
"left": 42, # The left padding of the cell.
|
|
"right": 42, # The right padding of the cell.
|
|
"bottom": 42, # The bottom padding of the cell.
|
|
},
|
|
"horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
|
|
"backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"verticalAlignment": "A String", # The vertical alignment of the value in the cell.
|
|
"borders": { # The borders of the cell. # The borders of the cell.
|
|
"top": { # A border along a cell. # The top border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"right": { # A border along a cell. # The right border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"bottom": { # A border along a cell. # The bottom border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"left": { # A border along a cell. # The left border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
},
|
|
"textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell
|
|
"angle": 42, # The angle between the standard orientation and the desired orientation.
|
|
# Measured in degrees. Valid values are between -90 and 90. Positive
|
|
# angles are angled upwards, negative are angled downwards.
|
|
#
|
|
# Note: For LTR text direction positive angles are in the
|
|
# counterclockwise direction, whereas for RTL they are in the clockwise
|
|
# direction
|
|
"vertical": True or False, # If true, text reads top to bottom, but the orientation of individual
|
|
# characters is unchanged.
|
|
# For example:
|
|
#
|
|
# | V |
|
|
# | e |
|
|
# | r |
|
|
# | t |
|
|
# | i |
|
|
# | c |
|
|
# | a |
|
|
# | l |
|
|
},
|
|
"hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
|
|
"textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
"wrapStrategy": "A String", # The wrap strategy for the value in the cell.
|
|
},
|
|
"dataValidation": { # A data validation rule. # A data validation rule on the cell, if any.
|
|
#
|
|
# When writing, the new data validation rule will overwrite any prior rule.
|
|
"showCustomUi": True or False, # True if the UI should be customized based on the kind of condition.
|
|
# If true, "List" conditions will show a dropdown.
|
|
"strict": True or False, # True if invalid data should be rejected.
|
|
"inputMessage": "A String", # A message to show the user when adding data to the cell.
|
|
"condition": { # A condition that can evaluate to true or false. # The condition that data in the cell must match.
|
|
# BooleanConditions are used by conditional formatting,
|
|
# data validation, and the criteria in filters.
|
|
"values": [ # The values of the condition. The number of supported values depends
|
|
# on the condition type. Some support zero values,
|
|
# others one or two values,
|
|
# and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
|
|
{ # The value of the condition.
|
|
"relativeDate": "A String", # A relative date (based on the current date).
|
|
# Valid only if the type is
|
|
# DATE_BEFORE,
|
|
# DATE_AFTER,
|
|
# DATE_ON_OR_BEFORE or
|
|
# DATE_ON_OR_AFTER.
|
|
#
|
|
# Relative dates are not supported in data validation.
|
|
# They are supported only in conditional formatting and
|
|
# conditional filters.
|
|
"userEnteredValue": "A String", # A value the condition is based on.
|
|
# The value is parsed as if the user typed into a cell.
|
|
# Formulas are supported (and must begin with an `=` or a '+').
|
|
},
|
|
],
|
|
"type": "A String", # The type of condition.
|
|
},
|
|
},
|
|
"textFormatRuns": [ # Runs of rich text applied to subsections of the cell. Runs are only valid
|
|
# on user entered strings, not formulas, bools, or numbers.
|
|
# Runs start at specific indexes in the text and continue until the next
|
|
# run. Properties of a run will continue unless explicitly changed
|
|
# in a subsequent run (and properties of the first run will continue
|
|
# the properties of the cell unless explicitly changed).
|
|
#
|
|
# When writing, the new runs will overwrite any prior runs. When writing a
|
|
# new user_entered_value, previous runs are erased.
|
|
{ # A run of a text format. The format of this run continues until the start
|
|
# index of the next run.
|
|
# When updating, all fields must be set.
|
|
"startIndex": 42, # The character index where this run starts.
|
|
"format": { # The format of a run of text in a cell. # The format of this run. Absent values inherit the cell's format.
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
},
|
|
],
|
|
},
|
|
"fields": "A String", # The fields that should be updated. At least one field must be specified.
|
|
# The root `cell` is implied and should not be specified.
|
|
# A single `"*"` can be used as short-hand for listing every field.
|
|
"range": { # A range on a sheet. # The range to repeat the cell in.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
},
|
|
"findReplace": { # Finds and replaces data in cells over a range, sheet, or all sheets. # Finds and replaces occurrences of some text with other text.
|
|
"includeFormulas": True or False, # True if the search should include cells with formulas.
|
|
# False to skip cells with formulas.
|
|
"matchEntireCell": True or False, # True if the find value should match the entire cell.
|
|
"allSheets": True or False, # True to find/replace over all sheets.
|
|
"matchCase": True or False, # True if the search is case sensitive.
|
|
"find": "A String", # The value to search.
|
|
"range": { # A range on a sheet. # The range to find/replace over.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
"searchByRegex": True or False, # True if the find value is a regex.
|
|
# The regular expression and replacement should follow Java regex rules
|
|
# at https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html.
|
|
# The replacement string is allowed to refer to capturing groups.
|
|
# For example, if one cell has the contents `"Google Sheets"` and another
|
|
# has `"Google Docs"`, then searching for `"o.* (.*)"` with a replacement of
|
|
# `"$1 Rocks"` would change the contents of the cells to
|
|
# `"GSheets Rocks"` and `"GDocs Rocks"` respectively.
|
|
"sheetId": 42, # The sheet to find/replace over.
|
|
"replacement": "A String", # The value to use as the replacement.
|
|
},
|
|
"autoFill": { # Fills in more data based on existing data. # Automatically fills in more data based on existing data.
|
|
"useAlternateSeries": True or False, # True if we should generate data with the "alternate" series.
|
|
# This differs based on the type and amount of source data.
|
|
"sourceAndDestination": { # A combination of a source range and how to extend that source. # The source and destination areas to autofill.
|
|
# This explicitly lists the source of the autofill and where to
|
|
# extend that data.
|
|
"fillLength": 42, # The number of rows or columns that data should be filled into.
|
|
# Positive numbers expand beyond the last row or last column
|
|
# of the source. Negative numbers expand before the first row
|
|
# or first column of the source.
|
|
"dimension": "A String", # The dimension that data should be filled into.
|
|
"source": { # A range on a sheet. # The location of the data to use as the source of the autofill.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
},
|
|
"range": { # A range on a sheet. # The range to autofill. This will examine the range and detect
|
|
# the location that has data and automatically fill that data
|
|
# in to the rest of the range.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
},
|
|
"setBasicFilter": { # Sets the basic filter associated with a sheet. # Sets the basic filter on a sheet.
|
|
"filter": { # The default filter associated with a sheet. # The filter to set.
|
|
"range": { # A range on a sheet. # The range the filter covers.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
"sortSpecs": [ # The sort order per column. Later specifications are used when values
|
|
# are equal in the earlier specifications.
|
|
{ # A sort order associated with a specific column or row.
|
|
"sortOrder": "A String", # The order data should be sorted.
|
|
"dimensionIndex": 42, # The dimension the sort should be applied to.
|
|
},
|
|
],
|
|
"criteria": { # The criteria for showing/hiding values per column.
|
|
# The map's key is the column index, and the value is the criteria for
|
|
# that column.
|
|
"a_key": { # Criteria for showing/hiding rows in a filter or filter view.
|
|
"hiddenValues": [ # Values that should be hidden.
|
|
"A String",
|
|
],
|
|
"condition": { # A condition that can evaluate to true or false. # A condition that must be true for values to be shown.
|
|
# (This does not override hiddenValues -- if a value is listed there,
|
|
# it will still be hidden.)
|
|
# BooleanConditions are used by conditional formatting,
|
|
# data validation, and the criteria in filters.
|
|
"values": [ # The values of the condition. The number of supported values depends
|
|
# on the condition type. Some support zero values,
|
|
# others one or two values,
|
|
# and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
|
|
{ # The value of the condition.
|
|
"relativeDate": "A String", # A relative date (based on the current date).
|
|
# Valid only if the type is
|
|
# DATE_BEFORE,
|
|
# DATE_AFTER,
|
|
# DATE_ON_OR_BEFORE or
|
|
# DATE_ON_OR_AFTER.
|
|
#
|
|
# Relative dates are not supported in data validation.
|
|
# They are supported only in conditional formatting and
|
|
# conditional filters.
|
|
"userEnteredValue": "A String", # A value the condition is based on.
|
|
# The value is parsed as if the user typed into a cell.
|
|
# Formulas are supported (and must begin with an `=` or a '+').
|
|
},
|
|
],
|
|
"type": "A String", # The type of condition.
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
"updateSpreadsheetProperties": { # Updates properties of a spreadsheet. # Updates the spreadsheet's properties.
|
|
"fields": "A String", # The fields that should be updated. At least one field must be specified.
|
|
# The root 'properties' is implied and should not be specified.
|
|
# A single `"*"` can be used as short-hand for listing every field.
|
|
"properties": { # Properties of a spreadsheet. # The properties to update.
|
|
"title": "A String", # The title of the spreadsheet.
|
|
"locale": "A String", # The locale of the spreadsheet in one of the following formats:
|
|
#
|
|
# * an ISO 639-1 language code such as `en`
|
|
#
|
|
# * an ISO 639-2 language code such as `fil`, if no 639-1 code exists
|
|
#
|
|
# * a combination of the ISO language code and country code, such as `en_US`
|
|
#
|
|
# Note: when updating this field, not all locales/languages are supported.
|
|
"defaultFormat": { # The format of a cell. # The default format of all cells in the spreadsheet.
|
|
# CellData.effectiveFormat will not be set if
|
|
# the cell's format is equal to this default format. This field is read-only.
|
|
"numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
|
|
"pattern": "A String", # Pattern string used for formatting. If not set, a default pattern based on
|
|
# the user's locale will be used if necessary for the given type.
|
|
# See the [Date and Number Formats guide](/sheets/api/guides/formats) for
|
|
# more information about the supported patterns.
|
|
"type": "A String", # The type of the number format.
|
|
# When writing, this field must be set.
|
|
},
|
|
"textDirection": "A String", # The direction of the text in the cell.
|
|
"padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
|
|
# When updating padding, every field must be specified.
|
|
"top": 42, # The top padding of the cell.
|
|
"left": 42, # The left padding of the cell.
|
|
"right": 42, # The right padding of the cell.
|
|
"bottom": 42, # The bottom padding of the cell.
|
|
},
|
|
"horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
|
|
"backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"verticalAlignment": "A String", # The vertical alignment of the value in the cell.
|
|
"borders": { # The borders of the cell. # The borders of the cell.
|
|
"top": { # A border along a cell. # The top border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"right": { # A border along a cell. # The right border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"bottom": { # A border along a cell. # The bottom border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"left": { # A border along a cell. # The left border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
},
|
|
"textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell
|
|
"angle": 42, # The angle between the standard orientation and the desired orientation.
|
|
# Measured in degrees. Valid values are between -90 and 90. Positive
|
|
# angles are angled upwards, negative are angled downwards.
|
|
#
|
|
# Note: For LTR text direction positive angles are in the
|
|
# counterclockwise direction, whereas for RTL they are in the clockwise
|
|
# direction
|
|
"vertical": True or False, # If true, text reads top to bottom, but the orientation of individual
|
|
# characters is unchanged.
|
|
# For example:
|
|
#
|
|
# | V |
|
|
# | e |
|
|
# | r |
|
|
# | t |
|
|
# | i |
|
|
# | c |
|
|
# | a |
|
|
# | l |
|
|
},
|
|
"hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
|
|
"textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
"wrapStrategy": "A String", # The wrap strategy for the value in the cell.
|
|
},
|
|
"autoRecalc": "A String", # The amount of time to wait before volatile functions are recalculated.
|
|
"iterativeCalculationSettings": { # Settings to control how circular dependencies are resolved with iterative # Determines whether and how circular references are resolved with iterative
|
|
# calculation. Absence of this field means that circular references will
|
|
# result in calculation errors.
|
|
# calculation.
|
|
"convergenceThreshold": 3.14, # When iterative calculation is enabled and successive results differ by
|
|
# less than this threshold value, the calculation rounds stop.
|
|
"maxIterations": 42, # When iterative calculation is enabled, the maximum number of calculation
|
|
# rounds to perform.
|
|
},
|
|
"timeZone": "A String", # The time zone of the spreadsheet, in CLDR format such as
|
|
# `America/New_York`. If the time zone isn't recognized, this may
|
|
# be a custom time zone such as `GMT-07:00`.
|
|
},
|
|
},
|
|
"updateCells": { # Updates all cells in a range with new data. # Updates many cells at once.
|
|
"fields": "A String", # The fields of CellData that should be updated.
|
|
# At least one field must be specified.
|
|
# The root is the CellData; 'row.values.' should not be specified.
|
|
# A single `"*"` can be used as short-hand for listing every field.
|
|
"range": { # A range on a sheet. # The range to write data to.
|
|
#
|
|
# If the data in rows does not cover the entire requested range,
|
|
# the fields matching those set in fields will be cleared.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
"rows": [ # The data to write.
|
|
{ # Data about each cell in a row.
|
|
"values": [ # The values in the row, one per column.
|
|
{ # Data about a specific cell.
|
|
"pivotTable": { # A pivot table. # A pivot table anchored at this cell. The size of pivot table itself
|
|
# is computed dynamically based on its data, grouping, filters, values,
|
|
# etc. Only the top-left cell of the pivot table contains the pivot table
|
|
# definition. The other cells will contain the calculated values of the
|
|
# results of the pivot in their effective_value fields.
|
|
"valueLayout": "A String", # Whether values should be listed horizontally (as columns)
|
|
# or vertically (as rows).
|
|
"rows": [ # Each row grouping in the pivot table.
|
|
{ # A single grouping (either row or column) in a pivot table.
|
|
"showTotals": True or False, # True if the pivot table should include the totals for this grouping.
|
|
"repeatHeadings": True or False, # True if the headings in this pivot group should be repeated.
|
|
# This is only valid for row groupings and is ignored by columns.
|
|
#
|
|
# By default, we minimize repitition of headings by not showing higher
|
|
# level headings where they are the same. For example, even though the
|
|
# third row below corresponds to "Q1 Mar", "Q1" is not shown because
|
|
# it is redundant with previous rows. Setting repeat_headings to true
|
|
# would cause "Q1" to be repeated for "Feb" and "Mar".
|
|
#
|
|
# +--------------+
|
|
# | Q1 | Jan |
|
|
# | | Feb |
|
|
# | | Mar |
|
|
# +--------+-----+
|
|
# | Q1 Total |
|
|
# +--------------+
|
|
"label": "A String", # The labels to use for the row/column groups which can be customized. For
|
|
# example, in the following pivot table, the row label is `Region` (which
|
|
# could be renamed to `State`) and the column label is `Product` (which
|
|
# could be renamed `Item`). Pivot tables created before December 2017 do
|
|
# not have header labels. If you'd like to add header labels to an existing
|
|
# pivot table, please delete the existing pivot table and then create a new
|
|
# pivot table with same parameters.
|
|
#
|
|
# +--------------+---------+-------+
|
|
# | SUM of Units | Product | |
|
|
# | Region | Pen | Paper |
|
|
# +--------------+---------+-------+
|
|
# | New York | 345 | 98 |
|
|
# | Oregon | 234 | 123 |
|
|
# | Tennessee | 531 | 415 |
|
|
# +--------------+---------+-------+
|
|
# | Grand Total | 1110 | 636 |
|
|
# +--------------+---------+-------+
|
|
"valueMetadata": [ # Metadata about values in the grouping.
|
|
{ # Metadata about a value in a pivot grouping.
|
|
"collapsed": True or False, # True if the data corresponding to the value is collapsed.
|
|
"value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to.
|
|
# (Note that formulaValue is not valid,
|
|
# because the values will be calculated.)
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
},
|
|
],
|
|
"valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by.
|
|
# If not specified, sorting is alphabetical by this group's values.
|
|
"buckets": [ # Determines the bucket from which values are chosen to sort.
|
|
#
|
|
# For example, in a pivot table with one row group & two column groups,
|
|
# the row group can list up to two values. The first value corresponds
|
|
# to a value within the first column group, and the second value
|
|
# corresponds to a value in the second column group. If no values
|
|
# are listed, this would indicate that the row should be sorted according
|
|
# to the "Grand Total" over the column groups. If a single value is listed,
|
|
# this would correspond to using the "Total" of that bucket.
|
|
{ # The kinds of value that a cell in a spreadsheet can have.
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
],
|
|
"valuesIndex": 42, # The offset in the PivotTable.values list which the values in this
|
|
# grouping should be sorted by.
|
|
},
|
|
"sortOrder": "A String", # The order the values in this group should be sorted.
|
|
"groupRule": { # An optional setting on a PivotGroup that defines buckets for the values # The group rule to apply to this row/column group.
|
|
# in the source data column rather than breaking out each individual value.
|
|
# Only one PivotGroup with a group rule may be added for each column in
|
|
# the source data, though on any given column you may add both a
|
|
# PivotGroup that has a rule and a PivotGroup that does not.
|
|
"histogramRule": { # Allows you to organize the numeric values in a source data column into # A HistogramRule.
|
|
# buckets of a constant size. All values from HistogramRule.start to
|
|
# HistogramRule.end are placed into groups of size
|
|
# HistogramRule.interval. In addition, all values below
|
|
# HistogramRule.start are placed in one group, and all values above
|
|
# HistogramRule.end are placed in another. Only
|
|
# HistogramRule.interval is required, though if HistogramRule.start
|
|
# and HistogramRule.end are both provided, HistogramRule.start must
|
|
# be less than HistogramRule.end. For example, a pivot table showing
|
|
# average purchase amount by age that has 50+ rows:
|
|
#
|
|
# +-----+-------------------+
|
|
# | Age | AVERAGE of Amount |
|
|
# +-----+-------------------+
|
|
# | 16 | $27.13 |
|
|
# | 17 | $5.24 |
|
|
# | 18 | $20.15 |
|
|
# ...
|
|
# +-----+-------------------+
|
|
# could be turned into a pivot table that looks like the one below by
|
|
# applying a histogram group rule with a HistogramRule.start of 25,
|
|
# an HistogramRule.interval of 20, and an HistogramRule.end
|
|
# of 65.
|
|
#
|
|
# +-------------+-------------------+
|
|
# | Grouped Age | AVERAGE of Amount |
|
|
# +-------------+-------------------+
|
|
# | < 25 | $19.34 |
|
|
# | 25-45 | $31.43 |
|
|
# | 45-65 | $35.87 |
|
|
# | > 65 | $27.55 |
|
|
# +-------------+-------------------+
|
|
# | Grand Total | $29.12 |
|
|
# +-------------+-------------------+
|
|
"start": 3.14, # The minimum value at which items are placed into buckets
|
|
# of constant size. Values below start are lumped into a single bucket.
|
|
# This field is optional.
|
|
"interval": 3.14, # The size of the buckets that are created. Must be positive.
|
|
"end": 3.14, # The maximum value at which items are placed into buckets
|
|
# of constant size. Values above end are lumped into a single bucket.
|
|
# This field is optional.
|
|
},
|
|
"manualRule": { # Allows you to manually organize the values in a source data column into # A ManualRule.
|
|
# buckets with names of your choosing. For example, a pivot table that
|
|
# aggregates population by state:
|
|
#
|
|
# +-------+-------------------+
|
|
# | State | SUM of Population |
|
|
# +-------+-------------------+
|
|
# | AK | 0.7 |
|
|
# | AL | 4.8 |
|
|
# | AR | 2.9 |
|
|
# ...
|
|
# +-------+-------------------+
|
|
# could be turned into a pivot table that aggregates population by time zone
|
|
# by providing a list of groups (for example, groupName = 'Central',
|
|
# items = ['AL', 'AR', 'IA', ...]) to a manual group rule.
|
|
# Note that a similar effect could be achieved by adding a time zone column
|
|
# to the source data and adjusting the pivot table.
|
|
#
|
|
# +-----------+-------------------+
|
|
# | Time Zone | SUM of Population |
|
|
# +-----------+-------------------+
|
|
# | Central | 106.3 |
|
|
# | Eastern | 151.9 |
|
|
# | Mountain | 17.4 |
|
|
# ...
|
|
# +-----------+-------------------+
|
|
"groups": [ # The list of group names and the corresponding items from the source data
|
|
# that map to each group name.
|
|
{ # A group name and a list of items from the source data that should be placed
|
|
# in the group with this name.
|
|
"items": [ # The items in the source data that should be placed into this group. Each
|
|
# item may be a string, number, or boolean. Items may appear in at most one
|
|
# group within a given ManualRule. Items that do not appear in any
|
|
# group will appear on their own.
|
|
{ # The kinds of value that a cell in a spreadsheet can have.
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
],
|
|
"groupName": { # The kinds of value that a cell in a spreadsheet can have. # The group name, which must be a string. Each group in a given
|
|
# ManualRule must have a unique group name.
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
},
|
|
],
|
|
},
|
|
"dateTimeRule": { # Allows you to organize the date-time values in a source data column into # A DateTimeRule.
|
|
# buckets based on selected parts of their date or time values. For example,
|
|
# consider a pivot table showing sales transactions by date:
|
|
#
|
|
# +----------+--------------+
|
|
# | Date | SUM of Sales |
|
|
# +----------+--------------+
|
|
# | 1/1/2017 | $621.14 |
|
|
# | 2/3/2017 | $708.84 |
|
|
# | 5/8/2017 | $326.84 |
|
|
# ...
|
|
# +----------+--------------+
|
|
# Applying a date-time group rule with a DateTimeRuleType of YEAR_MONTH
|
|
# results in the following pivot table.
|
|
#
|
|
# +--------------+--------------+
|
|
# | Grouped Date | SUM of Sales |
|
|
# +--------------+--------------+
|
|
# | 2017-Jan | $53,731.78 |
|
|
# | 2017-Feb | $83,475.32 |
|
|
# | 2017-Mar | $94,385.05 |
|
|
# ...
|
|
# +--------------+--------------+
|
|
"type": "A String", # The type of date-time grouping to apply.
|
|
},
|
|
},
|
|
"sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on.
|
|
#
|
|
# For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0`
|
|
# means this group refers to column `C`, whereas the offset `1` would refer
|
|
# to column `D`.
|
|
},
|
|
],
|
|
"source": { # A range on a sheet. # The range the pivot table is reading data from.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
"values": [ # A list of values to include in the pivot table.
|
|
{ # The definition of how a value in a pivot table should be calculated.
|
|
"formula": "A String", # A custom formula to calculate the value. The formula must start
|
|
# with an `=` character.
|
|
"name": "A String", # A name to use for the value.
|
|
"sourceColumnOffset": 42, # The column offset of the source range that this value reads from.
|
|
#
|
|
# For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0`
|
|
# means this value refers to column `C`, whereas the offset `1` would
|
|
# refer to column `D`.
|
|
"summarizeFunction": "A String", # A function to summarize the value.
|
|
# If formula is set, the only supported values are
|
|
# SUM and
|
|
# CUSTOM.
|
|
# If sourceColumnOffset is set, then `CUSTOM`
|
|
# is not supported.
|
|
"calculatedDisplayType": "A String", # If specified, indicates that pivot values should be displayed as
|
|
# the result of a calculation with another pivot value. For example, if
|
|
# calculated_display_type is specified as PERCENT_OF_GRAND_TOTAL, all the
|
|
# pivot values are displayed as the percentage of the grand total. In
|
|
# the Sheets UI, this is referred to as "Show As" in the value section of a
|
|
# pivot table.
|
|
},
|
|
],
|
|
"criteria": { # An optional mapping of filters per source column offset.
|
|
#
|
|
# The filters are applied before aggregating data into the pivot table.
|
|
# The map's key is the column offset of the source range that you want to
|
|
# filter, and the value is the criteria for that column.
|
|
#
|
|
# For example, if the source was `C10:E15`, a key of `0` will have the filter
|
|
# for column `C`, whereas the key `1` is for column `D`.
|
|
"a_key": { # Criteria for showing/hiding rows in a pivot table.
|
|
"visibleValues": [ # Values that should be included. Values not listed here are excluded.
|
|
"A String",
|
|
],
|
|
},
|
|
},
|
|
"columns": [ # Each column grouping in the pivot table.
|
|
{ # A single grouping (either row or column) in a pivot table.
|
|
"showTotals": True or False, # True if the pivot table should include the totals for this grouping.
|
|
"repeatHeadings": True or False, # True if the headings in this pivot group should be repeated.
|
|
# This is only valid for row groupings and is ignored by columns.
|
|
#
|
|
# By default, we minimize repitition of headings by not showing higher
|
|
# level headings where they are the same. For example, even though the
|
|
# third row below corresponds to "Q1 Mar", "Q1" is not shown because
|
|
# it is redundant with previous rows. Setting repeat_headings to true
|
|
# would cause "Q1" to be repeated for "Feb" and "Mar".
|
|
#
|
|
# +--------------+
|
|
# | Q1 | Jan |
|
|
# | | Feb |
|
|
# | | Mar |
|
|
# +--------+-----+
|
|
# | Q1 Total |
|
|
# +--------------+
|
|
"label": "A String", # The labels to use for the row/column groups which can be customized. For
|
|
# example, in the following pivot table, the row label is `Region` (which
|
|
# could be renamed to `State`) and the column label is `Product` (which
|
|
# could be renamed `Item`). Pivot tables created before December 2017 do
|
|
# not have header labels. If you'd like to add header labels to an existing
|
|
# pivot table, please delete the existing pivot table and then create a new
|
|
# pivot table with same parameters.
|
|
#
|
|
# +--------------+---------+-------+
|
|
# | SUM of Units | Product | |
|
|
# | Region | Pen | Paper |
|
|
# +--------------+---------+-------+
|
|
# | New York | 345 | 98 |
|
|
# | Oregon | 234 | 123 |
|
|
# | Tennessee | 531 | 415 |
|
|
# +--------------+---------+-------+
|
|
# | Grand Total | 1110 | 636 |
|
|
# +--------------+---------+-------+
|
|
"valueMetadata": [ # Metadata about values in the grouping.
|
|
{ # Metadata about a value in a pivot grouping.
|
|
"collapsed": True or False, # True if the data corresponding to the value is collapsed.
|
|
"value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to.
|
|
# (Note that formulaValue is not valid,
|
|
# because the values will be calculated.)
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
},
|
|
],
|
|
"valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by.
|
|
# If not specified, sorting is alphabetical by this group's values.
|
|
"buckets": [ # Determines the bucket from which values are chosen to sort.
|
|
#
|
|
# For example, in a pivot table with one row group & two column groups,
|
|
# the row group can list up to two values. The first value corresponds
|
|
# to a value within the first column group, and the second value
|
|
# corresponds to a value in the second column group. If no values
|
|
# are listed, this would indicate that the row should be sorted according
|
|
# to the "Grand Total" over the column groups. If a single value is listed,
|
|
# this would correspond to using the "Total" of that bucket.
|
|
{ # The kinds of value that a cell in a spreadsheet can have.
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
],
|
|
"valuesIndex": 42, # The offset in the PivotTable.values list which the values in this
|
|
# grouping should be sorted by.
|
|
},
|
|
"sortOrder": "A String", # The order the values in this group should be sorted.
|
|
"groupRule": { # An optional setting on a PivotGroup that defines buckets for the values # The group rule to apply to this row/column group.
|
|
# in the source data column rather than breaking out each individual value.
|
|
# Only one PivotGroup with a group rule may be added for each column in
|
|
# the source data, though on any given column you may add both a
|
|
# PivotGroup that has a rule and a PivotGroup that does not.
|
|
"histogramRule": { # Allows you to organize the numeric values in a source data column into # A HistogramRule.
|
|
# buckets of a constant size. All values from HistogramRule.start to
|
|
# HistogramRule.end are placed into groups of size
|
|
# HistogramRule.interval. In addition, all values below
|
|
# HistogramRule.start are placed in one group, and all values above
|
|
# HistogramRule.end are placed in another. Only
|
|
# HistogramRule.interval is required, though if HistogramRule.start
|
|
# and HistogramRule.end are both provided, HistogramRule.start must
|
|
# be less than HistogramRule.end. For example, a pivot table showing
|
|
# average purchase amount by age that has 50+ rows:
|
|
#
|
|
# +-----+-------------------+
|
|
# | Age | AVERAGE of Amount |
|
|
# +-----+-------------------+
|
|
# | 16 | $27.13 |
|
|
# | 17 | $5.24 |
|
|
# | 18 | $20.15 |
|
|
# ...
|
|
# +-----+-------------------+
|
|
# could be turned into a pivot table that looks like the one below by
|
|
# applying a histogram group rule with a HistogramRule.start of 25,
|
|
# an HistogramRule.interval of 20, and an HistogramRule.end
|
|
# of 65.
|
|
#
|
|
# +-------------+-------------------+
|
|
# | Grouped Age | AVERAGE of Amount |
|
|
# +-------------+-------------------+
|
|
# | < 25 | $19.34 |
|
|
# | 25-45 | $31.43 |
|
|
# | 45-65 | $35.87 |
|
|
# | > 65 | $27.55 |
|
|
# +-------------+-------------------+
|
|
# | Grand Total | $29.12 |
|
|
# +-------------+-------------------+
|
|
"start": 3.14, # The minimum value at which items are placed into buckets
|
|
# of constant size. Values below start are lumped into a single bucket.
|
|
# This field is optional.
|
|
"interval": 3.14, # The size of the buckets that are created. Must be positive.
|
|
"end": 3.14, # The maximum value at which items are placed into buckets
|
|
# of constant size. Values above end are lumped into a single bucket.
|
|
# This field is optional.
|
|
},
|
|
"manualRule": { # Allows you to manually organize the values in a source data column into # A ManualRule.
|
|
# buckets with names of your choosing. For example, a pivot table that
|
|
# aggregates population by state:
|
|
#
|
|
# +-------+-------------------+
|
|
# | State | SUM of Population |
|
|
# +-------+-------------------+
|
|
# | AK | 0.7 |
|
|
# | AL | 4.8 |
|
|
# | AR | 2.9 |
|
|
# ...
|
|
# +-------+-------------------+
|
|
# could be turned into a pivot table that aggregates population by time zone
|
|
# by providing a list of groups (for example, groupName = 'Central',
|
|
# items = ['AL', 'AR', 'IA', ...]) to a manual group rule.
|
|
# Note that a similar effect could be achieved by adding a time zone column
|
|
# to the source data and adjusting the pivot table.
|
|
#
|
|
# +-----------+-------------------+
|
|
# | Time Zone | SUM of Population |
|
|
# +-----------+-------------------+
|
|
# | Central | 106.3 |
|
|
# | Eastern | 151.9 |
|
|
# | Mountain | 17.4 |
|
|
# ...
|
|
# +-----------+-------------------+
|
|
"groups": [ # The list of group names and the corresponding items from the source data
|
|
# that map to each group name.
|
|
{ # A group name and a list of items from the source data that should be placed
|
|
# in the group with this name.
|
|
"items": [ # The items in the source data that should be placed into this group. Each
|
|
# item may be a string, number, or boolean. Items may appear in at most one
|
|
# group within a given ManualRule. Items that do not appear in any
|
|
# group will appear on their own.
|
|
{ # The kinds of value that a cell in a spreadsheet can have.
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
],
|
|
"groupName": { # The kinds of value that a cell in a spreadsheet can have. # The group name, which must be a string. Each group in a given
|
|
# ManualRule must have a unique group name.
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
},
|
|
],
|
|
},
|
|
"dateTimeRule": { # Allows you to organize the date-time values in a source data column into # A DateTimeRule.
|
|
# buckets based on selected parts of their date or time values. For example,
|
|
# consider a pivot table showing sales transactions by date:
|
|
#
|
|
# +----------+--------------+
|
|
# | Date | SUM of Sales |
|
|
# +----------+--------------+
|
|
# | 1/1/2017 | $621.14 |
|
|
# | 2/3/2017 | $708.84 |
|
|
# | 5/8/2017 | $326.84 |
|
|
# ...
|
|
# +----------+--------------+
|
|
# Applying a date-time group rule with a DateTimeRuleType of YEAR_MONTH
|
|
# results in the following pivot table.
|
|
#
|
|
# +--------------+--------------+
|
|
# | Grouped Date | SUM of Sales |
|
|
# +--------------+--------------+
|
|
# | 2017-Jan | $53,731.78 |
|
|
# | 2017-Feb | $83,475.32 |
|
|
# | 2017-Mar | $94,385.05 |
|
|
# ...
|
|
# +--------------+--------------+
|
|
"type": "A String", # The type of date-time grouping to apply.
|
|
},
|
|
},
|
|
"sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on.
|
|
#
|
|
# For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0`
|
|
# means this group refers to column `C`, whereas the offset `1` would refer
|
|
# to column `D`.
|
|
},
|
|
],
|
|
},
|
|
"hyperlink": "A String", # A hyperlink this cell points to, if any.
|
|
# This field is read-only. (To set it, use a `=HYPERLINK` formula
|
|
# in the userEnteredValue.formulaValue
|
|
# field.)
|
|
"effectiveValue": { # The kinds of value that a cell in a spreadsheet can have. # The effective value of the cell. For cells with formulas, this is
|
|
# the calculated value. For cells with literals, this is
|
|
# the same as the user_entered_value.
|
|
# This field is read-only.
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
"formattedValue": "A String", # The formatted value of the cell.
|
|
# This is the value as it's shown to the user.
|
|
# This field is read-only.
|
|
"userEnteredValue": { # The kinds of value that a cell in a spreadsheet can have. # The value the user entered in the cell. e.g, `1234`, `'Hello'`, or `=NOW()`
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# serial number format.
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
"note": "A String", # Any note on the cell.
|
|
"effectiveFormat": { # The format of a cell. # The effective format being used by the cell.
|
|
# This includes the results of applying any conditional formatting and,
|
|
# if the cell contains a formula, the computed number format.
|
|
# If the effective format is the default format, effective format will
|
|
# not be written.
|
|
# This field is read-only.
|
|
"numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
|
|
"pattern": "A String", # Pattern string used for formatting. If not set, a default pattern based on
|
|
# the user's locale will be used if necessary for the given type.
|
|
# See the [Date and Number Formats guide](/sheets/api/guides/formats) for
|
|
# more information about the supported patterns.
|
|
"type": "A String", # The type of the number format.
|
|
# When writing, this field must be set.
|
|
},
|
|
"textDirection": "A String", # The direction of the text in the cell.
|
|
"padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
|
|
# When updating padding, every field must be specified.
|
|
"top": 42, # The top padding of the cell.
|
|
"left": 42, # The left padding of the cell.
|
|
"right": 42, # The right padding of the cell.
|
|
"bottom": 42, # The bottom padding of the cell.
|
|
},
|
|
"horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
|
|
"backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"verticalAlignment": "A String", # The vertical alignment of the value in the cell.
|
|
"borders": { # The borders of the cell. # The borders of the cell.
|
|
"top": { # A border along a cell. # The top border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"right": { # A border along a cell. # The right border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"bottom": { # A border along a cell. # The bottom border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"left": { # A border along a cell. # The left border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
},
|
|
"textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell
|
|
"angle": 42, # The angle between the standard orientation and the desired orientation.
|
|
# Measured in degrees. Valid values are between -90 and 90. Positive
|
|
# angles are angled upwards, negative are angled downwards.
|
|
#
|
|
# Note: For LTR text direction positive angles are in the
|
|
# counterclockwise direction, whereas for RTL they are in the clockwise
|
|
# direction
|
|
"vertical": True or False, # If true, text reads top to bottom, but the orientation of individual
|
|
# characters is unchanged.
|
|
# For example:
|
|
#
|
|
# | V |
|
|
# | e |
|
|
# | r |
|
|
# | t |
|
|
# | i |
|
|
# | c |
|
|
# | a |
|
|
# | l |
|
|
},
|
|
"hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
|
|
"textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
"wrapStrategy": "A String", # The wrap strategy for the value in the cell.
|
|
},
|
|
"userEnteredFormat": { # The format of a cell. # The format the user entered for the cell.
|
|
#
|
|
# When writing, the new format will be merged with the existing format.
|
|
"numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
|
|
"pattern": "A String", # Pattern string used for formatting. If not set, a default pattern based on
|
|
# the user's locale will be used if necessary for the given type.
|
|
# See the [Date and Number Formats guide](/sheets/api/guides/formats) for
|
|
# more information about the supported patterns.
|
|
"type": "A String", # The type of the number format.
|
|
# When writing, this field must be set.
|
|
},
|
|
"textDirection": "A String", # The direction of the text in the cell.
|
|
"padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
|
|
# When updating padding, every field must be specified.
|
|
"top": 42, # The top padding of the cell.
|
|
"left": 42, # The left padding of the cell.
|
|
"right": 42, # The right padding of the cell.
|
|
"bottom": 42, # The bottom padding of the cell.
|
|
},
|
|
"horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
|
|
"backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"verticalAlignment": "A String", # The vertical alignment of the value in the cell.
|
|
"borders": { # The borders of the cell. # The borders of the cell.
|
|
"top": { # A border along a cell. # The top border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"right": { # A border along a cell. # The right border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"bottom": { # A border along a cell. # The bottom border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"left": { # A border along a cell. # The left border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
},
|
|
"textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell
|
|
"angle": 42, # The angle between the standard orientation and the desired orientation.
|
|
# Measured in degrees. Valid values are between -90 and 90. Positive
|
|
# angles are angled upwards, negative are angled downwards.
|
|
#
|
|
# Note: For LTR text direction positive angles are in the
|
|
# counterclockwise direction, whereas for RTL they are in the clockwise
|
|
# direction
|
|
"vertical": True or False, # If true, text reads top to bottom, but the orientation of individual
|
|
# characters is unchanged.
|
|
# For example:
|
|
#
|
|
# | V |
|
|
# | e |
|
|
# | r |
|
|
# | t |
|
|
# | i |
|
|
# | c |
|
|
# | a |
|
|
# | l |
|
|
},
|
|
"hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
|
|
"textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
"wrapStrategy": "A String", # The wrap strategy for the value in the cell.
|
|
},
|
|
"dataValidation": { # A data validation rule. # A data validation rule on the cell, if any.
|
|
#
|
|
# When writing, the new data validation rule will overwrite any prior rule.
|
|
"showCustomUi": True or False, # True if the UI should be customized based on the kind of condition.
|
|
# If true, "List" conditions will show a dropdown.
|
|
"strict": True or False, # True if invalid data should be rejected.
|
|
"inputMessage": "A String", # A message to show the user when adding data to the cell.
|
|
"condition": { # A condition that can evaluate to true or false. # The condition that data in the cell must match.
|
|
# BooleanConditions are used by conditional formatting,
|
|
# data validation, and the criteria in filters.
|
|
"values": [ # The values of the condition. The number of supported values depends
|
|
# on the condition type. Some support zero values,
|
|
# others one or two values,
|
|
# and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
|
|
{ # The value of the condition.
|
|
"relativeDate": "A String", # A relative date (based on the current date).
|
|
# Valid only if the type is
|
|
# DATE_BEFORE,
|
|
# DATE_AFTER,
|
|
# DATE_ON_OR_BEFORE or
|
|
# DATE_ON_OR_AFTER.
|
|
#
|
|
# Relative dates are not supported in data validation.
|
|
# They are supported only in conditional formatting and
|
|
# conditional filters.
|
|
"userEnteredValue": "A String", # A value the condition is based on.
|
|
# The value is parsed as if the user typed into a cell.
|
|
# Formulas are supported (and must begin with an `=` or a '+').
|
|
},
|
|
],
|
|
"type": "A String", # The type of condition.
|
|
},
|
|
},
|
|
"textFormatRuns": [ # Runs of rich text applied to subsections of the cell. Runs are only valid
|
|
# on user entered strings, not formulas, bools, or numbers.
|
|
# Runs start at specific indexes in the text and continue until the next
|
|
# run. Properties of a run will continue unless explicitly changed
|
|
# in a subsequent run (and properties of the first run will continue
|
|
# the properties of the cell unless explicitly changed).
|
|
#
|
|
# When writing, the new runs will overwrite any prior runs. When writing a
|
|
# new user_entered_value, previous runs are erased.
|
|
{ # A run of a text format. The format of this run continues until the start
|
|
# index of the next run.
|
|
# When updating, all fields must be set.
|
|
"startIndex": 42, # The character index where this run starts.
|
|
"format": { # The format of a run of text in a cell. # The format of this run. Absent values inherit the cell's format.
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
},
|
|
],
|
|
},
|
|
],
|
|
},
|
|
],
|
|
"start": { # A coordinate in a sheet. # The coordinate to start writing data at.
|
|
# Any number of rows and columns (including a different number of
|
|
# columns per row) may be written.
|
|
# All indexes are zero-based.
|
|
"rowIndex": 42, # The row index of the coordinate.
|
|
"columnIndex": 42, # The column index of the coordinate.
|
|
"sheetId": 42, # The sheet this coordinate is on.
|
|
},
|
|
},
|
|
"randomizeRange": { # Randomizes the order of the rows in a range. # Randomizes the order of the rows in a range.
|
|
"range": { # A range on a sheet. # The range to randomize.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
},
|
|
"appendDimension": { # Appends rows or columns to the end of a sheet. # Appends dimensions to the end of a sheet.
|
|
"length": 42, # The number of rows or columns to append.
|
|
"sheetId": 42, # The sheet to append rows or columns to.
|
|
"dimension": "A String", # Whether rows or columns should be appended.
|
|
},
|
|
"updateBanding": { # Updates properties of the supplied banded range. # Updates a banded range
|
|
"fields": "A String", # The fields that should be updated. At least one field must be specified.
|
|
# The root `bandedRange` is implied and should not be specified.
|
|
# A single `"*"` can be used as short-hand for listing every field.
|
|
"bandedRange": { # A banded (alternating colors) range in a sheet. # The banded range to update with the new properties.
|
|
"range": { # A range on a sheet. # The range over which these properties are applied.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
"columnProperties": { # Properties referring a single dimension (either row or column). If both # Properties for column bands. These properties are applied on a column-
|
|
# by-column basis throughout all the columns in the range. At least one of
|
|
# row_properties or column_properties must be specified.
|
|
# BandedRange.row_properties and BandedRange.column_properties are
|
|
# set, the fill colors are applied to cells according to the following rules:
|
|
#
|
|
# * header_color and footer_color take priority over band colors.
|
|
# * first_band_color takes priority over second_band_color.
|
|
# * row_properties takes priority over column_properties.
|
|
#
|
|
# For example, the first row color takes priority over the first column
|
|
# color, but the first column color takes priority over the second row color.
|
|
# Similarly, the row header takes priority over the column header in the
|
|
# top left cell, but the column header takes priority over the first row
|
|
# color if the row header is not set.
|
|
"secondBandColor": { # Represents a color in the RGBA color space. This representation is designed # The second color that is alternating. (Required)
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"headerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the first row or column. If this field is set, the first
|
|
# row or column will be filled with this color and the colors will
|
|
# alternate between first_band_color and second_band_color starting
|
|
# from the second row or column. Otherwise, the first row or column will be
|
|
# filled with first_band_color and the colors will proceed to alternate
|
|
# as they normally would.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"footerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the last row or column. If this field is not set, the last
|
|
# row or column will be filled with either first_band_color or
|
|
# second_band_color, depending on the color of the previous row or
|
|
# column.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"firstBandColor": { # Represents a color in the RGBA color space. This representation is designed # The first color that is alternating. (Required)
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
},
|
|
"rowProperties": { # Properties referring a single dimension (either row or column). If both # Properties for row bands. These properties are applied on a row-by-row
|
|
# basis throughout all the rows in the range. At least one of
|
|
# row_properties or column_properties must be specified.
|
|
# BandedRange.row_properties and BandedRange.column_properties are
|
|
# set, the fill colors are applied to cells according to the following rules:
|
|
#
|
|
# * header_color and footer_color take priority over band colors.
|
|
# * first_band_color takes priority over second_band_color.
|
|
# * row_properties takes priority over column_properties.
|
|
#
|
|
# For example, the first row color takes priority over the first column
|
|
# color, but the first column color takes priority over the second row color.
|
|
# Similarly, the row header takes priority over the column header in the
|
|
# top left cell, but the column header takes priority over the first row
|
|
# color if the row header is not set.
|
|
"secondBandColor": { # Represents a color in the RGBA color space. This representation is designed # The second color that is alternating. (Required)
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"headerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the first row or column. If this field is set, the first
|
|
# row or column will be filled with this color and the colors will
|
|
# alternate between first_band_color and second_band_color starting
|
|
# from the second row or column. Otherwise, the first row or column will be
|
|
# filled with first_band_color and the colors will proceed to alternate
|
|
# as they normally would.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"footerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the last row or column. If this field is not set, the last
|
|
# row or column will be filled with either first_band_color or
|
|
# second_band_color, depending on the color of the previous row or
|
|
# column.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"firstBandColor": { # Represents a color in the RGBA color space. This representation is designed # The first color that is alternating. (Required)
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
},
|
|
"bandedRangeId": 42, # The id of the banded range.
|
|
},
|
|
},
|
|
"autoResizeDimensions": { # Automatically resizes one or more dimensions based on the contents # Automatically resizes one or more dimensions based on the contents
|
|
# of the cells in that dimension.
|
|
# of the cells in that dimension.
|
|
"dimensions": { # A range along a single dimension on a sheet. # The dimensions to automatically resize.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open: the start index is inclusive
|
|
# and the end index is exclusive.
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
"endIndex": 42, # The end (exclusive) of the span, or not set if unbounded.
|
|
"startIndex": 42, # The start (inclusive) of the span, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this span is on.
|
|
"dimension": "A String", # The dimension of the span.
|
|
},
|
|
},
|
|
"updateDimensionProperties": { # Updates properties of dimensions within the specified range. # Updates dimensions' properties.
|
|
"fields": "A String", # The fields that should be updated. At least one field must be specified.
|
|
# The root `properties` is implied and should not be specified.
|
|
# A single `"*"` can be used as short-hand for listing every field.
|
|
"range": { # A range along a single dimension on a sheet. # The rows or columns to update.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open: the start index is inclusive
|
|
# and the end index is exclusive.
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
"endIndex": 42, # The end (exclusive) of the span, or not set if unbounded.
|
|
"startIndex": 42, # The start (inclusive) of the span, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this span is on.
|
|
"dimension": "A String", # The dimension of the span.
|
|
},
|
|
"properties": { # Properties about a dimension. # Properties to update.
|
|
"pixelSize": 42, # The height (if a row) or width (if a column) of the dimension in pixels.
|
|
"developerMetadata": [ # The developer metadata associated with a single row or column.
|
|
{ # Developer metadata associated with a location or object in a spreadsheet.
|
|
# Developer metadata may be used to associate arbitrary data with various
|
|
# parts of a spreadsheet and will remain associated at those locations as they
|
|
# move around and the spreadsheet is edited. For example, if developer
|
|
# metadata is associated with row 5 and another row is then subsequently
|
|
# inserted above row 5, that original metadata will still be associated with
|
|
# the row it was first associated with (what is now row 6). If the associated
|
|
# object is deleted its metadata is deleted too.
|
|
"metadataId": 42, # The spreadsheet-scoped unique ID that identifies the metadata. IDs may be
|
|
# specified when metadata is created, otherwise one will be randomly
|
|
# generated and assigned. Must be positive.
|
|
"metadataValue": "A String", # Data associated with the metadata's key.
|
|
"location": { # A location where metadata may be associated in a spreadsheet. # The location where the metadata is associated.
|
|
"locationType": "A String", # The type of location this object represents. This field is read-only.
|
|
"dimensionRange": { # A range along a single dimension on a sheet. # Represents the row or column when metadata is associated with
|
|
# a dimension. The specified DimensionRange must represent a single row
|
|
# or column; it cannot be unbounded or span multiple rows or columns.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open: the start index is inclusive
|
|
# and the end index is exclusive.
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
"endIndex": 42, # The end (exclusive) of the span, or not set if unbounded.
|
|
"startIndex": 42, # The start (inclusive) of the span, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this span is on.
|
|
"dimension": "A String", # The dimension of the span.
|
|
},
|
|
"spreadsheet": True or False, # True when metadata is associated with an entire spreadsheet.
|
|
"sheetId": 42, # The ID of the sheet when metadata is associated with an entire sheet.
|
|
},
|
|
"visibility": "A String", # The metadata visibility. Developer metadata must always have a visibility
|
|
# specified.
|
|
"metadataKey": "A String", # The metadata key. There may be multiple metadata in a spreadsheet with the
|
|
# same key. Developer metadata must always have a key specified.
|
|
},
|
|
],
|
|
"hiddenByUser": True or False, # True if this dimension is explicitly hidden.
|
|
"hiddenByFilter": True or False, # True if this dimension is being filtered.
|
|
# This field is read-only.
|
|
},
|
|
},
|
|
"addBanding": { # Adds a new banded range to the spreadsheet. # Adds a new banded range
|
|
"bandedRange": { # A banded (alternating colors) range in a sheet. # The banded range to add. The bandedRangeId
|
|
# field is optional; if one is not set, an id will be randomly generated. (It
|
|
# is an error to specify the ID of a range that already exists.)
|
|
"range": { # A range on a sheet. # The range over which these properties are applied.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
"columnProperties": { # Properties referring a single dimension (either row or column). If both # Properties for column bands. These properties are applied on a column-
|
|
# by-column basis throughout all the columns in the range. At least one of
|
|
# row_properties or column_properties must be specified.
|
|
# BandedRange.row_properties and BandedRange.column_properties are
|
|
# set, the fill colors are applied to cells according to the following rules:
|
|
#
|
|
# * header_color and footer_color take priority over band colors.
|
|
# * first_band_color takes priority over second_band_color.
|
|
# * row_properties takes priority over column_properties.
|
|
#
|
|
# For example, the first row color takes priority over the first column
|
|
# color, but the first column color takes priority over the second row color.
|
|
# Similarly, the row header takes priority over the column header in the
|
|
# top left cell, but the column header takes priority over the first row
|
|
# color if the row header is not set.
|
|
"secondBandColor": { # Represents a color in the RGBA color space. This representation is designed # The second color that is alternating. (Required)
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"headerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the first row or column. If this field is set, the first
|
|
# row or column will be filled with this color and the colors will
|
|
# alternate between first_band_color and second_band_color starting
|
|
# from the second row or column. Otherwise, the first row or column will be
|
|
# filled with first_band_color and the colors will proceed to alternate
|
|
# as they normally would.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"footerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the last row or column. If this field is not set, the last
|
|
# row or column will be filled with either first_band_color or
|
|
# second_band_color, depending on the color of the previous row or
|
|
# column.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"firstBandColor": { # Represents a color in the RGBA color space. This representation is designed # The first color that is alternating. (Required)
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
},
|
|
"rowProperties": { # Properties referring a single dimension (either row or column). If both # Properties for row bands. These properties are applied on a row-by-row
|
|
# basis throughout all the rows in the range. At least one of
|
|
# row_properties or column_properties must be specified.
|
|
# BandedRange.row_properties and BandedRange.column_properties are
|
|
# set, the fill colors are applied to cells according to the following rules:
|
|
#
|
|
# * header_color and footer_color take priority over band colors.
|
|
# * first_band_color takes priority over second_band_color.
|
|
# * row_properties takes priority over column_properties.
|
|
#
|
|
# For example, the first row color takes priority over the first column
|
|
# color, but the first column color takes priority over the second row color.
|
|
# Similarly, the row header takes priority over the column header in the
|
|
# top left cell, but the column header takes priority over the first row
|
|
# color if the row header is not set.
|
|
"secondBandColor": { # Represents a color in the RGBA color space. This representation is designed # The second color that is alternating. (Required)
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"headerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the first row or column. If this field is set, the first
|
|
# row or column will be filled with this color and the colors will
|
|
# alternate between first_band_color and second_band_color starting
|
|
# from the second row or column. Otherwise, the first row or column will be
|
|
# filled with first_band_color and the colors will proceed to alternate
|
|
# as they normally would.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"footerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the last row or column. If this field is not set, the last
|
|
# row or column will be filled with either first_band_color or
|
|
# second_band_color, depending on the color of the previous row or
|
|
# column.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"firstBandColor": { # Represents a color in the RGBA color space. This representation is designed # The first color that is alternating. (Required)
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
},
|
|
"bandedRangeId": 42, # The id of the banded range.
|
|
},
|
|
},
|
|
"unmergeCells": { # Unmerges cells in the given range. # Unmerges merged cells.
|
|
"range": { # A range on a sheet. # The range within which all cells should be unmerged.
|
|
# If the range spans multiple merges, all will be unmerged.
|
|
# The range must not partially span any merge.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
},
|
|
"deleteDimensionGroup": { # Deletes a group over the specified range by decrementing the depth of the # Deletes a group over the specified range.
|
|
# dimensions in the range.
|
|
#
|
|
# For example, assume the sheet has a depth-1 group over B:E and a depth-2
|
|
# group over C:D. Deleting a group over D:E leaves the sheet with a
|
|
# depth-1 group over B:D and a depth-2 group over C:C.
|
|
"range": { # A range along a single dimension on a sheet. # The range of the group to be deleted.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open: the start index is inclusive
|
|
# and the end index is exclusive.
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
"endIndex": 42, # The end (exclusive) of the span, or not set if unbounded.
|
|
"startIndex": 42, # The start (inclusive) of the span, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this span is on.
|
|
"dimension": "A String", # The dimension of the span.
|
|
},
|
|
},
|
|
"deleteRange": { # Deletes a range of cells, shifting other cells into the deleted area. # Deletes a range of cells from a sheet, shifting the remaining cells.
|
|
"range": { # A range on a sheet. # The range of cells to delete.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
"shiftDimension": "A String", # The dimension from which deleted cells will be replaced with.
|
|
# If ROWS, existing cells will be shifted upward to
|
|
# replace the deleted cells. If COLUMNS, existing cells
|
|
# will be shifted left to replace the deleted cells.
|
|
},
|
|
"clearBasicFilter": { # Clears the basic filter, if any exists on the sheet. # Clears the basic filter on a sheet.
|
|
"sheetId": 42, # The sheet ID on which the basic filter should be cleared.
|
|
},
|
|
"addNamedRange": { # Adds a named range to the spreadsheet. # Adds a named range.
|
|
"namedRange": { # A named range. # The named range to add. The namedRangeId
|
|
# field is optional; if one is not set, an id will be randomly generated. (It
|
|
# is an error to specify the ID of a range that already exists.)
|
|
"namedRangeId": "A String", # The ID of the named range.
|
|
"range": { # A range on a sheet. # The range this represents.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
"name": "A String", # The name of the named range.
|
|
},
|
|
},
|
|
"updateChartSpec": { # Updates a chart's specifications. # Updates a chart's specifications.
|
|
# (This does not move or resize a chart. To move or resize a chart, use
|
|
# UpdateEmbeddedObjectPositionRequest.)
|
|
"chartId": 42, # The ID of the chart to update.
|
|
"spec": { # The specifications of a chart. # The specification to apply to the chart.
|
|
"fontName": "A String", # The name of the font to use by default for all chart text (e.g. title,
|
|
# axis labels, legend). If a font is specified for a specific part of the
|
|
# chart it will override this font name.
|
|
"altText": "A String", # The alternative text that describes the chart. This is often used
|
|
# for accessibility.
|
|
"subtitle": "A String", # The subtitle of the chart.
|
|
"subtitleTextFormat": { # The format of a run of text in a cell. # The subtitle text format.
|
|
# Strikethrough and underline are not supported.
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
"title": "A String", # The title of the chart.
|
|
"titleTextFormat": { # The format of a run of text in a cell. # The title text format.
|
|
# Strikethrough and underline are not supported.
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
"treemapChart": { # A <a href="/chart/interactive/docs/gallery/treemap">Treemap chart</a>. # A treemap chart specification.
|
|
"parentLabels": { # The data included in a domain or series. # The data the contains the treemap cells' parent labels.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"sizeData": { # The data included in a domain or series. # The data that determines the size of each treemap data cell. This data is
|
|
# expected to be numeric. The cells corresponding to non-numeric or missing
|
|
# data will not be rendered. If color_data is not specified, this data
|
|
# is used to determine data cell background colors as well.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"hideTooltips": True or False, # True to hide tooltips.
|
|
"colorScale": { # A color scale for a treemap chart. # The color scale for data cells in the treemap chart. Data cells are
|
|
# assigned colors based on their color values. These color values come from
|
|
# color_data, or from size_data if color_data is not specified.
|
|
# Cells with color values less than or equal to min_value will
|
|
# have minValueColor as their
|
|
# background color. Cells with color values greater than or equal to
|
|
# max_value will have
|
|
# maxValueColor as their background
|
|
# color. Cells with color values between min_value and max_value will
|
|
# have background colors on a gradient between
|
|
# minValueColor and
|
|
# maxValueColor, the midpoint of
|
|
# the gradient being midValueColor.
|
|
# Cells with missing or non-numeric color values will have
|
|
# noDataColor as their background
|
|
# color.
|
|
"noDataColor": { # Represents a color in the RGBA color space. This representation is designed # The background color for cells that have no color data associated with
|
|
# them. Defaults to #000000 if not specified.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"midValueColor": { # Represents a color in the RGBA color space. This representation is designed # The background color for cells with a color value at the midpoint between
|
|
# minValue and
|
|
# maxValue. Defaults to #efe6dc if not
|
|
# specified.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"minValueColor": { # Represents a color in the RGBA color space. This representation is designed # The background color for cells with a color value less than or equal to
|
|
# minValue. Defaults to #dc3912 if not
|
|
# specified.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"maxValueColor": { # Represents a color in the RGBA color space. This representation is designed # The background color for cells with a color value greater than or equal
|
|
# to maxValue. Defaults to #109618 if not
|
|
# specified.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
},
|
|
"labels": { # The data included in a domain or series. # The data that contains the treemap cell labels.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"colorData": { # The data included in a domain or series. # The data that determines the background color of each treemap data cell.
|
|
# This field is optional. If not specified, size_data is used to
|
|
# determine background colors. If specified, the data is expected to be
|
|
# numeric. color_scale will determine how the values in this data map to
|
|
# data cell background colors.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"maxValue": 3.14, # The maximum possible data value. Cells with values greater than this will
|
|
# have the same color as cells with this value. If not specified, defaults
|
|
# to the actual maximum value from color_data, or the maximum value from
|
|
# size_data if color_data is not specified.
|
|
"minValue": 3.14, # The minimum possible data value. Cells with values less than this will
|
|
# have the same color as cells with this value. If not specified, defaults
|
|
# to the actual minimum value from color_data, or the minimum value from
|
|
# size_data if color_data is not specified.
|
|
"headerColor": { # Represents a color in the RGBA color space. This representation is designed # The background color for header cells.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"levels": 42, # The number of data levels to show on the treemap chart. These levels are
|
|
# interactive and are shown with their labels. Defaults to 2 if not
|
|
# specified.
|
|
"hintedLevels": 42, # The number of additional data levels beyond the labeled levels to be shown
|
|
# on the treemap chart. These levels are not interactive and are shown
|
|
# without their labels. Defaults to 0 if not specified.
|
|
"textFormat": { # The format of a run of text in a cell. # The text format for all labels on the chart.
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
},
|
|
"titleTextPosition": { # Position settings for text. # The title text position.
|
|
# This field is optional.
|
|
"horizontalAlignment": "A String", # Horizontal alignment setting for the piece of text.
|
|
},
|
|
"hiddenDimensionStrategy": "A String", # Determines how the charts will use hidden rows or columns.
|
|
"pieChart": { # A <a href="/chart/interactive/docs/gallery/piechart">pie chart</a>. # A pie chart specification.
|
|
"series": { # The data included in a domain or series. # The data that covers the one and only series of the pie chart.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"domain": { # The data included in a domain or series. # The data that covers the domain of the pie chart.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"threeDimensional": True or False, # True if the pie is three dimensional.
|
|
"legendPosition": "A String", # Where the legend of the pie chart should be drawn.
|
|
"pieHole": 3.14, # The size of the hole in the pie chart.
|
|
},
|
|
"candlestickChart": { # A <a href="/chart/interactive/docs/gallery/candlestickchart">candlestick # A candlestick chart specification.
|
|
# chart</a>.
|
|
"domain": { # The domain of a CandlestickChart. # The domain data (horizontal axis) for the candlestick chart. String data
|
|
# will be treated as discrete labels, other data will be treated as
|
|
# continuous values.
|
|
"reversed": True or False, # True to reverse the order of the domain values (horizontal axis).
|
|
"data": { # The data included in a domain or series. # The data of the CandlestickDomain.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
"data": [ # The Candlestick chart data.
|
|
# Only one CandlestickData is supported.
|
|
{ # The Candlestick chart data, each containing the low, open, close, and high
|
|
# values for a series.
|
|
"lowSeries": { # The series of a CandlestickData. # The range data (vertical axis) for the low/minimum value for each candle.
|
|
# This is the bottom of the candle's center line.
|
|
"data": { # The data included in a domain or series. # The data of the CandlestickSeries.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
"highSeries": { # The series of a CandlestickData. # The range data (vertical axis) for the high/maximum value for each
|
|
# candle. This is the top of the candle's center line.
|
|
"data": { # The data included in a domain or series. # The data of the CandlestickSeries.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
"openSeries": { # The series of a CandlestickData. # The range data (vertical axis) for the open/initial value for each
|
|
# candle. This is the bottom of the candle body. If less than the close
|
|
# value the candle will be filled. Otherwise the candle will be hollow.
|
|
"data": { # The data included in a domain or series. # The data of the CandlestickSeries.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
"closeSeries": { # The series of a CandlestickData. # The range data (vertical axis) for the close/final value for each candle.
|
|
# This is the top of the candle body. If greater than the open value the
|
|
# candle will be filled. Otherwise the candle will be hollow.
|
|
"data": { # The data included in a domain or series. # The data of the CandlestickSeries.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
},
|
|
],
|
|
},
|
|
"subtitleTextPosition": { # Position settings for text. # The subtitle text position.
|
|
# This field is optional.
|
|
"horizontalAlignment": "A String", # Horizontal alignment setting for the piece of text.
|
|
},
|
|
"backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the entire chart.
|
|
# Not applicable to Org charts.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"maximized": True or False, # True to make a chart fill the entire space in which it's rendered with
|
|
# minimum padding. False to use the default padding.
|
|
# (Not applicable to Geo and Org charts.)
|
|
"waterfallChart": { # A waterfall chart. # A waterfall chart specification.
|
|
"stackedType": "A String", # The stacked type.
|
|
"hideConnectorLines": True or False, # True to hide connector lines between columns.
|
|
"domain": { # The domain of a waterfall chart. # The domain data (horizontal axis) for the waterfall chart.
|
|
"reversed": True or False, # True to reverse the order of the domain values (horizontal axis).
|
|
"data": { # The data included in a domain or series. # The data of the WaterfallChartDomain.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
"connectorLineStyle": { # Properties that describe the style of a line. # The line style for the connector lines.
|
|
"width": 42, # The thickness of the line, in px.
|
|
"type": "A String", # The dash type of the line.
|
|
},
|
|
"series": [ # The data this waterfall chart is visualizing.
|
|
{ # A single series of data for a waterfall chart.
|
|
"hideTrailingSubtotal": True or False, # True to hide the subtotal column from the end of the series. By default,
|
|
# a subtotal column will appear at the end of each series. Setting this
|
|
# field to true will hide that subtotal column for this series.
|
|
"positiveColumnsStyle": { # Styles for a waterfall chart column. # Styles for all columns in this series with positive values.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the column.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"label": "A String", # The label of the column's legend.
|
|
},
|
|
"subtotalColumnsStyle": { # Styles for a waterfall chart column. # Styles for all subtotal columns in this series.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the column.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"label": "A String", # The label of the column's legend.
|
|
},
|
|
"negativeColumnsStyle": { # Styles for a waterfall chart column. # Styles for all columns in this series with negative values.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the column.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"label": "A String", # The label of the column's legend.
|
|
},
|
|
"customSubtotals": [ # Custom subtotal columns appearing in this series. The order in which
|
|
# subtotals are defined is not significant. Only one subtotal may be
|
|
# defined for each data point.
|
|
{ # A custom subtotal column for a waterfall chart series.
|
|
"dataIsSubtotal": True or False, # True if the data point at subtotal_index is the subtotal. If false,
|
|
# the subtotal will be computed and appear after the data point.
|
|
"subtotalIndex": 42, # The 0-based index of a data point within the series. If
|
|
# data_is_subtotal is true, the data point at this index is the
|
|
# subtotal. Otherwise, the subtotal appears after the data point with
|
|
# this index. A series can have multiple subtotals at arbitrary indices,
|
|
# but subtotals do not affect the indices of the data points. For
|
|
# example, if a series has three data points, their indices will always
|
|
# be 0, 1, and 2, regardless of how many subtotals exist on the series or
|
|
# what data points they are associated with.
|
|
"label": "A String", # A label for the subtotal column.
|
|
},
|
|
],
|
|
"data": { # The data included in a domain or series. # The data being visualized in this series.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
],
|
|
"firstValueIsTotal": True or False, # True to interpret the first value as a total.
|
|
},
|
|
"basicChart": { # The specification for a basic chart. See BasicChartType for the list # A basic chart specification, can be one of many kinds of charts.
|
|
# See BasicChartType for the list of all
|
|
# charts this supports.
|
|
# of charts this supports.
|
|
"stackedType": "A String", # The stacked type for charts that support vertical stacking.
|
|
# Applies to Area, Bar, Column, Combo, and Stepped Area charts.
|
|
"headerCount": 42, # The number of rows or columns in the data that are "headers".
|
|
# If not set, Google Sheets will guess how many rows are headers based
|
|
# on the data.
|
|
#
|
|
# (Note that BasicChartAxis.title may override the axis title
|
|
# inferred from the header values.)
|
|
"series": [ # The data this chart is visualizing.
|
|
{ # A single series of data in a chart.
|
|
# For example, if charting stock prices over time, multiple series may exist,
|
|
# one for the "Open Price", "High Price", "Low Price" and "Close Price".
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color for elements (i.e. bars, lines, points) associated with this
|
|
# series. If empty, a default color is used.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"series": { # The data included in a domain or series. # The data being visualized in this chart series.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"targetAxis": "A String", # The minor axis that will specify the range of values for this series.
|
|
# For example, if charting stocks over time, the "Volume" series
|
|
# may want to be pinned to the right with the prices pinned to the left,
|
|
# because the scale of trading volume is different than the scale of
|
|
# prices.
|
|
# It is an error to specify an axis that isn't a valid minor axis
|
|
# for the chart's type.
|
|
"lineStyle": { # Properties that describe the style of a line. # The line style of this series. Valid only if the
|
|
# chartType is AREA,
|
|
# LINE, or SCATTER.
|
|
# COMBO charts are also supported if the
|
|
# series chart type is
|
|
# AREA or LINE.
|
|
"width": 42, # The thickness of the line, in px.
|
|
"type": "A String", # The dash type of the line.
|
|
},
|
|
"type": "A String", # The type of this series. Valid only if the
|
|
# chartType is
|
|
# COMBO.
|
|
# Different types will change the way the series is visualized.
|
|
# Only LINE, AREA,
|
|
# and COLUMN are supported.
|
|
},
|
|
],
|
|
"interpolateNulls": True or False, # If some values in a series are missing, gaps may appear in the chart (e.g,
|
|
# segments of lines in a line chart will be missing). To eliminate these
|
|
# gaps set this to true.
|
|
# Applies to Line, Area, and Combo charts.
|
|
"legendPosition": "A String", # The position of the chart legend.
|
|
"lineSmoothing": True or False, # Gets whether all lines should be rendered smooth or straight by default.
|
|
# Applies to Line charts.
|
|
"compareMode": "A String", # The behavior of tooltips and data highlighting when hovering on data and
|
|
# chart area.
|
|
"domains": [ # The domain of data this is charting.
|
|
# Only a single domain is supported.
|
|
{ # The domain of a chart.
|
|
# For example, if charting stock prices over time, this would be the date.
|
|
"reversed": True or False, # True to reverse the order of the domain values (horizontal axis).
|
|
"domain": { # The data included in a domain or series. # The data of the domain. For example, if charting stock prices over time,
|
|
# this is the data representing the dates.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
],
|
|
"chartType": "A String", # The type of the chart.
|
|
"threeDimensional": True or False, # True to make the chart 3D.
|
|
# Applies to Bar and Column charts.
|
|
"axis": [ # The axis on the chart.
|
|
{ # An axis of the chart.
|
|
# A chart may not have more than one axis per
|
|
# axis position.
|
|
"position": "A String", # The position of this axis.
|
|
"format": { # The format of a run of text in a cell. # The format of the title.
|
|
# Only valid if the axis is not associated with the domain.
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
"title": "A String", # The title of this axis. If set, this overrides any title inferred
|
|
# from headers of the data.
|
|
"titleTextPosition": { # Position settings for text. # The axis title text position.
|
|
"horizontalAlignment": "A String", # Horizontal alignment setting for the piece of text.
|
|
},
|
|
},
|
|
],
|
|
},
|
|
"histogramChart": { # A <a href="/chart/interactive/docs/gallery/histogram">histogram chart</a>. # A histogram chart specification.
|
|
# A histogram chart groups data items into bins, displaying each bin as a
|
|
# column of stacked items. Histograms are used to display the distribution
|
|
# of a dataset. Each column of items represents a range into which those
|
|
# items fall. The number of bins can be chosen automatically or specified
|
|
# explicitly.
|
|
"outlierPercentile": 3.14, # The outlier percentile is used to ensure that outliers do not adversely
|
|
# affect the calculation of bucket sizes. For example, setting an outlier
|
|
# percentile of 0.05 indicates that the top and bottom 5% of values when
|
|
# calculating buckets. The values are still included in the chart, they will
|
|
# be added to the first or last buckets instead of their own buckets.
|
|
# Must be between 0.0 and 0.5.
|
|
"series": [ # The series for a histogram may be either a single series of values to be
|
|
# bucketed or multiple series, each of the same length, containing the name
|
|
# of the series followed by the values to be bucketed for that series.
|
|
{ # A histogram series containing the series color and data.
|
|
"barColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the column representing this series in each bucket.
|
|
# This field is optional.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"data": { # The data included in a domain or series. # The data for this histogram series.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
],
|
|
"showItemDividers": True or False, # Whether horizontal divider lines should be displayed between items in each
|
|
# column.
|
|
"legendPosition": "A String", # The position of the chart legend.
|
|
"bucketSize": 3.14, # By default the bucket size (the range of values stacked in a single
|
|
# column) is chosen automatically, but it may be overridden here.
|
|
# E.g., A bucket size of 1.5 results in buckets from 0 - 1.5, 1.5 - 3.0, etc.
|
|
# Cannot be negative.
|
|
# This field is optional.
|
|
},
|
|
"bubbleChart": { # A <a href="/chart/interactive/docs/gallery/bubblechart">bubble chart</a>. # A bubble chart specification.
|
|
"bubbleBorderColor": { # Represents a color in the RGBA color space. This representation is designed # The bubble border color.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"domain": { # The data included in a domain or series. # The data containing the bubble x-values. These values locate the bubbles
|
|
# in the chart horizontally.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"bubbleTextStyle": { # The format of a run of text in a cell. # The format of the text inside the bubbles.
|
|
# Underline and Strikethrough are not supported.
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
"series": { # The data included in a domain or series. # The data contianing the bubble y-values. These values locate the bubbles
|
|
# in the chart vertically.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"legendPosition": "A String", # Where the legend of the chart should be drawn.
|
|
"bubbleMaxRadiusSize": 42, # The max radius size of the bubbles, in pixels.
|
|
# If specified, the field must be a positive value.
|
|
"bubbleOpacity": 3.14, # The opacity of the bubbles between 0 and 1.0.
|
|
# 0 is fully transparent and 1 is fully opaque.
|
|
"groupIds": { # The data included in a domain or series. # The data containing the bubble group IDs. All bubbles with the same group
|
|
# ID are drawn in the same color. If bubble_sizes is specified then
|
|
# this field must also be specified but may contain blank values.
|
|
# This field is optional.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"bubbleSizes": { # The data included in a domain or series. # The data contianing the bubble sizes. Bubble sizes are used to draw
|
|
# the bubbles at different sizes relative to each other.
|
|
# If specified, group_ids must also be specified. This field is
|
|
# optional.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"bubbleLabels": { # The data included in a domain or series. # The data containing the bubble labels. These do not need to be unique.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"bubbleMinRadiusSize": 42, # The minimum radius size of the bubbles, in pixels.
|
|
# If specific, the field must be a positive value.
|
|
},
|
|
"orgChart": { # An <a href="/chart/interactive/docs/gallery/orgchart">org chart</a>. # An org chart specification.
|
|
# Org charts require a unique set of labels in labels and may
|
|
# optionally include parent_labels and tooltips.
|
|
# parent_labels contain, for each node, the label identifying the parent
|
|
# node. tooltips contain, for each node, an optional tooltip.
|
|
#
|
|
# For example, to describe an OrgChart with Alice as the CEO, Bob as the
|
|
# President (reporting to Alice) and Cathy as VP of Sales (also reporting to
|
|
# Alice), have labels contain "Alice", "Bob", "Cathy",
|
|
# parent_labels contain "", "Alice", "Alice" and tooltips contain
|
|
# "CEO", "President", "VP Sales".
|
|
"tooltips": { # The data included in a domain or series. # The data containing the tooltip for the corresponding node. A blank value
|
|
# results in no tooltip being displayed for the node.
|
|
# This field is optional.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"parentLabels": { # The data included in a domain or series. # The data containing the label of the parent for the corresponding node.
|
|
# A blank value indicates that the node has no parent and is a top-level
|
|
# node.
|
|
# This field is optional.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"nodeColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the org chart nodes.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"labels": { # The data included in a domain or series. # The data containing the labels for all the nodes in the chart. Labels
|
|
# must be unique.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"selectedNodeColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the selected org chart nodes.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"nodeSize": "A String", # The size of the org chart nodes.
|
|
},
|
|
},
|
|
},
|
|
"updateDeveloperMetadata": { # A request to update properties of developer metadata. # Updates an existing developer metadata entry
|
|
# Updates the properties of the developer metadata selected by the filters to
|
|
# the values provided in the DeveloperMetadata resource. Callers must
|
|
# specify the properties they wish to update in the fields parameter, as well
|
|
# as specify at least one DataFilter matching the metadata they wish to
|
|
# update.
|
|
"fields": "A String", # The fields that should be updated. At least one field must be specified.
|
|
# The root `developerMetadata` is implied and should not be specified.
|
|
# A single `"*"` can be used as short-hand for listing every field.
|
|
"dataFilters": [ # The filters matching the developer metadata entries to update.
|
|
{ # Filter that describes what data should be selected or returned from a
|
|
# request.
|
|
"developerMetadataLookup": { # Selects DeveloperMetadata that matches all of the specified fields. For # Selects data associated with the developer metadata matching the criteria
|
|
# described by this DeveloperMetadataLookup.
|
|
# example, if only a metadata ID is specified this considers the
|
|
# DeveloperMetadata with that particular unique ID. If a metadata key is
|
|
# specified, this considers all developer metadata with that key. If a
|
|
# key, visibility, and location type are all specified, this considers all
|
|
# developer metadata with that key and visibility that are associated with a
|
|
# location of that type. In general, this
|
|
# selects all DeveloperMetadata that matches the intersection of all the
|
|
# specified fields; any field or combination of fields may be specified.
|
|
"metadataLocation": { # A location where metadata may be associated in a spreadsheet. # Limits the selected developer metadata to those entries associated with
|
|
# the specified location. This field either matches exact locations or all
|
|
# intersecting locations according the specified
|
|
# locationMatchingStrategy.
|
|
"locationType": "A String", # The type of location this object represents. This field is read-only.
|
|
"dimensionRange": { # A range along a single dimension on a sheet. # Represents the row or column when metadata is associated with
|
|
# a dimension. The specified DimensionRange must represent a single row
|
|
# or column; it cannot be unbounded or span multiple rows or columns.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open: the start index is inclusive
|
|
# and the end index is exclusive.
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
"endIndex": 42, # The end (exclusive) of the span, or not set if unbounded.
|
|
"startIndex": 42, # The start (inclusive) of the span, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this span is on.
|
|
"dimension": "A String", # The dimension of the span.
|
|
},
|
|
"spreadsheet": True or False, # True when metadata is associated with an entire spreadsheet.
|
|
"sheetId": 42, # The ID of the sheet when metadata is associated with an entire sheet.
|
|
},
|
|
"metadataValue": "A String", # Limits the selected developer metadata to that which has a matching
|
|
# DeveloperMetadata.metadata_value.
|
|
"locationMatchingStrategy": "A String", # Determines how this lookup matches the location. If this field is
|
|
# specified as EXACT, only developer metadata associated on the exact
|
|
# location specified is matched. If this field is specified to INTERSECTING,
|
|
# developer metadata associated on intersecting locations is also
|
|
# matched. If left unspecified, this field assumes a default value of
|
|
# INTERSECTING.
|
|
# If this field is specified, a metadataLocation
|
|
# must also be specified.
|
|
"locationType": "A String", # Limits the selected developer metadata to those entries which are
|
|
# associated with locations of the specified type. For example, when this
|
|
# field is specified as ROW this lookup
|
|
# only considers developer metadata associated on rows. If the field is left
|
|
# unspecified, all location types are considered. This field cannot be
|
|
# specified as SPREADSHEET when
|
|
# the locationMatchingStrategy
|
|
# is specified as INTERSECTING or when the
|
|
# metadataLocation is specified as a
|
|
# non-spreadsheet location: spreadsheet metadata cannot intersect any other
|
|
# developer metadata location. This field also must be left unspecified when
|
|
# the locationMatchingStrategy
|
|
# is specified as EXACT.
|
|
"metadataId": 42, # Limits the selected developer metadata to that which has a matching
|
|
# DeveloperMetadata.metadata_id.
|
|
"visibility": "A String", # Limits the selected developer metadata to that which has a matching
|
|
# DeveloperMetadata.visibility. If left unspecified, all developer
|
|
# metadata visibile to the requesting project is considered.
|
|
"metadataKey": "A String", # Limits the selected developer metadata to that which has a matching
|
|
# DeveloperMetadata.metadata_key.
|
|
},
|
|
"a1Range": "A String", # Selects data that matches the specified A1 range.
|
|
"gridRange": { # A range on a sheet. # Selects data that matches the range described by the GridRange.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
},
|
|
],
|
|
"developerMetadata": { # Developer metadata associated with a location or object in a spreadsheet. # The value that all metadata matched by the data filters will be updated to.
|
|
# Developer metadata may be used to associate arbitrary data with various
|
|
# parts of a spreadsheet and will remain associated at those locations as they
|
|
# move around and the spreadsheet is edited. For example, if developer
|
|
# metadata is associated with row 5 and another row is then subsequently
|
|
# inserted above row 5, that original metadata will still be associated with
|
|
# the row it was first associated with (what is now row 6). If the associated
|
|
# object is deleted its metadata is deleted too.
|
|
"metadataId": 42, # The spreadsheet-scoped unique ID that identifies the metadata. IDs may be
|
|
# specified when metadata is created, otherwise one will be randomly
|
|
# generated and assigned. Must be positive.
|
|
"metadataValue": "A String", # Data associated with the metadata's key.
|
|
"location": { # A location where metadata may be associated in a spreadsheet. # The location where the metadata is associated.
|
|
"locationType": "A String", # The type of location this object represents. This field is read-only.
|
|
"dimensionRange": { # A range along a single dimension on a sheet. # Represents the row or column when metadata is associated with
|
|
# a dimension. The specified DimensionRange must represent a single row
|
|
# or column; it cannot be unbounded or span multiple rows or columns.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open: the start index is inclusive
|
|
# and the end index is exclusive.
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
"endIndex": 42, # The end (exclusive) of the span, or not set if unbounded.
|
|
"startIndex": 42, # The start (inclusive) of the span, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this span is on.
|
|
"dimension": "A String", # The dimension of the span.
|
|
},
|
|
"spreadsheet": True or False, # True when metadata is associated with an entire spreadsheet.
|
|
"sheetId": 42, # The ID of the sheet when metadata is associated with an entire sheet.
|
|
},
|
|
"visibility": "A String", # The metadata visibility. Developer metadata must always have a visibility
|
|
# specified.
|
|
"metadataKey": "A String", # The metadata key. There may be multiple metadata in a spreadsheet with the
|
|
# same key. Developer metadata must always have a key specified.
|
|
},
|
|
},
|
|
"moveDimension": { # Moves one or more rows or columns. # Moves rows or columns to another location in a sheet.
|
|
"source": { # A range along a single dimension on a sheet. # The source dimensions to move.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open: the start index is inclusive
|
|
# and the end index is exclusive.
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
"endIndex": 42, # The end (exclusive) of the span, or not set if unbounded.
|
|
"startIndex": 42, # The start (inclusive) of the span, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this span is on.
|
|
"dimension": "A String", # The dimension of the span.
|
|
},
|
|
"destinationIndex": 42, # The zero-based start index of where to move the source data to,
|
|
# based on the coordinates *before* the source data is removed
|
|
# from the grid. Existing data will be shifted down or right
|
|
# (depending on the dimension) to make room for the moved dimensions.
|
|
# The source dimensions are removed from the grid, so the
|
|
# the data may end up in a different index than specified.
|
|
#
|
|
# For example, given `A1..A5` of `0, 1, 2, 3, 4` and wanting to move
|
|
# `"1"` and `"2"` to between `"3"` and `"4"`, the source would be
|
|
# `ROWS [1..3)`,and the destination index would be `"4"`
|
|
# (the zero-based index of row 5).
|
|
# The end result would be `A1..A5` of `0, 3, 1, 2, 4`.
|
|
},
|
|
"addDimensionGroup": { # Creates a group over the specified range. # Creates a group over the specified range.
|
|
#
|
|
# If the requested range is a superset of the range of an existing group G,
|
|
# then the depth of G is incremented and this new group G' has the
|
|
# depth of that group. For example, a group [C:D, depth 1] + [B:E] results in
|
|
# groups [B:E, depth 1] and [C:D, depth 2].
|
|
# If the requested range is a subset of the range of an existing group G,
|
|
# then the depth of the new group G' becomes one greater than the depth of G.
|
|
# For example, a group [B:E, depth 1] + [C:D] results in groups [B:E, depth 1]
|
|
# and [C:D, depth 2].
|
|
# If the requested range starts before and ends within, or starts within and
|
|
# ends after, the range of an existing group G, then the range of the existing
|
|
# group G becomes the union of the ranges, and the new group G' has
|
|
# depth one greater than the depth of G and range as the intersection of the
|
|
# ranges. For example, a group [B:D, depth 1] + [C:E] results in groups [B:E,
|
|
# depth 1] and [C:D, depth 2].
|
|
"range": { # A range along a single dimension on a sheet. # The range over which to create a group.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open: the start index is inclusive
|
|
# and the end index is exclusive.
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
"endIndex": 42, # The end (exclusive) of the span, or not set if unbounded.
|
|
"startIndex": 42, # The start (inclusive) of the span, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this span is on.
|
|
"dimension": "A String", # The dimension of the span.
|
|
},
|
|
},
|
|
"createDeveloperMetadata": { # A request to create developer metadata. # Creates new developer metadata
|
|
"developerMetadata": { # Developer metadata associated with a location or object in a spreadsheet. # The developer metadata to create.
|
|
# Developer metadata may be used to associate arbitrary data with various
|
|
# parts of a spreadsheet and will remain associated at those locations as they
|
|
# move around and the spreadsheet is edited. For example, if developer
|
|
# metadata is associated with row 5 and another row is then subsequently
|
|
# inserted above row 5, that original metadata will still be associated with
|
|
# the row it was first associated with (what is now row 6). If the associated
|
|
# object is deleted its metadata is deleted too.
|
|
"metadataId": 42, # The spreadsheet-scoped unique ID that identifies the metadata. IDs may be
|
|
# specified when metadata is created, otherwise one will be randomly
|
|
# generated and assigned. Must be positive.
|
|
"metadataValue": "A String", # Data associated with the metadata's key.
|
|
"location": { # A location where metadata may be associated in a spreadsheet. # The location where the metadata is associated.
|
|
"locationType": "A String", # The type of location this object represents. This field is read-only.
|
|
"dimensionRange": { # A range along a single dimension on a sheet. # Represents the row or column when metadata is associated with
|
|
# a dimension. The specified DimensionRange must represent a single row
|
|
# or column; it cannot be unbounded or span multiple rows or columns.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open: the start index is inclusive
|
|
# and the end index is exclusive.
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
"endIndex": 42, # The end (exclusive) of the span, or not set if unbounded.
|
|
"startIndex": 42, # The start (inclusive) of the span, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this span is on.
|
|
"dimension": "A String", # The dimension of the span.
|
|
},
|
|
"spreadsheet": True or False, # True when metadata is associated with an entire spreadsheet.
|
|
"sheetId": 42, # The ID of the sheet when metadata is associated with an entire sheet.
|
|
},
|
|
"visibility": "A String", # The metadata visibility. Developer metadata must always have a visibility
|
|
# specified.
|
|
"metadataKey": "A String", # The metadata key. There may be multiple metadata in a spreadsheet with the
|
|
# same key. Developer metadata must always have a key specified.
|
|
},
|
|
},
|
|
"deleteFilterView": { # Deletes a particular filter view. # Deletes a filter view from a sheet.
|
|
"filterId": 42, # The ID of the filter to delete.
|
|
},
|
|
"mergeCells": { # Merges all cells in the range. # Merges cells together.
|
|
"range": { # A range on a sheet. # The range of cells to merge.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
"mergeType": "A String", # How the cells should be merged.
|
|
},
|
|
"deleteProtectedRange": { # Deletes the protected range with the given ID. # Deletes a protected range.
|
|
"protectedRangeId": 42, # The ID of the protected range to delete.
|
|
},
|
|
"insertRange": { # Inserts cells into a range, shifting the existing cells over or down. # Inserts new cells in a sheet, shifting the existing cells.
|
|
"range": { # A range on a sheet. # The range to insert new cells into.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
"shiftDimension": "A String", # The dimension which will be shifted when inserting cells.
|
|
# If ROWS, existing cells will be shifted down.
|
|
# If COLUMNS, existing cells will be shifted right.
|
|
},
|
|
"updateBorders": { # Updates the borders of a range. # Updates the borders in a range of cells.
|
|
# If a field is not set in the request, that means the border remains as-is.
|
|
# For example, with two subsequent UpdateBordersRequest:
|
|
#
|
|
# 1. range: A1:A5 `{ top: RED, bottom: WHITE }`
|
|
# 2. range: A1:A5 `{ left: BLUE }`
|
|
#
|
|
# That would result in A1:A5 having a borders of
|
|
# `{ top: RED, bottom: WHITE, left: BLUE }`.
|
|
# If you want to clear a border, explicitly set the style to
|
|
# NONE.
|
|
"right": { # A border along a cell. # The border to put at the right of the range.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"bottom": { # A border along a cell. # The border to put at the bottom of the range.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"top": { # A border along a cell. # The border to put at the top of the range.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"innerHorizontal": { # A border along a cell. # The horizontal border to put within the range.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"range": { # A range on a sheet. # The range whose borders should be updated.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
"innerVertical": { # A border along a cell. # The vertical border to put within the range.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"left": { # A border along a cell. # The border to put at the left of the range.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
},
|
|
"deleteSheet": { # Deletes the requested sheet. # Deletes a sheet.
|
|
"sheetId": 42, # The ID of the sheet to delete.
|
|
},
|
|
"deleteDeveloperMetadata": { # A request to delete developer metadata. # Deletes developer metadata
|
|
"dataFilter": { # Filter that describes what data should be selected or returned from a # The data filter describing the criteria used to select which developer
|
|
# metadata entry to delete.
|
|
# request.
|
|
"developerMetadataLookup": { # Selects DeveloperMetadata that matches all of the specified fields. For # Selects data associated with the developer metadata matching the criteria
|
|
# described by this DeveloperMetadataLookup.
|
|
# example, if only a metadata ID is specified this considers the
|
|
# DeveloperMetadata with that particular unique ID. If a metadata key is
|
|
# specified, this considers all developer metadata with that key. If a
|
|
# key, visibility, and location type are all specified, this considers all
|
|
# developer metadata with that key and visibility that are associated with a
|
|
# location of that type. In general, this
|
|
# selects all DeveloperMetadata that matches the intersection of all the
|
|
# specified fields; any field or combination of fields may be specified.
|
|
"metadataLocation": { # A location where metadata may be associated in a spreadsheet. # Limits the selected developer metadata to those entries associated with
|
|
# the specified location. This field either matches exact locations or all
|
|
# intersecting locations according the specified
|
|
# locationMatchingStrategy.
|
|
"locationType": "A String", # The type of location this object represents. This field is read-only.
|
|
"dimensionRange": { # A range along a single dimension on a sheet. # Represents the row or column when metadata is associated with
|
|
# a dimension. The specified DimensionRange must represent a single row
|
|
# or column; it cannot be unbounded or span multiple rows or columns.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open: the start index is inclusive
|
|
# and the end index is exclusive.
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
"endIndex": 42, # The end (exclusive) of the span, or not set if unbounded.
|
|
"startIndex": 42, # The start (inclusive) of the span, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this span is on.
|
|
"dimension": "A String", # The dimension of the span.
|
|
},
|
|
"spreadsheet": True or False, # True when metadata is associated with an entire spreadsheet.
|
|
"sheetId": 42, # The ID of the sheet when metadata is associated with an entire sheet.
|
|
},
|
|
"metadataValue": "A String", # Limits the selected developer metadata to that which has a matching
|
|
# DeveloperMetadata.metadata_value.
|
|
"locationMatchingStrategy": "A String", # Determines how this lookup matches the location. If this field is
|
|
# specified as EXACT, only developer metadata associated on the exact
|
|
# location specified is matched. If this field is specified to INTERSECTING,
|
|
# developer metadata associated on intersecting locations is also
|
|
# matched. If left unspecified, this field assumes a default value of
|
|
# INTERSECTING.
|
|
# If this field is specified, a metadataLocation
|
|
# must also be specified.
|
|
"locationType": "A String", # Limits the selected developer metadata to those entries which are
|
|
# associated with locations of the specified type. For example, when this
|
|
# field is specified as ROW this lookup
|
|
# only considers developer metadata associated on rows. If the field is left
|
|
# unspecified, all location types are considered. This field cannot be
|
|
# specified as SPREADSHEET when
|
|
# the locationMatchingStrategy
|
|
# is specified as INTERSECTING or when the
|
|
# metadataLocation is specified as a
|
|
# non-spreadsheet location: spreadsheet metadata cannot intersect any other
|
|
# developer metadata location. This field also must be left unspecified when
|
|
# the locationMatchingStrategy
|
|
# is specified as EXACT.
|
|
"metadataId": 42, # Limits the selected developer metadata to that which has a matching
|
|
# DeveloperMetadata.metadata_id.
|
|
"visibility": "A String", # Limits the selected developer metadata to that which has a matching
|
|
# DeveloperMetadata.visibility. If left unspecified, all developer
|
|
# metadata visibile to the requesting project is considered.
|
|
"metadataKey": "A String", # Limits the selected developer metadata to that which has a matching
|
|
# DeveloperMetadata.metadata_key.
|
|
},
|
|
"a1Range": "A String", # Selects data that matches the specified A1 range.
|
|
"gridRange": { # A range on a sheet. # Selects data that matches the range described by the GridRange.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
},
|
|
},
|
|
"cutPaste": { # Moves data from the source to the destination. # Cuts data from one area and pastes it to another.
|
|
"pasteType": "A String", # What kind of data to paste. All the source data will be cut, regardless
|
|
# of what is pasted.
|
|
"source": { # A range on a sheet. # The source data to cut.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
"destination": { # A coordinate in a sheet. # The top-left coordinate where the data should be pasted.
|
|
# All indexes are zero-based.
|
|
"rowIndex": 42, # The row index of the coordinate.
|
|
"columnIndex": 42, # The column index of the coordinate.
|
|
"sheetId": 42, # The sheet this coordinate is on.
|
|
},
|
|
},
|
|
"copyPaste": { # Copies data from the source to the destination. # Copies data from one area and pastes it to another.
|
|
"pasteType": "A String", # What kind of data to paste.
|
|
"source": { # A range on a sheet. # The source range to copy.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
"destination": { # A range on a sheet. # The location to paste to. If the range covers a span that's
|
|
# a multiple of the source's height or width, then the
|
|
# data will be repeated to fill in the destination range.
|
|
# If the range is smaller than the source range, the entire
|
|
# source data will still be copied (beyond the end of the destination range).
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
"pasteOrientation": "A String", # How that data should be oriented when pasting.
|
|
},
|
|
"addSheet": { # Adds a new sheet. # Adds a sheet.
|
|
# When a sheet is added at a given index,
|
|
# all subsequent sheets' indexes are incremented.
|
|
# To add an object sheet, use AddChartRequest instead and specify
|
|
# EmbeddedObjectPosition.sheetId or
|
|
# EmbeddedObjectPosition.newSheet.
|
|
"properties": { # Properties of a sheet. # The properties the new sheet should have.
|
|
# All properties are optional.
|
|
# The sheetId field is optional; if one is not
|
|
# set, an id will be randomly generated. (It is an error to specify the ID
|
|
# of a sheet that already exists.)
|
|
"sheetType": "A String", # The type of sheet. Defaults to GRID.
|
|
# This field cannot be changed once set.
|
|
"index": 42, # The index of the sheet within the spreadsheet.
|
|
# When adding or updating sheet properties, if this field
|
|
# is excluded then the sheet is added or moved to the end
|
|
# of the sheet list. When updating sheet indices or inserting
|
|
# sheets, movement is considered in "before the move" indexes.
|
|
# For example, if there were 3 sheets (S1, S2, S3) in order to
|
|
# move S1 ahead of S2 the index would have to be set to 2. A sheet
|
|
# index update request is ignored if the requested index is
|
|
# identical to the sheets current index or if the requested new
|
|
# index is equal to the current sheet index + 1.
|
|
"title": "A String", # The name of the sheet.
|
|
"gridProperties": { # Properties of a grid. # Additional properties of the sheet if this sheet is a grid.
|
|
# (If the sheet is an object sheet, containing a chart or image, then
|
|
# this field will be absent.)
|
|
# When writing it is an error to set any grid properties on non-grid sheets.
|
|
"columnCount": 42, # The number of columns in the grid.
|
|
"rowGroupControlAfter": True or False, # True if the row grouping control toggle is shown after the group.
|
|
"columnGroupControlAfter": True or False, # True if the column grouping control toggle is shown after the group.
|
|
"frozenRowCount": 42, # The number of rows that are frozen in the grid.
|
|
"frozenColumnCount": 42, # The number of columns that are frozen in the grid.
|
|
"rowCount": 42, # The number of rows in the grid.
|
|
"hideGridlines": True or False, # True if the grid isn't showing gridlines in the UI.
|
|
},
|
|
"rightToLeft": True or False, # True if the sheet is an RTL sheet instead of an LTR sheet.
|
|
"tabColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the tab in the UI.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"hidden": True or False, # True if the sheet is hidden in the UI, false if it's visible.
|
|
"sheetId": 42, # The ID of the sheet. Must be non-negative.
|
|
# This field cannot be changed once set.
|
|
},
|
|
},
|
|
"deleteNamedRange": { # Removes the named range with the given ID from the spreadsheet. # Deletes a named range.
|
|
"namedRangeId": "A String", # The ID of the named range to delete.
|
|
},
|
|
"updateNamedRange": { # Updates properties of the named range with the specified # Updates a named range.
|
|
# namedRangeId.
|
|
"fields": "A String", # The fields that should be updated. At least one field must be specified.
|
|
# The root `namedRange` is implied and should not be specified.
|
|
# A single `"*"` can be used as short-hand for listing every field.
|
|
"namedRange": { # A named range. # The named range to update with the new properties.
|
|
"namedRangeId": "A String", # The ID of the named range.
|
|
"range": { # A range on a sheet. # The range this represents.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
"name": "A String", # The name of the named range.
|
|
},
|
|
},
|
|
"insertDimension": { # Inserts rows or columns in a sheet at a particular index. # Inserts new rows or columns in a sheet.
|
|
"inheritFromBefore": True or False, # Whether dimension properties should be extended from the dimensions
|
|
# before or after the newly inserted dimensions.
|
|
# True to inherit from the dimensions before (in which case the start
|
|
# index must be greater than 0), and false to inherit from the dimensions
|
|
# after.
|
|
#
|
|
# For example, if row index 0 has red background and row index 1
|
|
# has a green background, then inserting 2 rows at index 1 can inherit
|
|
# either the green or red background. If `inheritFromBefore` is true,
|
|
# the two new rows will be red (because the row before the insertion point
|
|
# was red), whereas if `inheritFromBefore` is false, the two new rows will
|
|
# be green (because the row after the insertion point was green).
|
|
"range": { # A range along a single dimension on a sheet. # The dimensions to insert. Both the start and end indexes must be bounded.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open: the start index is inclusive
|
|
# and the end index is exclusive.
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
"endIndex": 42, # The end (exclusive) of the span, or not set if unbounded.
|
|
"startIndex": 42, # The start (inclusive) of the span, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this span is on.
|
|
"dimension": "A String", # The dimension of the span.
|
|
},
|
|
},
|
|
"setDataValidation": { # Sets a data validation rule to every cell in the range. # Sets data validation for one or more cells.
|
|
# To clear validation in a range, call this with no rule specified.
|
|
"range": { # A range on a sheet. # The range the data validation rule should apply to.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
"rule": { # A data validation rule. # The data validation rule to set on each cell in the range,
|
|
# or empty to clear the data validation in the range.
|
|
"showCustomUi": True or False, # True if the UI should be customized based on the kind of condition.
|
|
# If true, "List" conditions will show a dropdown.
|
|
"strict": True or False, # True if invalid data should be rejected.
|
|
"inputMessage": "A String", # A message to show the user when adding data to the cell.
|
|
"condition": { # A condition that can evaluate to true or false. # The condition that data in the cell must match.
|
|
# BooleanConditions are used by conditional formatting,
|
|
# data validation, and the criteria in filters.
|
|
"values": [ # The values of the condition. The number of supported values depends
|
|
# on the condition type. Some support zero values,
|
|
# others one or two values,
|
|
# and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
|
|
{ # The value of the condition.
|
|
"relativeDate": "A String", # A relative date (based on the current date).
|
|
# Valid only if the type is
|
|
# DATE_BEFORE,
|
|
# DATE_AFTER,
|
|
# DATE_ON_OR_BEFORE or
|
|
# DATE_ON_OR_AFTER.
|
|
#
|
|
# Relative dates are not supported in data validation.
|
|
# They are supported only in conditional formatting and
|
|
# conditional filters.
|
|
"userEnteredValue": "A String", # A value the condition is based on.
|
|
# The value is parsed as if the user typed into a cell.
|
|
# Formulas are supported (and must begin with an `=` or a '+').
|
|
},
|
|
],
|
|
"type": "A String", # The type of condition.
|
|
},
|
|
},
|
|
},
|
|
"updateFilterView": { # Updates properties of the filter view. # Updates the properties of a filter view.
|
|
"filter": { # A filter view. # The new properties of the filter view.
|
|
"title": "A String", # The name of the filter view.
|
|
"namedRangeId": "A String", # The named range this filter view is backed by, if any.
|
|
#
|
|
# When writing, only one of range or named_range_id
|
|
# may be set.
|
|
"filterViewId": 42, # The ID of the filter view.
|
|
"range": { # A range on a sheet. # The range this filter view covers.
|
|
#
|
|
# When writing, only one of range or named_range_id
|
|
# may be set.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
"sortSpecs": [ # The sort order per column. Later specifications are used when values
|
|
# are equal in the earlier specifications.
|
|
{ # A sort order associated with a specific column or row.
|
|
"sortOrder": "A String", # The order data should be sorted.
|
|
"dimensionIndex": 42, # The dimension the sort should be applied to.
|
|
},
|
|
],
|
|
"criteria": { # The criteria for showing/hiding values per column.
|
|
# The map's key is the column index, and the value is the criteria for
|
|
# that column.
|
|
"a_key": { # Criteria for showing/hiding rows in a filter or filter view.
|
|
"hiddenValues": [ # Values that should be hidden.
|
|
"A String",
|
|
],
|
|
"condition": { # A condition that can evaluate to true or false. # A condition that must be true for values to be shown.
|
|
# (This does not override hiddenValues -- if a value is listed there,
|
|
# it will still be hidden.)
|
|
# BooleanConditions are used by conditional formatting,
|
|
# data validation, and the criteria in filters.
|
|
"values": [ # The values of the condition. The number of supported values depends
|
|
# on the condition type. Some support zero values,
|
|
# others one or two values,
|
|
# and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
|
|
{ # The value of the condition.
|
|
"relativeDate": "A String", # A relative date (based on the current date).
|
|
# Valid only if the type is
|
|
# DATE_BEFORE,
|
|
# DATE_AFTER,
|
|
# DATE_ON_OR_BEFORE or
|
|
# DATE_ON_OR_AFTER.
|
|
#
|
|
# Relative dates are not supported in data validation.
|
|
# They are supported only in conditional formatting and
|
|
# conditional filters.
|
|
"userEnteredValue": "A String", # A value the condition is based on.
|
|
# The value is parsed as if the user typed into a cell.
|
|
# Formulas are supported (and must begin with an `=` or a '+').
|
|
},
|
|
],
|
|
"type": "A String", # The type of condition.
|
|
},
|
|
},
|
|
},
|
|
},
|
|
"fields": "A String", # The fields that should be updated. At least one field must be specified.
|
|
# The root `filter` is implied and should not be specified.
|
|
# A single `"*"` can be used as short-hand for listing every field.
|
|
},
|
|
"deleteConditionalFormatRule": { # Deletes a conditional format rule at the given index. # Deletes an existing conditional format rule.
|
|
# All subsequent rules' indexes are decremented.
|
|
"index": 42, # The zero-based index of the rule to be deleted.
|
|
"sheetId": 42, # The sheet the rule is being deleted from.
|
|
},
|
|
},
|
|
],
|
|
}
|
|
|
|
x__xgafv: string, V1 error format.
|
|
Allowed values
|
|
1 - v1 error format
|
|
2 - v2 error format
|
|
|
|
Returns:
|
|
An object of the form:
|
|
|
|
{ # The reply for batch updating a spreadsheet.
|
|
"spreadsheetId": "A String", # The spreadsheet the updates were applied to.
|
|
"updatedSpreadsheet": { # Resource that represents a spreadsheet. # The spreadsheet after updates were applied. This is only set if
|
|
# [BatchUpdateSpreadsheetRequest.include_spreadsheet_in_response] is `true`.
|
|
"developerMetadata": [ # The developer metadata associated with a spreadsheet.
|
|
{ # Developer metadata associated with a location or object in a spreadsheet.
|
|
# Developer metadata may be used to associate arbitrary data with various
|
|
# parts of a spreadsheet and will remain associated at those locations as they
|
|
# move around and the spreadsheet is edited. For example, if developer
|
|
# metadata is associated with row 5 and another row is then subsequently
|
|
# inserted above row 5, that original metadata will still be associated with
|
|
# the row it was first associated with (what is now row 6). If the associated
|
|
# object is deleted its metadata is deleted too.
|
|
"metadataId": 42, # The spreadsheet-scoped unique ID that identifies the metadata. IDs may be
|
|
# specified when metadata is created, otherwise one will be randomly
|
|
# generated and assigned. Must be positive.
|
|
"metadataValue": "A String", # Data associated with the metadata's key.
|
|
"location": { # A location where metadata may be associated in a spreadsheet. # The location where the metadata is associated.
|
|
"locationType": "A String", # The type of location this object represents. This field is read-only.
|
|
"dimensionRange": { # A range along a single dimension on a sheet. # Represents the row or column when metadata is associated with
|
|
# a dimension. The specified DimensionRange must represent a single row
|
|
# or column; it cannot be unbounded or span multiple rows or columns.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open: the start index is inclusive
|
|
# and the end index is exclusive.
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
"endIndex": 42, # The end (exclusive) of the span, or not set if unbounded.
|
|
"startIndex": 42, # The start (inclusive) of the span, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this span is on.
|
|
"dimension": "A String", # The dimension of the span.
|
|
},
|
|
"spreadsheet": True or False, # True when metadata is associated with an entire spreadsheet.
|
|
"sheetId": 42, # The ID of the sheet when metadata is associated with an entire sheet.
|
|
},
|
|
"visibility": "A String", # The metadata visibility. Developer metadata must always have a visibility
|
|
# specified.
|
|
"metadataKey": "A String", # The metadata key. There may be multiple metadata in a spreadsheet with the
|
|
# same key. Developer metadata must always have a key specified.
|
|
},
|
|
],
|
|
"sheets": [ # The sheets that are part of a spreadsheet.
|
|
{ # A sheet in a spreadsheet.
|
|
"conditionalFormats": [ # The conditional format rules in this sheet.
|
|
{ # A rule describing a conditional format.
|
|
"ranges": [ # The ranges that are formatted if the condition is true.
|
|
# All the ranges must be on the same grid.
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
"booleanRule": { # A rule that may or may not match, depending on the condition. # The formatting is either "on" or "off" according to the rule.
|
|
"condition": { # A condition that can evaluate to true or false. # The condition of the rule. If the condition evaluates to true,
|
|
# the format is applied.
|
|
# BooleanConditions are used by conditional formatting,
|
|
# data validation, and the criteria in filters.
|
|
"values": [ # The values of the condition. The number of supported values depends
|
|
# on the condition type. Some support zero values,
|
|
# others one or two values,
|
|
# and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
|
|
{ # The value of the condition.
|
|
"relativeDate": "A String", # A relative date (based on the current date).
|
|
# Valid only if the type is
|
|
# DATE_BEFORE,
|
|
# DATE_AFTER,
|
|
# DATE_ON_OR_BEFORE or
|
|
# DATE_ON_OR_AFTER.
|
|
#
|
|
# Relative dates are not supported in data validation.
|
|
# They are supported only in conditional formatting and
|
|
# conditional filters.
|
|
"userEnteredValue": "A String", # A value the condition is based on.
|
|
# The value is parsed as if the user typed into a cell.
|
|
# Formulas are supported (and must begin with an `=` or a '+').
|
|
},
|
|
],
|
|
"type": "A String", # The type of condition.
|
|
},
|
|
"format": { # The format of a cell. # The format to apply.
|
|
# Conditional formatting can only apply a subset of formatting:
|
|
# bold, italic,
|
|
# strikethrough,
|
|
# foreground color &
|
|
# background color.
|
|
"numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
|
|
"pattern": "A String", # Pattern string used for formatting. If not set, a default pattern based on
|
|
# the user's locale will be used if necessary for the given type.
|
|
# See the [Date and Number Formats guide](/sheets/api/guides/formats) for
|
|
# more information about the supported patterns.
|
|
"type": "A String", # The type of the number format.
|
|
# When writing, this field must be set.
|
|
},
|
|
"textDirection": "A String", # The direction of the text in the cell.
|
|
"padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
|
|
# When updating padding, every field must be specified.
|
|
"top": 42, # The top padding of the cell.
|
|
"left": 42, # The left padding of the cell.
|
|
"right": 42, # The right padding of the cell.
|
|
"bottom": 42, # The bottom padding of the cell.
|
|
},
|
|
"horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
|
|
"backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"verticalAlignment": "A String", # The vertical alignment of the value in the cell.
|
|
"borders": { # The borders of the cell. # The borders of the cell.
|
|
"top": { # A border along a cell. # The top border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"right": { # A border along a cell. # The right border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"bottom": { # A border along a cell. # The bottom border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"left": { # A border along a cell. # The left border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
},
|
|
"textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell
|
|
"angle": 42, # The angle between the standard orientation and the desired orientation.
|
|
# Measured in degrees. Valid values are between -90 and 90. Positive
|
|
# angles are angled upwards, negative are angled downwards.
|
|
#
|
|
# Note: For LTR text direction positive angles are in the
|
|
# counterclockwise direction, whereas for RTL they are in the clockwise
|
|
# direction
|
|
"vertical": True or False, # If true, text reads top to bottom, but the orientation of individual
|
|
# characters is unchanged.
|
|
# For example:
|
|
#
|
|
# | V |
|
|
# | e |
|
|
# | r |
|
|
# | t |
|
|
# | i |
|
|
# | c |
|
|
# | a |
|
|
# | l |
|
|
},
|
|
"hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
|
|
"textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
"wrapStrategy": "A String", # The wrap strategy for the value in the cell.
|
|
},
|
|
},
|
|
"gradientRule": { # A rule that applies a gradient color scale format, based on # The formatting will vary based on the gradients in the rule.
|
|
# the interpolation points listed. The format of a cell will vary
|
|
# based on its contents as compared to the values of the interpolation
|
|
# points.
|
|
"maxpoint": { # A single interpolation point on a gradient conditional format. # The final interpolation point.
|
|
# These pin the gradient color scale according to the color,
|
|
# type and value chosen.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"type": "A String", # How the value should be interpreted.
|
|
"value": "A String", # The value this interpolation point uses. May be a formula.
|
|
# Unused if type is MIN or
|
|
# MAX.
|
|
},
|
|
"midpoint": { # A single interpolation point on a gradient conditional format. # An optional midway interpolation point.
|
|
# These pin the gradient color scale according to the color,
|
|
# type and value chosen.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"type": "A String", # How the value should be interpreted.
|
|
"value": "A String", # The value this interpolation point uses. May be a formula.
|
|
# Unused if type is MIN or
|
|
# MAX.
|
|
},
|
|
"minpoint": { # A single interpolation point on a gradient conditional format. # The starting interpolation point.
|
|
# These pin the gradient color scale according to the color,
|
|
# type and value chosen.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"type": "A String", # How the value should be interpreted.
|
|
"value": "A String", # The value this interpolation point uses. May be a formula.
|
|
# Unused if type is MIN or
|
|
# MAX.
|
|
},
|
|
},
|
|
},
|
|
],
|
|
"bandedRanges": [ # The banded (alternating colors) ranges on this sheet.
|
|
{ # A banded (alternating colors) range in a sheet.
|
|
"range": { # A range on a sheet. # The range over which these properties are applied.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
"columnProperties": { # Properties referring a single dimension (either row or column). If both # Properties for column bands. These properties are applied on a column-
|
|
# by-column basis throughout all the columns in the range. At least one of
|
|
# row_properties or column_properties must be specified.
|
|
# BandedRange.row_properties and BandedRange.column_properties are
|
|
# set, the fill colors are applied to cells according to the following rules:
|
|
#
|
|
# * header_color and footer_color take priority over band colors.
|
|
# * first_band_color takes priority over second_band_color.
|
|
# * row_properties takes priority over column_properties.
|
|
#
|
|
# For example, the first row color takes priority over the first column
|
|
# color, but the first column color takes priority over the second row color.
|
|
# Similarly, the row header takes priority over the column header in the
|
|
# top left cell, but the column header takes priority over the first row
|
|
# color if the row header is not set.
|
|
"secondBandColor": { # Represents a color in the RGBA color space. This representation is designed # The second color that is alternating. (Required)
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"headerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the first row or column. If this field is set, the first
|
|
# row or column will be filled with this color and the colors will
|
|
# alternate between first_band_color and second_band_color starting
|
|
# from the second row or column. Otherwise, the first row or column will be
|
|
# filled with first_band_color and the colors will proceed to alternate
|
|
# as they normally would.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"footerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the last row or column. If this field is not set, the last
|
|
# row or column will be filled with either first_band_color or
|
|
# second_band_color, depending on the color of the previous row or
|
|
# column.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"firstBandColor": { # Represents a color in the RGBA color space. This representation is designed # The first color that is alternating. (Required)
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
},
|
|
"rowProperties": { # Properties referring a single dimension (either row or column). If both # Properties for row bands. These properties are applied on a row-by-row
|
|
# basis throughout all the rows in the range. At least one of
|
|
# row_properties or column_properties must be specified.
|
|
# BandedRange.row_properties and BandedRange.column_properties are
|
|
# set, the fill colors are applied to cells according to the following rules:
|
|
#
|
|
# * header_color and footer_color take priority over band colors.
|
|
# * first_band_color takes priority over second_band_color.
|
|
# * row_properties takes priority over column_properties.
|
|
#
|
|
# For example, the first row color takes priority over the first column
|
|
# color, but the first column color takes priority over the second row color.
|
|
# Similarly, the row header takes priority over the column header in the
|
|
# top left cell, but the column header takes priority over the first row
|
|
# color if the row header is not set.
|
|
"secondBandColor": { # Represents a color in the RGBA color space. This representation is designed # The second color that is alternating. (Required)
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"headerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the first row or column. If this field is set, the first
|
|
# row or column will be filled with this color and the colors will
|
|
# alternate between first_band_color and second_band_color starting
|
|
# from the second row or column. Otherwise, the first row or column will be
|
|
# filled with first_band_color and the colors will proceed to alternate
|
|
# as they normally would.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"footerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the last row or column. If this field is not set, the last
|
|
# row or column will be filled with either first_band_color or
|
|
# second_band_color, depending on the color of the previous row or
|
|
# column.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"firstBandColor": { # Represents a color in the RGBA color space. This representation is designed # The first color that is alternating. (Required)
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
},
|
|
"bandedRangeId": 42, # The id of the banded range.
|
|
},
|
|
],
|
|
"merges": [ # The ranges that are merged together.
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
"basicFilter": { # The default filter associated with a sheet. # The filter on this sheet, if any.
|
|
"range": { # A range on a sheet. # The range the filter covers.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
"sortSpecs": [ # The sort order per column. Later specifications are used when values
|
|
# are equal in the earlier specifications.
|
|
{ # A sort order associated with a specific column or row.
|
|
"sortOrder": "A String", # The order data should be sorted.
|
|
"dimensionIndex": 42, # The dimension the sort should be applied to.
|
|
},
|
|
],
|
|
"criteria": { # The criteria for showing/hiding values per column.
|
|
# The map's key is the column index, and the value is the criteria for
|
|
# that column.
|
|
"a_key": { # Criteria for showing/hiding rows in a filter or filter view.
|
|
"hiddenValues": [ # Values that should be hidden.
|
|
"A String",
|
|
],
|
|
"condition": { # A condition that can evaluate to true or false. # A condition that must be true for values to be shown.
|
|
# (This does not override hiddenValues -- if a value is listed there,
|
|
# it will still be hidden.)
|
|
# BooleanConditions are used by conditional formatting,
|
|
# data validation, and the criteria in filters.
|
|
"values": [ # The values of the condition. The number of supported values depends
|
|
# on the condition type. Some support zero values,
|
|
# others one or two values,
|
|
# and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
|
|
{ # The value of the condition.
|
|
"relativeDate": "A String", # A relative date (based on the current date).
|
|
# Valid only if the type is
|
|
# DATE_BEFORE,
|
|
# DATE_AFTER,
|
|
# DATE_ON_OR_BEFORE or
|
|
# DATE_ON_OR_AFTER.
|
|
#
|
|
# Relative dates are not supported in data validation.
|
|
# They are supported only in conditional formatting and
|
|
# conditional filters.
|
|
"userEnteredValue": "A String", # A value the condition is based on.
|
|
# The value is parsed as if the user typed into a cell.
|
|
# Formulas are supported (and must begin with an `=` or a '+').
|
|
},
|
|
],
|
|
"type": "A String", # The type of condition.
|
|
},
|
|
},
|
|
},
|
|
},
|
|
"developerMetadata": [ # The developer metadata associated with a sheet.
|
|
{ # Developer metadata associated with a location or object in a spreadsheet.
|
|
# Developer metadata may be used to associate arbitrary data with various
|
|
# parts of a spreadsheet and will remain associated at those locations as they
|
|
# move around and the spreadsheet is edited. For example, if developer
|
|
# metadata is associated with row 5 and another row is then subsequently
|
|
# inserted above row 5, that original metadata will still be associated with
|
|
# the row it was first associated with (what is now row 6). If the associated
|
|
# object is deleted its metadata is deleted too.
|
|
"metadataId": 42, # The spreadsheet-scoped unique ID that identifies the metadata. IDs may be
|
|
# specified when metadata is created, otherwise one will be randomly
|
|
# generated and assigned. Must be positive.
|
|
"metadataValue": "A String", # Data associated with the metadata's key.
|
|
"location": { # A location where metadata may be associated in a spreadsheet. # The location where the metadata is associated.
|
|
"locationType": "A String", # The type of location this object represents. This field is read-only.
|
|
"dimensionRange": { # A range along a single dimension on a sheet. # Represents the row or column when metadata is associated with
|
|
# a dimension. The specified DimensionRange must represent a single row
|
|
# or column; it cannot be unbounded or span multiple rows or columns.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open: the start index is inclusive
|
|
# and the end index is exclusive.
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
"endIndex": 42, # The end (exclusive) of the span, or not set if unbounded.
|
|
"startIndex": 42, # The start (inclusive) of the span, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this span is on.
|
|
"dimension": "A String", # The dimension of the span.
|
|
},
|
|
"spreadsheet": True or False, # True when metadata is associated with an entire spreadsheet.
|
|
"sheetId": 42, # The ID of the sheet when metadata is associated with an entire sheet.
|
|
},
|
|
"visibility": "A String", # The metadata visibility. Developer metadata must always have a visibility
|
|
# specified.
|
|
"metadataKey": "A String", # The metadata key. There may be multiple metadata in a spreadsheet with the
|
|
# same key. Developer metadata must always have a key specified.
|
|
},
|
|
],
|
|
"columnGroups": [ # All column groups on this sheet, ordered by increasing range start index,
|
|
# then by group depth.
|
|
{ # A group over an interval of rows or columns on a sheet, which can contain or
|
|
# be contained within other groups. A group can be collapsed or expanded as a
|
|
# unit on the sheet.
|
|
"range": { # A range along a single dimension on a sheet. # The range over which this group exists.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open: the start index is inclusive
|
|
# and the end index is exclusive.
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
"endIndex": 42, # The end (exclusive) of the span, or not set if unbounded.
|
|
"startIndex": 42, # The start (inclusive) of the span, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this span is on.
|
|
"dimension": "A String", # The dimension of the span.
|
|
},
|
|
"collapsed": True or False, # This field is true if this group is collapsed. A collapsed group remains
|
|
# collapsed if an overlapping group at a shallower depth is expanded.
|
|
#
|
|
# A true value does not imply that all dimensions within the group are
|
|
# hidden, since a dimension's visibility can change independently from this
|
|
# group property. However, when this property is updated, all dimensions
|
|
# within it are set to hidden if this field is true, or set to visible if
|
|
# this field is false.
|
|
"depth": 42, # The depth of the group, representing how many groups have a range that
|
|
# wholly contains the range of this group.
|
|
},
|
|
],
|
|
"properties": { # Properties of a sheet. # The properties of the sheet.
|
|
"sheetType": "A String", # The type of sheet. Defaults to GRID.
|
|
# This field cannot be changed once set.
|
|
"index": 42, # The index of the sheet within the spreadsheet.
|
|
# When adding or updating sheet properties, if this field
|
|
# is excluded then the sheet is added or moved to the end
|
|
# of the sheet list. When updating sheet indices or inserting
|
|
# sheets, movement is considered in "before the move" indexes.
|
|
# For example, if there were 3 sheets (S1, S2, S3) in order to
|
|
# move S1 ahead of S2 the index would have to be set to 2. A sheet
|
|
# index update request is ignored if the requested index is
|
|
# identical to the sheets current index or if the requested new
|
|
# index is equal to the current sheet index + 1.
|
|
"title": "A String", # The name of the sheet.
|
|
"gridProperties": { # Properties of a grid. # Additional properties of the sheet if this sheet is a grid.
|
|
# (If the sheet is an object sheet, containing a chart or image, then
|
|
# this field will be absent.)
|
|
# When writing it is an error to set any grid properties on non-grid sheets.
|
|
"columnCount": 42, # The number of columns in the grid.
|
|
"rowGroupControlAfter": True or False, # True if the row grouping control toggle is shown after the group.
|
|
"columnGroupControlAfter": True or False, # True if the column grouping control toggle is shown after the group.
|
|
"frozenRowCount": 42, # The number of rows that are frozen in the grid.
|
|
"frozenColumnCount": 42, # The number of columns that are frozen in the grid.
|
|
"rowCount": 42, # The number of rows in the grid.
|
|
"hideGridlines": True or False, # True if the grid isn't showing gridlines in the UI.
|
|
},
|
|
"rightToLeft": True or False, # True if the sheet is an RTL sheet instead of an LTR sheet.
|
|
"tabColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the tab in the UI.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"hidden": True or False, # True if the sheet is hidden in the UI, false if it's visible.
|
|
"sheetId": 42, # The ID of the sheet. Must be non-negative.
|
|
# This field cannot be changed once set.
|
|
},
|
|
"filterViews": [ # The filter views in this sheet.
|
|
{ # A filter view.
|
|
"title": "A String", # The name of the filter view.
|
|
"namedRangeId": "A String", # The named range this filter view is backed by, if any.
|
|
#
|
|
# When writing, only one of range or named_range_id
|
|
# may be set.
|
|
"filterViewId": 42, # The ID of the filter view.
|
|
"range": { # A range on a sheet. # The range this filter view covers.
|
|
#
|
|
# When writing, only one of range or named_range_id
|
|
# may be set.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
"sortSpecs": [ # The sort order per column. Later specifications are used when values
|
|
# are equal in the earlier specifications.
|
|
{ # A sort order associated with a specific column or row.
|
|
"sortOrder": "A String", # The order data should be sorted.
|
|
"dimensionIndex": 42, # The dimension the sort should be applied to.
|
|
},
|
|
],
|
|
"criteria": { # The criteria for showing/hiding values per column.
|
|
# The map's key is the column index, and the value is the criteria for
|
|
# that column.
|
|
"a_key": { # Criteria for showing/hiding rows in a filter or filter view.
|
|
"hiddenValues": [ # Values that should be hidden.
|
|
"A String",
|
|
],
|
|
"condition": { # A condition that can evaluate to true or false. # A condition that must be true for values to be shown.
|
|
# (This does not override hiddenValues -- if a value is listed there,
|
|
# it will still be hidden.)
|
|
# BooleanConditions are used by conditional formatting,
|
|
# data validation, and the criteria in filters.
|
|
"values": [ # The values of the condition. The number of supported values depends
|
|
# on the condition type. Some support zero values,
|
|
# others one or two values,
|
|
# and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
|
|
{ # The value of the condition.
|
|
"relativeDate": "A String", # A relative date (based on the current date).
|
|
# Valid only if the type is
|
|
# DATE_BEFORE,
|
|
# DATE_AFTER,
|
|
# DATE_ON_OR_BEFORE or
|
|
# DATE_ON_OR_AFTER.
|
|
#
|
|
# Relative dates are not supported in data validation.
|
|
# They are supported only in conditional formatting and
|
|
# conditional filters.
|
|
"userEnteredValue": "A String", # A value the condition is based on.
|
|
# The value is parsed as if the user typed into a cell.
|
|
# Formulas are supported (and must begin with an `=` or a '+').
|
|
},
|
|
],
|
|
"type": "A String", # The type of condition.
|
|
},
|
|
},
|
|
},
|
|
},
|
|
],
|
|
"charts": [ # The specifications of every chart on this sheet.
|
|
{ # A chart embedded in a sheet.
|
|
"chartId": 42, # The ID of the chart.
|
|
"position": { # The position of an embedded object such as a chart. # The position of the chart.
|
|
"newSheet": True or False, # If true, the embedded object is put on a new sheet whose ID
|
|
# is chosen for you. Used only when writing.
|
|
"sheetId": 42, # The sheet this is on. Set only if the embedded object
|
|
# is on its own sheet. Must be non-negative.
|
|
"overlayPosition": { # The location an object is overlaid on top of a grid. # The position at which the object is overlaid on top of a grid.
|
|
"anchorCell": { # A coordinate in a sheet. # The cell the object is anchored to.
|
|
# All indexes are zero-based.
|
|
"rowIndex": 42, # The row index of the coordinate.
|
|
"columnIndex": 42, # The column index of the coordinate.
|
|
"sheetId": 42, # The sheet this coordinate is on.
|
|
},
|
|
"widthPixels": 42, # The width of the object, in pixels. Defaults to 600.
|
|
"offsetYPixels": 42, # The vertical offset, in pixels, that the object is offset
|
|
# from the anchor cell.
|
|
"offsetXPixels": 42, # The horizontal offset, in pixels, that the object is offset
|
|
# from the anchor cell.
|
|
"heightPixels": 42, # The height of the object, in pixels. Defaults to 371.
|
|
},
|
|
},
|
|
"spec": { # The specifications of a chart. # The specification of the chart.
|
|
"fontName": "A String", # The name of the font to use by default for all chart text (e.g. title,
|
|
# axis labels, legend). If a font is specified for a specific part of the
|
|
# chart it will override this font name.
|
|
"altText": "A String", # The alternative text that describes the chart. This is often used
|
|
# for accessibility.
|
|
"subtitle": "A String", # The subtitle of the chart.
|
|
"subtitleTextFormat": { # The format of a run of text in a cell. # The subtitle text format.
|
|
# Strikethrough and underline are not supported.
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
"title": "A String", # The title of the chart.
|
|
"titleTextFormat": { # The format of a run of text in a cell. # The title text format.
|
|
# Strikethrough and underline are not supported.
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
"treemapChart": { # A <a href="/chart/interactive/docs/gallery/treemap">Treemap chart</a>. # A treemap chart specification.
|
|
"parentLabels": { # The data included in a domain or series. # The data the contains the treemap cells' parent labels.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"sizeData": { # The data included in a domain or series. # The data that determines the size of each treemap data cell. This data is
|
|
# expected to be numeric. The cells corresponding to non-numeric or missing
|
|
# data will not be rendered. If color_data is not specified, this data
|
|
# is used to determine data cell background colors as well.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"hideTooltips": True or False, # True to hide tooltips.
|
|
"colorScale": { # A color scale for a treemap chart. # The color scale for data cells in the treemap chart. Data cells are
|
|
# assigned colors based on their color values. These color values come from
|
|
# color_data, or from size_data if color_data is not specified.
|
|
# Cells with color values less than or equal to min_value will
|
|
# have minValueColor as their
|
|
# background color. Cells with color values greater than or equal to
|
|
# max_value will have
|
|
# maxValueColor as their background
|
|
# color. Cells with color values between min_value and max_value will
|
|
# have background colors on a gradient between
|
|
# minValueColor and
|
|
# maxValueColor, the midpoint of
|
|
# the gradient being midValueColor.
|
|
# Cells with missing or non-numeric color values will have
|
|
# noDataColor as their background
|
|
# color.
|
|
"noDataColor": { # Represents a color in the RGBA color space. This representation is designed # The background color for cells that have no color data associated with
|
|
# them. Defaults to #000000 if not specified.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"midValueColor": { # Represents a color in the RGBA color space. This representation is designed # The background color for cells with a color value at the midpoint between
|
|
# minValue and
|
|
# maxValue. Defaults to #efe6dc if not
|
|
# specified.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"minValueColor": { # Represents a color in the RGBA color space. This representation is designed # The background color for cells with a color value less than or equal to
|
|
# minValue. Defaults to #dc3912 if not
|
|
# specified.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"maxValueColor": { # Represents a color in the RGBA color space. This representation is designed # The background color for cells with a color value greater than or equal
|
|
# to maxValue. Defaults to #109618 if not
|
|
# specified.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
},
|
|
"labels": { # The data included in a domain or series. # The data that contains the treemap cell labels.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"colorData": { # The data included in a domain or series. # The data that determines the background color of each treemap data cell.
|
|
# This field is optional. If not specified, size_data is used to
|
|
# determine background colors. If specified, the data is expected to be
|
|
# numeric. color_scale will determine how the values in this data map to
|
|
# data cell background colors.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"maxValue": 3.14, # The maximum possible data value. Cells with values greater than this will
|
|
# have the same color as cells with this value. If not specified, defaults
|
|
# to the actual maximum value from color_data, or the maximum value from
|
|
# size_data if color_data is not specified.
|
|
"minValue": 3.14, # The minimum possible data value. Cells with values less than this will
|
|
# have the same color as cells with this value. If not specified, defaults
|
|
# to the actual minimum value from color_data, or the minimum value from
|
|
# size_data if color_data is not specified.
|
|
"headerColor": { # Represents a color in the RGBA color space. This representation is designed # The background color for header cells.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"levels": 42, # The number of data levels to show on the treemap chart. These levels are
|
|
# interactive and are shown with their labels. Defaults to 2 if not
|
|
# specified.
|
|
"hintedLevels": 42, # The number of additional data levels beyond the labeled levels to be shown
|
|
# on the treemap chart. These levels are not interactive and are shown
|
|
# without their labels. Defaults to 0 if not specified.
|
|
"textFormat": { # The format of a run of text in a cell. # The text format for all labels on the chart.
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
},
|
|
"titleTextPosition": { # Position settings for text. # The title text position.
|
|
# This field is optional.
|
|
"horizontalAlignment": "A String", # Horizontal alignment setting for the piece of text.
|
|
},
|
|
"hiddenDimensionStrategy": "A String", # Determines how the charts will use hidden rows or columns.
|
|
"pieChart": { # A <a href="/chart/interactive/docs/gallery/piechart">pie chart</a>. # A pie chart specification.
|
|
"series": { # The data included in a domain or series. # The data that covers the one and only series of the pie chart.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"domain": { # The data included in a domain or series. # The data that covers the domain of the pie chart.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"threeDimensional": True or False, # True if the pie is three dimensional.
|
|
"legendPosition": "A String", # Where the legend of the pie chart should be drawn.
|
|
"pieHole": 3.14, # The size of the hole in the pie chart.
|
|
},
|
|
"candlestickChart": { # A <a href="/chart/interactive/docs/gallery/candlestickchart">candlestick # A candlestick chart specification.
|
|
# chart</a>.
|
|
"domain": { # The domain of a CandlestickChart. # The domain data (horizontal axis) for the candlestick chart. String data
|
|
# will be treated as discrete labels, other data will be treated as
|
|
# continuous values.
|
|
"reversed": True or False, # True to reverse the order of the domain values (horizontal axis).
|
|
"data": { # The data included in a domain or series. # The data of the CandlestickDomain.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
"data": [ # The Candlestick chart data.
|
|
# Only one CandlestickData is supported.
|
|
{ # The Candlestick chart data, each containing the low, open, close, and high
|
|
# values for a series.
|
|
"lowSeries": { # The series of a CandlestickData. # The range data (vertical axis) for the low/minimum value for each candle.
|
|
# This is the bottom of the candle's center line.
|
|
"data": { # The data included in a domain or series. # The data of the CandlestickSeries.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
"highSeries": { # The series of a CandlestickData. # The range data (vertical axis) for the high/maximum value for each
|
|
# candle. This is the top of the candle's center line.
|
|
"data": { # The data included in a domain or series. # The data of the CandlestickSeries.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
"openSeries": { # The series of a CandlestickData. # The range data (vertical axis) for the open/initial value for each
|
|
# candle. This is the bottom of the candle body. If less than the close
|
|
# value the candle will be filled. Otherwise the candle will be hollow.
|
|
"data": { # The data included in a domain or series. # The data of the CandlestickSeries.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
"closeSeries": { # The series of a CandlestickData. # The range data (vertical axis) for the close/final value for each candle.
|
|
# This is the top of the candle body. If greater than the open value the
|
|
# candle will be filled. Otherwise the candle will be hollow.
|
|
"data": { # The data included in a domain or series. # The data of the CandlestickSeries.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
},
|
|
],
|
|
},
|
|
"subtitleTextPosition": { # Position settings for text. # The subtitle text position.
|
|
# This field is optional.
|
|
"horizontalAlignment": "A String", # Horizontal alignment setting for the piece of text.
|
|
},
|
|
"backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the entire chart.
|
|
# Not applicable to Org charts.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"maximized": True or False, # True to make a chart fill the entire space in which it's rendered with
|
|
# minimum padding. False to use the default padding.
|
|
# (Not applicable to Geo and Org charts.)
|
|
"waterfallChart": { # A waterfall chart. # A waterfall chart specification.
|
|
"stackedType": "A String", # The stacked type.
|
|
"hideConnectorLines": True or False, # True to hide connector lines between columns.
|
|
"domain": { # The domain of a waterfall chart. # The domain data (horizontal axis) for the waterfall chart.
|
|
"reversed": True or False, # True to reverse the order of the domain values (horizontal axis).
|
|
"data": { # The data included in a domain or series. # The data of the WaterfallChartDomain.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
"connectorLineStyle": { # Properties that describe the style of a line. # The line style for the connector lines.
|
|
"width": 42, # The thickness of the line, in px.
|
|
"type": "A String", # The dash type of the line.
|
|
},
|
|
"series": [ # The data this waterfall chart is visualizing.
|
|
{ # A single series of data for a waterfall chart.
|
|
"hideTrailingSubtotal": True or False, # True to hide the subtotal column from the end of the series. By default,
|
|
# a subtotal column will appear at the end of each series. Setting this
|
|
# field to true will hide that subtotal column for this series.
|
|
"positiveColumnsStyle": { # Styles for a waterfall chart column. # Styles for all columns in this series with positive values.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the column.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"label": "A String", # The label of the column's legend.
|
|
},
|
|
"subtotalColumnsStyle": { # Styles for a waterfall chart column. # Styles for all subtotal columns in this series.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the column.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"label": "A String", # The label of the column's legend.
|
|
},
|
|
"negativeColumnsStyle": { # Styles for a waterfall chart column. # Styles for all columns in this series with negative values.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the column.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"label": "A String", # The label of the column's legend.
|
|
},
|
|
"customSubtotals": [ # Custom subtotal columns appearing in this series. The order in which
|
|
# subtotals are defined is not significant. Only one subtotal may be
|
|
# defined for each data point.
|
|
{ # A custom subtotal column for a waterfall chart series.
|
|
"dataIsSubtotal": True or False, # True if the data point at subtotal_index is the subtotal. If false,
|
|
# the subtotal will be computed and appear after the data point.
|
|
"subtotalIndex": 42, # The 0-based index of a data point within the series. If
|
|
# data_is_subtotal is true, the data point at this index is the
|
|
# subtotal. Otherwise, the subtotal appears after the data point with
|
|
# this index. A series can have multiple subtotals at arbitrary indices,
|
|
# but subtotals do not affect the indices of the data points. For
|
|
# example, if a series has three data points, their indices will always
|
|
# be 0, 1, and 2, regardless of how many subtotals exist on the series or
|
|
# what data points they are associated with.
|
|
"label": "A String", # A label for the subtotal column.
|
|
},
|
|
],
|
|
"data": { # The data included in a domain or series. # The data being visualized in this series.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
],
|
|
"firstValueIsTotal": True or False, # True to interpret the first value as a total.
|
|
},
|
|
"basicChart": { # The specification for a basic chart. See BasicChartType for the list # A basic chart specification, can be one of many kinds of charts.
|
|
# See BasicChartType for the list of all
|
|
# charts this supports.
|
|
# of charts this supports.
|
|
"stackedType": "A String", # The stacked type for charts that support vertical stacking.
|
|
# Applies to Area, Bar, Column, Combo, and Stepped Area charts.
|
|
"headerCount": 42, # The number of rows or columns in the data that are "headers".
|
|
# If not set, Google Sheets will guess how many rows are headers based
|
|
# on the data.
|
|
#
|
|
# (Note that BasicChartAxis.title may override the axis title
|
|
# inferred from the header values.)
|
|
"series": [ # The data this chart is visualizing.
|
|
{ # A single series of data in a chart.
|
|
# For example, if charting stock prices over time, multiple series may exist,
|
|
# one for the "Open Price", "High Price", "Low Price" and "Close Price".
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color for elements (i.e. bars, lines, points) associated with this
|
|
# series. If empty, a default color is used.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"series": { # The data included in a domain or series. # The data being visualized in this chart series.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"targetAxis": "A String", # The minor axis that will specify the range of values for this series.
|
|
# For example, if charting stocks over time, the "Volume" series
|
|
# may want to be pinned to the right with the prices pinned to the left,
|
|
# because the scale of trading volume is different than the scale of
|
|
# prices.
|
|
# It is an error to specify an axis that isn't a valid minor axis
|
|
# for the chart's type.
|
|
"lineStyle": { # Properties that describe the style of a line. # The line style of this series. Valid only if the
|
|
# chartType is AREA,
|
|
# LINE, or SCATTER.
|
|
# COMBO charts are also supported if the
|
|
# series chart type is
|
|
# AREA or LINE.
|
|
"width": 42, # The thickness of the line, in px.
|
|
"type": "A String", # The dash type of the line.
|
|
},
|
|
"type": "A String", # The type of this series. Valid only if the
|
|
# chartType is
|
|
# COMBO.
|
|
# Different types will change the way the series is visualized.
|
|
# Only LINE, AREA,
|
|
# and COLUMN are supported.
|
|
},
|
|
],
|
|
"interpolateNulls": True or False, # If some values in a series are missing, gaps may appear in the chart (e.g,
|
|
# segments of lines in a line chart will be missing). To eliminate these
|
|
# gaps set this to true.
|
|
# Applies to Line, Area, and Combo charts.
|
|
"legendPosition": "A String", # The position of the chart legend.
|
|
"lineSmoothing": True or False, # Gets whether all lines should be rendered smooth or straight by default.
|
|
# Applies to Line charts.
|
|
"compareMode": "A String", # The behavior of tooltips and data highlighting when hovering on data and
|
|
# chart area.
|
|
"domains": [ # The domain of data this is charting.
|
|
# Only a single domain is supported.
|
|
{ # The domain of a chart.
|
|
# For example, if charting stock prices over time, this would be the date.
|
|
"reversed": True or False, # True to reverse the order of the domain values (horizontal axis).
|
|
"domain": { # The data included in a domain or series. # The data of the domain. For example, if charting stock prices over time,
|
|
# this is the data representing the dates.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
],
|
|
"chartType": "A String", # The type of the chart.
|
|
"threeDimensional": True or False, # True to make the chart 3D.
|
|
# Applies to Bar and Column charts.
|
|
"axis": [ # The axis on the chart.
|
|
{ # An axis of the chart.
|
|
# A chart may not have more than one axis per
|
|
# axis position.
|
|
"position": "A String", # The position of this axis.
|
|
"format": { # The format of a run of text in a cell. # The format of the title.
|
|
# Only valid if the axis is not associated with the domain.
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
"title": "A String", # The title of this axis. If set, this overrides any title inferred
|
|
# from headers of the data.
|
|
"titleTextPosition": { # Position settings for text. # The axis title text position.
|
|
"horizontalAlignment": "A String", # Horizontal alignment setting for the piece of text.
|
|
},
|
|
},
|
|
],
|
|
},
|
|
"histogramChart": { # A <a href="/chart/interactive/docs/gallery/histogram">histogram chart</a>. # A histogram chart specification.
|
|
# A histogram chart groups data items into bins, displaying each bin as a
|
|
# column of stacked items. Histograms are used to display the distribution
|
|
# of a dataset. Each column of items represents a range into which those
|
|
# items fall. The number of bins can be chosen automatically or specified
|
|
# explicitly.
|
|
"outlierPercentile": 3.14, # The outlier percentile is used to ensure that outliers do not adversely
|
|
# affect the calculation of bucket sizes. For example, setting an outlier
|
|
# percentile of 0.05 indicates that the top and bottom 5% of values when
|
|
# calculating buckets. The values are still included in the chart, they will
|
|
# be added to the first or last buckets instead of their own buckets.
|
|
# Must be between 0.0 and 0.5.
|
|
"series": [ # The series for a histogram may be either a single series of values to be
|
|
# bucketed or multiple series, each of the same length, containing the name
|
|
# of the series followed by the values to be bucketed for that series.
|
|
{ # A histogram series containing the series color and data.
|
|
"barColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the column representing this series in each bucket.
|
|
# This field is optional.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"data": { # The data included in a domain or series. # The data for this histogram series.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
],
|
|
"showItemDividers": True or False, # Whether horizontal divider lines should be displayed between items in each
|
|
# column.
|
|
"legendPosition": "A String", # The position of the chart legend.
|
|
"bucketSize": 3.14, # By default the bucket size (the range of values stacked in a single
|
|
# column) is chosen automatically, but it may be overridden here.
|
|
# E.g., A bucket size of 1.5 results in buckets from 0 - 1.5, 1.5 - 3.0, etc.
|
|
# Cannot be negative.
|
|
# This field is optional.
|
|
},
|
|
"bubbleChart": { # A <a href="/chart/interactive/docs/gallery/bubblechart">bubble chart</a>. # A bubble chart specification.
|
|
"bubbleBorderColor": { # Represents a color in the RGBA color space. This representation is designed # The bubble border color.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"domain": { # The data included in a domain or series. # The data containing the bubble x-values. These values locate the bubbles
|
|
# in the chart horizontally.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"bubbleTextStyle": { # The format of a run of text in a cell. # The format of the text inside the bubbles.
|
|
# Underline and Strikethrough are not supported.
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
"series": { # The data included in a domain or series. # The data contianing the bubble y-values. These values locate the bubbles
|
|
# in the chart vertically.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"legendPosition": "A String", # Where the legend of the chart should be drawn.
|
|
"bubbleMaxRadiusSize": 42, # The max radius size of the bubbles, in pixels.
|
|
# If specified, the field must be a positive value.
|
|
"bubbleOpacity": 3.14, # The opacity of the bubbles between 0 and 1.0.
|
|
# 0 is fully transparent and 1 is fully opaque.
|
|
"groupIds": { # The data included in a domain or series. # The data containing the bubble group IDs. All bubbles with the same group
|
|
# ID are drawn in the same color. If bubble_sizes is specified then
|
|
# this field must also be specified but may contain blank values.
|
|
# This field is optional.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"bubbleSizes": { # The data included in a domain or series. # The data contianing the bubble sizes. Bubble sizes are used to draw
|
|
# the bubbles at different sizes relative to each other.
|
|
# If specified, group_ids must also be specified. This field is
|
|
# optional.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"bubbleLabels": { # The data included in a domain or series. # The data containing the bubble labels. These do not need to be unique.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"bubbleMinRadiusSize": 42, # The minimum radius size of the bubbles, in pixels.
|
|
# If specific, the field must be a positive value.
|
|
},
|
|
"orgChart": { # An <a href="/chart/interactive/docs/gallery/orgchart">org chart</a>. # An org chart specification.
|
|
# Org charts require a unique set of labels in labels and may
|
|
# optionally include parent_labels and tooltips.
|
|
# parent_labels contain, for each node, the label identifying the parent
|
|
# node. tooltips contain, for each node, an optional tooltip.
|
|
#
|
|
# For example, to describe an OrgChart with Alice as the CEO, Bob as the
|
|
# President (reporting to Alice) and Cathy as VP of Sales (also reporting to
|
|
# Alice), have labels contain "Alice", "Bob", "Cathy",
|
|
# parent_labels contain "", "Alice", "Alice" and tooltips contain
|
|
# "CEO", "President", "VP Sales".
|
|
"tooltips": { # The data included in a domain or series. # The data containing the tooltip for the corresponding node. A blank value
|
|
# results in no tooltip being displayed for the node.
|
|
# This field is optional.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"parentLabels": { # The data included in a domain or series. # The data containing the label of the parent for the corresponding node.
|
|
# A blank value indicates that the node has no parent and is a top-level
|
|
# node.
|
|
# This field is optional.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"nodeColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the org chart nodes.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"labels": { # The data included in a domain or series. # The data containing the labels for all the nodes in the chart. Labels
|
|
# must be unique.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"selectedNodeColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the selected org chart nodes.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"nodeSize": "A String", # The size of the org chart nodes.
|
|
},
|
|
},
|
|
},
|
|
],
|
|
"protectedRanges": [ # The protected ranges in this sheet.
|
|
{ # A protected range.
|
|
"unprotectedRanges": [ # The list of unprotected ranges within a protected sheet.
|
|
# Unprotected ranges are only supported on protected sheets.
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
"requestingUserCanEdit": True or False, # True if the user who requested this protected range can edit the
|
|
# protected area.
|
|
# This field is read-only.
|
|
"description": "A String", # The description of this protected range.
|
|
"namedRangeId": "A String", # The named range this protected range is backed by, if any.
|
|
#
|
|
# When writing, only one of range or named_range_id
|
|
# may be set.
|
|
"range": { # A range on a sheet. # The range that is being protected.
|
|
# The range may be fully unbounded, in which case this is considered
|
|
# a protected sheet.
|
|
#
|
|
# When writing, only one of range or named_range_id
|
|
# may be set.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
"editors": { # The editors of a protected range. # The users and groups with edit access to the protected range.
|
|
# This field is only visible to users with edit access to the protected
|
|
# range and the document.
|
|
# Editors are not supported with warning_only protection.
|
|
"domainUsersCanEdit": True or False, # True if anyone in the document's domain has edit access to the protected
|
|
# range. Domain protection is only supported on documents within a domain.
|
|
"users": [ # The email addresses of users with edit access to the protected range.
|
|
"A String",
|
|
],
|
|
"groups": [ # The email addresses of groups with edit access to the protected range.
|
|
"A String",
|
|
],
|
|
},
|
|
"protectedRangeId": 42, # The ID of the protected range.
|
|
# This field is read-only.
|
|
"warningOnly": True or False, # True if this protected range will show a warning when editing.
|
|
# Warning-based protection means that every user can edit data in the
|
|
# protected range, except editing will prompt a warning asking the user
|
|
# to confirm the edit.
|
|
#
|
|
# When writing: if this field is true, then editors is ignored.
|
|
# Additionally, if this field is changed from true to false and the
|
|
# `editors` field is not set (nor included in the field mask), then
|
|
# the editors will be set to all the editors in the document.
|
|
},
|
|
],
|
|
"data": [ # Data in the grid, if this is a grid sheet.
|
|
# The number of GridData objects returned is dependent on the number of
|
|
# ranges requested on this sheet. For example, if this is representing
|
|
# `Sheet1`, and the spreadsheet was requested with ranges
|
|
# `Sheet1!A1:C10` and `Sheet1!D15:E20`, then the first GridData will have a
|
|
# startRow/startColumn of `0`,
|
|
# while the second one will have `startRow 14` (zero-based row 15),
|
|
# and `startColumn 3` (zero-based column D).
|
|
{ # Data in the grid, as well as metadata about the dimensions.
|
|
"rowMetadata": [ # Metadata about the requested rows in the grid, starting with the row
|
|
# in start_row.
|
|
{ # Properties about a dimension.
|
|
"pixelSize": 42, # The height (if a row) or width (if a column) of the dimension in pixels.
|
|
"developerMetadata": [ # The developer metadata associated with a single row or column.
|
|
{ # Developer metadata associated with a location or object in a spreadsheet.
|
|
# Developer metadata may be used to associate arbitrary data with various
|
|
# parts of a spreadsheet and will remain associated at those locations as they
|
|
# move around and the spreadsheet is edited. For example, if developer
|
|
# metadata is associated with row 5 and another row is then subsequently
|
|
# inserted above row 5, that original metadata will still be associated with
|
|
# the row it was first associated with (what is now row 6). If the associated
|
|
# object is deleted its metadata is deleted too.
|
|
"metadataId": 42, # The spreadsheet-scoped unique ID that identifies the metadata. IDs may be
|
|
# specified when metadata is created, otherwise one will be randomly
|
|
# generated and assigned. Must be positive.
|
|
"metadataValue": "A String", # Data associated with the metadata's key.
|
|
"location": { # A location where metadata may be associated in a spreadsheet. # The location where the metadata is associated.
|
|
"locationType": "A String", # The type of location this object represents. This field is read-only.
|
|
"dimensionRange": { # A range along a single dimension on a sheet. # Represents the row or column when metadata is associated with
|
|
# a dimension. The specified DimensionRange must represent a single row
|
|
# or column; it cannot be unbounded or span multiple rows or columns.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open: the start index is inclusive
|
|
# and the end index is exclusive.
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
"endIndex": 42, # The end (exclusive) of the span, or not set if unbounded.
|
|
"startIndex": 42, # The start (inclusive) of the span, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this span is on.
|
|
"dimension": "A String", # The dimension of the span.
|
|
},
|
|
"spreadsheet": True or False, # True when metadata is associated with an entire spreadsheet.
|
|
"sheetId": 42, # The ID of the sheet when metadata is associated with an entire sheet.
|
|
},
|
|
"visibility": "A String", # The metadata visibility. Developer metadata must always have a visibility
|
|
# specified.
|
|
"metadataKey": "A String", # The metadata key. There may be multiple metadata in a spreadsheet with the
|
|
# same key. Developer metadata must always have a key specified.
|
|
},
|
|
],
|
|
"hiddenByUser": True or False, # True if this dimension is explicitly hidden.
|
|
"hiddenByFilter": True or False, # True if this dimension is being filtered.
|
|
# This field is read-only.
|
|
},
|
|
],
|
|
"startColumn": 42, # The first column this GridData refers to, zero-based.
|
|
"columnMetadata": [ # Metadata about the requested columns in the grid, starting with the column
|
|
# in start_column.
|
|
{ # Properties about a dimension.
|
|
"pixelSize": 42, # The height (if a row) or width (if a column) of the dimension in pixels.
|
|
"developerMetadata": [ # The developer metadata associated with a single row or column.
|
|
{ # Developer metadata associated with a location or object in a spreadsheet.
|
|
# Developer metadata may be used to associate arbitrary data with various
|
|
# parts of a spreadsheet and will remain associated at those locations as they
|
|
# move around and the spreadsheet is edited. For example, if developer
|
|
# metadata is associated with row 5 and another row is then subsequently
|
|
# inserted above row 5, that original metadata will still be associated with
|
|
# the row it was first associated with (what is now row 6). If the associated
|
|
# object is deleted its metadata is deleted too.
|
|
"metadataId": 42, # The spreadsheet-scoped unique ID that identifies the metadata. IDs may be
|
|
# specified when metadata is created, otherwise one will be randomly
|
|
# generated and assigned. Must be positive.
|
|
"metadataValue": "A String", # Data associated with the metadata's key.
|
|
"location": { # A location where metadata may be associated in a spreadsheet. # The location where the metadata is associated.
|
|
"locationType": "A String", # The type of location this object represents. This field is read-only.
|
|
"dimensionRange": { # A range along a single dimension on a sheet. # Represents the row or column when metadata is associated with
|
|
# a dimension. The specified DimensionRange must represent a single row
|
|
# or column; it cannot be unbounded or span multiple rows or columns.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open: the start index is inclusive
|
|
# and the end index is exclusive.
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
"endIndex": 42, # The end (exclusive) of the span, or not set if unbounded.
|
|
"startIndex": 42, # The start (inclusive) of the span, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this span is on.
|
|
"dimension": "A String", # The dimension of the span.
|
|
},
|
|
"spreadsheet": True or False, # True when metadata is associated with an entire spreadsheet.
|
|
"sheetId": 42, # The ID of the sheet when metadata is associated with an entire sheet.
|
|
},
|
|
"visibility": "A String", # The metadata visibility. Developer metadata must always have a visibility
|
|
# specified.
|
|
"metadataKey": "A String", # The metadata key. There may be multiple metadata in a spreadsheet with the
|
|
# same key. Developer metadata must always have a key specified.
|
|
},
|
|
],
|
|
"hiddenByUser": True or False, # True if this dimension is explicitly hidden.
|
|
"hiddenByFilter": True or False, # True if this dimension is being filtered.
|
|
# This field is read-only.
|
|
},
|
|
],
|
|
"startRow": 42, # The first row this GridData refers to, zero-based.
|
|
"rowData": [ # The data in the grid, one entry per row,
|
|
# starting with the row in startRow.
|
|
# The values in RowData will correspond to columns starting
|
|
# at start_column.
|
|
{ # Data about each cell in a row.
|
|
"values": [ # The values in the row, one per column.
|
|
{ # Data about a specific cell.
|
|
"pivotTable": { # A pivot table. # A pivot table anchored at this cell. The size of pivot table itself
|
|
# is computed dynamically based on its data, grouping, filters, values,
|
|
# etc. Only the top-left cell of the pivot table contains the pivot table
|
|
# definition. The other cells will contain the calculated values of the
|
|
# results of the pivot in their effective_value fields.
|
|
"valueLayout": "A String", # Whether values should be listed horizontally (as columns)
|
|
# or vertically (as rows).
|
|
"rows": [ # Each row grouping in the pivot table.
|
|
{ # A single grouping (either row or column) in a pivot table.
|
|
"showTotals": True or False, # True if the pivot table should include the totals for this grouping.
|
|
"repeatHeadings": True or False, # True if the headings in this pivot group should be repeated.
|
|
# This is only valid for row groupings and is ignored by columns.
|
|
#
|
|
# By default, we minimize repitition of headings by not showing higher
|
|
# level headings where they are the same. For example, even though the
|
|
# third row below corresponds to "Q1 Mar", "Q1" is not shown because
|
|
# it is redundant with previous rows. Setting repeat_headings to true
|
|
# would cause "Q1" to be repeated for "Feb" and "Mar".
|
|
#
|
|
# +--------------+
|
|
# | Q1 | Jan |
|
|
# | | Feb |
|
|
# | | Mar |
|
|
# +--------+-----+
|
|
# | Q1 Total |
|
|
# +--------------+
|
|
"label": "A String", # The labels to use for the row/column groups which can be customized. For
|
|
# example, in the following pivot table, the row label is `Region` (which
|
|
# could be renamed to `State`) and the column label is `Product` (which
|
|
# could be renamed `Item`). Pivot tables created before December 2017 do
|
|
# not have header labels. If you'd like to add header labels to an existing
|
|
# pivot table, please delete the existing pivot table and then create a new
|
|
# pivot table with same parameters.
|
|
#
|
|
# +--------------+---------+-------+
|
|
# | SUM of Units | Product | |
|
|
# | Region | Pen | Paper |
|
|
# +--------------+---------+-------+
|
|
# | New York | 345 | 98 |
|
|
# | Oregon | 234 | 123 |
|
|
# | Tennessee | 531 | 415 |
|
|
# +--------------+---------+-------+
|
|
# | Grand Total | 1110 | 636 |
|
|
# +--------------+---------+-------+
|
|
"valueMetadata": [ # Metadata about values in the grouping.
|
|
{ # Metadata about a value in a pivot grouping.
|
|
"collapsed": True or False, # True if the data corresponding to the value is collapsed.
|
|
"value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to.
|
|
# (Note that formulaValue is not valid,
|
|
# because the values will be calculated.)
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
},
|
|
],
|
|
"valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by.
|
|
# If not specified, sorting is alphabetical by this group's values.
|
|
"buckets": [ # Determines the bucket from which values are chosen to sort.
|
|
#
|
|
# For example, in a pivot table with one row group & two column groups,
|
|
# the row group can list up to two values. The first value corresponds
|
|
# to a value within the first column group, and the second value
|
|
# corresponds to a value in the second column group. If no values
|
|
# are listed, this would indicate that the row should be sorted according
|
|
# to the "Grand Total" over the column groups. If a single value is listed,
|
|
# this would correspond to using the "Total" of that bucket.
|
|
{ # The kinds of value that a cell in a spreadsheet can have.
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
],
|
|
"valuesIndex": 42, # The offset in the PivotTable.values list which the values in this
|
|
# grouping should be sorted by.
|
|
},
|
|
"sortOrder": "A String", # The order the values in this group should be sorted.
|
|
"groupRule": { # An optional setting on a PivotGroup that defines buckets for the values # The group rule to apply to this row/column group.
|
|
# in the source data column rather than breaking out each individual value.
|
|
# Only one PivotGroup with a group rule may be added for each column in
|
|
# the source data, though on any given column you may add both a
|
|
# PivotGroup that has a rule and a PivotGroup that does not.
|
|
"histogramRule": { # Allows you to organize the numeric values in a source data column into # A HistogramRule.
|
|
# buckets of a constant size. All values from HistogramRule.start to
|
|
# HistogramRule.end are placed into groups of size
|
|
# HistogramRule.interval. In addition, all values below
|
|
# HistogramRule.start are placed in one group, and all values above
|
|
# HistogramRule.end are placed in another. Only
|
|
# HistogramRule.interval is required, though if HistogramRule.start
|
|
# and HistogramRule.end are both provided, HistogramRule.start must
|
|
# be less than HistogramRule.end. For example, a pivot table showing
|
|
# average purchase amount by age that has 50+ rows:
|
|
#
|
|
# +-----+-------------------+
|
|
# | Age | AVERAGE of Amount |
|
|
# +-----+-------------------+
|
|
# | 16 | $27.13 |
|
|
# | 17 | $5.24 |
|
|
# | 18 | $20.15 |
|
|
# ...
|
|
# +-----+-------------------+
|
|
# could be turned into a pivot table that looks like the one below by
|
|
# applying a histogram group rule with a HistogramRule.start of 25,
|
|
# an HistogramRule.interval of 20, and an HistogramRule.end
|
|
# of 65.
|
|
#
|
|
# +-------------+-------------------+
|
|
# | Grouped Age | AVERAGE of Amount |
|
|
# +-------------+-------------------+
|
|
# | < 25 | $19.34 |
|
|
# | 25-45 | $31.43 |
|
|
# | 45-65 | $35.87 |
|
|
# | > 65 | $27.55 |
|
|
# +-------------+-------------------+
|
|
# | Grand Total | $29.12 |
|
|
# +-------------+-------------------+
|
|
"start": 3.14, # The minimum value at which items are placed into buckets
|
|
# of constant size. Values below start are lumped into a single bucket.
|
|
# This field is optional.
|
|
"interval": 3.14, # The size of the buckets that are created. Must be positive.
|
|
"end": 3.14, # The maximum value at which items are placed into buckets
|
|
# of constant size. Values above end are lumped into a single bucket.
|
|
# This field is optional.
|
|
},
|
|
"manualRule": { # Allows you to manually organize the values in a source data column into # A ManualRule.
|
|
# buckets with names of your choosing. For example, a pivot table that
|
|
# aggregates population by state:
|
|
#
|
|
# +-------+-------------------+
|
|
# | State | SUM of Population |
|
|
# +-------+-------------------+
|
|
# | AK | 0.7 |
|
|
# | AL | 4.8 |
|
|
# | AR | 2.9 |
|
|
# ...
|
|
# +-------+-------------------+
|
|
# could be turned into a pivot table that aggregates population by time zone
|
|
# by providing a list of groups (for example, groupName = 'Central',
|
|
# items = ['AL', 'AR', 'IA', ...]) to a manual group rule.
|
|
# Note that a similar effect could be achieved by adding a time zone column
|
|
# to the source data and adjusting the pivot table.
|
|
#
|
|
# +-----------+-------------------+
|
|
# | Time Zone | SUM of Population |
|
|
# +-----------+-------------------+
|
|
# | Central | 106.3 |
|
|
# | Eastern | 151.9 |
|
|
# | Mountain | 17.4 |
|
|
# ...
|
|
# +-----------+-------------------+
|
|
"groups": [ # The list of group names and the corresponding items from the source data
|
|
# that map to each group name.
|
|
{ # A group name and a list of items from the source data that should be placed
|
|
# in the group with this name.
|
|
"items": [ # The items in the source data that should be placed into this group. Each
|
|
# item may be a string, number, or boolean. Items may appear in at most one
|
|
# group within a given ManualRule. Items that do not appear in any
|
|
# group will appear on their own.
|
|
{ # The kinds of value that a cell in a spreadsheet can have.
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
],
|
|
"groupName": { # The kinds of value that a cell in a spreadsheet can have. # The group name, which must be a string. Each group in a given
|
|
# ManualRule must have a unique group name.
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
},
|
|
],
|
|
},
|
|
"dateTimeRule": { # Allows you to organize the date-time values in a source data column into # A DateTimeRule.
|
|
# buckets based on selected parts of their date or time values. For example,
|
|
# consider a pivot table showing sales transactions by date:
|
|
#
|
|
# +----------+--------------+
|
|
# | Date | SUM of Sales |
|
|
# +----------+--------------+
|
|
# | 1/1/2017 | $621.14 |
|
|
# | 2/3/2017 | $708.84 |
|
|
# | 5/8/2017 | $326.84 |
|
|
# ...
|
|
# +----------+--------------+
|
|
# Applying a date-time group rule with a DateTimeRuleType of YEAR_MONTH
|
|
# results in the following pivot table.
|
|
#
|
|
# +--------------+--------------+
|
|
# | Grouped Date | SUM of Sales |
|
|
# +--------------+--------------+
|
|
# | 2017-Jan | $53,731.78 |
|
|
# | 2017-Feb | $83,475.32 |
|
|
# | 2017-Mar | $94,385.05 |
|
|
# ...
|
|
# +--------------+--------------+
|
|
"type": "A String", # The type of date-time grouping to apply.
|
|
},
|
|
},
|
|
"sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on.
|
|
#
|
|
# For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0`
|
|
# means this group refers to column `C`, whereas the offset `1` would refer
|
|
# to column `D`.
|
|
},
|
|
],
|
|
"source": { # A range on a sheet. # The range the pivot table is reading data from.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
"values": [ # A list of values to include in the pivot table.
|
|
{ # The definition of how a value in a pivot table should be calculated.
|
|
"formula": "A String", # A custom formula to calculate the value. The formula must start
|
|
# with an `=` character.
|
|
"name": "A String", # A name to use for the value.
|
|
"sourceColumnOffset": 42, # The column offset of the source range that this value reads from.
|
|
#
|
|
# For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0`
|
|
# means this value refers to column `C`, whereas the offset `1` would
|
|
# refer to column `D`.
|
|
"summarizeFunction": "A String", # A function to summarize the value.
|
|
# If formula is set, the only supported values are
|
|
# SUM and
|
|
# CUSTOM.
|
|
# If sourceColumnOffset is set, then `CUSTOM`
|
|
# is not supported.
|
|
"calculatedDisplayType": "A String", # If specified, indicates that pivot values should be displayed as
|
|
# the result of a calculation with another pivot value. For example, if
|
|
# calculated_display_type is specified as PERCENT_OF_GRAND_TOTAL, all the
|
|
# pivot values are displayed as the percentage of the grand total. In
|
|
# the Sheets UI, this is referred to as "Show As" in the value section of a
|
|
# pivot table.
|
|
},
|
|
],
|
|
"criteria": { # An optional mapping of filters per source column offset.
|
|
#
|
|
# The filters are applied before aggregating data into the pivot table.
|
|
# The map's key is the column offset of the source range that you want to
|
|
# filter, and the value is the criteria for that column.
|
|
#
|
|
# For example, if the source was `C10:E15`, a key of `0` will have the filter
|
|
# for column `C`, whereas the key `1` is for column `D`.
|
|
"a_key": { # Criteria for showing/hiding rows in a pivot table.
|
|
"visibleValues": [ # Values that should be included. Values not listed here are excluded.
|
|
"A String",
|
|
],
|
|
},
|
|
},
|
|
"columns": [ # Each column grouping in the pivot table.
|
|
{ # A single grouping (either row or column) in a pivot table.
|
|
"showTotals": True or False, # True if the pivot table should include the totals for this grouping.
|
|
"repeatHeadings": True or False, # True if the headings in this pivot group should be repeated.
|
|
# This is only valid for row groupings and is ignored by columns.
|
|
#
|
|
# By default, we minimize repitition of headings by not showing higher
|
|
# level headings where they are the same. For example, even though the
|
|
# third row below corresponds to "Q1 Mar", "Q1" is not shown because
|
|
# it is redundant with previous rows. Setting repeat_headings to true
|
|
# would cause "Q1" to be repeated for "Feb" and "Mar".
|
|
#
|
|
# +--------------+
|
|
# | Q1 | Jan |
|
|
# | | Feb |
|
|
# | | Mar |
|
|
# +--------+-----+
|
|
# | Q1 Total |
|
|
# +--------------+
|
|
"label": "A String", # The labels to use for the row/column groups which can be customized. For
|
|
# example, in the following pivot table, the row label is `Region` (which
|
|
# could be renamed to `State`) and the column label is `Product` (which
|
|
# could be renamed `Item`). Pivot tables created before December 2017 do
|
|
# not have header labels. If you'd like to add header labels to an existing
|
|
# pivot table, please delete the existing pivot table and then create a new
|
|
# pivot table with same parameters.
|
|
#
|
|
# +--------------+---------+-------+
|
|
# | SUM of Units | Product | |
|
|
# | Region | Pen | Paper |
|
|
# +--------------+---------+-------+
|
|
# | New York | 345 | 98 |
|
|
# | Oregon | 234 | 123 |
|
|
# | Tennessee | 531 | 415 |
|
|
# +--------------+---------+-------+
|
|
# | Grand Total | 1110 | 636 |
|
|
# +--------------+---------+-------+
|
|
"valueMetadata": [ # Metadata about values in the grouping.
|
|
{ # Metadata about a value in a pivot grouping.
|
|
"collapsed": True or False, # True if the data corresponding to the value is collapsed.
|
|
"value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to.
|
|
# (Note that formulaValue is not valid,
|
|
# because the values will be calculated.)
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
},
|
|
],
|
|
"valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by.
|
|
# If not specified, sorting is alphabetical by this group's values.
|
|
"buckets": [ # Determines the bucket from which values are chosen to sort.
|
|
#
|
|
# For example, in a pivot table with one row group & two column groups,
|
|
# the row group can list up to two values. The first value corresponds
|
|
# to a value within the first column group, and the second value
|
|
# corresponds to a value in the second column group. If no values
|
|
# are listed, this would indicate that the row should be sorted according
|
|
# to the "Grand Total" over the column groups. If a single value is listed,
|
|
# this would correspond to using the "Total" of that bucket.
|
|
{ # The kinds of value that a cell in a spreadsheet can have.
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
],
|
|
"valuesIndex": 42, # The offset in the PivotTable.values list which the values in this
|
|
# grouping should be sorted by.
|
|
},
|
|
"sortOrder": "A String", # The order the values in this group should be sorted.
|
|
"groupRule": { # An optional setting on a PivotGroup that defines buckets for the values # The group rule to apply to this row/column group.
|
|
# in the source data column rather than breaking out each individual value.
|
|
# Only one PivotGroup with a group rule may be added for each column in
|
|
# the source data, though on any given column you may add both a
|
|
# PivotGroup that has a rule and a PivotGroup that does not.
|
|
"histogramRule": { # Allows you to organize the numeric values in a source data column into # A HistogramRule.
|
|
# buckets of a constant size. All values from HistogramRule.start to
|
|
# HistogramRule.end are placed into groups of size
|
|
# HistogramRule.interval. In addition, all values below
|
|
# HistogramRule.start are placed in one group, and all values above
|
|
# HistogramRule.end are placed in another. Only
|
|
# HistogramRule.interval is required, though if HistogramRule.start
|
|
# and HistogramRule.end are both provided, HistogramRule.start must
|
|
# be less than HistogramRule.end. For example, a pivot table showing
|
|
# average purchase amount by age that has 50+ rows:
|
|
#
|
|
# +-----+-------------------+
|
|
# | Age | AVERAGE of Amount |
|
|
# +-----+-------------------+
|
|
# | 16 | $27.13 |
|
|
# | 17 | $5.24 |
|
|
# | 18 | $20.15 |
|
|
# ...
|
|
# +-----+-------------------+
|
|
# could be turned into a pivot table that looks like the one below by
|
|
# applying a histogram group rule with a HistogramRule.start of 25,
|
|
# an HistogramRule.interval of 20, and an HistogramRule.end
|
|
# of 65.
|
|
#
|
|
# +-------------+-------------------+
|
|
# | Grouped Age | AVERAGE of Amount |
|
|
# +-------------+-------------------+
|
|
# | < 25 | $19.34 |
|
|
# | 25-45 | $31.43 |
|
|
# | 45-65 | $35.87 |
|
|
# | > 65 | $27.55 |
|
|
# +-------------+-------------------+
|
|
# | Grand Total | $29.12 |
|
|
# +-------------+-------------------+
|
|
"start": 3.14, # The minimum value at which items are placed into buckets
|
|
# of constant size. Values below start are lumped into a single bucket.
|
|
# This field is optional.
|
|
"interval": 3.14, # The size of the buckets that are created. Must be positive.
|
|
"end": 3.14, # The maximum value at which items are placed into buckets
|
|
# of constant size. Values above end are lumped into a single bucket.
|
|
# This field is optional.
|
|
},
|
|
"manualRule": { # Allows you to manually organize the values in a source data column into # A ManualRule.
|
|
# buckets with names of your choosing. For example, a pivot table that
|
|
# aggregates population by state:
|
|
#
|
|
# +-------+-------------------+
|
|
# | State | SUM of Population |
|
|
# +-------+-------------------+
|
|
# | AK | 0.7 |
|
|
# | AL | 4.8 |
|
|
# | AR | 2.9 |
|
|
# ...
|
|
# +-------+-------------------+
|
|
# could be turned into a pivot table that aggregates population by time zone
|
|
# by providing a list of groups (for example, groupName = 'Central',
|
|
# items = ['AL', 'AR', 'IA', ...]) to a manual group rule.
|
|
# Note that a similar effect could be achieved by adding a time zone column
|
|
# to the source data and adjusting the pivot table.
|
|
#
|
|
# +-----------+-------------------+
|
|
# | Time Zone | SUM of Population |
|
|
# +-----------+-------------------+
|
|
# | Central | 106.3 |
|
|
# | Eastern | 151.9 |
|
|
# | Mountain | 17.4 |
|
|
# ...
|
|
# +-----------+-------------------+
|
|
"groups": [ # The list of group names and the corresponding items from the source data
|
|
# that map to each group name.
|
|
{ # A group name and a list of items from the source data that should be placed
|
|
# in the group with this name.
|
|
"items": [ # The items in the source data that should be placed into this group. Each
|
|
# item may be a string, number, or boolean. Items may appear in at most one
|
|
# group within a given ManualRule. Items that do not appear in any
|
|
# group will appear on their own.
|
|
{ # The kinds of value that a cell in a spreadsheet can have.
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
],
|
|
"groupName": { # The kinds of value that a cell in a spreadsheet can have. # The group name, which must be a string. Each group in a given
|
|
# ManualRule must have a unique group name.
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
},
|
|
],
|
|
},
|
|
"dateTimeRule": { # Allows you to organize the date-time values in a source data column into # A DateTimeRule.
|
|
# buckets based on selected parts of their date or time values. For example,
|
|
# consider a pivot table showing sales transactions by date:
|
|
#
|
|
# +----------+--------------+
|
|
# | Date | SUM of Sales |
|
|
# +----------+--------------+
|
|
# | 1/1/2017 | $621.14 |
|
|
# | 2/3/2017 | $708.84 |
|
|
# | 5/8/2017 | $326.84 |
|
|
# ...
|
|
# +----------+--------------+
|
|
# Applying a date-time group rule with a DateTimeRuleType of YEAR_MONTH
|
|
# results in the following pivot table.
|
|
#
|
|
# +--------------+--------------+
|
|
# | Grouped Date | SUM of Sales |
|
|
# +--------------+--------------+
|
|
# | 2017-Jan | $53,731.78 |
|
|
# | 2017-Feb | $83,475.32 |
|
|
# | 2017-Mar | $94,385.05 |
|
|
# ...
|
|
# +--------------+--------------+
|
|
"type": "A String", # The type of date-time grouping to apply.
|
|
},
|
|
},
|
|
"sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on.
|
|
#
|
|
# For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0`
|
|
# means this group refers to column `C`, whereas the offset `1` would refer
|
|
# to column `D`.
|
|
},
|
|
],
|
|
},
|
|
"hyperlink": "A String", # A hyperlink this cell points to, if any.
|
|
# This field is read-only. (To set it, use a `=HYPERLINK` formula
|
|
# in the userEnteredValue.formulaValue
|
|
# field.)
|
|
"effectiveValue": { # The kinds of value that a cell in a spreadsheet can have. # The effective value of the cell. For cells with formulas, this is
|
|
# the calculated value. For cells with literals, this is
|
|
# the same as the user_entered_value.
|
|
# This field is read-only.
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
"formattedValue": "A String", # The formatted value of the cell.
|
|
# This is the value as it's shown to the user.
|
|
# This field is read-only.
|
|
"userEnteredValue": { # The kinds of value that a cell in a spreadsheet can have. # The value the user entered in the cell. e.g, `1234`, `'Hello'`, or `=NOW()`
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# serial number format.
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
"note": "A String", # Any note on the cell.
|
|
"effectiveFormat": { # The format of a cell. # The effective format being used by the cell.
|
|
# This includes the results of applying any conditional formatting and,
|
|
# if the cell contains a formula, the computed number format.
|
|
# If the effective format is the default format, effective format will
|
|
# not be written.
|
|
# This field is read-only.
|
|
"numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
|
|
"pattern": "A String", # Pattern string used for formatting. If not set, a default pattern based on
|
|
# the user's locale will be used if necessary for the given type.
|
|
# See the [Date and Number Formats guide](/sheets/api/guides/formats) for
|
|
# more information about the supported patterns.
|
|
"type": "A String", # The type of the number format.
|
|
# When writing, this field must be set.
|
|
},
|
|
"textDirection": "A String", # The direction of the text in the cell.
|
|
"padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
|
|
# When updating padding, every field must be specified.
|
|
"top": 42, # The top padding of the cell.
|
|
"left": 42, # The left padding of the cell.
|
|
"right": 42, # The right padding of the cell.
|
|
"bottom": 42, # The bottom padding of the cell.
|
|
},
|
|
"horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
|
|
"backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"verticalAlignment": "A String", # The vertical alignment of the value in the cell.
|
|
"borders": { # The borders of the cell. # The borders of the cell.
|
|
"top": { # A border along a cell. # The top border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"right": { # A border along a cell. # The right border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"bottom": { # A border along a cell. # The bottom border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"left": { # A border along a cell. # The left border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
},
|
|
"textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell
|
|
"angle": 42, # The angle between the standard orientation and the desired orientation.
|
|
# Measured in degrees. Valid values are between -90 and 90. Positive
|
|
# angles are angled upwards, negative are angled downwards.
|
|
#
|
|
# Note: For LTR text direction positive angles are in the
|
|
# counterclockwise direction, whereas for RTL they are in the clockwise
|
|
# direction
|
|
"vertical": True or False, # If true, text reads top to bottom, but the orientation of individual
|
|
# characters is unchanged.
|
|
# For example:
|
|
#
|
|
# | V |
|
|
# | e |
|
|
# | r |
|
|
# | t |
|
|
# | i |
|
|
# | c |
|
|
# | a |
|
|
# | l |
|
|
},
|
|
"hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
|
|
"textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
"wrapStrategy": "A String", # The wrap strategy for the value in the cell.
|
|
},
|
|
"userEnteredFormat": { # The format of a cell. # The format the user entered for the cell.
|
|
#
|
|
# When writing, the new format will be merged with the existing format.
|
|
"numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
|
|
"pattern": "A String", # Pattern string used for formatting. If not set, a default pattern based on
|
|
# the user's locale will be used if necessary for the given type.
|
|
# See the [Date and Number Formats guide](/sheets/api/guides/formats) for
|
|
# more information about the supported patterns.
|
|
"type": "A String", # The type of the number format.
|
|
# When writing, this field must be set.
|
|
},
|
|
"textDirection": "A String", # The direction of the text in the cell.
|
|
"padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
|
|
# When updating padding, every field must be specified.
|
|
"top": 42, # The top padding of the cell.
|
|
"left": 42, # The left padding of the cell.
|
|
"right": 42, # The right padding of the cell.
|
|
"bottom": 42, # The bottom padding of the cell.
|
|
},
|
|
"horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
|
|
"backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"verticalAlignment": "A String", # The vertical alignment of the value in the cell.
|
|
"borders": { # The borders of the cell. # The borders of the cell.
|
|
"top": { # A border along a cell. # The top border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"right": { # A border along a cell. # The right border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"bottom": { # A border along a cell. # The bottom border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"left": { # A border along a cell. # The left border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
},
|
|
"textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell
|
|
"angle": 42, # The angle between the standard orientation and the desired orientation.
|
|
# Measured in degrees. Valid values are between -90 and 90. Positive
|
|
# angles are angled upwards, negative are angled downwards.
|
|
#
|
|
# Note: For LTR text direction positive angles are in the
|
|
# counterclockwise direction, whereas for RTL they are in the clockwise
|
|
# direction
|
|
"vertical": True or False, # If true, text reads top to bottom, but the orientation of individual
|
|
# characters is unchanged.
|
|
# For example:
|
|
#
|
|
# | V |
|
|
# | e |
|
|
# | r |
|
|
# | t |
|
|
# | i |
|
|
# | c |
|
|
# | a |
|
|
# | l |
|
|
},
|
|
"hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
|
|
"textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
"wrapStrategy": "A String", # The wrap strategy for the value in the cell.
|
|
},
|
|
"dataValidation": { # A data validation rule. # A data validation rule on the cell, if any.
|
|
#
|
|
# When writing, the new data validation rule will overwrite any prior rule.
|
|
"showCustomUi": True or False, # True if the UI should be customized based on the kind of condition.
|
|
# If true, "List" conditions will show a dropdown.
|
|
"strict": True or False, # True if invalid data should be rejected.
|
|
"inputMessage": "A String", # A message to show the user when adding data to the cell.
|
|
"condition": { # A condition that can evaluate to true or false. # The condition that data in the cell must match.
|
|
# BooleanConditions are used by conditional formatting,
|
|
# data validation, and the criteria in filters.
|
|
"values": [ # The values of the condition. The number of supported values depends
|
|
# on the condition type. Some support zero values,
|
|
# others one or two values,
|
|
# and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
|
|
{ # The value of the condition.
|
|
"relativeDate": "A String", # A relative date (based on the current date).
|
|
# Valid only if the type is
|
|
# DATE_BEFORE,
|
|
# DATE_AFTER,
|
|
# DATE_ON_OR_BEFORE or
|
|
# DATE_ON_OR_AFTER.
|
|
#
|
|
# Relative dates are not supported in data validation.
|
|
# They are supported only in conditional formatting and
|
|
# conditional filters.
|
|
"userEnteredValue": "A String", # A value the condition is based on.
|
|
# The value is parsed as if the user typed into a cell.
|
|
# Formulas are supported (and must begin with an `=` or a '+').
|
|
},
|
|
],
|
|
"type": "A String", # The type of condition.
|
|
},
|
|
},
|
|
"textFormatRuns": [ # Runs of rich text applied to subsections of the cell. Runs are only valid
|
|
# on user entered strings, not formulas, bools, or numbers.
|
|
# Runs start at specific indexes in the text and continue until the next
|
|
# run. Properties of a run will continue unless explicitly changed
|
|
# in a subsequent run (and properties of the first run will continue
|
|
# the properties of the cell unless explicitly changed).
|
|
#
|
|
# When writing, the new runs will overwrite any prior runs. When writing a
|
|
# new user_entered_value, previous runs are erased.
|
|
{ # A run of a text format. The format of this run continues until the start
|
|
# index of the next run.
|
|
# When updating, all fields must be set.
|
|
"startIndex": 42, # The character index where this run starts.
|
|
"format": { # The format of a run of text in a cell. # The format of this run. Absent values inherit the cell's format.
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
},
|
|
],
|
|
},
|
|
],
|
|
},
|
|
],
|
|
},
|
|
],
|
|
"rowGroups": [ # All row groups on this sheet, ordered by increasing range start index, then
|
|
# by group depth.
|
|
{ # A group over an interval of rows or columns on a sheet, which can contain or
|
|
# be contained within other groups. A group can be collapsed or expanded as a
|
|
# unit on the sheet.
|
|
"range": { # A range along a single dimension on a sheet. # The range over which this group exists.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open: the start index is inclusive
|
|
# and the end index is exclusive.
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
"endIndex": 42, # The end (exclusive) of the span, or not set if unbounded.
|
|
"startIndex": 42, # The start (inclusive) of the span, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this span is on.
|
|
"dimension": "A String", # The dimension of the span.
|
|
},
|
|
"collapsed": True or False, # This field is true if this group is collapsed. A collapsed group remains
|
|
# collapsed if an overlapping group at a shallower depth is expanded.
|
|
#
|
|
# A true value does not imply that all dimensions within the group are
|
|
# hidden, since a dimension's visibility can change independently from this
|
|
# group property. However, when this property is updated, all dimensions
|
|
# within it are set to hidden if this field is true, or set to visible if
|
|
# this field is false.
|
|
"depth": 42, # The depth of the group, representing how many groups have a range that
|
|
# wholly contains the range of this group.
|
|
},
|
|
],
|
|
},
|
|
],
|
|
"spreadsheetUrl": "A String", # The url of the spreadsheet.
|
|
# This field is read-only.
|
|
"spreadsheetId": "A String", # The ID of the spreadsheet.
|
|
# This field is read-only.
|
|
"namedRanges": [ # The named ranges defined in a spreadsheet.
|
|
{ # A named range.
|
|
"namedRangeId": "A String", # The ID of the named range.
|
|
"range": { # A range on a sheet. # The range this represents.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
"name": "A String", # The name of the named range.
|
|
},
|
|
],
|
|
"properties": { # Properties of a spreadsheet. # Overall properties of a spreadsheet.
|
|
"title": "A String", # The title of the spreadsheet.
|
|
"locale": "A String", # The locale of the spreadsheet in one of the following formats:
|
|
#
|
|
# * an ISO 639-1 language code such as `en`
|
|
#
|
|
# * an ISO 639-2 language code such as `fil`, if no 639-1 code exists
|
|
#
|
|
# * a combination of the ISO language code and country code, such as `en_US`
|
|
#
|
|
# Note: when updating this field, not all locales/languages are supported.
|
|
"defaultFormat": { # The format of a cell. # The default format of all cells in the spreadsheet.
|
|
# CellData.effectiveFormat will not be set if
|
|
# the cell's format is equal to this default format. This field is read-only.
|
|
"numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
|
|
"pattern": "A String", # Pattern string used for formatting. If not set, a default pattern based on
|
|
# the user's locale will be used if necessary for the given type.
|
|
# See the [Date and Number Formats guide](/sheets/api/guides/formats) for
|
|
# more information about the supported patterns.
|
|
"type": "A String", # The type of the number format.
|
|
# When writing, this field must be set.
|
|
},
|
|
"textDirection": "A String", # The direction of the text in the cell.
|
|
"padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
|
|
# When updating padding, every field must be specified.
|
|
"top": 42, # The top padding of the cell.
|
|
"left": 42, # The left padding of the cell.
|
|
"right": 42, # The right padding of the cell.
|
|
"bottom": 42, # The bottom padding of the cell.
|
|
},
|
|
"horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
|
|
"backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"verticalAlignment": "A String", # The vertical alignment of the value in the cell.
|
|
"borders": { # The borders of the cell. # The borders of the cell.
|
|
"top": { # A border along a cell. # The top border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"right": { # A border along a cell. # The right border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"bottom": { # A border along a cell. # The bottom border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"left": { # A border along a cell. # The left border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
},
|
|
"textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell
|
|
"angle": 42, # The angle between the standard orientation and the desired orientation.
|
|
# Measured in degrees. Valid values are between -90 and 90. Positive
|
|
# angles are angled upwards, negative are angled downwards.
|
|
#
|
|
# Note: For LTR text direction positive angles are in the
|
|
# counterclockwise direction, whereas for RTL they are in the clockwise
|
|
# direction
|
|
"vertical": True or False, # If true, text reads top to bottom, but the orientation of individual
|
|
# characters is unchanged.
|
|
# For example:
|
|
#
|
|
# | V |
|
|
# | e |
|
|
# | r |
|
|
# | t |
|
|
# | i |
|
|
# | c |
|
|
# | a |
|
|
# | l |
|
|
},
|
|
"hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
|
|
"textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
"wrapStrategy": "A String", # The wrap strategy for the value in the cell.
|
|
},
|
|
"autoRecalc": "A String", # The amount of time to wait before volatile functions are recalculated.
|
|
"iterativeCalculationSettings": { # Settings to control how circular dependencies are resolved with iterative # Determines whether and how circular references are resolved with iterative
|
|
# calculation. Absence of this field means that circular references will
|
|
# result in calculation errors.
|
|
# calculation.
|
|
"convergenceThreshold": 3.14, # When iterative calculation is enabled and successive results differ by
|
|
# less than this threshold value, the calculation rounds stop.
|
|
"maxIterations": 42, # When iterative calculation is enabled, the maximum number of calculation
|
|
# rounds to perform.
|
|
},
|
|
"timeZone": "A String", # The time zone of the spreadsheet, in CLDR format such as
|
|
# `America/New_York`. If the time zone isn't recognized, this may
|
|
# be a custom time zone such as `GMT-07:00`.
|
|
},
|
|
},
|
|
"replies": [ # The reply of the updates. This maps 1:1 with the updates, although
|
|
# replies to some requests may be empty.
|
|
{ # A single response from an update.
|
|
"duplicateFilterView": { # The result of a filter view being duplicated. # A reply from duplicating a filter view.
|
|
"filter": { # A filter view. # The newly created filter.
|
|
"title": "A String", # The name of the filter view.
|
|
"namedRangeId": "A String", # The named range this filter view is backed by, if any.
|
|
#
|
|
# When writing, only one of range or named_range_id
|
|
# may be set.
|
|
"filterViewId": 42, # The ID of the filter view.
|
|
"range": { # A range on a sheet. # The range this filter view covers.
|
|
#
|
|
# When writing, only one of range or named_range_id
|
|
# may be set.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
"sortSpecs": [ # The sort order per column. Later specifications are used when values
|
|
# are equal in the earlier specifications.
|
|
{ # A sort order associated with a specific column or row.
|
|
"sortOrder": "A String", # The order data should be sorted.
|
|
"dimensionIndex": 42, # The dimension the sort should be applied to.
|
|
},
|
|
],
|
|
"criteria": { # The criteria for showing/hiding values per column.
|
|
# The map's key is the column index, and the value is the criteria for
|
|
# that column.
|
|
"a_key": { # Criteria for showing/hiding rows in a filter or filter view.
|
|
"hiddenValues": [ # Values that should be hidden.
|
|
"A String",
|
|
],
|
|
"condition": { # A condition that can evaluate to true or false. # A condition that must be true for values to be shown.
|
|
# (This does not override hiddenValues -- if a value is listed there,
|
|
# it will still be hidden.)
|
|
# BooleanConditions are used by conditional formatting,
|
|
# data validation, and the criteria in filters.
|
|
"values": [ # The values of the condition. The number of supported values depends
|
|
# on the condition type. Some support zero values,
|
|
# others one or two values,
|
|
# and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
|
|
{ # The value of the condition.
|
|
"relativeDate": "A String", # A relative date (based on the current date).
|
|
# Valid only if the type is
|
|
# DATE_BEFORE,
|
|
# DATE_AFTER,
|
|
# DATE_ON_OR_BEFORE or
|
|
# DATE_ON_OR_AFTER.
|
|
#
|
|
# Relative dates are not supported in data validation.
|
|
# They are supported only in conditional formatting and
|
|
# conditional filters.
|
|
"userEnteredValue": "A String", # A value the condition is based on.
|
|
# The value is parsed as if the user typed into a cell.
|
|
# Formulas are supported (and must begin with an `=` or a '+').
|
|
},
|
|
],
|
|
"type": "A String", # The type of condition.
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
"duplicateSheet": { # The result of duplicating a sheet. # A reply from duplicating a sheet.
|
|
"properties": { # Properties of a sheet. # The properties of the duplicate sheet.
|
|
"sheetType": "A String", # The type of sheet. Defaults to GRID.
|
|
# This field cannot be changed once set.
|
|
"index": 42, # The index of the sheet within the spreadsheet.
|
|
# When adding or updating sheet properties, if this field
|
|
# is excluded then the sheet is added or moved to the end
|
|
# of the sheet list. When updating sheet indices or inserting
|
|
# sheets, movement is considered in "before the move" indexes.
|
|
# For example, if there were 3 sheets (S1, S2, S3) in order to
|
|
# move S1 ahead of S2 the index would have to be set to 2. A sheet
|
|
# index update request is ignored if the requested index is
|
|
# identical to the sheets current index or if the requested new
|
|
# index is equal to the current sheet index + 1.
|
|
"title": "A String", # The name of the sheet.
|
|
"gridProperties": { # Properties of a grid. # Additional properties of the sheet if this sheet is a grid.
|
|
# (If the sheet is an object sheet, containing a chart or image, then
|
|
# this field will be absent.)
|
|
# When writing it is an error to set any grid properties on non-grid sheets.
|
|
"columnCount": 42, # The number of columns in the grid.
|
|
"rowGroupControlAfter": True or False, # True if the row grouping control toggle is shown after the group.
|
|
"columnGroupControlAfter": True or False, # True if the column grouping control toggle is shown after the group.
|
|
"frozenRowCount": 42, # The number of rows that are frozen in the grid.
|
|
"frozenColumnCount": 42, # The number of columns that are frozen in the grid.
|
|
"rowCount": 42, # The number of rows in the grid.
|
|
"hideGridlines": True or False, # True if the grid isn't showing gridlines in the UI.
|
|
},
|
|
"rightToLeft": True or False, # True if the sheet is an RTL sheet instead of an LTR sheet.
|
|
"tabColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the tab in the UI.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"hidden": True or False, # True if the sheet is hidden in the UI, false if it's visible.
|
|
"sheetId": 42, # The ID of the sheet. Must be non-negative.
|
|
# This field cannot be changed once set.
|
|
},
|
|
},
|
|
"updateEmbeddedObjectPosition": { # The result of updating an embedded object's position. # A reply from updating an embedded object's position.
|
|
"position": { # The position of an embedded object such as a chart. # The new position of the embedded object.
|
|
"newSheet": True or False, # If true, the embedded object is put on a new sheet whose ID
|
|
# is chosen for you. Used only when writing.
|
|
"sheetId": 42, # The sheet this is on. Set only if the embedded object
|
|
# is on its own sheet. Must be non-negative.
|
|
"overlayPosition": { # The location an object is overlaid on top of a grid. # The position at which the object is overlaid on top of a grid.
|
|
"anchorCell": { # A coordinate in a sheet. # The cell the object is anchored to.
|
|
# All indexes are zero-based.
|
|
"rowIndex": 42, # The row index of the coordinate.
|
|
"columnIndex": 42, # The column index of the coordinate.
|
|
"sheetId": 42, # The sheet this coordinate is on.
|
|
},
|
|
"widthPixels": 42, # The width of the object, in pixels. Defaults to 600.
|
|
"offsetYPixels": 42, # The vertical offset, in pixels, that the object is offset
|
|
# from the anchor cell.
|
|
"offsetXPixels": 42, # The horizontal offset, in pixels, that the object is offset
|
|
# from the anchor cell.
|
|
"heightPixels": 42, # The height of the object, in pixels. Defaults to 371.
|
|
},
|
|
},
|
|
},
|
|
"addChart": { # The result of adding a chart to a spreadsheet. # A reply from adding a chart.
|
|
"chart": { # A chart embedded in a sheet. # The newly added chart.
|
|
"chartId": 42, # The ID of the chart.
|
|
"position": { # The position of an embedded object such as a chart. # The position of the chart.
|
|
"newSheet": True or False, # If true, the embedded object is put on a new sheet whose ID
|
|
# is chosen for you. Used only when writing.
|
|
"sheetId": 42, # The sheet this is on. Set only if the embedded object
|
|
# is on its own sheet. Must be non-negative.
|
|
"overlayPosition": { # The location an object is overlaid on top of a grid. # The position at which the object is overlaid on top of a grid.
|
|
"anchorCell": { # A coordinate in a sheet. # The cell the object is anchored to.
|
|
# All indexes are zero-based.
|
|
"rowIndex": 42, # The row index of the coordinate.
|
|
"columnIndex": 42, # The column index of the coordinate.
|
|
"sheetId": 42, # The sheet this coordinate is on.
|
|
},
|
|
"widthPixels": 42, # The width of the object, in pixels. Defaults to 600.
|
|
"offsetYPixels": 42, # The vertical offset, in pixels, that the object is offset
|
|
# from the anchor cell.
|
|
"offsetXPixels": 42, # The horizontal offset, in pixels, that the object is offset
|
|
# from the anchor cell.
|
|
"heightPixels": 42, # The height of the object, in pixels. Defaults to 371.
|
|
},
|
|
},
|
|
"spec": { # The specifications of a chart. # The specification of the chart.
|
|
"fontName": "A String", # The name of the font to use by default for all chart text (e.g. title,
|
|
# axis labels, legend). If a font is specified for a specific part of the
|
|
# chart it will override this font name.
|
|
"altText": "A String", # The alternative text that describes the chart. This is often used
|
|
# for accessibility.
|
|
"subtitle": "A String", # The subtitle of the chart.
|
|
"subtitleTextFormat": { # The format of a run of text in a cell. # The subtitle text format.
|
|
# Strikethrough and underline are not supported.
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
"title": "A String", # The title of the chart.
|
|
"titleTextFormat": { # The format of a run of text in a cell. # The title text format.
|
|
# Strikethrough and underline are not supported.
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
"treemapChart": { # A <a href="/chart/interactive/docs/gallery/treemap">Treemap chart</a>. # A treemap chart specification.
|
|
"parentLabels": { # The data included in a domain or series. # The data the contains the treemap cells' parent labels.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"sizeData": { # The data included in a domain or series. # The data that determines the size of each treemap data cell. This data is
|
|
# expected to be numeric. The cells corresponding to non-numeric or missing
|
|
# data will not be rendered. If color_data is not specified, this data
|
|
# is used to determine data cell background colors as well.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"hideTooltips": True or False, # True to hide tooltips.
|
|
"colorScale": { # A color scale for a treemap chart. # The color scale for data cells in the treemap chart. Data cells are
|
|
# assigned colors based on their color values. These color values come from
|
|
# color_data, or from size_data if color_data is not specified.
|
|
# Cells with color values less than or equal to min_value will
|
|
# have minValueColor as their
|
|
# background color. Cells with color values greater than or equal to
|
|
# max_value will have
|
|
# maxValueColor as their background
|
|
# color. Cells with color values between min_value and max_value will
|
|
# have background colors on a gradient between
|
|
# minValueColor and
|
|
# maxValueColor, the midpoint of
|
|
# the gradient being midValueColor.
|
|
# Cells with missing or non-numeric color values will have
|
|
# noDataColor as their background
|
|
# color.
|
|
"noDataColor": { # Represents a color in the RGBA color space. This representation is designed # The background color for cells that have no color data associated with
|
|
# them. Defaults to #000000 if not specified.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"midValueColor": { # Represents a color in the RGBA color space. This representation is designed # The background color for cells with a color value at the midpoint between
|
|
# minValue and
|
|
# maxValue. Defaults to #efe6dc if not
|
|
# specified.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"minValueColor": { # Represents a color in the RGBA color space. This representation is designed # The background color for cells with a color value less than or equal to
|
|
# minValue. Defaults to #dc3912 if not
|
|
# specified.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"maxValueColor": { # Represents a color in the RGBA color space. This representation is designed # The background color for cells with a color value greater than or equal
|
|
# to maxValue. Defaults to #109618 if not
|
|
# specified.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
},
|
|
"labels": { # The data included in a domain or series. # The data that contains the treemap cell labels.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"colorData": { # The data included in a domain or series. # The data that determines the background color of each treemap data cell.
|
|
# This field is optional. If not specified, size_data is used to
|
|
# determine background colors. If specified, the data is expected to be
|
|
# numeric. color_scale will determine how the values in this data map to
|
|
# data cell background colors.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"maxValue": 3.14, # The maximum possible data value. Cells with values greater than this will
|
|
# have the same color as cells with this value. If not specified, defaults
|
|
# to the actual maximum value from color_data, or the maximum value from
|
|
# size_data if color_data is not specified.
|
|
"minValue": 3.14, # The minimum possible data value. Cells with values less than this will
|
|
# have the same color as cells with this value. If not specified, defaults
|
|
# to the actual minimum value from color_data, or the minimum value from
|
|
# size_data if color_data is not specified.
|
|
"headerColor": { # Represents a color in the RGBA color space. This representation is designed # The background color for header cells.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"levels": 42, # The number of data levels to show on the treemap chart. These levels are
|
|
# interactive and are shown with their labels. Defaults to 2 if not
|
|
# specified.
|
|
"hintedLevels": 42, # The number of additional data levels beyond the labeled levels to be shown
|
|
# on the treemap chart. These levels are not interactive and are shown
|
|
# without their labels. Defaults to 0 if not specified.
|
|
"textFormat": { # The format of a run of text in a cell. # The text format for all labels on the chart.
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
},
|
|
"titleTextPosition": { # Position settings for text. # The title text position.
|
|
# This field is optional.
|
|
"horizontalAlignment": "A String", # Horizontal alignment setting for the piece of text.
|
|
},
|
|
"hiddenDimensionStrategy": "A String", # Determines how the charts will use hidden rows or columns.
|
|
"pieChart": { # A <a href="/chart/interactive/docs/gallery/piechart">pie chart</a>. # A pie chart specification.
|
|
"series": { # The data included in a domain or series. # The data that covers the one and only series of the pie chart.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"domain": { # The data included in a domain or series. # The data that covers the domain of the pie chart.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"threeDimensional": True or False, # True if the pie is three dimensional.
|
|
"legendPosition": "A String", # Where the legend of the pie chart should be drawn.
|
|
"pieHole": 3.14, # The size of the hole in the pie chart.
|
|
},
|
|
"candlestickChart": { # A <a href="/chart/interactive/docs/gallery/candlestickchart">candlestick # A candlestick chart specification.
|
|
# chart</a>.
|
|
"domain": { # The domain of a CandlestickChart. # The domain data (horizontal axis) for the candlestick chart. String data
|
|
# will be treated as discrete labels, other data will be treated as
|
|
# continuous values.
|
|
"reversed": True or False, # True to reverse the order of the domain values (horizontal axis).
|
|
"data": { # The data included in a domain or series. # The data of the CandlestickDomain.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
"data": [ # The Candlestick chart data.
|
|
# Only one CandlestickData is supported.
|
|
{ # The Candlestick chart data, each containing the low, open, close, and high
|
|
# values for a series.
|
|
"lowSeries": { # The series of a CandlestickData. # The range data (vertical axis) for the low/minimum value for each candle.
|
|
# This is the bottom of the candle's center line.
|
|
"data": { # The data included in a domain or series. # The data of the CandlestickSeries.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
"highSeries": { # The series of a CandlestickData. # The range data (vertical axis) for the high/maximum value for each
|
|
# candle. This is the top of the candle's center line.
|
|
"data": { # The data included in a domain or series. # The data of the CandlestickSeries.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
"openSeries": { # The series of a CandlestickData. # The range data (vertical axis) for the open/initial value for each
|
|
# candle. This is the bottom of the candle body. If less than the close
|
|
# value the candle will be filled. Otherwise the candle will be hollow.
|
|
"data": { # The data included in a domain or series. # The data of the CandlestickSeries.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
"closeSeries": { # The series of a CandlestickData. # The range data (vertical axis) for the close/final value for each candle.
|
|
# This is the top of the candle body. If greater than the open value the
|
|
# candle will be filled. Otherwise the candle will be hollow.
|
|
"data": { # The data included in a domain or series. # The data of the CandlestickSeries.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
},
|
|
],
|
|
},
|
|
"subtitleTextPosition": { # Position settings for text. # The subtitle text position.
|
|
# This field is optional.
|
|
"horizontalAlignment": "A String", # Horizontal alignment setting for the piece of text.
|
|
},
|
|
"backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the entire chart.
|
|
# Not applicable to Org charts.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"maximized": True or False, # True to make a chart fill the entire space in which it's rendered with
|
|
# minimum padding. False to use the default padding.
|
|
# (Not applicable to Geo and Org charts.)
|
|
"waterfallChart": { # A waterfall chart. # A waterfall chart specification.
|
|
"stackedType": "A String", # The stacked type.
|
|
"hideConnectorLines": True or False, # True to hide connector lines between columns.
|
|
"domain": { # The domain of a waterfall chart. # The domain data (horizontal axis) for the waterfall chart.
|
|
"reversed": True or False, # True to reverse the order of the domain values (horizontal axis).
|
|
"data": { # The data included in a domain or series. # The data of the WaterfallChartDomain.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
"connectorLineStyle": { # Properties that describe the style of a line. # The line style for the connector lines.
|
|
"width": 42, # The thickness of the line, in px.
|
|
"type": "A String", # The dash type of the line.
|
|
},
|
|
"series": [ # The data this waterfall chart is visualizing.
|
|
{ # A single series of data for a waterfall chart.
|
|
"hideTrailingSubtotal": True or False, # True to hide the subtotal column from the end of the series. By default,
|
|
# a subtotal column will appear at the end of each series. Setting this
|
|
# field to true will hide that subtotal column for this series.
|
|
"positiveColumnsStyle": { # Styles for a waterfall chart column. # Styles for all columns in this series with positive values.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the column.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"label": "A String", # The label of the column's legend.
|
|
},
|
|
"subtotalColumnsStyle": { # Styles for a waterfall chart column. # Styles for all subtotal columns in this series.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the column.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"label": "A String", # The label of the column's legend.
|
|
},
|
|
"negativeColumnsStyle": { # Styles for a waterfall chart column. # Styles for all columns in this series with negative values.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the column.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"label": "A String", # The label of the column's legend.
|
|
},
|
|
"customSubtotals": [ # Custom subtotal columns appearing in this series. The order in which
|
|
# subtotals are defined is not significant. Only one subtotal may be
|
|
# defined for each data point.
|
|
{ # A custom subtotal column for a waterfall chart series.
|
|
"dataIsSubtotal": True or False, # True if the data point at subtotal_index is the subtotal. If false,
|
|
# the subtotal will be computed and appear after the data point.
|
|
"subtotalIndex": 42, # The 0-based index of a data point within the series. If
|
|
# data_is_subtotal is true, the data point at this index is the
|
|
# subtotal. Otherwise, the subtotal appears after the data point with
|
|
# this index. A series can have multiple subtotals at arbitrary indices,
|
|
# but subtotals do not affect the indices of the data points. For
|
|
# example, if a series has three data points, their indices will always
|
|
# be 0, 1, and 2, regardless of how many subtotals exist on the series or
|
|
# what data points they are associated with.
|
|
"label": "A String", # A label for the subtotal column.
|
|
},
|
|
],
|
|
"data": { # The data included in a domain or series. # The data being visualized in this series.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
],
|
|
"firstValueIsTotal": True or False, # True to interpret the first value as a total.
|
|
},
|
|
"basicChart": { # The specification for a basic chart. See BasicChartType for the list # A basic chart specification, can be one of many kinds of charts.
|
|
# See BasicChartType for the list of all
|
|
# charts this supports.
|
|
# of charts this supports.
|
|
"stackedType": "A String", # The stacked type for charts that support vertical stacking.
|
|
# Applies to Area, Bar, Column, Combo, and Stepped Area charts.
|
|
"headerCount": 42, # The number of rows or columns in the data that are "headers".
|
|
# If not set, Google Sheets will guess how many rows are headers based
|
|
# on the data.
|
|
#
|
|
# (Note that BasicChartAxis.title may override the axis title
|
|
# inferred from the header values.)
|
|
"series": [ # The data this chart is visualizing.
|
|
{ # A single series of data in a chart.
|
|
# For example, if charting stock prices over time, multiple series may exist,
|
|
# one for the "Open Price", "High Price", "Low Price" and "Close Price".
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color for elements (i.e. bars, lines, points) associated with this
|
|
# series. If empty, a default color is used.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"series": { # The data included in a domain or series. # The data being visualized in this chart series.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"targetAxis": "A String", # The minor axis that will specify the range of values for this series.
|
|
# For example, if charting stocks over time, the "Volume" series
|
|
# may want to be pinned to the right with the prices pinned to the left,
|
|
# because the scale of trading volume is different than the scale of
|
|
# prices.
|
|
# It is an error to specify an axis that isn't a valid minor axis
|
|
# for the chart's type.
|
|
"lineStyle": { # Properties that describe the style of a line. # The line style of this series. Valid only if the
|
|
# chartType is AREA,
|
|
# LINE, or SCATTER.
|
|
# COMBO charts are also supported if the
|
|
# series chart type is
|
|
# AREA or LINE.
|
|
"width": 42, # The thickness of the line, in px.
|
|
"type": "A String", # The dash type of the line.
|
|
},
|
|
"type": "A String", # The type of this series. Valid only if the
|
|
# chartType is
|
|
# COMBO.
|
|
# Different types will change the way the series is visualized.
|
|
# Only LINE, AREA,
|
|
# and COLUMN are supported.
|
|
},
|
|
],
|
|
"interpolateNulls": True or False, # If some values in a series are missing, gaps may appear in the chart (e.g,
|
|
# segments of lines in a line chart will be missing). To eliminate these
|
|
# gaps set this to true.
|
|
# Applies to Line, Area, and Combo charts.
|
|
"legendPosition": "A String", # The position of the chart legend.
|
|
"lineSmoothing": True or False, # Gets whether all lines should be rendered smooth or straight by default.
|
|
# Applies to Line charts.
|
|
"compareMode": "A String", # The behavior of tooltips and data highlighting when hovering on data and
|
|
# chart area.
|
|
"domains": [ # The domain of data this is charting.
|
|
# Only a single domain is supported.
|
|
{ # The domain of a chart.
|
|
# For example, if charting stock prices over time, this would be the date.
|
|
"reversed": True or False, # True to reverse the order of the domain values (horizontal axis).
|
|
"domain": { # The data included in a domain or series. # The data of the domain. For example, if charting stock prices over time,
|
|
# this is the data representing the dates.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
],
|
|
"chartType": "A String", # The type of the chart.
|
|
"threeDimensional": True or False, # True to make the chart 3D.
|
|
# Applies to Bar and Column charts.
|
|
"axis": [ # The axis on the chart.
|
|
{ # An axis of the chart.
|
|
# A chart may not have more than one axis per
|
|
# axis position.
|
|
"position": "A String", # The position of this axis.
|
|
"format": { # The format of a run of text in a cell. # The format of the title.
|
|
# Only valid if the axis is not associated with the domain.
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
"title": "A String", # The title of this axis. If set, this overrides any title inferred
|
|
# from headers of the data.
|
|
"titleTextPosition": { # Position settings for text. # The axis title text position.
|
|
"horizontalAlignment": "A String", # Horizontal alignment setting for the piece of text.
|
|
},
|
|
},
|
|
],
|
|
},
|
|
"histogramChart": { # A <a href="/chart/interactive/docs/gallery/histogram">histogram chart</a>. # A histogram chart specification.
|
|
# A histogram chart groups data items into bins, displaying each bin as a
|
|
# column of stacked items. Histograms are used to display the distribution
|
|
# of a dataset. Each column of items represents a range into which those
|
|
# items fall. The number of bins can be chosen automatically or specified
|
|
# explicitly.
|
|
"outlierPercentile": 3.14, # The outlier percentile is used to ensure that outliers do not adversely
|
|
# affect the calculation of bucket sizes. For example, setting an outlier
|
|
# percentile of 0.05 indicates that the top and bottom 5% of values when
|
|
# calculating buckets. The values are still included in the chart, they will
|
|
# be added to the first or last buckets instead of their own buckets.
|
|
# Must be between 0.0 and 0.5.
|
|
"series": [ # The series for a histogram may be either a single series of values to be
|
|
# bucketed or multiple series, each of the same length, containing the name
|
|
# of the series followed by the values to be bucketed for that series.
|
|
{ # A histogram series containing the series color and data.
|
|
"barColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the column representing this series in each bucket.
|
|
# This field is optional.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"data": { # The data included in a domain or series. # The data for this histogram series.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
],
|
|
"showItemDividers": True or False, # Whether horizontal divider lines should be displayed between items in each
|
|
# column.
|
|
"legendPosition": "A String", # The position of the chart legend.
|
|
"bucketSize": 3.14, # By default the bucket size (the range of values stacked in a single
|
|
# column) is chosen automatically, but it may be overridden here.
|
|
# E.g., A bucket size of 1.5 results in buckets from 0 - 1.5, 1.5 - 3.0, etc.
|
|
# Cannot be negative.
|
|
# This field is optional.
|
|
},
|
|
"bubbleChart": { # A <a href="/chart/interactive/docs/gallery/bubblechart">bubble chart</a>. # A bubble chart specification.
|
|
"bubbleBorderColor": { # Represents a color in the RGBA color space. This representation is designed # The bubble border color.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"domain": { # The data included in a domain or series. # The data containing the bubble x-values. These values locate the bubbles
|
|
# in the chart horizontally.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"bubbleTextStyle": { # The format of a run of text in a cell. # The format of the text inside the bubbles.
|
|
# Underline and Strikethrough are not supported.
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
"series": { # The data included in a domain or series. # The data contianing the bubble y-values. These values locate the bubbles
|
|
# in the chart vertically.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"legendPosition": "A String", # Where the legend of the chart should be drawn.
|
|
"bubbleMaxRadiusSize": 42, # The max radius size of the bubbles, in pixels.
|
|
# If specified, the field must be a positive value.
|
|
"bubbleOpacity": 3.14, # The opacity of the bubbles between 0 and 1.0.
|
|
# 0 is fully transparent and 1 is fully opaque.
|
|
"groupIds": { # The data included in a domain or series. # The data containing the bubble group IDs. All bubbles with the same group
|
|
# ID are drawn in the same color. If bubble_sizes is specified then
|
|
# this field must also be specified but may contain blank values.
|
|
# This field is optional.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"bubbleSizes": { # The data included in a domain or series. # The data contianing the bubble sizes. Bubble sizes are used to draw
|
|
# the bubbles at different sizes relative to each other.
|
|
# If specified, group_ids must also be specified. This field is
|
|
# optional.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"bubbleLabels": { # The data included in a domain or series. # The data containing the bubble labels. These do not need to be unique.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"bubbleMinRadiusSize": 42, # The minimum radius size of the bubbles, in pixels.
|
|
# If specific, the field must be a positive value.
|
|
},
|
|
"orgChart": { # An <a href="/chart/interactive/docs/gallery/orgchart">org chart</a>. # An org chart specification.
|
|
# Org charts require a unique set of labels in labels and may
|
|
# optionally include parent_labels and tooltips.
|
|
# parent_labels contain, for each node, the label identifying the parent
|
|
# node. tooltips contain, for each node, an optional tooltip.
|
|
#
|
|
# For example, to describe an OrgChart with Alice as the CEO, Bob as the
|
|
# President (reporting to Alice) and Cathy as VP of Sales (also reporting to
|
|
# Alice), have labels contain "Alice", "Bob", "Cathy",
|
|
# parent_labels contain "", "Alice", "Alice" and tooltips contain
|
|
# "CEO", "President", "VP Sales".
|
|
"tooltips": { # The data included in a domain or series. # The data containing the tooltip for the corresponding node. A blank value
|
|
# results in no tooltip being displayed for the node.
|
|
# This field is optional.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"parentLabels": { # The data included in a domain or series. # The data containing the label of the parent for the corresponding node.
|
|
# A blank value indicates that the node has no parent and is a top-level
|
|
# node.
|
|
# This field is optional.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"nodeColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the org chart nodes.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"labels": { # The data included in a domain or series. # The data containing the labels for all the nodes in the chart. Labels
|
|
# must be unique.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"selectedNodeColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the selected org chart nodes.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"nodeSize": "A String", # The size of the org chart nodes.
|
|
},
|
|
},
|
|
},
|
|
},
|
|
"deleteDimensionGroup": { # The result of deleting a group. # A reply from deleting a dimension group.
|
|
"dimensionGroups": [ # All groups of a dimension after deleting a group from that dimension.
|
|
{ # A group over an interval of rows or columns on a sheet, which can contain or
|
|
# be contained within other groups. A group can be collapsed or expanded as a
|
|
# unit on the sheet.
|
|
"range": { # A range along a single dimension on a sheet. # The range over which this group exists.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open: the start index is inclusive
|
|
# and the end index is exclusive.
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
"endIndex": 42, # The end (exclusive) of the span, or not set if unbounded.
|
|
"startIndex": 42, # The start (inclusive) of the span, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this span is on.
|
|
"dimension": "A String", # The dimension of the span.
|
|
},
|
|
"collapsed": True or False, # This field is true if this group is collapsed. A collapsed group remains
|
|
# collapsed if an overlapping group at a shallower depth is expanded.
|
|
#
|
|
# A true value does not imply that all dimensions within the group are
|
|
# hidden, since a dimension's visibility can change independently from this
|
|
# group property. However, when this property is updated, all dimensions
|
|
# within it are set to hidden if this field is true, or set to visible if
|
|
# this field is false.
|
|
"depth": 42, # The depth of the group, representing how many groups have a range that
|
|
# wholly contains the range of this group.
|
|
},
|
|
],
|
|
},
|
|
"updateConditionalFormatRule": { # The result of updating a conditional format rule. # A reply from updating a conditional format rule.
|
|
"oldIndex": 42, # The old index of the rule. Not set if a rule was replaced
|
|
# (because it is the same as new_index).
|
|
"oldRule": { # A rule describing a conditional format. # The old (deleted) rule. Not set if a rule was moved
|
|
# (because it is the same as new_rule).
|
|
"ranges": [ # The ranges that are formatted if the condition is true.
|
|
# All the ranges must be on the same grid.
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
"booleanRule": { # A rule that may or may not match, depending on the condition. # The formatting is either "on" or "off" according to the rule.
|
|
"condition": { # A condition that can evaluate to true or false. # The condition of the rule. If the condition evaluates to true,
|
|
# the format is applied.
|
|
# BooleanConditions are used by conditional formatting,
|
|
# data validation, and the criteria in filters.
|
|
"values": [ # The values of the condition. The number of supported values depends
|
|
# on the condition type. Some support zero values,
|
|
# others one or two values,
|
|
# and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
|
|
{ # The value of the condition.
|
|
"relativeDate": "A String", # A relative date (based on the current date).
|
|
# Valid only if the type is
|
|
# DATE_BEFORE,
|
|
# DATE_AFTER,
|
|
# DATE_ON_OR_BEFORE or
|
|
# DATE_ON_OR_AFTER.
|
|
#
|
|
# Relative dates are not supported in data validation.
|
|
# They are supported only in conditional formatting and
|
|
# conditional filters.
|
|
"userEnteredValue": "A String", # A value the condition is based on.
|
|
# The value is parsed as if the user typed into a cell.
|
|
# Formulas are supported (and must begin with an `=` or a '+').
|
|
},
|
|
],
|
|
"type": "A String", # The type of condition.
|
|
},
|
|
"format": { # The format of a cell. # The format to apply.
|
|
# Conditional formatting can only apply a subset of formatting:
|
|
# bold, italic,
|
|
# strikethrough,
|
|
# foreground color &
|
|
# background color.
|
|
"numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
|
|
"pattern": "A String", # Pattern string used for formatting. If not set, a default pattern based on
|
|
# the user's locale will be used if necessary for the given type.
|
|
# See the [Date and Number Formats guide](/sheets/api/guides/formats) for
|
|
# more information about the supported patterns.
|
|
"type": "A String", # The type of the number format.
|
|
# When writing, this field must be set.
|
|
},
|
|
"textDirection": "A String", # The direction of the text in the cell.
|
|
"padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
|
|
# When updating padding, every field must be specified.
|
|
"top": 42, # The top padding of the cell.
|
|
"left": 42, # The left padding of the cell.
|
|
"right": 42, # The right padding of the cell.
|
|
"bottom": 42, # The bottom padding of the cell.
|
|
},
|
|
"horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
|
|
"backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"verticalAlignment": "A String", # The vertical alignment of the value in the cell.
|
|
"borders": { # The borders of the cell. # The borders of the cell.
|
|
"top": { # A border along a cell. # The top border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"right": { # A border along a cell. # The right border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"bottom": { # A border along a cell. # The bottom border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"left": { # A border along a cell. # The left border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
},
|
|
"textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell
|
|
"angle": 42, # The angle between the standard orientation and the desired orientation.
|
|
# Measured in degrees. Valid values are between -90 and 90. Positive
|
|
# angles are angled upwards, negative are angled downwards.
|
|
#
|
|
# Note: For LTR text direction positive angles are in the
|
|
# counterclockwise direction, whereas for RTL they are in the clockwise
|
|
# direction
|
|
"vertical": True or False, # If true, text reads top to bottom, but the orientation of individual
|
|
# characters is unchanged.
|
|
# For example:
|
|
#
|
|
# | V |
|
|
# | e |
|
|
# | r |
|
|
# | t |
|
|
# | i |
|
|
# | c |
|
|
# | a |
|
|
# | l |
|
|
},
|
|
"hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
|
|
"textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
"wrapStrategy": "A String", # The wrap strategy for the value in the cell.
|
|
},
|
|
},
|
|
"gradientRule": { # A rule that applies a gradient color scale format, based on # The formatting will vary based on the gradients in the rule.
|
|
# the interpolation points listed. The format of a cell will vary
|
|
# based on its contents as compared to the values of the interpolation
|
|
# points.
|
|
"maxpoint": { # A single interpolation point on a gradient conditional format. # The final interpolation point.
|
|
# These pin the gradient color scale according to the color,
|
|
# type and value chosen.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"type": "A String", # How the value should be interpreted.
|
|
"value": "A String", # The value this interpolation point uses. May be a formula.
|
|
# Unused if type is MIN or
|
|
# MAX.
|
|
},
|
|
"midpoint": { # A single interpolation point on a gradient conditional format. # An optional midway interpolation point.
|
|
# These pin the gradient color scale according to the color,
|
|
# type and value chosen.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"type": "A String", # How the value should be interpreted.
|
|
"value": "A String", # The value this interpolation point uses. May be a formula.
|
|
# Unused if type is MIN or
|
|
# MAX.
|
|
},
|
|
"minpoint": { # A single interpolation point on a gradient conditional format. # The starting interpolation point.
|
|
# These pin the gradient color scale according to the color,
|
|
# type and value chosen.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"type": "A String", # How the value should be interpreted.
|
|
"value": "A String", # The value this interpolation point uses. May be a formula.
|
|
# Unused if type is MIN or
|
|
# MAX.
|
|
},
|
|
},
|
|
},
|
|
"newIndex": 42, # The index of the new rule.
|
|
"newRule": { # A rule describing a conditional format. # The new rule that replaced the old rule (if replacing),
|
|
# or the rule that was moved (if moved)
|
|
"ranges": [ # The ranges that are formatted if the condition is true.
|
|
# All the ranges must be on the same grid.
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
"booleanRule": { # A rule that may or may not match, depending on the condition. # The formatting is either "on" or "off" according to the rule.
|
|
"condition": { # A condition that can evaluate to true or false. # The condition of the rule. If the condition evaluates to true,
|
|
# the format is applied.
|
|
# BooleanConditions are used by conditional formatting,
|
|
# data validation, and the criteria in filters.
|
|
"values": [ # The values of the condition. The number of supported values depends
|
|
# on the condition type. Some support zero values,
|
|
# others one or two values,
|
|
# and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
|
|
{ # The value of the condition.
|
|
"relativeDate": "A String", # A relative date (based on the current date).
|
|
# Valid only if the type is
|
|
# DATE_BEFORE,
|
|
# DATE_AFTER,
|
|
# DATE_ON_OR_BEFORE or
|
|
# DATE_ON_OR_AFTER.
|
|
#
|
|
# Relative dates are not supported in data validation.
|
|
# They are supported only in conditional formatting and
|
|
# conditional filters.
|
|
"userEnteredValue": "A String", # A value the condition is based on.
|
|
# The value is parsed as if the user typed into a cell.
|
|
# Formulas are supported (and must begin with an `=` or a '+').
|
|
},
|
|
],
|
|
"type": "A String", # The type of condition.
|
|
},
|
|
"format": { # The format of a cell. # The format to apply.
|
|
# Conditional formatting can only apply a subset of formatting:
|
|
# bold, italic,
|
|
# strikethrough,
|
|
# foreground color &
|
|
# background color.
|
|
"numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
|
|
"pattern": "A String", # Pattern string used for formatting. If not set, a default pattern based on
|
|
# the user's locale will be used if necessary for the given type.
|
|
# See the [Date and Number Formats guide](/sheets/api/guides/formats) for
|
|
# more information about the supported patterns.
|
|
"type": "A String", # The type of the number format.
|
|
# When writing, this field must be set.
|
|
},
|
|
"textDirection": "A String", # The direction of the text in the cell.
|
|
"padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
|
|
# When updating padding, every field must be specified.
|
|
"top": 42, # The top padding of the cell.
|
|
"left": 42, # The left padding of the cell.
|
|
"right": 42, # The right padding of the cell.
|
|
"bottom": 42, # The bottom padding of the cell.
|
|
},
|
|
"horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
|
|
"backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"verticalAlignment": "A String", # The vertical alignment of the value in the cell.
|
|
"borders": { # The borders of the cell. # The borders of the cell.
|
|
"top": { # A border along a cell. # The top border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"right": { # A border along a cell. # The right border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"bottom": { # A border along a cell. # The bottom border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"left": { # A border along a cell. # The left border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
},
|
|
"textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell
|
|
"angle": 42, # The angle between the standard orientation and the desired orientation.
|
|
# Measured in degrees. Valid values are between -90 and 90. Positive
|
|
# angles are angled upwards, negative are angled downwards.
|
|
#
|
|
# Note: For LTR text direction positive angles are in the
|
|
# counterclockwise direction, whereas for RTL they are in the clockwise
|
|
# direction
|
|
"vertical": True or False, # If true, text reads top to bottom, but the orientation of individual
|
|
# characters is unchanged.
|
|
# For example:
|
|
#
|
|
# | V |
|
|
# | e |
|
|
# | r |
|
|
# | t |
|
|
# | i |
|
|
# | c |
|
|
# | a |
|
|
# | l |
|
|
},
|
|
"hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
|
|
"textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
"wrapStrategy": "A String", # The wrap strategy for the value in the cell.
|
|
},
|
|
},
|
|
"gradientRule": { # A rule that applies a gradient color scale format, based on # The formatting will vary based on the gradients in the rule.
|
|
# the interpolation points listed. The format of a cell will vary
|
|
# based on its contents as compared to the values of the interpolation
|
|
# points.
|
|
"maxpoint": { # A single interpolation point on a gradient conditional format. # The final interpolation point.
|
|
# These pin the gradient color scale according to the color,
|
|
# type and value chosen.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"type": "A String", # How the value should be interpreted.
|
|
"value": "A String", # The value this interpolation point uses. May be a formula.
|
|
# Unused if type is MIN or
|
|
# MAX.
|
|
},
|
|
"midpoint": { # A single interpolation point on a gradient conditional format. # An optional midway interpolation point.
|
|
# These pin the gradient color scale according to the color,
|
|
# type and value chosen.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"type": "A String", # How the value should be interpreted.
|
|
"value": "A String", # The value this interpolation point uses. May be a formula.
|
|
# Unused if type is MIN or
|
|
# MAX.
|
|
},
|
|
"minpoint": { # A single interpolation point on a gradient conditional format. # The starting interpolation point.
|
|
# These pin the gradient color scale according to the color,
|
|
# type and value chosen.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"type": "A String", # How the value should be interpreted.
|
|
"value": "A String", # The value this interpolation point uses. May be a formula.
|
|
# Unused if type is MIN or
|
|
# MAX.
|
|
},
|
|
},
|
|
},
|
|
},
|
|
"addSheet": { # The result of adding a sheet. # A reply from adding a sheet.
|
|
"properties": { # Properties of a sheet. # The properties of the newly added sheet.
|
|
"sheetType": "A String", # The type of sheet. Defaults to GRID.
|
|
# This field cannot be changed once set.
|
|
"index": 42, # The index of the sheet within the spreadsheet.
|
|
# When adding or updating sheet properties, if this field
|
|
# is excluded then the sheet is added or moved to the end
|
|
# of the sheet list. When updating sheet indices or inserting
|
|
# sheets, movement is considered in "before the move" indexes.
|
|
# For example, if there were 3 sheets (S1, S2, S3) in order to
|
|
# move S1 ahead of S2 the index would have to be set to 2. A sheet
|
|
# index update request is ignored if the requested index is
|
|
# identical to the sheets current index or if the requested new
|
|
# index is equal to the current sheet index + 1.
|
|
"title": "A String", # The name of the sheet.
|
|
"gridProperties": { # Properties of a grid. # Additional properties of the sheet if this sheet is a grid.
|
|
# (If the sheet is an object sheet, containing a chart or image, then
|
|
# this field will be absent.)
|
|
# When writing it is an error to set any grid properties on non-grid sheets.
|
|
"columnCount": 42, # The number of columns in the grid.
|
|
"rowGroupControlAfter": True or False, # True if the row grouping control toggle is shown after the group.
|
|
"columnGroupControlAfter": True or False, # True if the column grouping control toggle is shown after the group.
|
|
"frozenRowCount": 42, # The number of rows that are frozen in the grid.
|
|
"frozenColumnCount": 42, # The number of columns that are frozen in the grid.
|
|
"rowCount": 42, # The number of rows in the grid.
|
|
"hideGridlines": True or False, # True if the grid isn't showing gridlines in the UI.
|
|
},
|
|
"rightToLeft": True or False, # True if the sheet is an RTL sheet instead of an LTR sheet.
|
|
"tabColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the tab in the UI.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"hidden": True or False, # True if the sheet is hidden in the UI, false if it's visible.
|
|
"sheetId": 42, # The ID of the sheet. Must be non-negative.
|
|
# This field cannot be changed once set.
|
|
},
|
|
},
|
|
"findReplace": { # The result of the find/replace. # A reply from doing a find/replace.
|
|
"occurrencesChanged": 42, # The number of occurrences (possibly multiple within a cell) changed.
|
|
# For example, if replacing `"e"` with `"o"` in `"Google Sheets"`, this would
|
|
# be `"3"` because `"Google Sheets"` -> `"Googlo Shoots"`.
|
|
"sheetsChanged": 42, # The number of sheets changed.
|
|
"rowsChanged": 42, # The number of rows changed.
|
|
"valuesChanged": 42, # The number of non-formula cells changed.
|
|
"formulasChanged": 42, # The number of formula cells changed.
|
|
},
|
|
"addNamedRange": { # The result of adding a named range. # A reply from adding a named range.
|
|
"namedRange": { # A named range. # The named range to add.
|
|
"namedRangeId": "A String", # The ID of the named range.
|
|
"range": { # A range on a sheet. # The range this represents.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
"name": "A String", # The name of the named range.
|
|
},
|
|
},
|
|
"addProtectedRange": { # The result of adding a new protected range. # A reply from adding a protected range.
|
|
"protectedRange": { # A protected range. # The newly added protected range.
|
|
"unprotectedRanges": [ # The list of unprotected ranges within a protected sheet.
|
|
# Unprotected ranges are only supported on protected sheets.
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
"requestingUserCanEdit": True or False, # True if the user who requested this protected range can edit the
|
|
# protected area.
|
|
# This field is read-only.
|
|
"description": "A String", # The description of this protected range.
|
|
"namedRangeId": "A String", # The named range this protected range is backed by, if any.
|
|
#
|
|
# When writing, only one of range or named_range_id
|
|
# may be set.
|
|
"range": { # A range on a sheet. # The range that is being protected.
|
|
# The range may be fully unbounded, in which case this is considered
|
|
# a protected sheet.
|
|
#
|
|
# When writing, only one of range or named_range_id
|
|
# may be set.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
"editors": { # The editors of a protected range. # The users and groups with edit access to the protected range.
|
|
# This field is only visible to users with edit access to the protected
|
|
# range and the document.
|
|
# Editors are not supported with warning_only protection.
|
|
"domainUsersCanEdit": True or False, # True if anyone in the document's domain has edit access to the protected
|
|
# range. Domain protection is only supported on documents within a domain.
|
|
"users": [ # The email addresses of users with edit access to the protected range.
|
|
"A String",
|
|
],
|
|
"groups": [ # The email addresses of groups with edit access to the protected range.
|
|
"A String",
|
|
],
|
|
},
|
|
"protectedRangeId": 42, # The ID of the protected range.
|
|
# This field is read-only.
|
|
"warningOnly": True or False, # True if this protected range will show a warning when editing.
|
|
# Warning-based protection means that every user can edit data in the
|
|
# protected range, except editing will prompt a warning asking the user
|
|
# to confirm the edit.
|
|
#
|
|
# When writing: if this field is true, then editors is ignored.
|
|
# Additionally, if this field is changed from true to false and the
|
|
# `editors` field is not set (nor included in the field mask), then
|
|
# the editors will be set to all the editors in the document.
|
|
},
|
|
},
|
|
"deleteConditionalFormatRule": { # The result of deleting a conditional format rule. # A reply from deleting a conditional format rule.
|
|
"rule": { # A rule describing a conditional format. # The rule that was deleted.
|
|
"ranges": [ # The ranges that are formatted if the condition is true.
|
|
# All the ranges must be on the same grid.
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
"booleanRule": { # A rule that may or may not match, depending on the condition. # The formatting is either "on" or "off" according to the rule.
|
|
"condition": { # A condition that can evaluate to true or false. # The condition of the rule. If the condition evaluates to true,
|
|
# the format is applied.
|
|
# BooleanConditions are used by conditional formatting,
|
|
# data validation, and the criteria in filters.
|
|
"values": [ # The values of the condition. The number of supported values depends
|
|
# on the condition type. Some support zero values,
|
|
# others one or two values,
|
|
# and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
|
|
{ # The value of the condition.
|
|
"relativeDate": "A String", # A relative date (based on the current date).
|
|
# Valid only if the type is
|
|
# DATE_BEFORE,
|
|
# DATE_AFTER,
|
|
# DATE_ON_OR_BEFORE or
|
|
# DATE_ON_OR_AFTER.
|
|
#
|
|
# Relative dates are not supported in data validation.
|
|
# They are supported only in conditional formatting and
|
|
# conditional filters.
|
|
"userEnteredValue": "A String", # A value the condition is based on.
|
|
# The value is parsed as if the user typed into a cell.
|
|
# Formulas are supported (and must begin with an `=` or a '+').
|
|
},
|
|
],
|
|
"type": "A String", # The type of condition.
|
|
},
|
|
"format": { # The format of a cell. # The format to apply.
|
|
# Conditional formatting can only apply a subset of formatting:
|
|
# bold, italic,
|
|
# strikethrough,
|
|
# foreground color &
|
|
# background color.
|
|
"numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
|
|
"pattern": "A String", # Pattern string used for formatting. If not set, a default pattern based on
|
|
# the user's locale will be used if necessary for the given type.
|
|
# See the [Date and Number Formats guide](/sheets/api/guides/formats) for
|
|
# more information about the supported patterns.
|
|
"type": "A String", # The type of the number format.
|
|
# When writing, this field must be set.
|
|
},
|
|
"textDirection": "A String", # The direction of the text in the cell.
|
|
"padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
|
|
# When updating padding, every field must be specified.
|
|
"top": 42, # The top padding of the cell.
|
|
"left": 42, # The left padding of the cell.
|
|
"right": 42, # The right padding of the cell.
|
|
"bottom": 42, # The bottom padding of the cell.
|
|
},
|
|
"horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
|
|
"backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"verticalAlignment": "A String", # The vertical alignment of the value in the cell.
|
|
"borders": { # The borders of the cell. # The borders of the cell.
|
|
"top": { # A border along a cell. # The top border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"right": { # A border along a cell. # The right border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"bottom": { # A border along a cell. # The bottom border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"left": { # A border along a cell. # The left border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
},
|
|
"textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell
|
|
"angle": 42, # The angle between the standard orientation and the desired orientation.
|
|
# Measured in degrees. Valid values are between -90 and 90. Positive
|
|
# angles are angled upwards, negative are angled downwards.
|
|
#
|
|
# Note: For LTR text direction positive angles are in the
|
|
# counterclockwise direction, whereas for RTL they are in the clockwise
|
|
# direction
|
|
"vertical": True or False, # If true, text reads top to bottom, but the orientation of individual
|
|
# characters is unchanged.
|
|
# For example:
|
|
#
|
|
# | V |
|
|
# | e |
|
|
# | r |
|
|
# | t |
|
|
# | i |
|
|
# | c |
|
|
# | a |
|
|
# | l |
|
|
},
|
|
"hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
|
|
"textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
"wrapStrategy": "A String", # The wrap strategy for the value in the cell.
|
|
},
|
|
},
|
|
"gradientRule": { # A rule that applies a gradient color scale format, based on # The formatting will vary based on the gradients in the rule.
|
|
# the interpolation points listed. The format of a cell will vary
|
|
# based on its contents as compared to the values of the interpolation
|
|
# points.
|
|
"maxpoint": { # A single interpolation point on a gradient conditional format. # The final interpolation point.
|
|
# These pin the gradient color scale according to the color,
|
|
# type and value chosen.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"type": "A String", # How the value should be interpreted.
|
|
"value": "A String", # The value this interpolation point uses. May be a formula.
|
|
# Unused if type is MIN or
|
|
# MAX.
|
|
},
|
|
"midpoint": { # A single interpolation point on a gradient conditional format. # An optional midway interpolation point.
|
|
# These pin the gradient color scale according to the color,
|
|
# type and value chosen.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"type": "A String", # How the value should be interpreted.
|
|
"value": "A String", # The value this interpolation point uses. May be a formula.
|
|
# Unused if type is MIN or
|
|
# MAX.
|
|
},
|
|
"minpoint": { # A single interpolation point on a gradient conditional format. # The starting interpolation point.
|
|
# These pin the gradient color scale according to the color,
|
|
# type and value chosen.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"type": "A String", # How the value should be interpreted.
|
|
"value": "A String", # The value this interpolation point uses. May be a formula.
|
|
# Unused if type is MIN or
|
|
# MAX.
|
|
},
|
|
},
|
|
},
|
|
},
|
|
"addDimensionGroup": { # The result of adding a group. # A reply from adding a dimension group.
|
|
"dimensionGroups": [ # All groups of a dimension after adding a group to that dimension.
|
|
{ # A group over an interval of rows or columns on a sheet, which can contain or
|
|
# be contained within other groups. A group can be collapsed or expanded as a
|
|
# unit on the sheet.
|
|
"range": { # A range along a single dimension on a sheet. # The range over which this group exists.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open: the start index is inclusive
|
|
# and the end index is exclusive.
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
"endIndex": 42, # The end (exclusive) of the span, or not set if unbounded.
|
|
"startIndex": 42, # The start (inclusive) of the span, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this span is on.
|
|
"dimension": "A String", # The dimension of the span.
|
|
},
|
|
"collapsed": True or False, # This field is true if this group is collapsed. A collapsed group remains
|
|
# collapsed if an overlapping group at a shallower depth is expanded.
|
|
#
|
|
# A true value does not imply that all dimensions within the group are
|
|
# hidden, since a dimension's visibility can change independently from this
|
|
# group property. However, when this property is updated, all dimensions
|
|
# within it are set to hidden if this field is true, or set to visible if
|
|
# this field is false.
|
|
"depth": 42, # The depth of the group, representing how many groups have a range that
|
|
# wholly contains the range of this group.
|
|
},
|
|
],
|
|
},
|
|
"addBanding": { # The result of adding a banded range. # A reply from adding a banded range.
|
|
"bandedRange": { # A banded (alternating colors) range in a sheet. # The banded range that was added.
|
|
"range": { # A range on a sheet. # The range over which these properties are applied.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
"columnProperties": { # Properties referring a single dimension (either row or column). If both # Properties for column bands. These properties are applied on a column-
|
|
# by-column basis throughout all the columns in the range. At least one of
|
|
# row_properties or column_properties must be specified.
|
|
# BandedRange.row_properties and BandedRange.column_properties are
|
|
# set, the fill colors are applied to cells according to the following rules:
|
|
#
|
|
# * header_color and footer_color take priority over band colors.
|
|
# * first_band_color takes priority over second_band_color.
|
|
# * row_properties takes priority over column_properties.
|
|
#
|
|
# For example, the first row color takes priority over the first column
|
|
# color, but the first column color takes priority over the second row color.
|
|
# Similarly, the row header takes priority over the column header in the
|
|
# top left cell, but the column header takes priority over the first row
|
|
# color if the row header is not set.
|
|
"secondBandColor": { # Represents a color in the RGBA color space. This representation is designed # The second color that is alternating. (Required)
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"headerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the first row or column. If this field is set, the first
|
|
# row or column will be filled with this color and the colors will
|
|
# alternate between first_band_color and second_band_color starting
|
|
# from the second row or column. Otherwise, the first row or column will be
|
|
# filled with first_band_color and the colors will proceed to alternate
|
|
# as they normally would.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"footerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the last row or column. If this field is not set, the last
|
|
# row or column will be filled with either first_band_color or
|
|
# second_band_color, depending on the color of the previous row or
|
|
# column.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"firstBandColor": { # Represents a color in the RGBA color space. This representation is designed # The first color that is alternating. (Required)
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
},
|
|
"rowProperties": { # Properties referring a single dimension (either row or column). If both # Properties for row bands. These properties are applied on a row-by-row
|
|
# basis throughout all the rows in the range. At least one of
|
|
# row_properties or column_properties must be specified.
|
|
# BandedRange.row_properties and BandedRange.column_properties are
|
|
# set, the fill colors are applied to cells according to the following rules:
|
|
#
|
|
# * header_color and footer_color take priority over band colors.
|
|
# * first_band_color takes priority over second_band_color.
|
|
# * row_properties takes priority over column_properties.
|
|
#
|
|
# For example, the first row color takes priority over the first column
|
|
# color, but the first column color takes priority over the second row color.
|
|
# Similarly, the row header takes priority over the column header in the
|
|
# top left cell, but the column header takes priority over the first row
|
|
# color if the row header is not set.
|
|
"secondBandColor": { # Represents a color in the RGBA color space. This representation is designed # The second color that is alternating. (Required)
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"headerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the first row or column. If this field is set, the first
|
|
# row or column will be filled with this color and the colors will
|
|
# alternate between first_band_color and second_band_color starting
|
|
# from the second row or column. Otherwise, the first row or column will be
|
|
# filled with first_band_color and the colors will proceed to alternate
|
|
# as they normally would.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"footerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the last row or column. If this field is not set, the last
|
|
# row or column will be filled with either first_band_color or
|
|
# second_band_color, depending on the color of the previous row or
|
|
# column.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"firstBandColor": { # Represents a color in the RGBA color space. This representation is designed # The first color that is alternating. (Required)
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
},
|
|
"bandedRangeId": 42, # The id of the banded range.
|
|
},
|
|
},
|
|
"createDeveloperMetadata": { # The response from creating developer metadata. # A reply from creating a developer metadata entry.
|
|
"developerMetadata": { # Developer metadata associated with a location or object in a spreadsheet. # The developer metadata that was created.
|
|
# Developer metadata may be used to associate arbitrary data with various
|
|
# parts of a spreadsheet and will remain associated at those locations as they
|
|
# move around and the spreadsheet is edited. For example, if developer
|
|
# metadata is associated with row 5 and another row is then subsequently
|
|
# inserted above row 5, that original metadata will still be associated with
|
|
# the row it was first associated with (what is now row 6). If the associated
|
|
# object is deleted its metadata is deleted too.
|
|
"metadataId": 42, # The spreadsheet-scoped unique ID that identifies the metadata. IDs may be
|
|
# specified when metadata is created, otherwise one will be randomly
|
|
# generated and assigned. Must be positive.
|
|
"metadataValue": "A String", # Data associated with the metadata's key.
|
|
"location": { # A location where metadata may be associated in a spreadsheet. # The location where the metadata is associated.
|
|
"locationType": "A String", # The type of location this object represents. This field is read-only.
|
|
"dimensionRange": { # A range along a single dimension on a sheet. # Represents the row or column when metadata is associated with
|
|
# a dimension. The specified DimensionRange must represent a single row
|
|
# or column; it cannot be unbounded or span multiple rows or columns.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open: the start index is inclusive
|
|
# and the end index is exclusive.
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
"endIndex": 42, # The end (exclusive) of the span, or not set if unbounded.
|
|
"startIndex": 42, # The start (inclusive) of the span, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this span is on.
|
|
"dimension": "A String", # The dimension of the span.
|
|
},
|
|
"spreadsheet": True or False, # True when metadata is associated with an entire spreadsheet.
|
|
"sheetId": 42, # The ID of the sheet when metadata is associated with an entire sheet.
|
|
},
|
|
"visibility": "A String", # The metadata visibility. Developer metadata must always have a visibility
|
|
# specified.
|
|
"metadataKey": "A String", # The metadata key. There may be multiple metadata in a spreadsheet with the
|
|
# same key. Developer metadata must always have a key specified.
|
|
},
|
|
},
|
|
"addFilterView": { # The result of adding a filter view. # A reply from adding a filter view.
|
|
"filter": { # A filter view. # The newly added filter view.
|
|
"title": "A String", # The name of the filter view.
|
|
"namedRangeId": "A String", # The named range this filter view is backed by, if any.
|
|
#
|
|
# When writing, only one of range or named_range_id
|
|
# may be set.
|
|
"filterViewId": 42, # The ID of the filter view.
|
|
"range": { # A range on a sheet. # The range this filter view covers.
|
|
#
|
|
# When writing, only one of range or named_range_id
|
|
# may be set.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
"sortSpecs": [ # The sort order per column. Later specifications are used when values
|
|
# are equal in the earlier specifications.
|
|
{ # A sort order associated with a specific column or row.
|
|
"sortOrder": "A String", # The order data should be sorted.
|
|
"dimensionIndex": 42, # The dimension the sort should be applied to.
|
|
},
|
|
],
|
|
"criteria": { # The criteria for showing/hiding values per column.
|
|
# The map's key is the column index, and the value is the criteria for
|
|
# that column.
|
|
"a_key": { # Criteria for showing/hiding rows in a filter or filter view.
|
|
"hiddenValues": [ # Values that should be hidden.
|
|
"A String",
|
|
],
|
|
"condition": { # A condition that can evaluate to true or false. # A condition that must be true for values to be shown.
|
|
# (This does not override hiddenValues -- if a value is listed there,
|
|
# it will still be hidden.)
|
|
# BooleanConditions are used by conditional formatting,
|
|
# data validation, and the criteria in filters.
|
|
"values": [ # The values of the condition. The number of supported values depends
|
|
# on the condition type. Some support zero values,
|
|
# others one or two values,
|
|
# and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
|
|
{ # The value of the condition.
|
|
"relativeDate": "A String", # A relative date (based on the current date).
|
|
# Valid only if the type is
|
|
# DATE_BEFORE,
|
|
# DATE_AFTER,
|
|
# DATE_ON_OR_BEFORE or
|
|
# DATE_ON_OR_AFTER.
|
|
#
|
|
# Relative dates are not supported in data validation.
|
|
# They are supported only in conditional formatting and
|
|
# conditional filters.
|
|
"userEnteredValue": "A String", # A value the condition is based on.
|
|
# The value is parsed as if the user typed into a cell.
|
|
# Formulas are supported (and must begin with an `=` or a '+').
|
|
},
|
|
],
|
|
"type": "A String", # The type of condition.
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
"updateDeveloperMetadata": { # The response from updating developer metadata. # A reply from updating a developer metadata entry.
|
|
"developerMetadata": [ # The updated developer metadata.
|
|
{ # Developer metadata associated with a location or object in a spreadsheet.
|
|
# Developer metadata may be used to associate arbitrary data with various
|
|
# parts of a spreadsheet and will remain associated at those locations as they
|
|
# move around and the spreadsheet is edited. For example, if developer
|
|
# metadata is associated with row 5 and another row is then subsequently
|
|
# inserted above row 5, that original metadata will still be associated with
|
|
# the row it was first associated with (what is now row 6). If the associated
|
|
# object is deleted its metadata is deleted too.
|
|
"metadataId": 42, # The spreadsheet-scoped unique ID that identifies the metadata. IDs may be
|
|
# specified when metadata is created, otherwise one will be randomly
|
|
# generated and assigned. Must be positive.
|
|
"metadataValue": "A String", # Data associated with the metadata's key.
|
|
"location": { # A location where metadata may be associated in a spreadsheet. # The location where the metadata is associated.
|
|
"locationType": "A String", # The type of location this object represents. This field is read-only.
|
|
"dimensionRange": { # A range along a single dimension on a sheet. # Represents the row or column when metadata is associated with
|
|
# a dimension. The specified DimensionRange must represent a single row
|
|
# or column; it cannot be unbounded or span multiple rows or columns.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open: the start index is inclusive
|
|
# and the end index is exclusive.
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
"endIndex": 42, # The end (exclusive) of the span, or not set if unbounded.
|
|
"startIndex": 42, # The start (inclusive) of the span, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this span is on.
|
|
"dimension": "A String", # The dimension of the span.
|
|
},
|
|
"spreadsheet": True or False, # True when metadata is associated with an entire spreadsheet.
|
|
"sheetId": 42, # The ID of the sheet when metadata is associated with an entire sheet.
|
|
},
|
|
"visibility": "A String", # The metadata visibility. Developer metadata must always have a visibility
|
|
# specified.
|
|
"metadataKey": "A String", # The metadata key. There may be multiple metadata in a spreadsheet with the
|
|
# same key. Developer metadata must always have a key specified.
|
|
},
|
|
],
|
|
},
|
|
"deleteDeveloperMetadata": { # The response from deleting developer metadata. # A reply from deleting a developer metadata entry.
|
|
"deletedDeveloperMetadata": [ # The metadata that was deleted.
|
|
{ # Developer metadata associated with a location or object in a spreadsheet.
|
|
# Developer metadata may be used to associate arbitrary data with various
|
|
# parts of a spreadsheet and will remain associated at those locations as they
|
|
# move around and the spreadsheet is edited. For example, if developer
|
|
# metadata is associated with row 5 and another row is then subsequently
|
|
# inserted above row 5, that original metadata will still be associated with
|
|
# the row it was first associated with (what is now row 6). If the associated
|
|
# object is deleted its metadata is deleted too.
|
|
"metadataId": 42, # The spreadsheet-scoped unique ID that identifies the metadata. IDs may be
|
|
# specified when metadata is created, otherwise one will be randomly
|
|
# generated and assigned. Must be positive.
|
|
"metadataValue": "A String", # Data associated with the metadata's key.
|
|
"location": { # A location where metadata may be associated in a spreadsheet. # The location where the metadata is associated.
|
|
"locationType": "A String", # The type of location this object represents. This field is read-only.
|
|
"dimensionRange": { # A range along a single dimension on a sheet. # Represents the row or column when metadata is associated with
|
|
# a dimension. The specified DimensionRange must represent a single row
|
|
# or column; it cannot be unbounded or span multiple rows or columns.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open: the start index is inclusive
|
|
# and the end index is exclusive.
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
"endIndex": 42, # The end (exclusive) of the span, or not set if unbounded.
|
|
"startIndex": 42, # The start (inclusive) of the span, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this span is on.
|
|
"dimension": "A String", # The dimension of the span.
|
|
},
|
|
"spreadsheet": True or False, # True when metadata is associated with an entire spreadsheet.
|
|
"sheetId": 42, # The ID of the sheet when metadata is associated with an entire sheet.
|
|
},
|
|
"visibility": "A String", # The metadata visibility. Developer metadata must always have a visibility
|
|
# specified.
|
|
"metadataKey": "A String", # The metadata key. There may be multiple metadata in a spreadsheet with the
|
|
# same key. Developer metadata must always have a key specified.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
],
|
|
}</pre>
|
|
</div>
|
|
|
|
<div class="method">
|
|
<code class="details" id="create">create(body, x__xgafv=None)</code>
|
|
<pre>Creates a spreadsheet, returning the newly created spreadsheet.
|
|
|
|
Args:
|
|
body: object, The request body. (required)
|
|
The object takes the form of:
|
|
|
|
{ # Resource that represents a spreadsheet.
|
|
"developerMetadata": [ # The developer metadata associated with a spreadsheet.
|
|
{ # Developer metadata associated with a location or object in a spreadsheet.
|
|
# Developer metadata may be used to associate arbitrary data with various
|
|
# parts of a spreadsheet and will remain associated at those locations as they
|
|
# move around and the spreadsheet is edited. For example, if developer
|
|
# metadata is associated with row 5 and another row is then subsequently
|
|
# inserted above row 5, that original metadata will still be associated with
|
|
# the row it was first associated with (what is now row 6). If the associated
|
|
# object is deleted its metadata is deleted too.
|
|
"metadataId": 42, # The spreadsheet-scoped unique ID that identifies the metadata. IDs may be
|
|
# specified when metadata is created, otherwise one will be randomly
|
|
# generated and assigned. Must be positive.
|
|
"metadataValue": "A String", # Data associated with the metadata's key.
|
|
"location": { # A location where metadata may be associated in a spreadsheet. # The location where the metadata is associated.
|
|
"locationType": "A String", # The type of location this object represents. This field is read-only.
|
|
"dimensionRange": { # A range along a single dimension on a sheet. # Represents the row or column when metadata is associated with
|
|
# a dimension. The specified DimensionRange must represent a single row
|
|
# or column; it cannot be unbounded or span multiple rows or columns.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open: the start index is inclusive
|
|
# and the end index is exclusive.
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
"endIndex": 42, # The end (exclusive) of the span, or not set if unbounded.
|
|
"startIndex": 42, # The start (inclusive) of the span, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this span is on.
|
|
"dimension": "A String", # The dimension of the span.
|
|
},
|
|
"spreadsheet": True or False, # True when metadata is associated with an entire spreadsheet.
|
|
"sheetId": 42, # The ID of the sheet when metadata is associated with an entire sheet.
|
|
},
|
|
"visibility": "A String", # The metadata visibility. Developer metadata must always have a visibility
|
|
# specified.
|
|
"metadataKey": "A String", # The metadata key. There may be multiple metadata in a spreadsheet with the
|
|
# same key. Developer metadata must always have a key specified.
|
|
},
|
|
],
|
|
"sheets": [ # The sheets that are part of a spreadsheet.
|
|
{ # A sheet in a spreadsheet.
|
|
"conditionalFormats": [ # The conditional format rules in this sheet.
|
|
{ # A rule describing a conditional format.
|
|
"ranges": [ # The ranges that are formatted if the condition is true.
|
|
# All the ranges must be on the same grid.
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
"booleanRule": { # A rule that may or may not match, depending on the condition. # The formatting is either "on" or "off" according to the rule.
|
|
"condition": { # A condition that can evaluate to true or false. # The condition of the rule. If the condition evaluates to true,
|
|
# the format is applied.
|
|
# BooleanConditions are used by conditional formatting,
|
|
# data validation, and the criteria in filters.
|
|
"values": [ # The values of the condition. The number of supported values depends
|
|
# on the condition type. Some support zero values,
|
|
# others one or two values,
|
|
# and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
|
|
{ # The value of the condition.
|
|
"relativeDate": "A String", # A relative date (based on the current date).
|
|
# Valid only if the type is
|
|
# DATE_BEFORE,
|
|
# DATE_AFTER,
|
|
# DATE_ON_OR_BEFORE or
|
|
# DATE_ON_OR_AFTER.
|
|
#
|
|
# Relative dates are not supported in data validation.
|
|
# They are supported only in conditional formatting and
|
|
# conditional filters.
|
|
"userEnteredValue": "A String", # A value the condition is based on.
|
|
# The value is parsed as if the user typed into a cell.
|
|
# Formulas are supported (and must begin with an `=` or a '+').
|
|
},
|
|
],
|
|
"type": "A String", # The type of condition.
|
|
},
|
|
"format": { # The format of a cell. # The format to apply.
|
|
# Conditional formatting can only apply a subset of formatting:
|
|
# bold, italic,
|
|
# strikethrough,
|
|
# foreground color &
|
|
# background color.
|
|
"numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
|
|
"pattern": "A String", # Pattern string used for formatting. If not set, a default pattern based on
|
|
# the user's locale will be used if necessary for the given type.
|
|
# See the [Date and Number Formats guide](/sheets/api/guides/formats) for
|
|
# more information about the supported patterns.
|
|
"type": "A String", # The type of the number format.
|
|
# When writing, this field must be set.
|
|
},
|
|
"textDirection": "A String", # The direction of the text in the cell.
|
|
"padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
|
|
# When updating padding, every field must be specified.
|
|
"top": 42, # The top padding of the cell.
|
|
"left": 42, # The left padding of the cell.
|
|
"right": 42, # The right padding of the cell.
|
|
"bottom": 42, # The bottom padding of the cell.
|
|
},
|
|
"horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
|
|
"backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"verticalAlignment": "A String", # The vertical alignment of the value in the cell.
|
|
"borders": { # The borders of the cell. # The borders of the cell.
|
|
"top": { # A border along a cell. # The top border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"right": { # A border along a cell. # The right border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"bottom": { # A border along a cell. # The bottom border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"left": { # A border along a cell. # The left border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
},
|
|
"textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell
|
|
"angle": 42, # The angle between the standard orientation and the desired orientation.
|
|
# Measured in degrees. Valid values are between -90 and 90. Positive
|
|
# angles are angled upwards, negative are angled downwards.
|
|
#
|
|
# Note: For LTR text direction positive angles are in the
|
|
# counterclockwise direction, whereas for RTL they are in the clockwise
|
|
# direction
|
|
"vertical": True or False, # If true, text reads top to bottom, but the orientation of individual
|
|
# characters is unchanged.
|
|
# For example:
|
|
#
|
|
# | V |
|
|
# | e |
|
|
# | r |
|
|
# | t |
|
|
# | i |
|
|
# | c |
|
|
# | a |
|
|
# | l |
|
|
},
|
|
"hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
|
|
"textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
"wrapStrategy": "A String", # The wrap strategy for the value in the cell.
|
|
},
|
|
},
|
|
"gradientRule": { # A rule that applies a gradient color scale format, based on # The formatting will vary based on the gradients in the rule.
|
|
# the interpolation points listed. The format of a cell will vary
|
|
# based on its contents as compared to the values of the interpolation
|
|
# points.
|
|
"maxpoint": { # A single interpolation point on a gradient conditional format. # The final interpolation point.
|
|
# These pin the gradient color scale according to the color,
|
|
# type and value chosen.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"type": "A String", # How the value should be interpreted.
|
|
"value": "A String", # The value this interpolation point uses. May be a formula.
|
|
# Unused if type is MIN or
|
|
# MAX.
|
|
},
|
|
"midpoint": { # A single interpolation point on a gradient conditional format. # An optional midway interpolation point.
|
|
# These pin the gradient color scale according to the color,
|
|
# type and value chosen.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"type": "A String", # How the value should be interpreted.
|
|
"value": "A String", # The value this interpolation point uses. May be a formula.
|
|
# Unused if type is MIN or
|
|
# MAX.
|
|
},
|
|
"minpoint": { # A single interpolation point on a gradient conditional format. # The starting interpolation point.
|
|
# These pin the gradient color scale according to the color,
|
|
# type and value chosen.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"type": "A String", # How the value should be interpreted.
|
|
"value": "A String", # The value this interpolation point uses. May be a formula.
|
|
# Unused if type is MIN or
|
|
# MAX.
|
|
},
|
|
},
|
|
},
|
|
],
|
|
"bandedRanges": [ # The banded (alternating colors) ranges on this sheet.
|
|
{ # A banded (alternating colors) range in a sheet.
|
|
"range": { # A range on a sheet. # The range over which these properties are applied.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
"columnProperties": { # Properties referring a single dimension (either row or column). If both # Properties for column bands. These properties are applied on a column-
|
|
# by-column basis throughout all the columns in the range. At least one of
|
|
# row_properties or column_properties must be specified.
|
|
# BandedRange.row_properties and BandedRange.column_properties are
|
|
# set, the fill colors are applied to cells according to the following rules:
|
|
#
|
|
# * header_color and footer_color take priority over band colors.
|
|
# * first_band_color takes priority over second_band_color.
|
|
# * row_properties takes priority over column_properties.
|
|
#
|
|
# For example, the first row color takes priority over the first column
|
|
# color, but the first column color takes priority over the second row color.
|
|
# Similarly, the row header takes priority over the column header in the
|
|
# top left cell, but the column header takes priority over the first row
|
|
# color if the row header is not set.
|
|
"secondBandColor": { # Represents a color in the RGBA color space. This representation is designed # The second color that is alternating. (Required)
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"headerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the first row or column. If this field is set, the first
|
|
# row or column will be filled with this color and the colors will
|
|
# alternate between first_band_color and second_band_color starting
|
|
# from the second row or column. Otherwise, the first row or column will be
|
|
# filled with first_band_color and the colors will proceed to alternate
|
|
# as they normally would.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"footerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the last row or column. If this field is not set, the last
|
|
# row or column will be filled with either first_band_color or
|
|
# second_band_color, depending on the color of the previous row or
|
|
# column.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"firstBandColor": { # Represents a color in the RGBA color space. This representation is designed # The first color that is alternating. (Required)
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
},
|
|
"rowProperties": { # Properties referring a single dimension (either row or column). If both # Properties for row bands. These properties are applied on a row-by-row
|
|
# basis throughout all the rows in the range. At least one of
|
|
# row_properties or column_properties must be specified.
|
|
# BandedRange.row_properties and BandedRange.column_properties are
|
|
# set, the fill colors are applied to cells according to the following rules:
|
|
#
|
|
# * header_color and footer_color take priority over band colors.
|
|
# * first_band_color takes priority over second_band_color.
|
|
# * row_properties takes priority over column_properties.
|
|
#
|
|
# For example, the first row color takes priority over the first column
|
|
# color, but the first column color takes priority over the second row color.
|
|
# Similarly, the row header takes priority over the column header in the
|
|
# top left cell, but the column header takes priority over the first row
|
|
# color if the row header is not set.
|
|
"secondBandColor": { # Represents a color in the RGBA color space. This representation is designed # The second color that is alternating. (Required)
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"headerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the first row or column. If this field is set, the first
|
|
# row or column will be filled with this color and the colors will
|
|
# alternate between first_band_color and second_band_color starting
|
|
# from the second row or column. Otherwise, the first row or column will be
|
|
# filled with first_band_color and the colors will proceed to alternate
|
|
# as they normally would.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"footerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the last row or column. If this field is not set, the last
|
|
# row or column will be filled with either first_band_color or
|
|
# second_band_color, depending on the color of the previous row or
|
|
# column.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"firstBandColor": { # Represents a color in the RGBA color space. This representation is designed # The first color that is alternating. (Required)
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
},
|
|
"bandedRangeId": 42, # The id of the banded range.
|
|
},
|
|
],
|
|
"merges": [ # The ranges that are merged together.
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
"basicFilter": { # The default filter associated with a sheet. # The filter on this sheet, if any.
|
|
"range": { # A range on a sheet. # The range the filter covers.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
"sortSpecs": [ # The sort order per column. Later specifications are used when values
|
|
# are equal in the earlier specifications.
|
|
{ # A sort order associated with a specific column or row.
|
|
"sortOrder": "A String", # The order data should be sorted.
|
|
"dimensionIndex": 42, # The dimension the sort should be applied to.
|
|
},
|
|
],
|
|
"criteria": { # The criteria for showing/hiding values per column.
|
|
# The map's key is the column index, and the value is the criteria for
|
|
# that column.
|
|
"a_key": { # Criteria for showing/hiding rows in a filter or filter view.
|
|
"hiddenValues": [ # Values that should be hidden.
|
|
"A String",
|
|
],
|
|
"condition": { # A condition that can evaluate to true or false. # A condition that must be true for values to be shown.
|
|
# (This does not override hiddenValues -- if a value is listed there,
|
|
# it will still be hidden.)
|
|
# BooleanConditions are used by conditional formatting,
|
|
# data validation, and the criteria in filters.
|
|
"values": [ # The values of the condition. The number of supported values depends
|
|
# on the condition type. Some support zero values,
|
|
# others one or two values,
|
|
# and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
|
|
{ # The value of the condition.
|
|
"relativeDate": "A String", # A relative date (based on the current date).
|
|
# Valid only if the type is
|
|
# DATE_BEFORE,
|
|
# DATE_AFTER,
|
|
# DATE_ON_OR_BEFORE or
|
|
# DATE_ON_OR_AFTER.
|
|
#
|
|
# Relative dates are not supported in data validation.
|
|
# They are supported only in conditional formatting and
|
|
# conditional filters.
|
|
"userEnteredValue": "A String", # A value the condition is based on.
|
|
# The value is parsed as if the user typed into a cell.
|
|
# Formulas are supported (and must begin with an `=` or a '+').
|
|
},
|
|
],
|
|
"type": "A String", # The type of condition.
|
|
},
|
|
},
|
|
},
|
|
},
|
|
"developerMetadata": [ # The developer metadata associated with a sheet.
|
|
{ # Developer metadata associated with a location or object in a spreadsheet.
|
|
# Developer metadata may be used to associate arbitrary data with various
|
|
# parts of a spreadsheet and will remain associated at those locations as they
|
|
# move around and the spreadsheet is edited. For example, if developer
|
|
# metadata is associated with row 5 and another row is then subsequently
|
|
# inserted above row 5, that original metadata will still be associated with
|
|
# the row it was first associated with (what is now row 6). If the associated
|
|
# object is deleted its metadata is deleted too.
|
|
"metadataId": 42, # The spreadsheet-scoped unique ID that identifies the metadata. IDs may be
|
|
# specified when metadata is created, otherwise one will be randomly
|
|
# generated and assigned. Must be positive.
|
|
"metadataValue": "A String", # Data associated with the metadata's key.
|
|
"location": { # A location where metadata may be associated in a spreadsheet. # The location where the metadata is associated.
|
|
"locationType": "A String", # The type of location this object represents. This field is read-only.
|
|
"dimensionRange": { # A range along a single dimension on a sheet. # Represents the row or column when metadata is associated with
|
|
# a dimension. The specified DimensionRange must represent a single row
|
|
# or column; it cannot be unbounded or span multiple rows or columns.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open: the start index is inclusive
|
|
# and the end index is exclusive.
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
"endIndex": 42, # The end (exclusive) of the span, or not set if unbounded.
|
|
"startIndex": 42, # The start (inclusive) of the span, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this span is on.
|
|
"dimension": "A String", # The dimension of the span.
|
|
},
|
|
"spreadsheet": True or False, # True when metadata is associated with an entire spreadsheet.
|
|
"sheetId": 42, # The ID of the sheet when metadata is associated with an entire sheet.
|
|
},
|
|
"visibility": "A String", # The metadata visibility. Developer metadata must always have a visibility
|
|
# specified.
|
|
"metadataKey": "A String", # The metadata key. There may be multiple metadata in a spreadsheet with the
|
|
# same key. Developer metadata must always have a key specified.
|
|
},
|
|
],
|
|
"columnGroups": [ # All column groups on this sheet, ordered by increasing range start index,
|
|
# then by group depth.
|
|
{ # A group over an interval of rows or columns on a sheet, which can contain or
|
|
# be contained within other groups. A group can be collapsed or expanded as a
|
|
# unit on the sheet.
|
|
"range": { # A range along a single dimension on a sheet. # The range over which this group exists.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open: the start index is inclusive
|
|
# and the end index is exclusive.
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
"endIndex": 42, # The end (exclusive) of the span, or not set if unbounded.
|
|
"startIndex": 42, # The start (inclusive) of the span, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this span is on.
|
|
"dimension": "A String", # The dimension of the span.
|
|
},
|
|
"collapsed": True or False, # This field is true if this group is collapsed. A collapsed group remains
|
|
# collapsed if an overlapping group at a shallower depth is expanded.
|
|
#
|
|
# A true value does not imply that all dimensions within the group are
|
|
# hidden, since a dimension's visibility can change independently from this
|
|
# group property. However, when this property is updated, all dimensions
|
|
# within it are set to hidden if this field is true, or set to visible if
|
|
# this field is false.
|
|
"depth": 42, # The depth of the group, representing how many groups have a range that
|
|
# wholly contains the range of this group.
|
|
},
|
|
],
|
|
"properties": { # Properties of a sheet. # The properties of the sheet.
|
|
"sheetType": "A String", # The type of sheet. Defaults to GRID.
|
|
# This field cannot be changed once set.
|
|
"index": 42, # The index of the sheet within the spreadsheet.
|
|
# When adding or updating sheet properties, if this field
|
|
# is excluded then the sheet is added or moved to the end
|
|
# of the sheet list. When updating sheet indices or inserting
|
|
# sheets, movement is considered in "before the move" indexes.
|
|
# For example, if there were 3 sheets (S1, S2, S3) in order to
|
|
# move S1 ahead of S2 the index would have to be set to 2. A sheet
|
|
# index update request is ignored if the requested index is
|
|
# identical to the sheets current index or if the requested new
|
|
# index is equal to the current sheet index + 1.
|
|
"title": "A String", # The name of the sheet.
|
|
"gridProperties": { # Properties of a grid. # Additional properties of the sheet if this sheet is a grid.
|
|
# (If the sheet is an object sheet, containing a chart or image, then
|
|
# this field will be absent.)
|
|
# When writing it is an error to set any grid properties on non-grid sheets.
|
|
"columnCount": 42, # The number of columns in the grid.
|
|
"rowGroupControlAfter": True or False, # True if the row grouping control toggle is shown after the group.
|
|
"columnGroupControlAfter": True or False, # True if the column grouping control toggle is shown after the group.
|
|
"frozenRowCount": 42, # The number of rows that are frozen in the grid.
|
|
"frozenColumnCount": 42, # The number of columns that are frozen in the grid.
|
|
"rowCount": 42, # The number of rows in the grid.
|
|
"hideGridlines": True or False, # True if the grid isn't showing gridlines in the UI.
|
|
},
|
|
"rightToLeft": True or False, # True if the sheet is an RTL sheet instead of an LTR sheet.
|
|
"tabColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the tab in the UI.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"hidden": True or False, # True if the sheet is hidden in the UI, false if it's visible.
|
|
"sheetId": 42, # The ID of the sheet. Must be non-negative.
|
|
# This field cannot be changed once set.
|
|
},
|
|
"filterViews": [ # The filter views in this sheet.
|
|
{ # A filter view.
|
|
"title": "A String", # The name of the filter view.
|
|
"namedRangeId": "A String", # The named range this filter view is backed by, if any.
|
|
#
|
|
# When writing, only one of range or named_range_id
|
|
# may be set.
|
|
"filterViewId": 42, # The ID of the filter view.
|
|
"range": { # A range on a sheet. # The range this filter view covers.
|
|
#
|
|
# When writing, only one of range or named_range_id
|
|
# may be set.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
"sortSpecs": [ # The sort order per column. Later specifications are used when values
|
|
# are equal in the earlier specifications.
|
|
{ # A sort order associated with a specific column or row.
|
|
"sortOrder": "A String", # The order data should be sorted.
|
|
"dimensionIndex": 42, # The dimension the sort should be applied to.
|
|
},
|
|
],
|
|
"criteria": { # The criteria for showing/hiding values per column.
|
|
# The map's key is the column index, and the value is the criteria for
|
|
# that column.
|
|
"a_key": { # Criteria for showing/hiding rows in a filter or filter view.
|
|
"hiddenValues": [ # Values that should be hidden.
|
|
"A String",
|
|
],
|
|
"condition": { # A condition that can evaluate to true or false. # A condition that must be true for values to be shown.
|
|
# (This does not override hiddenValues -- if a value is listed there,
|
|
# it will still be hidden.)
|
|
# BooleanConditions are used by conditional formatting,
|
|
# data validation, and the criteria in filters.
|
|
"values": [ # The values of the condition. The number of supported values depends
|
|
# on the condition type. Some support zero values,
|
|
# others one or two values,
|
|
# and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
|
|
{ # The value of the condition.
|
|
"relativeDate": "A String", # A relative date (based on the current date).
|
|
# Valid only if the type is
|
|
# DATE_BEFORE,
|
|
# DATE_AFTER,
|
|
# DATE_ON_OR_BEFORE or
|
|
# DATE_ON_OR_AFTER.
|
|
#
|
|
# Relative dates are not supported in data validation.
|
|
# They are supported only in conditional formatting and
|
|
# conditional filters.
|
|
"userEnteredValue": "A String", # A value the condition is based on.
|
|
# The value is parsed as if the user typed into a cell.
|
|
# Formulas are supported (and must begin with an `=` or a '+').
|
|
},
|
|
],
|
|
"type": "A String", # The type of condition.
|
|
},
|
|
},
|
|
},
|
|
},
|
|
],
|
|
"charts": [ # The specifications of every chart on this sheet.
|
|
{ # A chart embedded in a sheet.
|
|
"chartId": 42, # The ID of the chart.
|
|
"position": { # The position of an embedded object such as a chart. # The position of the chart.
|
|
"newSheet": True or False, # If true, the embedded object is put on a new sheet whose ID
|
|
# is chosen for you. Used only when writing.
|
|
"sheetId": 42, # The sheet this is on. Set only if the embedded object
|
|
# is on its own sheet. Must be non-negative.
|
|
"overlayPosition": { # The location an object is overlaid on top of a grid. # The position at which the object is overlaid on top of a grid.
|
|
"anchorCell": { # A coordinate in a sheet. # The cell the object is anchored to.
|
|
# All indexes are zero-based.
|
|
"rowIndex": 42, # The row index of the coordinate.
|
|
"columnIndex": 42, # The column index of the coordinate.
|
|
"sheetId": 42, # The sheet this coordinate is on.
|
|
},
|
|
"widthPixels": 42, # The width of the object, in pixels. Defaults to 600.
|
|
"offsetYPixels": 42, # The vertical offset, in pixels, that the object is offset
|
|
# from the anchor cell.
|
|
"offsetXPixels": 42, # The horizontal offset, in pixels, that the object is offset
|
|
# from the anchor cell.
|
|
"heightPixels": 42, # The height of the object, in pixels. Defaults to 371.
|
|
},
|
|
},
|
|
"spec": { # The specifications of a chart. # The specification of the chart.
|
|
"fontName": "A String", # The name of the font to use by default for all chart text (e.g. title,
|
|
# axis labels, legend). If a font is specified for a specific part of the
|
|
# chart it will override this font name.
|
|
"altText": "A String", # The alternative text that describes the chart. This is often used
|
|
# for accessibility.
|
|
"subtitle": "A String", # The subtitle of the chart.
|
|
"subtitleTextFormat": { # The format of a run of text in a cell. # The subtitle text format.
|
|
# Strikethrough and underline are not supported.
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
"title": "A String", # The title of the chart.
|
|
"titleTextFormat": { # The format of a run of text in a cell. # The title text format.
|
|
# Strikethrough and underline are not supported.
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
"treemapChart": { # A <a href="/chart/interactive/docs/gallery/treemap">Treemap chart</a>. # A treemap chart specification.
|
|
"parentLabels": { # The data included in a domain or series. # The data the contains the treemap cells' parent labels.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"sizeData": { # The data included in a domain or series. # The data that determines the size of each treemap data cell. This data is
|
|
# expected to be numeric. The cells corresponding to non-numeric or missing
|
|
# data will not be rendered. If color_data is not specified, this data
|
|
# is used to determine data cell background colors as well.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"hideTooltips": True or False, # True to hide tooltips.
|
|
"colorScale": { # A color scale for a treemap chart. # The color scale for data cells in the treemap chart. Data cells are
|
|
# assigned colors based on their color values. These color values come from
|
|
# color_data, or from size_data if color_data is not specified.
|
|
# Cells with color values less than or equal to min_value will
|
|
# have minValueColor as their
|
|
# background color. Cells with color values greater than or equal to
|
|
# max_value will have
|
|
# maxValueColor as their background
|
|
# color. Cells with color values between min_value and max_value will
|
|
# have background colors on a gradient between
|
|
# minValueColor and
|
|
# maxValueColor, the midpoint of
|
|
# the gradient being midValueColor.
|
|
# Cells with missing or non-numeric color values will have
|
|
# noDataColor as their background
|
|
# color.
|
|
"noDataColor": { # Represents a color in the RGBA color space. This representation is designed # The background color for cells that have no color data associated with
|
|
# them. Defaults to #000000 if not specified.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"midValueColor": { # Represents a color in the RGBA color space. This representation is designed # The background color for cells with a color value at the midpoint between
|
|
# minValue and
|
|
# maxValue. Defaults to #efe6dc if not
|
|
# specified.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"minValueColor": { # Represents a color in the RGBA color space. This representation is designed # The background color for cells with a color value less than or equal to
|
|
# minValue. Defaults to #dc3912 if not
|
|
# specified.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"maxValueColor": { # Represents a color in the RGBA color space. This representation is designed # The background color for cells with a color value greater than or equal
|
|
# to maxValue. Defaults to #109618 if not
|
|
# specified.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
},
|
|
"labels": { # The data included in a domain or series. # The data that contains the treemap cell labels.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"colorData": { # The data included in a domain or series. # The data that determines the background color of each treemap data cell.
|
|
# This field is optional. If not specified, size_data is used to
|
|
# determine background colors. If specified, the data is expected to be
|
|
# numeric. color_scale will determine how the values in this data map to
|
|
# data cell background colors.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"maxValue": 3.14, # The maximum possible data value. Cells with values greater than this will
|
|
# have the same color as cells with this value. If not specified, defaults
|
|
# to the actual maximum value from color_data, or the maximum value from
|
|
# size_data if color_data is not specified.
|
|
"minValue": 3.14, # The minimum possible data value. Cells with values less than this will
|
|
# have the same color as cells with this value. If not specified, defaults
|
|
# to the actual minimum value from color_data, or the minimum value from
|
|
# size_data if color_data is not specified.
|
|
"headerColor": { # Represents a color in the RGBA color space. This representation is designed # The background color for header cells.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"levels": 42, # The number of data levels to show on the treemap chart. These levels are
|
|
# interactive and are shown with their labels. Defaults to 2 if not
|
|
# specified.
|
|
"hintedLevels": 42, # The number of additional data levels beyond the labeled levels to be shown
|
|
# on the treemap chart. These levels are not interactive and are shown
|
|
# without their labels. Defaults to 0 if not specified.
|
|
"textFormat": { # The format of a run of text in a cell. # The text format for all labels on the chart.
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
},
|
|
"titleTextPosition": { # Position settings for text. # The title text position.
|
|
# This field is optional.
|
|
"horizontalAlignment": "A String", # Horizontal alignment setting for the piece of text.
|
|
},
|
|
"hiddenDimensionStrategy": "A String", # Determines how the charts will use hidden rows or columns.
|
|
"pieChart": { # A <a href="/chart/interactive/docs/gallery/piechart">pie chart</a>. # A pie chart specification.
|
|
"series": { # The data included in a domain or series. # The data that covers the one and only series of the pie chart.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"domain": { # The data included in a domain or series. # The data that covers the domain of the pie chart.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"threeDimensional": True or False, # True if the pie is three dimensional.
|
|
"legendPosition": "A String", # Where the legend of the pie chart should be drawn.
|
|
"pieHole": 3.14, # The size of the hole in the pie chart.
|
|
},
|
|
"candlestickChart": { # A <a href="/chart/interactive/docs/gallery/candlestickchart">candlestick # A candlestick chart specification.
|
|
# chart</a>.
|
|
"domain": { # The domain of a CandlestickChart. # The domain data (horizontal axis) for the candlestick chart. String data
|
|
# will be treated as discrete labels, other data will be treated as
|
|
# continuous values.
|
|
"reversed": True or False, # True to reverse the order of the domain values (horizontal axis).
|
|
"data": { # The data included in a domain or series. # The data of the CandlestickDomain.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
"data": [ # The Candlestick chart data.
|
|
# Only one CandlestickData is supported.
|
|
{ # The Candlestick chart data, each containing the low, open, close, and high
|
|
# values for a series.
|
|
"lowSeries": { # The series of a CandlestickData. # The range data (vertical axis) for the low/minimum value for each candle.
|
|
# This is the bottom of the candle's center line.
|
|
"data": { # The data included in a domain or series. # The data of the CandlestickSeries.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
"highSeries": { # The series of a CandlestickData. # The range data (vertical axis) for the high/maximum value for each
|
|
# candle. This is the top of the candle's center line.
|
|
"data": { # The data included in a domain or series. # The data of the CandlestickSeries.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
"openSeries": { # The series of a CandlestickData. # The range data (vertical axis) for the open/initial value for each
|
|
# candle. This is the bottom of the candle body. If less than the close
|
|
# value the candle will be filled. Otherwise the candle will be hollow.
|
|
"data": { # The data included in a domain or series. # The data of the CandlestickSeries.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
"closeSeries": { # The series of a CandlestickData. # The range data (vertical axis) for the close/final value for each candle.
|
|
# This is the top of the candle body. If greater than the open value the
|
|
# candle will be filled. Otherwise the candle will be hollow.
|
|
"data": { # The data included in a domain or series. # The data of the CandlestickSeries.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
},
|
|
],
|
|
},
|
|
"subtitleTextPosition": { # Position settings for text. # The subtitle text position.
|
|
# This field is optional.
|
|
"horizontalAlignment": "A String", # Horizontal alignment setting for the piece of text.
|
|
},
|
|
"backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the entire chart.
|
|
# Not applicable to Org charts.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"maximized": True or False, # True to make a chart fill the entire space in which it's rendered with
|
|
# minimum padding. False to use the default padding.
|
|
# (Not applicable to Geo and Org charts.)
|
|
"waterfallChart": { # A waterfall chart. # A waterfall chart specification.
|
|
"stackedType": "A String", # The stacked type.
|
|
"hideConnectorLines": True or False, # True to hide connector lines between columns.
|
|
"domain": { # The domain of a waterfall chart. # The domain data (horizontal axis) for the waterfall chart.
|
|
"reversed": True or False, # True to reverse the order of the domain values (horizontal axis).
|
|
"data": { # The data included in a domain or series. # The data of the WaterfallChartDomain.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
"connectorLineStyle": { # Properties that describe the style of a line. # The line style for the connector lines.
|
|
"width": 42, # The thickness of the line, in px.
|
|
"type": "A String", # The dash type of the line.
|
|
},
|
|
"series": [ # The data this waterfall chart is visualizing.
|
|
{ # A single series of data for a waterfall chart.
|
|
"hideTrailingSubtotal": True or False, # True to hide the subtotal column from the end of the series. By default,
|
|
# a subtotal column will appear at the end of each series. Setting this
|
|
# field to true will hide that subtotal column for this series.
|
|
"positiveColumnsStyle": { # Styles for a waterfall chart column. # Styles for all columns in this series with positive values.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the column.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"label": "A String", # The label of the column's legend.
|
|
},
|
|
"subtotalColumnsStyle": { # Styles for a waterfall chart column. # Styles for all subtotal columns in this series.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the column.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"label": "A String", # The label of the column's legend.
|
|
},
|
|
"negativeColumnsStyle": { # Styles for a waterfall chart column. # Styles for all columns in this series with negative values.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the column.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"label": "A String", # The label of the column's legend.
|
|
},
|
|
"customSubtotals": [ # Custom subtotal columns appearing in this series. The order in which
|
|
# subtotals are defined is not significant. Only one subtotal may be
|
|
# defined for each data point.
|
|
{ # A custom subtotal column for a waterfall chart series.
|
|
"dataIsSubtotal": True or False, # True if the data point at subtotal_index is the subtotal. If false,
|
|
# the subtotal will be computed and appear after the data point.
|
|
"subtotalIndex": 42, # The 0-based index of a data point within the series. If
|
|
# data_is_subtotal is true, the data point at this index is the
|
|
# subtotal. Otherwise, the subtotal appears after the data point with
|
|
# this index. A series can have multiple subtotals at arbitrary indices,
|
|
# but subtotals do not affect the indices of the data points. For
|
|
# example, if a series has three data points, their indices will always
|
|
# be 0, 1, and 2, regardless of how many subtotals exist on the series or
|
|
# what data points they are associated with.
|
|
"label": "A String", # A label for the subtotal column.
|
|
},
|
|
],
|
|
"data": { # The data included in a domain or series. # The data being visualized in this series.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
],
|
|
"firstValueIsTotal": True or False, # True to interpret the first value as a total.
|
|
},
|
|
"basicChart": { # The specification for a basic chart. See BasicChartType for the list # A basic chart specification, can be one of many kinds of charts.
|
|
# See BasicChartType for the list of all
|
|
# charts this supports.
|
|
# of charts this supports.
|
|
"stackedType": "A String", # The stacked type for charts that support vertical stacking.
|
|
# Applies to Area, Bar, Column, Combo, and Stepped Area charts.
|
|
"headerCount": 42, # The number of rows or columns in the data that are "headers".
|
|
# If not set, Google Sheets will guess how many rows are headers based
|
|
# on the data.
|
|
#
|
|
# (Note that BasicChartAxis.title may override the axis title
|
|
# inferred from the header values.)
|
|
"series": [ # The data this chart is visualizing.
|
|
{ # A single series of data in a chart.
|
|
# For example, if charting stock prices over time, multiple series may exist,
|
|
# one for the "Open Price", "High Price", "Low Price" and "Close Price".
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color for elements (i.e. bars, lines, points) associated with this
|
|
# series. If empty, a default color is used.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"series": { # The data included in a domain or series. # The data being visualized in this chart series.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"targetAxis": "A String", # The minor axis that will specify the range of values for this series.
|
|
# For example, if charting stocks over time, the "Volume" series
|
|
# may want to be pinned to the right with the prices pinned to the left,
|
|
# because the scale of trading volume is different than the scale of
|
|
# prices.
|
|
# It is an error to specify an axis that isn't a valid minor axis
|
|
# for the chart's type.
|
|
"lineStyle": { # Properties that describe the style of a line. # The line style of this series. Valid only if the
|
|
# chartType is AREA,
|
|
# LINE, or SCATTER.
|
|
# COMBO charts are also supported if the
|
|
# series chart type is
|
|
# AREA or LINE.
|
|
"width": 42, # The thickness of the line, in px.
|
|
"type": "A String", # The dash type of the line.
|
|
},
|
|
"type": "A String", # The type of this series. Valid only if the
|
|
# chartType is
|
|
# COMBO.
|
|
# Different types will change the way the series is visualized.
|
|
# Only LINE, AREA,
|
|
# and COLUMN are supported.
|
|
},
|
|
],
|
|
"interpolateNulls": True or False, # If some values in a series are missing, gaps may appear in the chart (e.g,
|
|
# segments of lines in a line chart will be missing). To eliminate these
|
|
# gaps set this to true.
|
|
# Applies to Line, Area, and Combo charts.
|
|
"legendPosition": "A String", # The position of the chart legend.
|
|
"lineSmoothing": True or False, # Gets whether all lines should be rendered smooth or straight by default.
|
|
# Applies to Line charts.
|
|
"compareMode": "A String", # The behavior of tooltips and data highlighting when hovering on data and
|
|
# chart area.
|
|
"domains": [ # The domain of data this is charting.
|
|
# Only a single domain is supported.
|
|
{ # The domain of a chart.
|
|
# For example, if charting stock prices over time, this would be the date.
|
|
"reversed": True or False, # True to reverse the order of the domain values (horizontal axis).
|
|
"domain": { # The data included in a domain or series. # The data of the domain. For example, if charting stock prices over time,
|
|
# this is the data representing the dates.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
],
|
|
"chartType": "A String", # The type of the chart.
|
|
"threeDimensional": True or False, # True to make the chart 3D.
|
|
# Applies to Bar and Column charts.
|
|
"axis": [ # The axis on the chart.
|
|
{ # An axis of the chart.
|
|
# A chart may not have more than one axis per
|
|
# axis position.
|
|
"position": "A String", # The position of this axis.
|
|
"format": { # The format of a run of text in a cell. # The format of the title.
|
|
# Only valid if the axis is not associated with the domain.
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
"title": "A String", # The title of this axis. If set, this overrides any title inferred
|
|
# from headers of the data.
|
|
"titleTextPosition": { # Position settings for text. # The axis title text position.
|
|
"horizontalAlignment": "A String", # Horizontal alignment setting for the piece of text.
|
|
},
|
|
},
|
|
],
|
|
},
|
|
"histogramChart": { # A <a href="/chart/interactive/docs/gallery/histogram">histogram chart</a>. # A histogram chart specification.
|
|
# A histogram chart groups data items into bins, displaying each bin as a
|
|
# column of stacked items. Histograms are used to display the distribution
|
|
# of a dataset. Each column of items represents a range into which those
|
|
# items fall. The number of bins can be chosen automatically or specified
|
|
# explicitly.
|
|
"outlierPercentile": 3.14, # The outlier percentile is used to ensure that outliers do not adversely
|
|
# affect the calculation of bucket sizes. For example, setting an outlier
|
|
# percentile of 0.05 indicates that the top and bottom 5% of values when
|
|
# calculating buckets. The values are still included in the chart, they will
|
|
# be added to the first or last buckets instead of their own buckets.
|
|
# Must be between 0.0 and 0.5.
|
|
"series": [ # The series for a histogram may be either a single series of values to be
|
|
# bucketed or multiple series, each of the same length, containing the name
|
|
# of the series followed by the values to be bucketed for that series.
|
|
{ # A histogram series containing the series color and data.
|
|
"barColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the column representing this series in each bucket.
|
|
# This field is optional.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"data": { # The data included in a domain or series. # The data for this histogram series.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
],
|
|
"showItemDividers": True or False, # Whether horizontal divider lines should be displayed between items in each
|
|
# column.
|
|
"legendPosition": "A String", # The position of the chart legend.
|
|
"bucketSize": 3.14, # By default the bucket size (the range of values stacked in a single
|
|
# column) is chosen automatically, but it may be overridden here.
|
|
# E.g., A bucket size of 1.5 results in buckets from 0 - 1.5, 1.5 - 3.0, etc.
|
|
# Cannot be negative.
|
|
# This field is optional.
|
|
},
|
|
"bubbleChart": { # A <a href="/chart/interactive/docs/gallery/bubblechart">bubble chart</a>. # A bubble chart specification.
|
|
"bubbleBorderColor": { # Represents a color in the RGBA color space. This representation is designed # The bubble border color.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"domain": { # The data included in a domain or series. # The data containing the bubble x-values. These values locate the bubbles
|
|
# in the chart horizontally.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"bubbleTextStyle": { # The format of a run of text in a cell. # The format of the text inside the bubbles.
|
|
# Underline and Strikethrough are not supported.
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
"series": { # The data included in a domain or series. # The data contianing the bubble y-values. These values locate the bubbles
|
|
# in the chart vertically.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"legendPosition": "A String", # Where the legend of the chart should be drawn.
|
|
"bubbleMaxRadiusSize": 42, # The max radius size of the bubbles, in pixels.
|
|
# If specified, the field must be a positive value.
|
|
"bubbleOpacity": 3.14, # The opacity of the bubbles between 0 and 1.0.
|
|
# 0 is fully transparent and 1 is fully opaque.
|
|
"groupIds": { # The data included in a domain or series. # The data containing the bubble group IDs. All bubbles with the same group
|
|
# ID are drawn in the same color. If bubble_sizes is specified then
|
|
# this field must also be specified but may contain blank values.
|
|
# This field is optional.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"bubbleSizes": { # The data included in a domain or series. # The data contianing the bubble sizes. Bubble sizes are used to draw
|
|
# the bubbles at different sizes relative to each other.
|
|
# If specified, group_ids must also be specified. This field is
|
|
# optional.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"bubbleLabels": { # The data included in a domain or series. # The data containing the bubble labels. These do not need to be unique.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"bubbleMinRadiusSize": 42, # The minimum radius size of the bubbles, in pixels.
|
|
# If specific, the field must be a positive value.
|
|
},
|
|
"orgChart": { # An <a href="/chart/interactive/docs/gallery/orgchart">org chart</a>. # An org chart specification.
|
|
# Org charts require a unique set of labels in labels and may
|
|
# optionally include parent_labels and tooltips.
|
|
# parent_labels contain, for each node, the label identifying the parent
|
|
# node. tooltips contain, for each node, an optional tooltip.
|
|
#
|
|
# For example, to describe an OrgChart with Alice as the CEO, Bob as the
|
|
# President (reporting to Alice) and Cathy as VP of Sales (also reporting to
|
|
# Alice), have labels contain "Alice", "Bob", "Cathy",
|
|
# parent_labels contain "", "Alice", "Alice" and tooltips contain
|
|
# "CEO", "President", "VP Sales".
|
|
"tooltips": { # The data included in a domain or series. # The data containing the tooltip for the corresponding node. A blank value
|
|
# results in no tooltip being displayed for the node.
|
|
# This field is optional.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"parentLabels": { # The data included in a domain or series. # The data containing the label of the parent for the corresponding node.
|
|
# A blank value indicates that the node has no parent and is a top-level
|
|
# node.
|
|
# This field is optional.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"nodeColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the org chart nodes.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"labels": { # The data included in a domain or series. # The data containing the labels for all the nodes in the chart. Labels
|
|
# must be unique.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"selectedNodeColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the selected org chart nodes.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"nodeSize": "A String", # The size of the org chart nodes.
|
|
},
|
|
},
|
|
},
|
|
],
|
|
"protectedRanges": [ # The protected ranges in this sheet.
|
|
{ # A protected range.
|
|
"unprotectedRanges": [ # The list of unprotected ranges within a protected sheet.
|
|
# Unprotected ranges are only supported on protected sheets.
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
"requestingUserCanEdit": True or False, # True if the user who requested this protected range can edit the
|
|
# protected area.
|
|
# This field is read-only.
|
|
"description": "A String", # The description of this protected range.
|
|
"namedRangeId": "A String", # The named range this protected range is backed by, if any.
|
|
#
|
|
# When writing, only one of range or named_range_id
|
|
# may be set.
|
|
"range": { # A range on a sheet. # The range that is being protected.
|
|
# The range may be fully unbounded, in which case this is considered
|
|
# a protected sheet.
|
|
#
|
|
# When writing, only one of range or named_range_id
|
|
# may be set.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
"editors": { # The editors of a protected range. # The users and groups with edit access to the protected range.
|
|
# This field is only visible to users with edit access to the protected
|
|
# range and the document.
|
|
# Editors are not supported with warning_only protection.
|
|
"domainUsersCanEdit": True or False, # True if anyone in the document's domain has edit access to the protected
|
|
# range. Domain protection is only supported on documents within a domain.
|
|
"users": [ # The email addresses of users with edit access to the protected range.
|
|
"A String",
|
|
],
|
|
"groups": [ # The email addresses of groups with edit access to the protected range.
|
|
"A String",
|
|
],
|
|
},
|
|
"protectedRangeId": 42, # The ID of the protected range.
|
|
# This field is read-only.
|
|
"warningOnly": True or False, # True if this protected range will show a warning when editing.
|
|
# Warning-based protection means that every user can edit data in the
|
|
# protected range, except editing will prompt a warning asking the user
|
|
# to confirm the edit.
|
|
#
|
|
# When writing: if this field is true, then editors is ignored.
|
|
# Additionally, if this field is changed from true to false and the
|
|
# `editors` field is not set (nor included in the field mask), then
|
|
# the editors will be set to all the editors in the document.
|
|
},
|
|
],
|
|
"data": [ # Data in the grid, if this is a grid sheet.
|
|
# The number of GridData objects returned is dependent on the number of
|
|
# ranges requested on this sheet. For example, if this is representing
|
|
# `Sheet1`, and the spreadsheet was requested with ranges
|
|
# `Sheet1!A1:C10` and `Sheet1!D15:E20`, then the first GridData will have a
|
|
# startRow/startColumn of `0`,
|
|
# while the second one will have `startRow 14` (zero-based row 15),
|
|
# and `startColumn 3` (zero-based column D).
|
|
{ # Data in the grid, as well as metadata about the dimensions.
|
|
"rowMetadata": [ # Metadata about the requested rows in the grid, starting with the row
|
|
# in start_row.
|
|
{ # Properties about a dimension.
|
|
"pixelSize": 42, # The height (if a row) or width (if a column) of the dimension in pixels.
|
|
"developerMetadata": [ # The developer metadata associated with a single row or column.
|
|
{ # Developer metadata associated with a location or object in a spreadsheet.
|
|
# Developer metadata may be used to associate arbitrary data with various
|
|
# parts of a spreadsheet and will remain associated at those locations as they
|
|
# move around and the spreadsheet is edited. For example, if developer
|
|
# metadata is associated with row 5 and another row is then subsequently
|
|
# inserted above row 5, that original metadata will still be associated with
|
|
# the row it was first associated with (what is now row 6). If the associated
|
|
# object is deleted its metadata is deleted too.
|
|
"metadataId": 42, # The spreadsheet-scoped unique ID that identifies the metadata. IDs may be
|
|
# specified when metadata is created, otherwise one will be randomly
|
|
# generated and assigned. Must be positive.
|
|
"metadataValue": "A String", # Data associated with the metadata's key.
|
|
"location": { # A location where metadata may be associated in a spreadsheet. # The location where the metadata is associated.
|
|
"locationType": "A String", # The type of location this object represents. This field is read-only.
|
|
"dimensionRange": { # A range along a single dimension on a sheet. # Represents the row or column when metadata is associated with
|
|
# a dimension. The specified DimensionRange must represent a single row
|
|
# or column; it cannot be unbounded or span multiple rows or columns.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open: the start index is inclusive
|
|
# and the end index is exclusive.
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
"endIndex": 42, # The end (exclusive) of the span, or not set if unbounded.
|
|
"startIndex": 42, # The start (inclusive) of the span, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this span is on.
|
|
"dimension": "A String", # The dimension of the span.
|
|
},
|
|
"spreadsheet": True or False, # True when metadata is associated with an entire spreadsheet.
|
|
"sheetId": 42, # The ID of the sheet when metadata is associated with an entire sheet.
|
|
},
|
|
"visibility": "A String", # The metadata visibility. Developer metadata must always have a visibility
|
|
# specified.
|
|
"metadataKey": "A String", # The metadata key. There may be multiple metadata in a spreadsheet with the
|
|
# same key. Developer metadata must always have a key specified.
|
|
},
|
|
],
|
|
"hiddenByUser": True or False, # True if this dimension is explicitly hidden.
|
|
"hiddenByFilter": True or False, # True if this dimension is being filtered.
|
|
# This field is read-only.
|
|
},
|
|
],
|
|
"startColumn": 42, # The first column this GridData refers to, zero-based.
|
|
"columnMetadata": [ # Metadata about the requested columns in the grid, starting with the column
|
|
# in start_column.
|
|
{ # Properties about a dimension.
|
|
"pixelSize": 42, # The height (if a row) or width (if a column) of the dimension in pixels.
|
|
"developerMetadata": [ # The developer metadata associated with a single row or column.
|
|
{ # Developer metadata associated with a location or object in a spreadsheet.
|
|
# Developer metadata may be used to associate arbitrary data with various
|
|
# parts of a spreadsheet and will remain associated at those locations as they
|
|
# move around and the spreadsheet is edited. For example, if developer
|
|
# metadata is associated with row 5 and another row is then subsequently
|
|
# inserted above row 5, that original metadata will still be associated with
|
|
# the row it was first associated with (what is now row 6). If the associated
|
|
# object is deleted its metadata is deleted too.
|
|
"metadataId": 42, # The spreadsheet-scoped unique ID that identifies the metadata. IDs may be
|
|
# specified when metadata is created, otherwise one will be randomly
|
|
# generated and assigned. Must be positive.
|
|
"metadataValue": "A String", # Data associated with the metadata's key.
|
|
"location": { # A location where metadata may be associated in a spreadsheet. # The location where the metadata is associated.
|
|
"locationType": "A String", # The type of location this object represents. This field is read-only.
|
|
"dimensionRange": { # A range along a single dimension on a sheet. # Represents the row or column when metadata is associated with
|
|
# a dimension. The specified DimensionRange must represent a single row
|
|
# or column; it cannot be unbounded or span multiple rows or columns.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open: the start index is inclusive
|
|
# and the end index is exclusive.
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
"endIndex": 42, # The end (exclusive) of the span, or not set if unbounded.
|
|
"startIndex": 42, # The start (inclusive) of the span, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this span is on.
|
|
"dimension": "A String", # The dimension of the span.
|
|
},
|
|
"spreadsheet": True or False, # True when metadata is associated with an entire spreadsheet.
|
|
"sheetId": 42, # The ID of the sheet when metadata is associated with an entire sheet.
|
|
},
|
|
"visibility": "A String", # The metadata visibility. Developer metadata must always have a visibility
|
|
# specified.
|
|
"metadataKey": "A String", # The metadata key. There may be multiple metadata in a spreadsheet with the
|
|
# same key. Developer metadata must always have a key specified.
|
|
},
|
|
],
|
|
"hiddenByUser": True or False, # True if this dimension is explicitly hidden.
|
|
"hiddenByFilter": True or False, # True if this dimension is being filtered.
|
|
# This field is read-only.
|
|
},
|
|
],
|
|
"startRow": 42, # The first row this GridData refers to, zero-based.
|
|
"rowData": [ # The data in the grid, one entry per row,
|
|
# starting with the row in startRow.
|
|
# The values in RowData will correspond to columns starting
|
|
# at start_column.
|
|
{ # Data about each cell in a row.
|
|
"values": [ # The values in the row, one per column.
|
|
{ # Data about a specific cell.
|
|
"pivotTable": { # A pivot table. # A pivot table anchored at this cell. The size of pivot table itself
|
|
# is computed dynamically based on its data, grouping, filters, values,
|
|
# etc. Only the top-left cell of the pivot table contains the pivot table
|
|
# definition. The other cells will contain the calculated values of the
|
|
# results of the pivot in their effective_value fields.
|
|
"valueLayout": "A String", # Whether values should be listed horizontally (as columns)
|
|
# or vertically (as rows).
|
|
"rows": [ # Each row grouping in the pivot table.
|
|
{ # A single grouping (either row or column) in a pivot table.
|
|
"showTotals": True or False, # True if the pivot table should include the totals for this grouping.
|
|
"repeatHeadings": True or False, # True if the headings in this pivot group should be repeated.
|
|
# This is only valid for row groupings and is ignored by columns.
|
|
#
|
|
# By default, we minimize repitition of headings by not showing higher
|
|
# level headings where they are the same. For example, even though the
|
|
# third row below corresponds to "Q1 Mar", "Q1" is not shown because
|
|
# it is redundant with previous rows. Setting repeat_headings to true
|
|
# would cause "Q1" to be repeated for "Feb" and "Mar".
|
|
#
|
|
# +--------------+
|
|
# | Q1 | Jan |
|
|
# | | Feb |
|
|
# | | Mar |
|
|
# +--------+-----+
|
|
# | Q1 Total |
|
|
# +--------------+
|
|
"label": "A String", # The labels to use for the row/column groups which can be customized. For
|
|
# example, in the following pivot table, the row label is `Region` (which
|
|
# could be renamed to `State`) and the column label is `Product` (which
|
|
# could be renamed `Item`). Pivot tables created before December 2017 do
|
|
# not have header labels. If you'd like to add header labels to an existing
|
|
# pivot table, please delete the existing pivot table and then create a new
|
|
# pivot table with same parameters.
|
|
#
|
|
# +--------------+---------+-------+
|
|
# | SUM of Units | Product | |
|
|
# | Region | Pen | Paper |
|
|
# +--------------+---------+-------+
|
|
# | New York | 345 | 98 |
|
|
# | Oregon | 234 | 123 |
|
|
# | Tennessee | 531 | 415 |
|
|
# +--------------+---------+-------+
|
|
# | Grand Total | 1110 | 636 |
|
|
# +--------------+---------+-------+
|
|
"valueMetadata": [ # Metadata about values in the grouping.
|
|
{ # Metadata about a value in a pivot grouping.
|
|
"collapsed": True or False, # True if the data corresponding to the value is collapsed.
|
|
"value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to.
|
|
# (Note that formulaValue is not valid,
|
|
# because the values will be calculated.)
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
},
|
|
],
|
|
"valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by.
|
|
# If not specified, sorting is alphabetical by this group's values.
|
|
"buckets": [ # Determines the bucket from which values are chosen to sort.
|
|
#
|
|
# For example, in a pivot table with one row group & two column groups,
|
|
# the row group can list up to two values. The first value corresponds
|
|
# to a value within the first column group, and the second value
|
|
# corresponds to a value in the second column group. If no values
|
|
# are listed, this would indicate that the row should be sorted according
|
|
# to the "Grand Total" over the column groups. If a single value is listed,
|
|
# this would correspond to using the "Total" of that bucket.
|
|
{ # The kinds of value that a cell in a spreadsheet can have.
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
],
|
|
"valuesIndex": 42, # The offset in the PivotTable.values list which the values in this
|
|
# grouping should be sorted by.
|
|
},
|
|
"sortOrder": "A String", # The order the values in this group should be sorted.
|
|
"groupRule": { # An optional setting on a PivotGroup that defines buckets for the values # The group rule to apply to this row/column group.
|
|
# in the source data column rather than breaking out each individual value.
|
|
# Only one PivotGroup with a group rule may be added for each column in
|
|
# the source data, though on any given column you may add both a
|
|
# PivotGroup that has a rule and a PivotGroup that does not.
|
|
"histogramRule": { # Allows you to organize the numeric values in a source data column into # A HistogramRule.
|
|
# buckets of a constant size. All values from HistogramRule.start to
|
|
# HistogramRule.end are placed into groups of size
|
|
# HistogramRule.interval. In addition, all values below
|
|
# HistogramRule.start are placed in one group, and all values above
|
|
# HistogramRule.end are placed in another. Only
|
|
# HistogramRule.interval is required, though if HistogramRule.start
|
|
# and HistogramRule.end are both provided, HistogramRule.start must
|
|
# be less than HistogramRule.end. For example, a pivot table showing
|
|
# average purchase amount by age that has 50+ rows:
|
|
#
|
|
# +-----+-------------------+
|
|
# | Age | AVERAGE of Amount |
|
|
# +-----+-------------------+
|
|
# | 16 | $27.13 |
|
|
# | 17 | $5.24 |
|
|
# | 18 | $20.15 |
|
|
# ...
|
|
# +-----+-------------------+
|
|
# could be turned into a pivot table that looks like the one below by
|
|
# applying a histogram group rule with a HistogramRule.start of 25,
|
|
# an HistogramRule.interval of 20, and an HistogramRule.end
|
|
# of 65.
|
|
#
|
|
# +-------------+-------------------+
|
|
# | Grouped Age | AVERAGE of Amount |
|
|
# +-------------+-------------------+
|
|
# | < 25 | $19.34 |
|
|
# | 25-45 | $31.43 |
|
|
# | 45-65 | $35.87 |
|
|
# | > 65 | $27.55 |
|
|
# +-------------+-------------------+
|
|
# | Grand Total | $29.12 |
|
|
# +-------------+-------------------+
|
|
"start": 3.14, # The minimum value at which items are placed into buckets
|
|
# of constant size. Values below start are lumped into a single bucket.
|
|
# This field is optional.
|
|
"interval": 3.14, # The size of the buckets that are created. Must be positive.
|
|
"end": 3.14, # The maximum value at which items are placed into buckets
|
|
# of constant size. Values above end are lumped into a single bucket.
|
|
# This field is optional.
|
|
},
|
|
"manualRule": { # Allows you to manually organize the values in a source data column into # A ManualRule.
|
|
# buckets with names of your choosing. For example, a pivot table that
|
|
# aggregates population by state:
|
|
#
|
|
# +-------+-------------------+
|
|
# | State | SUM of Population |
|
|
# +-------+-------------------+
|
|
# | AK | 0.7 |
|
|
# | AL | 4.8 |
|
|
# | AR | 2.9 |
|
|
# ...
|
|
# +-------+-------------------+
|
|
# could be turned into a pivot table that aggregates population by time zone
|
|
# by providing a list of groups (for example, groupName = 'Central',
|
|
# items = ['AL', 'AR', 'IA', ...]) to a manual group rule.
|
|
# Note that a similar effect could be achieved by adding a time zone column
|
|
# to the source data and adjusting the pivot table.
|
|
#
|
|
# +-----------+-------------------+
|
|
# | Time Zone | SUM of Population |
|
|
# +-----------+-------------------+
|
|
# | Central | 106.3 |
|
|
# | Eastern | 151.9 |
|
|
# | Mountain | 17.4 |
|
|
# ...
|
|
# +-----------+-------------------+
|
|
"groups": [ # The list of group names and the corresponding items from the source data
|
|
# that map to each group name.
|
|
{ # A group name and a list of items from the source data that should be placed
|
|
# in the group with this name.
|
|
"items": [ # The items in the source data that should be placed into this group. Each
|
|
# item may be a string, number, or boolean. Items may appear in at most one
|
|
# group within a given ManualRule. Items that do not appear in any
|
|
# group will appear on their own.
|
|
{ # The kinds of value that a cell in a spreadsheet can have.
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
],
|
|
"groupName": { # The kinds of value that a cell in a spreadsheet can have. # The group name, which must be a string. Each group in a given
|
|
# ManualRule must have a unique group name.
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
},
|
|
],
|
|
},
|
|
"dateTimeRule": { # Allows you to organize the date-time values in a source data column into # A DateTimeRule.
|
|
# buckets based on selected parts of their date or time values. For example,
|
|
# consider a pivot table showing sales transactions by date:
|
|
#
|
|
# +----------+--------------+
|
|
# | Date | SUM of Sales |
|
|
# +----------+--------------+
|
|
# | 1/1/2017 | $621.14 |
|
|
# | 2/3/2017 | $708.84 |
|
|
# | 5/8/2017 | $326.84 |
|
|
# ...
|
|
# +----------+--------------+
|
|
# Applying a date-time group rule with a DateTimeRuleType of YEAR_MONTH
|
|
# results in the following pivot table.
|
|
#
|
|
# +--------------+--------------+
|
|
# | Grouped Date | SUM of Sales |
|
|
# +--------------+--------------+
|
|
# | 2017-Jan | $53,731.78 |
|
|
# | 2017-Feb | $83,475.32 |
|
|
# | 2017-Mar | $94,385.05 |
|
|
# ...
|
|
# +--------------+--------------+
|
|
"type": "A String", # The type of date-time grouping to apply.
|
|
},
|
|
},
|
|
"sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on.
|
|
#
|
|
# For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0`
|
|
# means this group refers to column `C`, whereas the offset `1` would refer
|
|
# to column `D`.
|
|
},
|
|
],
|
|
"source": { # A range on a sheet. # The range the pivot table is reading data from.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
"values": [ # A list of values to include in the pivot table.
|
|
{ # The definition of how a value in a pivot table should be calculated.
|
|
"formula": "A String", # A custom formula to calculate the value. The formula must start
|
|
# with an `=` character.
|
|
"name": "A String", # A name to use for the value.
|
|
"sourceColumnOffset": 42, # The column offset of the source range that this value reads from.
|
|
#
|
|
# For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0`
|
|
# means this value refers to column `C`, whereas the offset `1` would
|
|
# refer to column `D`.
|
|
"summarizeFunction": "A String", # A function to summarize the value.
|
|
# If formula is set, the only supported values are
|
|
# SUM and
|
|
# CUSTOM.
|
|
# If sourceColumnOffset is set, then `CUSTOM`
|
|
# is not supported.
|
|
"calculatedDisplayType": "A String", # If specified, indicates that pivot values should be displayed as
|
|
# the result of a calculation with another pivot value. For example, if
|
|
# calculated_display_type is specified as PERCENT_OF_GRAND_TOTAL, all the
|
|
# pivot values are displayed as the percentage of the grand total. In
|
|
# the Sheets UI, this is referred to as "Show As" in the value section of a
|
|
# pivot table.
|
|
},
|
|
],
|
|
"criteria": { # An optional mapping of filters per source column offset.
|
|
#
|
|
# The filters are applied before aggregating data into the pivot table.
|
|
# The map's key is the column offset of the source range that you want to
|
|
# filter, and the value is the criteria for that column.
|
|
#
|
|
# For example, if the source was `C10:E15`, a key of `0` will have the filter
|
|
# for column `C`, whereas the key `1` is for column `D`.
|
|
"a_key": { # Criteria for showing/hiding rows in a pivot table.
|
|
"visibleValues": [ # Values that should be included. Values not listed here are excluded.
|
|
"A String",
|
|
],
|
|
},
|
|
},
|
|
"columns": [ # Each column grouping in the pivot table.
|
|
{ # A single grouping (either row or column) in a pivot table.
|
|
"showTotals": True or False, # True if the pivot table should include the totals for this grouping.
|
|
"repeatHeadings": True or False, # True if the headings in this pivot group should be repeated.
|
|
# This is only valid for row groupings and is ignored by columns.
|
|
#
|
|
# By default, we minimize repitition of headings by not showing higher
|
|
# level headings where they are the same. For example, even though the
|
|
# third row below corresponds to "Q1 Mar", "Q1" is not shown because
|
|
# it is redundant with previous rows. Setting repeat_headings to true
|
|
# would cause "Q1" to be repeated for "Feb" and "Mar".
|
|
#
|
|
# +--------------+
|
|
# | Q1 | Jan |
|
|
# | | Feb |
|
|
# | | Mar |
|
|
# +--------+-----+
|
|
# | Q1 Total |
|
|
# +--------------+
|
|
"label": "A String", # The labels to use for the row/column groups which can be customized. For
|
|
# example, in the following pivot table, the row label is `Region` (which
|
|
# could be renamed to `State`) and the column label is `Product` (which
|
|
# could be renamed `Item`). Pivot tables created before December 2017 do
|
|
# not have header labels. If you'd like to add header labels to an existing
|
|
# pivot table, please delete the existing pivot table and then create a new
|
|
# pivot table with same parameters.
|
|
#
|
|
# +--------------+---------+-------+
|
|
# | SUM of Units | Product | |
|
|
# | Region | Pen | Paper |
|
|
# +--------------+---------+-------+
|
|
# | New York | 345 | 98 |
|
|
# | Oregon | 234 | 123 |
|
|
# | Tennessee | 531 | 415 |
|
|
# +--------------+---------+-------+
|
|
# | Grand Total | 1110 | 636 |
|
|
# +--------------+---------+-------+
|
|
"valueMetadata": [ # Metadata about values in the grouping.
|
|
{ # Metadata about a value in a pivot grouping.
|
|
"collapsed": True or False, # True if the data corresponding to the value is collapsed.
|
|
"value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to.
|
|
# (Note that formulaValue is not valid,
|
|
# because the values will be calculated.)
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
},
|
|
],
|
|
"valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by.
|
|
# If not specified, sorting is alphabetical by this group's values.
|
|
"buckets": [ # Determines the bucket from which values are chosen to sort.
|
|
#
|
|
# For example, in a pivot table with one row group & two column groups,
|
|
# the row group can list up to two values. The first value corresponds
|
|
# to a value within the first column group, and the second value
|
|
# corresponds to a value in the second column group. If no values
|
|
# are listed, this would indicate that the row should be sorted according
|
|
# to the "Grand Total" over the column groups. If a single value is listed,
|
|
# this would correspond to using the "Total" of that bucket.
|
|
{ # The kinds of value that a cell in a spreadsheet can have.
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
],
|
|
"valuesIndex": 42, # The offset in the PivotTable.values list which the values in this
|
|
# grouping should be sorted by.
|
|
},
|
|
"sortOrder": "A String", # The order the values in this group should be sorted.
|
|
"groupRule": { # An optional setting on a PivotGroup that defines buckets for the values # The group rule to apply to this row/column group.
|
|
# in the source data column rather than breaking out each individual value.
|
|
# Only one PivotGroup with a group rule may be added for each column in
|
|
# the source data, though on any given column you may add both a
|
|
# PivotGroup that has a rule and a PivotGroup that does not.
|
|
"histogramRule": { # Allows you to organize the numeric values in a source data column into # A HistogramRule.
|
|
# buckets of a constant size. All values from HistogramRule.start to
|
|
# HistogramRule.end are placed into groups of size
|
|
# HistogramRule.interval. In addition, all values below
|
|
# HistogramRule.start are placed in one group, and all values above
|
|
# HistogramRule.end are placed in another. Only
|
|
# HistogramRule.interval is required, though if HistogramRule.start
|
|
# and HistogramRule.end are both provided, HistogramRule.start must
|
|
# be less than HistogramRule.end. For example, a pivot table showing
|
|
# average purchase amount by age that has 50+ rows:
|
|
#
|
|
# +-----+-------------------+
|
|
# | Age | AVERAGE of Amount |
|
|
# +-----+-------------------+
|
|
# | 16 | $27.13 |
|
|
# | 17 | $5.24 |
|
|
# | 18 | $20.15 |
|
|
# ...
|
|
# +-----+-------------------+
|
|
# could be turned into a pivot table that looks like the one below by
|
|
# applying a histogram group rule with a HistogramRule.start of 25,
|
|
# an HistogramRule.interval of 20, and an HistogramRule.end
|
|
# of 65.
|
|
#
|
|
# +-------------+-------------------+
|
|
# | Grouped Age | AVERAGE of Amount |
|
|
# +-------------+-------------------+
|
|
# | < 25 | $19.34 |
|
|
# | 25-45 | $31.43 |
|
|
# | 45-65 | $35.87 |
|
|
# | > 65 | $27.55 |
|
|
# +-------------+-------------------+
|
|
# | Grand Total | $29.12 |
|
|
# +-------------+-------------------+
|
|
"start": 3.14, # The minimum value at which items are placed into buckets
|
|
# of constant size. Values below start are lumped into a single bucket.
|
|
# This field is optional.
|
|
"interval": 3.14, # The size of the buckets that are created. Must be positive.
|
|
"end": 3.14, # The maximum value at which items are placed into buckets
|
|
# of constant size. Values above end are lumped into a single bucket.
|
|
# This field is optional.
|
|
},
|
|
"manualRule": { # Allows you to manually organize the values in a source data column into # A ManualRule.
|
|
# buckets with names of your choosing. For example, a pivot table that
|
|
# aggregates population by state:
|
|
#
|
|
# +-------+-------------------+
|
|
# | State | SUM of Population |
|
|
# +-------+-------------------+
|
|
# | AK | 0.7 |
|
|
# | AL | 4.8 |
|
|
# | AR | 2.9 |
|
|
# ...
|
|
# +-------+-------------------+
|
|
# could be turned into a pivot table that aggregates population by time zone
|
|
# by providing a list of groups (for example, groupName = 'Central',
|
|
# items = ['AL', 'AR', 'IA', ...]) to a manual group rule.
|
|
# Note that a similar effect could be achieved by adding a time zone column
|
|
# to the source data and adjusting the pivot table.
|
|
#
|
|
# +-----------+-------------------+
|
|
# | Time Zone | SUM of Population |
|
|
# +-----------+-------------------+
|
|
# | Central | 106.3 |
|
|
# | Eastern | 151.9 |
|
|
# | Mountain | 17.4 |
|
|
# ...
|
|
# +-----------+-------------------+
|
|
"groups": [ # The list of group names and the corresponding items from the source data
|
|
# that map to each group name.
|
|
{ # A group name and a list of items from the source data that should be placed
|
|
# in the group with this name.
|
|
"items": [ # The items in the source data that should be placed into this group. Each
|
|
# item may be a string, number, or boolean. Items may appear in at most one
|
|
# group within a given ManualRule. Items that do not appear in any
|
|
# group will appear on their own.
|
|
{ # The kinds of value that a cell in a spreadsheet can have.
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
],
|
|
"groupName": { # The kinds of value that a cell in a spreadsheet can have. # The group name, which must be a string. Each group in a given
|
|
# ManualRule must have a unique group name.
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
},
|
|
],
|
|
},
|
|
"dateTimeRule": { # Allows you to organize the date-time values in a source data column into # A DateTimeRule.
|
|
# buckets based on selected parts of their date or time values. For example,
|
|
# consider a pivot table showing sales transactions by date:
|
|
#
|
|
# +----------+--------------+
|
|
# | Date | SUM of Sales |
|
|
# +----------+--------------+
|
|
# | 1/1/2017 | $621.14 |
|
|
# | 2/3/2017 | $708.84 |
|
|
# | 5/8/2017 | $326.84 |
|
|
# ...
|
|
# +----------+--------------+
|
|
# Applying a date-time group rule with a DateTimeRuleType of YEAR_MONTH
|
|
# results in the following pivot table.
|
|
#
|
|
# +--------------+--------------+
|
|
# | Grouped Date | SUM of Sales |
|
|
# +--------------+--------------+
|
|
# | 2017-Jan | $53,731.78 |
|
|
# | 2017-Feb | $83,475.32 |
|
|
# | 2017-Mar | $94,385.05 |
|
|
# ...
|
|
# +--------------+--------------+
|
|
"type": "A String", # The type of date-time grouping to apply.
|
|
},
|
|
},
|
|
"sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on.
|
|
#
|
|
# For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0`
|
|
# means this group refers to column `C`, whereas the offset `1` would refer
|
|
# to column `D`.
|
|
},
|
|
],
|
|
},
|
|
"hyperlink": "A String", # A hyperlink this cell points to, if any.
|
|
# This field is read-only. (To set it, use a `=HYPERLINK` formula
|
|
# in the userEnteredValue.formulaValue
|
|
# field.)
|
|
"effectiveValue": { # The kinds of value that a cell in a spreadsheet can have. # The effective value of the cell. For cells with formulas, this is
|
|
# the calculated value. For cells with literals, this is
|
|
# the same as the user_entered_value.
|
|
# This field is read-only.
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
"formattedValue": "A String", # The formatted value of the cell.
|
|
# This is the value as it's shown to the user.
|
|
# This field is read-only.
|
|
"userEnteredValue": { # The kinds of value that a cell in a spreadsheet can have. # The value the user entered in the cell. e.g, `1234`, `'Hello'`, or `=NOW()`
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# serial number format.
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
"note": "A String", # Any note on the cell.
|
|
"effectiveFormat": { # The format of a cell. # The effective format being used by the cell.
|
|
# This includes the results of applying any conditional formatting and,
|
|
# if the cell contains a formula, the computed number format.
|
|
# If the effective format is the default format, effective format will
|
|
# not be written.
|
|
# This field is read-only.
|
|
"numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
|
|
"pattern": "A String", # Pattern string used for formatting. If not set, a default pattern based on
|
|
# the user's locale will be used if necessary for the given type.
|
|
# See the [Date and Number Formats guide](/sheets/api/guides/formats) for
|
|
# more information about the supported patterns.
|
|
"type": "A String", # The type of the number format.
|
|
# When writing, this field must be set.
|
|
},
|
|
"textDirection": "A String", # The direction of the text in the cell.
|
|
"padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
|
|
# When updating padding, every field must be specified.
|
|
"top": 42, # The top padding of the cell.
|
|
"left": 42, # The left padding of the cell.
|
|
"right": 42, # The right padding of the cell.
|
|
"bottom": 42, # The bottom padding of the cell.
|
|
},
|
|
"horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
|
|
"backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"verticalAlignment": "A String", # The vertical alignment of the value in the cell.
|
|
"borders": { # The borders of the cell. # The borders of the cell.
|
|
"top": { # A border along a cell. # The top border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"right": { # A border along a cell. # The right border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"bottom": { # A border along a cell. # The bottom border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"left": { # A border along a cell. # The left border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
},
|
|
"textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell
|
|
"angle": 42, # The angle between the standard orientation and the desired orientation.
|
|
# Measured in degrees. Valid values are between -90 and 90. Positive
|
|
# angles are angled upwards, negative are angled downwards.
|
|
#
|
|
# Note: For LTR text direction positive angles are in the
|
|
# counterclockwise direction, whereas for RTL they are in the clockwise
|
|
# direction
|
|
"vertical": True or False, # If true, text reads top to bottom, but the orientation of individual
|
|
# characters is unchanged.
|
|
# For example:
|
|
#
|
|
# | V |
|
|
# | e |
|
|
# | r |
|
|
# | t |
|
|
# | i |
|
|
# | c |
|
|
# | a |
|
|
# | l |
|
|
},
|
|
"hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
|
|
"textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
"wrapStrategy": "A String", # The wrap strategy for the value in the cell.
|
|
},
|
|
"userEnteredFormat": { # The format of a cell. # The format the user entered for the cell.
|
|
#
|
|
# When writing, the new format will be merged with the existing format.
|
|
"numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
|
|
"pattern": "A String", # Pattern string used for formatting. If not set, a default pattern based on
|
|
# the user's locale will be used if necessary for the given type.
|
|
# See the [Date and Number Formats guide](/sheets/api/guides/formats) for
|
|
# more information about the supported patterns.
|
|
"type": "A String", # The type of the number format.
|
|
# When writing, this field must be set.
|
|
},
|
|
"textDirection": "A String", # The direction of the text in the cell.
|
|
"padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
|
|
# When updating padding, every field must be specified.
|
|
"top": 42, # The top padding of the cell.
|
|
"left": 42, # The left padding of the cell.
|
|
"right": 42, # The right padding of the cell.
|
|
"bottom": 42, # The bottom padding of the cell.
|
|
},
|
|
"horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
|
|
"backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"verticalAlignment": "A String", # The vertical alignment of the value in the cell.
|
|
"borders": { # The borders of the cell. # The borders of the cell.
|
|
"top": { # A border along a cell. # The top border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"right": { # A border along a cell. # The right border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"bottom": { # A border along a cell. # The bottom border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"left": { # A border along a cell. # The left border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
},
|
|
"textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell
|
|
"angle": 42, # The angle between the standard orientation and the desired orientation.
|
|
# Measured in degrees. Valid values are between -90 and 90. Positive
|
|
# angles are angled upwards, negative are angled downwards.
|
|
#
|
|
# Note: For LTR text direction positive angles are in the
|
|
# counterclockwise direction, whereas for RTL they are in the clockwise
|
|
# direction
|
|
"vertical": True or False, # If true, text reads top to bottom, but the orientation of individual
|
|
# characters is unchanged.
|
|
# For example:
|
|
#
|
|
# | V |
|
|
# | e |
|
|
# | r |
|
|
# | t |
|
|
# | i |
|
|
# | c |
|
|
# | a |
|
|
# | l |
|
|
},
|
|
"hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
|
|
"textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
"wrapStrategy": "A String", # The wrap strategy for the value in the cell.
|
|
},
|
|
"dataValidation": { # A data validation rule. # A data validation rule on the cell, if any.
|
|
#
|
|
# When writing, the new data validation rule will overwrite any prior rule.
|
|
"showCustomUi": True or False, # True if the UI should be customized based on the kind of condition.
|
|
# If true, "List" conditions will show a dropdown.
|
|
"strict": True or False, # True if invalid data should be rejected.
|
|
"inputMessage": "A String", # A message to show the user when adding data to the cell.
|
|
"condition": { # A condition that can evaluate to true or false. # The condition that data in the cell must match.
|
|
# BooleanConditions are used by conditional formatting,
|
|
# data validation, and the criteria in filters.
|
|
"values": [ # The values of the condition. The number of supported values depends
|
|
# on the condition type. Some support zero values,
|
|
# others one or two values,
|
|
# and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
|
|
{ # The value of the condition.
|
|
"relativeDate": "A String", # A relative date (based on the current date).
|
|
# Valid only if the type is
|
|
# DATE_BEFORE,
|
|
# DATE_AFTER,
|
|
# DATE_ON_OR_BEFORE or
|
|
# DATE_ON_OR_AFTER.
|
|
#
|
|
# Relative dates are not supported in data validation.
|
|
# They are supported only in conditional formatting and
|
|
# conditional filters.
|
|
"userEnteredValue": "A String", # A value the condition is based on.
|
|
# The value is parsed as if the user typed into a cell.
|
|
# Formulas are supported (and must begin with an `=` or a '+').
|
|
},
|
|
],
|
|
"type": "A String", # The type of condition.
|
|
},
|
|
},
|
|
"textFormatRuns": [ # Runs of rich text applied to subsections of the cell. Runs are only valid
|
|
# on user entered strings, not formulas, bools, or numbers.
|
|
# Runs start at specific indexes in the text and continue until the next
|
|
# run. Properties of a run will continue unless explicitly changed
|
|
# in a subsequent run (and properties of the first run will continue
|
|
# the properties of the cell unless explicitly changed).
|
|
#
|
|
# When writing, the new runs will overwrite any prior runs. When writing a
|
|
# new user_entered_value, previous runs are erased.
|
|
{ # A run of a text format. The format of this run continues until the start
|
|
# index of the next run.
|
|
# When updating, all fields must be set.
|
|
"startIndex": 42, # The character index where this run starts.
|
|
"format": { # The format of a run of text in a cell. # The format of this run. Absent values inherit the cell's format.
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
},
|
|
],
|
|
},
|
|
],
|
|
},
|
|
],
|
|
},
|
|
],
|
|
"rowGroups": [ # All row groups on this sheet, ordered by increasing range start index, then
|
|
# by group depth.
|
|
{ # A group over an interval of rows or columns on a sheet, which can contain or
|
|
# be contained within other groups. A group can be collapsed or expanded as a
|
|
# unit on the sheet.
|
|
"range": { # A range along a single dimension on a sheet. # The range over which this group exists.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open: the start index is inclusive
|
|
# and the end index is exclusive.
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
"endIndex": 42, # The end (exclusive) of the span, or not set if unbounded.
|
|
"startIndex": 42, # The start (inclusive) of the span, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this span is on.
|
|
"dimension": "A String", # The dimension of the span.
|
|
},
|
|
"collapsed": True or False, # This field is true if this group is collapsed. A collapsed group remains
|
|
# collapsed if an overlapping group at a shallower depth is expanded.
|
|
#
|
|
# A true value does not imply that all dimensions within the group are
|
|
# hidden, since a dimension's visibility can change independently from this
|
|
# group property. However, when this property is updated, all dimensions
|
|
# within it are set to hidden if this field is true, or set to visible if
|
|
# this field is false.
|
|
"depth": 42, # The depth of the group, representing how many groups have a range that
|
|
# wholly contains the range of this group.
|
|
},
|
|
],
|
|
},
|
|
],
|
|
"spreadsheetUrl": "A String", # The url of the spreadsheet.
|
|
# This field is read-only.
|
|
"spreadsheetId": "A String", # The ID of the spreadsheet.
|
|
# This field is read-only.
|
|
"namedRanges": [ # The named ranges defined in a spreadsheet.
|
|
{ # A named range.
|
|
"namedRangeId": "A String", # The ID of the named range.
|
|
"range": { # A range on a sheet. # The range this represents.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
"name": "A String", # The name of the named range.
|
|
},
|
|
],
|
|
"properties": { # Properties of a spreadsheet. # Overall properties of a spreadsheet.
|
|
"title": "A String", # The title of the spreadsheet.
|
|
"locale": "A String", # The locale of the spreadsheet in one of the following formats:
|
|
#
|
|
# * an ISO 639-1 language code such as `en`
|
|
#
|
|
# * an ISO 639-2 language code such as `fil`, if no 639-1 code exists
|
|
#
|
|
# * a combination of the ISO language code and country code, such as `en_US`
|
|
#
|
|
# Note: when updating this field, not all locales/languages are supported.
|
|
"defaultFormat": { # The format of a cell. # The default format of all cells in the spreadsheet.
|
|
# CellData.effectiveFormat will not be set if
|
|
# the cell's format is equal to this default format. This field is read-only.
|
|
"numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
|
|
"pattern": "A String", # Pattern string used for formatting. If not set, a default pattern based on
|
|
# the user's locale will be used if necessary for the given type.
|
|
# See the [Date and Number Formats guide](/sheets/api/guides/formats) for
|
|
# more information about the supported patterns.
|
|
"type": "A String", # The type of the number format.
|
|
# When writing, this field must be set.
|
|
},
|
|
"textDirection": "A String", # The direction of the text in the cell.
|
|
"padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
|
|
# When updating padding, every field must be specified.
|
|
"top": 42, # The top padding of the cell.
|
|
"left": 42, # The left padding of the cell.
|
|
"right": 42, # The right padding of the cell.
|
|
"bottom": 42, # The bottom padding of the cell.
|
|
},
|
|
"horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
|
|
"backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"verticalAlignment": "A String", # The vertical alignment of the value in the cell.
|
|
"borders": { # The borders of the cell. # The borders of the cell.
|
|
"top": { # A border along a cell. # The top border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"right": { # A border along a cell. # The right border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"bottom": { # A border along a cell. # The bottom border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"left": { # A border along a cell. # The left border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
},
|
|
"textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell
|
|
"angle": 42, # The angle between the standard orientation and the desired orientation.
|
|
# Measured in degrees. Valid values are between -90 and 90. Positive
|
|
# angles are angled upwards, negative are angled downwards.
|
|
#
|
|
# Note: For LTR text direction positive angles are in the
|
|
# counterclockwise direction, whereas for RTL they are in the clockwise
|
|
# direction
|
|
"vertical": True or False, # If true, text reads top to bottom, but the orientation of individual
|
|
# characters is unchanged.
|
|
# For example:
|
|
#
|
|
# | V |
|
|
# | e |
|
|
# | r |
|
|
# | t |
|
|
# | i |
|
|
# | c |
|
|
# | a |
|
|
# | l |
|
|
},
|
|
"hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
|
|
"textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
"wrapStrategy": "A String", # The wrap strategy for the value in the cell.
|
|
},
|
|
"autoRecalc": "A String", # The amount of time to wait before volatile functions are recalculated.
|
|
"iterativeCalculationSettings": { # Settings to control how circular dependencies are resolved with iterative # Determines whether and how circular references are resolved with iterative
|
|
# calculation. Absence of this field means that circular references will
|
|
# result in calculation errors.
|
|
# calculation.
|
|
"convergenceThreshold": 3.14, # When iterative calculation is enabled and successive results differ by
|
|
# less than this threshold value, the calculation rounds stop.
|
|
"maxIterations": 42, # When iterative calculation is enabled, the maximum number of calculation
|
|
# rounds to perform.
|
|
},
|
|
"timeZone": "A String", # The time zone of the spreadsheet, in CLDR format such as
|
|
# `America/New_York`. If the time zone isn't recognized, this may
|
|
# be a custom time zone such as `GMT-07:00`.
|
|
},
|
|
}
|
|
|
|
x__xgafv: string, V1 error format.
|
|
Allowed values
|
|
1 - v1 error format
|
|
2 - v2 error format
|
|
|
|
Returns:
|
|
An object of the form:
|
|
|
|
{ # Resource that represents a spreadsheet.
|
|
"developerMetadata": [ # The developer metadata associated with a spreadsheet.
|
|
{ # Developer metadata associated with a location or object in a spreadsheet.
|
|
# Developer metadata may be used to associate arbitrary data with various
|
|
# parts of a spreadsheet and will remain associated at those locations as they
|
|
# move around and the spreadsheet is edited. For example, if developer
|
|
# metadata is associated with row 5 and another row is then subsequently
|
|
# inserted above row 5, that original metadata will still be associated with
|
|
# the row it was first associated with (what is now row 6). If the associated
|
|
# object is deleted its metadata is deleted too.
|
|
"metadataId": 42, # The spreadsheet-scoped unique ID that identifies the metadata. IDs may be
|
|
# specified when metadata is created, otherwise one will be randomly
|
|
# generated and assigned. Must be positive.
|
|
"metadataValue": "A String", # Data associated with the metadata's key.
|
|
"location": { # A location where metadata may be associated in a spreadsheet. # The location where the metadata is associated.
|
|
"locationType": "A String", # The type of location this object represents. This field is read-only.
|
|
"dimensionRange": { # A range along a single dimension on a sheet. # Represents the row or column when metadata is associated with
|
|
# a dimension. The specified DimensionRange must represent a single row
|
|
# or column; it cannot be unbounded or span multiple rows or columns.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open: the start index is inclusive
|
|
# and the end index is exclusive.
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
"endIndex": 42, # The end (exclusive) of the span, or not set if unbounded.
|
|
"startIndex": 42, # The start (inclusive) of the span, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this span is on.
|
|
"dimension": "A String", # The dimension of the span.
|
|
},
|
|
"spreadsheet": True or False, # True when metadata is associated with an entire spreadsheet.
|
|
"sheetId": 42, # The ID of the sheet when metadata is associated with an entire sheet.
|
|
},
|
|
"visibility": "A String", # The metadata visibility. Developer metadata must always have a visibility
|
|
# specified.
|
|
"metadataKey": "A String", # The metadata key. There may be multiple metadata in a spreadsheet with the
|
|
# same key. Developer metadata must always have a key specified.
|
|
},
|
|
],
|
|
"sheets": [ # The sheets that are part of a spreadsheet.
|
|
{ # A sheet in a spreadsheet.
|
|
"conditionalFormats": [ # The conditional format rules in this sheet.
|
|
{ # A rule describing a conditional format.
|
|
"ranges": [ # The ranges that are formatted if the condition is true.
|
|
# All the ranges must be on the same grid.
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
"booleanRule": { # A rule that may or may not match, depending on the condition. # The formatting is either "on" or "off" according to the rule.
|
|
"condition": { # A condition that can evaluate to true or false. # The condition of the rule. If the condition evaluates to true,
|
|
# the format is applied.
|
|
# BooleanConditions are used by conditional formatting,
|
|
# data validation, and the criteria in filters.
|
|
"values": [ # The values of the condition. The number of supported values depends
|
|
# on the condition type. Some support zero values,
|
|
# others one or two values,
|
|
# and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
|
|
{ # The value of the condition.
|
|
"relativeDate": "A String", # A relative date (based on the current date).
|
|
# Valid only if the type is
|
|
# DATE_BEFORE,
|
|
# DATE_AFTER,
|
|
# DATE_ON_OR_BEFORE or
|
|
# DATE_ON_OR_AFTER.
|
|
#
|
|
# Relative dates are not supported in data validation.
|
|
# They are supported only in conditional formatting and
|
|
# conditional filters.
|
|
"userEnteredValue": "A String", # A value the condition is based on.
|
|
# The value is parsed as if the user typed into a cell.
|
|
# Formulas are supported (and must begin with an `=` or a '+').
|
|
},
|
|
],
|
|
"type": "A String", # The type of condition.
|
|
},
|
|
"format": { # The format of a cell. # The format to apply.
|
|
# Conditional formatting can only apply a subset of formatting:
|
|
# bold, italic,
|
|
# strikethrough,
|
|
# foreground color &
|
|
# background color.
|
|
"numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
|
|
"pattern": "A String", # Pattern string used for formatting. If not set, a default pattern based on
|
|
# the user's locale will be used if necessary for the given type.
|
|
# See the [Date and Number Formats guide](/sheets/api/guides/formats) for
|
|
# more information about the supported patterns.
|
|
"type": "A String", # The type of the number format.
|
|
# When writing, this field must be set.
|
|
},
|
|
"textDirection": "A String", # The direction of the text in the cell.
|
|
"padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
|
|
# When updating padding, every field must be specified.
|
|
"top": 42, # The top padding of the cell.
|
|
"left": 42, # The left padding of the cell.
|
|
"right": 42, # The right padding of the cell.
|
|
"bottom": 42, # The bottom padding of the cell.
|
|
},
|
|
"horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
|
|
"backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"verticalAlignment": "A String", # The vertical alignment of the value in the cell.
|
|
"borders": { # The borders of the cell. # The borders of the cell.
|
|
"top": { # A border along a cell. # The top border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"right": { # A border along a cell. # The right border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"bottom": { # A border along a cell. # The bottom border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"left": { # A border along a cell. # The left border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
},
|
|
"textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell
|
|
"angle": 42, # The angle between the standard orientation and the desired orientation.
|
|
# Measured in degrees. Valid values are between -90 and 90. Positive
|
|
# angles are angled upwards, negative are angled downwards.
|
|
#
|
|
# Note: For LTR text direction positive angles are in the
|
|
# counterclockwise direction, whereas for RTL they are in the clockwise
|
|
# direction
|
|
"vertical": True or False, # If true, text reads top to bottom, but the orientation of individual
|
|
# characters is unchanged.
|
|
# For example:
|
|
#
|
|
# | V |
|
|
# | e |
|
|
# | r |
|
|
# | t |
|
|
# | i |
|
|
# | c |
|
|
# | a |
|
|
# | l |
|
|
},
|
|
"hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
|
|
"textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
"wrapStrategy": "A String", # The wrap strategy for the value in the cell.
|
|
},
|
|
},
|
|
"gradientRule": { # A rule that applies a gradient color scale format, based on # The formatting will vary based on the gradients in the rule.
|
|
# the interpolation points listed. The format of a cell will vary
|
|
# based on its contents as compared to the values of the interpolation
|
|
# points.
|
|
"maxpoint": { # A single interpolation point on a gradient conditional format. # The final interpolation point.
|
|
# These pin the gradient color scale according to the color,
|
|
# type and value chosen.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"type": "A String", # How the value should be interpreted.
|
|
"value": "A String", # The value this interpolation point uses. May be a formula.
|
|
# Unused if type is MIN or
|
|
# MAX.
|
|
},
|
|
"midpoint": { # A single interpolation point on a gradient conditional format. # An optional midway interpolation point.
|
|
# These pin the gradient color scale according to the color,
|
|
# type and value chosen.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"type": "A String", # How the value should be interpreted.
|
|
"value": "A String", # The value this interpolation point uses. May be a formula.
|
|
# Unused if type is MIN or
|
|
# MAX.
|
|
},
|
|
"minpoint": { # A single interpolation point on a gradient conditional format. # The starting interpolation point.
|
|
# These pin the gradient color scale according to the color,
|
|
# type and value chosen.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"type": "A String", # How the value should be interpreted.
|
|
"value": "A String", # The value this interpolation point uses. May be a formula.
|
|
# Unused if type is MIN or
|
|
# MAX.
|
|
},
|
|
},
|
|
},
|
|
],
|
|
"bandedRanges": [ # The banded (alternating colors) ranges on this sheet.
|
|
{ # A banded (alternating colors) range in a sheet.
|
|
"range": { # A range on a sheet. # The range over which these properties are applied.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
"columnProperties": { # Properties referring a single dimension (either row or column). If both # Properties for column bands. These properties are applied on a column-
|
|
# by-column basis throughout all the columns in the range. At least one of
|
|
# row_properties or column_properties must be specified.
|
|
# BandedRange.row_properties and BandedRange.column_properties are
|
|
# set, the fill colors are applied to cells according to the following rules:
|
|
#
|
|
# * header_color and footer_color take priority over band colors.
|
|
# * first_band_color takes priority over second_band_color.
|
|
# * row_properties takes priority over column_properties.
|
|
#
|
|
# For example, the first row color takes priority over the first column
|
|
# color, but the first column color takes priority over the second row color.
|
|
# Similarly, the row header takes priority over the column header in the
|
|
# top left cell, but the column header takes priority over the first row
|
|
# color if the row header is not set.
|
|
"secondBandColor": { # Represents a color in the RGBA color space. This representation is designed # The second color that is alternating. (Required)
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"headerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the first row or column. If this field is set, the first
|
|
# row or column will be filled with this color and the colors will
|
|
# alternate between first_band_color and second_band_color starting
|
|
# from the second row or column. Otherwise, the first row or column will be
|
|
# filled with first_band_color and the colors will proceed to alternate
|
|
# as they normally would.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"footerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the last row or column. If this field is not set, the last
|
|
# row or column will be filled with either first_band_color or
|
|
# second_band_color, depending on the color of the previous row or
|
|
# column.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"firstBandColor": { # Represents a color in the RGBA color space. This representation is designed # The first color that is alternating. (Required)
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
},
|
|
"rowProperties": { # Properties referring a single dimension (either row or column). If both # Properties for row bands. These properties are applied on a row-by-row
|
|
# basis throughout all the rows in the range. At least one of
|
|
# row_properties or column_properties must be specified.
|
|
# BandedRange.row_properties and BandedRange.column_properties are
|
|
# set, the fill colors are applied to cells according to the following rules:
|
|
#
|
|
# * header_color and footer_color take priority over band colors.
|
|
# * first_band_color takes priority over second_band_color.
|
|
# * row_properties takes priority over column_properties.
|
|
#
|
|
# For example, the first row color takes priority over the first column
|
|
# color, but the first column color takes priority over the second row color.
|
|
# Similarly, the row header takes priority over the column header in the
|
|
# top left cell, but the column header takes priority over the first row
|
|
# color if the row header is not set.
|
|
"secondBandColor": { # Represents a color in the RGBA color space. This representation is designed # The second color that is alternating. (Required)
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"headerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the first row or column. If this field is set, the first
|
|
# row or column will be filled with this color and the colors will
|
|
# alternate between first_band_color and second_band_color starting
|
|
# from the second row or column. Otherwise, the first row or column will be
|
|
# filled with first_band_color and the colors will proceed to alternate
|
|
# as they normally would.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"footerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the last row or column. If this field is not set, the last
|
|
# row or column will be filled with either first_band_color or
|
|
# second_band_color, depending on the color of the previous row or
|
|
# column.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"firstBandColor": { # Represents a color in the RGBA color space. This representation is designed # The first color that is alternating. (Required)
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
},
|
|
"bandedRangeId": 42, # The id of the banded range.
|
|
},
|
|
],
|
|
"merges": [ # The ranges that are merged together.
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
"basicFilter": { # The default filter associated with a sheet. # The filter on this sheet, if any.
|
|
"range": { # A range on a sheet. # The range the filter covers.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
"sortSpecs": [ # The sort order per column. Later specifications are used when values
|
|
# are equal in the earlier specifications.
|
|
{ # A sort order associated with a specific column or row.
|
|
"sortOrder": "A String", # The order data should be sorted.
|
|
"dimensionIndex": 42, # The dimension the sort should be applied to.
|
|
},
|
|
],
|
|
"criteria": { # The criteria for showing/hiding values per column.
|
|
# The map's key is the column index, and the value is the criteria for
|
|
# that column.
|
|
"a_key": { # Criteria for showing/hiding rows in a filter or filter view.
|
|
"hiddenValues": [ # Values that should be hidden.
|
|
"A String",
|
|
],
|
|
"condition": { # A condition that can evaluate to true or false. # A condition that must be true for values to be shown.
|
|
# (This does not override hiddenValues -- if a value is listed there,
|
|
# it will still be hidden.)
|
|
# BooleanConditions are used by conditional formatting,
|
|
# data validation, and the criteria in filters.
|
|
"values": [ # The values of the condition. The number of supported values depends
|
|
# on the condition type. Some support zero values,
|
|
# others one or two values,
|
|
# and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
|
|
{ # The value of the condition.
|
|
"relativeDate": "A String", # A relative date (based on the current date).
|
|
# Valid only if the type is
|
|
# DATE_BEFORE,
|
|
# DATE_AFTER,
|
|
# DATE_ON_OR_BEFORE or
|
|
# DATE_ON_OR_AFTER.
|
|
#
|
|
# Relative dates are not supported in data validation.
|
|
# They are supported only in conditional formatting and
|
|
# conditional filters.
|
|
"userEnteredValue": "A String", # A value the condition is based on.
|
|
# The value is parsed as if the user typed into a cell.
|
|
# Formulas are supported (and must begin with an `=` or a '+').
|
|
},
|
|
],
|
|
"type": "A String", # The type of condition.
|
|
},
|
|
},
|
|
},
|
|
},
|
|
"developerMetadata": [ # The developer metadata associated with a sheet.
|
|
{ # Developer metadata associated with a location or object in a spreadsheet.
|
|
# Developer metadata may be used to associate arbitrary data with various
|
|
# parts of a spreadsheet and will remain associated at those locations as they
|
|
# move around and the spreadsheet is edited. For example, if developer
|
|
# metadata is associated with row 5 and another row is then subsequently
|
|
# inserted above row 5, that original metadata will still be associated with
|
|
# the row it was first associated with (what is now row 6). If the associated
|
|
# object is deleted its metadata is deleted too.
|
|
"metadataId": 42, # The spreadsheet-scoped unique ID that identifies the metadata. IDs may be
|
|
# specified when metadata is created, otherwise one will be randomly
|
|
# generated and assigned. Must be positive.
|
|
"metadataValue": "A String", # Data associated with the metadata's key.
|
|
"location": { # A location where metadata may be associated in a spreadsheet. # The location where the metadata is associated.
|
|
"locationType": "A String", # The type of location this object represents. This field is read-only.
|
|
"dimensionRange": { # A range along a single dimension on a sheet. # Represents the row or column when metadata is associated with
|
|
# a dimension. The specified DimensionRange must represent a single row
|
|
# or column; it cannot be unbounded or span multiple rows or columns.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open: the start index is inclusive
|
|
# and the end index is exclusive.
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
"endIndex": 42, # The end (exclusive) of the span, or not set if unbounded.
|
|
"startIndex": 42, # The start (inclusive) of the span, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this span is on.
|
|
"dimension": "A String", # The dimension of the span.
|
|
},
|
|
"spreadsheet": True or False, # True when metadata is associated with an entire spreadsheet.
|
|
"sheetId": 42, # The ID of the sheet when metadata is associated with an entire sheet.
|
|
},
|
|
"visibility": "A String", # The metadata visibility. Developer metadata must always have a visibility
|
|
# specified.
|
|
"metadataKey": "A String", # The metadata key. There may be multiple metadata in a spreadsheet with the
|
|
# same key. Developer metadata must always have a key specified.
|
|
},
|
|
],
|
|
"columnGroups": [ # All column groups on this sheet, ordered by increasing range start index,
|
|
# then by group depth.
|
|
{ # A group over an interval of rows or columns on a sheet, which can contain or
|
|
# be contained within other groups. A group can be collapsed or expanded as a
|
|
# unit on the sheet.
|
|
"range": { # A range along a single dimension on a sheet. # The range over which this group exists.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open: the start index is inclusive
|
|
# and the end index is exclusive.
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
"endIndex": 42, # The end (exclusive) of the span, or not set if unbounded.
|
|
"startIndex": 42, # The start (inclusive) of the span, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this span is on.
|
|
"dimension": "A String", # The dimension of the span.
|
|
},
|
|
"collapsed": True or False, # This field is true if this group is collapsed. A collapsed group remains
|
|
# collapsed if an overlapping group at a shallower depth is expanded.
|
|
#
|
|
# A true value does not imply that all dimensions within the group are
|
|
# hidden, since a dimension's visibility can change independently from this
|
|
# group property. However, when this property is updated, all dimensions
|
|
# within it are set to hidden if this field is true, or set to visible if
|
|
# this field is false.
|
|
"depth": 42, # The depth of the group, representing how many groups have a range that
|
|
# wholly contains the range of this group.
|
|
},
|
|
],
|
|
"properties": { # Properties of a sheet. # The properties of the sheet.
|
|
"sheetType": "A String", # The type of sheet. Defaults to GRID.
|
|
# This field cannot be changed once set.
|
|
"index": 42, # The index of the sheet within the spreadsheet.
|
|
# When adding or updating sheet properties, if this field
|
|
# is excluded then the sheet is added or moved to the end
|
|
# of the sheet list. When updating sheet indices or inserting
|
|
# sheets, movement is considered in "before the move" indexes.
|
|
# For example, if there were 3 sheets (S1, S2, S3) in order to
|
|
# move S1 ahead of S2 the index would have to be set to 2. A sheet
|
|
# index update request is ignored if the requested index is
|
|
# identical to the sheets current index or if the requested new
|
|
# index is equal to the current sheet index + 1.
|
|
"title": "A String", # The name of the sheet.
|
|
"gridProperties": { # Properties of a grid. # Additional properties of the sheet if this sheet is a grid.
|
|
# (If the sheet is an object sheet, containing a chart or image, then
|
|
# this field will be absent.)
|
|
# When writing it is an error to set any grid properties on non-grid sheets.
|
|
"columnCount": 42, # The number of columns in the grid.
|
|
"rowGroupControlAfter": True or False, # True if the row grouping control toggle is shown after the group.
|
|
"columnGroupControlAfter": True or False, # True if the column grouping control toggle is shown after the group.
|
|
"frozenRowCount": 42, # The number of rows that are frozen in the grid.
|
|
"frozenColumnCount": 42, # The number of columns that are frozen in the grid.
|
|
"rowCount": 42, # The number of rows in the grid.
|
|
"hideGridlines": True or False, # True if the grid isn't showing gridlines in the UI.
|
|
},
|
|
"rightToLeft": True or False, # True if the sheet is an RTL sheet instead of an LTR sheet.
|
|
"tabColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the tab in the UI.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"hidden": True or False, # True if the sheet is hidden in the UI, false if it's visible.
|
|
"sheetId": 42, # The ID of the sheet. Must be non-negative.
|
|
# This field cannot be changed once set.
|
|
},
|
|
"filterViews": [ # The filter views in this sheet.
|
|
{ # A filter view.
|
|
"title": "A String", # The name of the filter view.
|
|
"namedRangeId": "A String", # The named range this filter view is backed by, if any.
|
|
#
|
|
# When writing, only one of range or named_range_id
|
|
# may be set.
|
|
"filterViewId": 42, # The ID of the filter view.
|
|
"range": { # A range on a sheet. # The range this filter view covers.
|
|
#
|
|
# When writing, only one of range or named_range_id
|
|
# may be set.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
"sortSpecs": [ # The sort order per column. Later specifications are used when values
|
|
# are equal in the earlier specifications.
|
|
{ # A sort order associated with a specific column or row.
|
|
"sortOrder": "A String", # The order data should be sorted.
|
|
"dimensionIndex": 42, # The dimension the sort should be applied to.
|
|
},
|
|
],
|
|
"criteria": { # The criteria for showing/hiding values per column.
|
|
# The map's key is the column index, and the value is the criteria for
|
|
# that column.
|
|
"a_key": { # Criteria for showing/hiding rows in a filter or filter view.
|
|
"hiddenValues": [ # Values that should be hidden.
|
|
"A String",
|
|
],
|
|
"condition": { # A condition that can evaluate to true or false. # A condition that must be true for values to be shown.
|
|
# (This does not override hiddenValues -- if a value is listed there,
|
|
# it will still be hidden.)
|
|
# BooleanConditions are used by conditional formatting,
|
|
# data validation, and the criteria in filters.
|
|
"values": [ # The values of the condition. The number of supported values depends
|
|
# on the condition type. Some support zero values,
|
|
# others one or two values,
|
|
# and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
|
|
{ # The value of the condition.
|
|
"relativeDate": "A String", # A relative date (based on the current date).
|
|
# Valid only if the type is
|
|
# DATE_BEFORE,
|
|
# DATE_AFTER,
|
|
# DATE_ON_OR_BEFORE or
|
|
# DATE_ON_OR_AFTER.
|
|
#
|
|
# Relative dates are not supported in data validation.
|
|
# They are supported only in conditional formatting and
|
|
# conditional filters.
|
|
"userEnteredValue": "A String", # A value the condition is based on.
|
|
# The value is parsed as if the user typed into a cell.
|
|
# Formulas are supported (and must begin with an `=` or a '+').
|
|
},
|
|
],
|
|
"type": "A String", # The type of condition.
|
|
},
|
|
},
|
|
},
|
|
},
|
|
],
|
|
"charts": [ # The specifications of every chart on this sheet.
|
|
{ # A chart embedded in a sheet.
|
|
"chartId": 42, # The ID of the chart.
|
|
"position": { # The position of an embedded object such as a chart. # The position of the chart.
|
|
"newSheet": True or False, # If true, the embedded object is put on a new sheet whose ID
|
|
# is chosen for you. Used only when writing.
|
|
"sheetId": 42, # The sheet this is on. Set only if the embedded object
|
|
# is on its own sheet. Must be non-negative.
|
|
"overlayPosition": { # The location an object is overlaid on top of a grid. # The position at which the object is overlaid on top of a grid.
|
|
"anchorCell": { # A coordinate in a sheet. # The cell the object is anchored to.
|
|
# All indexes are zero-based.
|
|
"rowIndex": 42, # The row index of the coordinate.
|
|
"columnIndex": 42, # The column index of the coordinate.
|
|
"sheetId": 42, # The sheet this coordinate is on.
|
|
},
|
|
"widthPixels": 42, # The width of the object, in pixels. Defaults to 600.
|
|
"offsetYPixels": 42, # The vertical offset, in pixels, that the object is offset
|
|
# from the anchor cell.
|
|
"offsetXPixels": 42, # The horizontal offset, in pixels, that the object is offset
|
|
# from the anchor cell.
|
|
"heightPixels": 42, # The height of the object, in pixels. Defaults to 371.
|
|
},
|
|
},
|
|
"spec": { # The specifications of a chart. # The specification of the chart.
|
|
"fontName": "A String", # The name of the font to use by default for all chart text (e.g. title,
|
|
# axis labels, legend). If a font is specified for a specific part of the
|
|
# chart it will override this font name.
|
|
"altText": "A String", # The alternative text that describes the chart. This is often used
|
|
# for accessibility.
|
|
"subtitle": "A String", # The subtitle of the chart.
|
|
"subtitleTextFormat": { # The format of a run of text in a cell. # The subtitle text format.
|
|
# Strikethrough and underline are not supported.
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
"title": "A String", # The title of the chart.
|
|
"titleTextFormat": { # The format of a run of text in a cell. # The title text format.
|
|
# Strikethrough and underline are not supported.
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
"treemapChart": { # A <a href="/chart/interactive/docs/gallery/treemap">Treemap chart</a>. # A treemap chart specification.
|
|
"parentLabels": { # The data included in a domain or series. # The data the contains the treemap cells' parent labels.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"sizeData": { # The data included in a domain or series. # The data that determines the size of each treemap data cell. This data is
|
|
# expected to be numeric. The cells corresponding to non-numeric or missing
|
|
# data will not be rendered. If color_data is not specified, this data
|
|
# is used to determine data cell background colors as well.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"hideTooltips": True or False, # True to hide tooltips.
|
|
"colorScale": { # A color scale for a treemap chart. # The color scale for data cells in the treemap chart. Data cells are
|
|
# assigned colors based on their color values. These color values come from
|
|
# color_data, or from size_data if color_data is not specified.
|
|
# Cells with color values less than or equal to min_value will
|
|
# have minValueColor as their
|
|
# background color. Cells with color values greater than or equal to
|
|
# max_value will have
|
|
# maxValueColor as their background
|
|
# color. Cells with color values between min_value and max_value will
|
|
# have background colors on a gradient between
|
|
# minValueColor and
|
|
# maxValueColor, the midpoint of
|
|
# the gradient being midValueColor.
|
|
# Cells with missing or non-numeric color values will have
|
|
# noDataColor as their background
|
|
# color.
|
|
"noDataColor": { # Represents a color in the RGBA color space. This representation is designed # The background color for cells that have no color data associated with
|
|
# them. Defaults to #000000 if not specified.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"midValueColor": { # Represents a color in the RGBA color space. This representation is designed # The background color for cells with a color value at the midpoint between
|
|
# minValue and
|
|
# maxValue. Defaults to #efe6dc if not
|
|
# specified.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"minValueColor": { # Represents a color in the RGBA color space. This representation is designed # The background color for cells with a color value less than or equal to
|
|
# minValue. Defaults to #dc3912 if not
|
|
# specified.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"maxValueColor": { # Represents a color in the RGBA color space. This representation is designed # The background color for cells with a color value greater than or equal
|
|
# to maxValue. Defaults to #109618 if not
|
|
# specified.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
},
|
|
"labels": { # The data included in a domain or series. # The data that contains the treemap cell labels.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"colorData": { # The data included in a domain or series. # The data that determines the background color of each treemap data cell.
|
|
# This field is optional. If not specified, size_data is used to
|
|
# determine background colors. If specified, the data is expected to be
|
|
# numeric. color_scale will determine how the values in this data map to
|
|
# data cell background colors.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"maxValue": 3.14, # The maximum possible data value. Cells with values greater than this will
|
|
# have the same color as cells with this value. If not specified, defaults
|
|
# to the actual maximum value from color_data, or the maximum value from
|
|
# size_data if color_data is not specified.
|
|
"minValue": 3.14, # The minimum possible data value. Cells with values less than this will
|
|
# have the same color as cells with this value. If not specified, defaults
|
|
# to the actual minimum value from color_data, or the minimum value from
|
|
# size_data if color_data is not specified.
|
|
"headerColor": { # Represents a color in the RGBA color space. This representation is designed # The background color for header cells.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"levels": 42, # The number of data levels to show on the treemap chart. These levels are
|
|
# interactive and are shown with their labels. Defaults to 2 if not
|
|
# specified.
|
|
"hintedLevels": 42, # The number of additional data levels beyond the labeled levels to be shown
|
|
# on the treemap chart. These levels are not interactive and are shown
|
|
# without their labels. Defaults to 0 if not specified.
|
|
"textFormat": { # The format of a run of text in a cell. # The text format for all labels on the chart.
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
},
|
|
"titleTextPosition": { # Position settings for text. # The title text position.
|
|
# This field is optional.
|
|
"horizontalAlignment": "A String", # Horizontal alignment setting for the piece of text.
|
|
},
|
|
"hiddenDimensionStrategy": "A String", # Determines how the charts will use hidden rows or columns.
|
|
"pieChart": { # A <a href="/chart/interactive/docs/gallery/piechart">pie chart</a>. # A pie chart specification.
|
|
"series": { # The data included in a domain or series. # The data that covers the one and only series of the pie chart.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"domain": { # The data included in a domain or series. # The data that covers the domain of the pie chart.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"threeDimensional": True or False, # True if the pie is three dimensional.
|
|
"legendPosition": "A String", # Where the legend of the pie chart should be drawn.
|
|
"pieHole": 3.14, # The size of the hole in the pie chart.
|
|
},
|
|
"candlestickChart": { # A <a href="/chart/interactive/docs/gallery/candlestickchart">candlestick # A candlestick chart specification.
|
|
# chart</a>.
|
|
"domain": { # The domain of a CandlestickChart. # The domain data (horizontal axis) for the candlestick chart. String data
|
|
# will be treated as discrete labels, other data will be treated as
|
|
# continuous values.
|
|
"reversed": True or False, # True to reverse the order of the domain values (horizontal axis).
|
|
"data": { # The data included in a domain or series. # The data of the CandlestickDomain.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
"data": [ # The Candlestick chart data.
|
|
# Only one CandlestickData is supported.
|
|
{ # The Candlestick chart data, each containing the low, open, close, and high
|
|
# values for a series.
|
|
"lowSeries": { # The series of a CandlestickData. # The range data (vertical axis) for the low/minimum value for each candle.
|
|
# This is the bottom of the candle's center line.
|
|
"data": { # The data included in a domain or series. # The data of the CandlestickSeries.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
"highSeries": { # The series of a CandlestickData. # The range data (vertical axis) for the high/maximum value for each
|
|
# candle. This is the top of the candle's center line.
|
|
"data": { # The data included in a domain or series. # The data of the CandlestickSeries.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
"openSeries": { # The series of a CandlestickData. # The range data (vertical axis) for the open/initial value for each
|
|
# candle. This is the bottom of the candle body. If less than the close
|
|
# value the candle will be filled. Otherwise the candle will be hollow.
|
|
"data": { # The data included in a domain or series. # The data of the CandlestickSeries.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
"closeSeries": { # The series of a CandlestickData. # The range data (vertical axis) for the close/final value for each candle.
|
|
# This is the top of the candle body. If greater than the open value the
|
|
# candle will be filled. Otherwise the candle will be hollow.
|
|
"data": { # The data included in a domain or series. # The data of the CandlestickSeries.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
},
|
|
],
|
|
},
|
|
"subtitleTextPosition": { # Position settings for text. # The subtitle text position.
|
|
# This field is optional.
|
|
"horizontalAlignment": "A String", # Horizontal alignment setting for the piece of text.
|
|
},
|
|
"backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the entire chart.
|
|
# Not applicable to Org charts.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"maximized": True or False, # True to make a chart fill the entire space in which it's rendered with
|
|
# minimum padding. False to use the default padding.
|
|
# (Not applicable to Geo and Org charts.)
|
|
"waterfallChart": { # A waterfall chart. # A waterfall chart specification.
|
|
"stackedType": "A String", # The stacked type.
|
|
"hideConnectorLines": True or False, # True to hide connector lines between columns.
|
|
"domain": { # The domain of a waterfall chart. # The domain data (horizontal axis) for the waterfall chart.
|
|
"reversed": True or False, # True to reverse the order of the domain values (horizontal axis).
|
|
"data": { # The data included in a domain or series. # The data of the WaterfallChartDomain.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
"connectorLineStyle": { # Properties that describe the style of a line. # The line style for the connector lines.
|
|
"width": 42, # The thickness of the line, in px.
|
|
"type": "A String", # The dash type of the line.
|
|
},
|
|
"series": [ # The data this waterfall chart is visualizing.
|
|
{ # A single series of data for a waterfall chart.
|
|
"hideTrailingSubtotal": True or False, # True to hide the subtotal column from the end of the series. By default,
|
|
# a subtotal column will appear at the end of each series. Setting this
|
|
# field to true will hide that subtotal column for this series.
|
|
"positiveColumnsStyle": { # Styles for a waterfall chart column. # Styles for all columns in this series with positive values.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the column.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"label": "A String", # The label of the column's legend.
|
|
},
|
|
"subtotalColumnsStyle": { # Styles for a waterfall chart column. # Styles for all subtotal columns in this series.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the column.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"label": "A String", # The label of the column's legend.
|
|
},
|
|
"negativeColumnsStyle": { # Styles for a waterfall chart column. # Styles for all columns in this series with negative values.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the column.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"label": "A String", # The label of the column's legend.
|
|
},
|
|
"customSubtotals": [ # Custom subtotal columns appearing in this series. The order in which
|
|
# subtotals are defined is not significant. Only one subtotal may be
|
|
# defined for each data point.
|
|
{ # A custom subtotal column for a waterfall chart series.
|
|
"dataIsSubtotal": True or False, # True if the data point at subtotal_index is the subtotal. If false,
|
|
# the subtotal will be computed and appear after the data point.
|
|
"subtotalIndex": 42, # The 0-based index of a data point within the series. If
|
|
# data_is_subtotal is true, the data point at this index is the
|
|
# subtotal. Otherwise, the subtotal appears after the data point with
|
|
# this index. A series can have multiple subtotals at arbitrary indices,
|
|
# but subtotals do not affect the indices of the data points. For
|
|
# example, if a series has three data points, their indices will always
|
|
# be 0, 1, and 2, regardless of how many subtotals exist on the series or
|
|
# what data points they are associated with.
|
|
"label": "A String", # A label for the subtotal column.
|
|
},
|
|
],
|
|
"data": { # The data included in a domain or series. # The data being visualized in this series.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
],
|
|
"firstValueIsTotal": True or False, # True to interpret the first value as a total.
|
|
},
|
|
"basicChart": { # The specification for a basic chart. See BasicChartType for the list # A basic chart specification, can be one of many kinds of charts.
|
|
# See BasicChartType for the list of all
|
|
# charts this supports.
|
|
# of charts this supports.
|
|
"stackedType": "A String", # The stacked type for charts that support vertical stacking.
|
|
# Applies to Area, Bar, Column, Combo, and Stepped Area charts.
|
|
"headerCount": 42, # The number of rows or columns in the data that are "headers".
|
|
# If not set, Google Sheets will guess how many rows are headers based
|
|
# on the data.
|
|
#
|
|
# (Note that BasicChartAxis.title may override the axis title
|
|
# inferred from the header values.)
|
|
"series": [ # The data this chart is visualizing.
|
|
{ # A single series of data in a chart.
|
|
# For example, if charting stock prices over time, multiple series may exist,
|
|
# one for the "Open Price", "High Price", "Low Price" and "Close Price".
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color for elements (i.e. bars, lines, points) associated with this
|
|
# series. If empty, a default color is used.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"series": { # The data included in a domain or series. # The data being visualized in this chart series.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"targetAxis": "A String", # The minor axis that will specify the range of values for this series.
|
|
# For example, if charting stocks over time, the "Volume" series
|
|
# may want to be pinned to the right with the prices pinned to the left,
|
|
# because the scale of trading volume is different than the scale of
|
|
# prices.
|
|
# It is an error to specify an axis that isn't a valid minor axis
|
|
# for the chart's type.
|
|
"lineStyle": { # Properties that describe the style of a line. # The line style of this series. Valid only if the
|
|
# chartType is AREA,
|
|
# LINE, or SCATTER.
|
|
# COMBO charts are also supported if the
|
|
# series chart type is
|
|
# AREA or LINE.
|
|
"width": 42, # The thickness of the line, in px.
|
|
"type": "A String", # The dash type of the line.
|
|
},
|
|
"type": "A String", # The type of this series. Valid only if the
|
|
# chartType is
|
|
# COMBO.
|
|
# Different types will change the way the series is visualized.
|
|
# Only LINE, AREA,
|
|
# and COLUMN are supported.
|
|
},
|
|
],
|
|
"interpolateNulls": True or False, # If some values in a series are missing, gaps may appear in the chart (e.g,
|
|
# segments of lines in a line chart will be missing). To eliminate these
|
|
# gaps set this to true.
|
|
# Applies to Line, Area, and Combo charts.
|
|
"legendPosition": "A String", # The position of the chart legend.
|
|
"lineSmoothing": True or False, # Gets whether all lines should be rendered smooth or straight by default.
|
|
# Applies to Line charts.
|
|
"compareMode": "A String", # The behavior of tooltips and data highlighting when hovering on data and
|
|
# chart area.
|
|
"domains": [ # The domain of data this is charting.
|
|
# Only a single domain is supported.
|
|
{ # The domain of a chart.
|
|
# For example, if charting stock prices over time, this would be the date.
|
|
"reversed": True or False, # True to reverse the order of the domain values (horizontal axis).
|
|
"domain": { # The data included in a domain or series. # The data of the domain. For example, if charting stock prices over time,
|
|
# this is the data representing the dates.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
],
|
|
"chartType": "A String", # The type of the chart.
|
|
"threeDimensional": True or False, # True to make the chart 3D.
|
|
# Applies to Bar and Column charts.
|
|
"axis": [ # The axis on the chart.
|
|
{ # An axis of the chart.
|
|
# A chart may not have more than one axis per
|
|
# axis position.
|
|
"position": "A String", # The position of this axis.
|
|
"format": { # The format of a run of text in a cell. # The format of the title.
|
|
# Only valid if the axis is not associated with the domain.
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
"title": "A String", # The title of this axis. If set, this overrides any title inferred
|
|
# from headers of the data.
|
|
"titleTextPosition": { # Position settings for text. # The axis title text position.
|
|
"horizontalAlignment": "A String", # Horizontal alignment setting for the piece of text.
|
|
},
|
|
},
|
|
],
|
|
},
|
|
"histogramChart": { # A <a href="/chart/interactive/docs/gallery/histogram">histogram chart</a>. # A histogram chart specification.
|
|
# A histogram chart groups data items into bins, displaying each bin as a
|
|
# column of stacked items. Histograms are used to display the distribution
|
|
# of a dataset. Each column of items represents a range into which those
|
|
# items fall. The number of bins can be chosen automatically or specified
|
|
# explicitly.
|
|
"outlierPercentile": 3.14, # The outlier percentile is used to ensure that outliers do not adversely
|
|
# affect the calculation of bucket sizes. For example, setting an outlier
|
|
# percentile of 0.05 indicates that the top and bottom 5% of values when
|
|
# calculating buckets. The values are still included in the chart, they will
|
|
# be added to the first or last buckets instead of their own buckets.
|
|
# Must be between 0.0 and 0.5.
|
|
"series": [ # The series for a histogram may be either a single series of values to be
|
|
# bucketed or multiple series, each of the same length, containing the name
|
|
# of the series followed by the values to be bucketed for that series.
|
|
{ # A histogram series containing the series color and data.
|
|
"barColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the column representing this series in each bucket.
|
|
# This field is optional.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"data": { # The data included in a domain or series. # The data for this histogram series.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
],
|
|
"showItemDividers": True or False, # Whether horizontal divider lines should be displayed between items in each
|
|
# column.
|
|
"legendPosition": "A String", # The position of the chart legend.
|
|
"bucketSize": 3.14, # By default the bucket size (the range of values stacked in a single
|
|
# column) is chosen automatically, but it may be overridden here.
|
|
# E.g., A bucket size of 1.5 results in buckets from 0 - 1.5, 1.5 - 3.0, etc.
|
|
# Cannot be negative.
|
|
# This field is optional.
|
|
},
|
|
"bubbleChart": { # A <a href="/chart/interactive/docs/gallery/bubblechart">bubble chart</a>. # A bubble chart specification.
|
|
"bubbleBorderColor": { # Represents a color in the RGBA color space. This representation is designed # The bubble border color.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"domain": { # The data included in a domain or series. # The data containing the bubble x-values. These values locate the bubbles
|
|
# in the chart horizontally.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"bubbleTextStyle": { # The format of a run of text in a cell. # The format of the text inside the bubbles.
|
|
# Underline and Strikethrough are not supported.
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
"series": { # The data included in a domain or series. # The data contianing the bubble y-values. These values locate the bubbles
|
|
# in the chart vertically.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"legendPosition": "A String", # Where the legend of the chart should be drawn.
|
|
"bubbleMaxRadiusSize": 42, # The max radius size of the bubbles, in pixels.
|
|
# If specified, the field must be a positive value.
|
|
"bubbleOpacity": 3.14, # The opacity of the bubbles between 0 and 1.0.
|
|
# 0 is fully transparent and 1 is fully opaque.
|
|
"groupIds": { # The data included in a domain or series. # The data containing the bubble group IDs. All bubbles with the same group
|
|
# ID are drawn in the same color. If bubble_sizes is specified then
|
|
# this field must also be specified but may contain blank values.
|
|
# This field is optional.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"bubbleSizes": { # The data included in a domain or series. # The data contianing the bubble sizes. Bubble sizes are used to draw
|
|
# the bubbles at different sizes relative to each other.
|
|
# If specified, group_ids must also be specified. This field is
|
|
# optional.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"bubbleLabels": { # The data included in a domain or series. # The data containing the bubble labels. These do not need to be unique.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"bubbleMinRadiusSize": 42, # The minimum radius size of the bubbles, in pixels.
|
|
# If specific, the field must be a positive value.
|
|
},
|
|
"orgChart": { # An <a href="/chart/interactive/docs/gallery/orgchart">org chart</a>. # An org chart specification.
|
|
# Org charts require a unique set of labels in labels and may
|
|
# optionally include parent_labels and tooltips.
|
|
# parent_labels contain, for each node, the label identifying the parent
|
|
# node. tooltips contain, for each node, an optional tooltip.
|
|
#
|
|
# For example, to describe an OrgChart with Alice as the CEO, Bob as the
|
|
# President (reporting to Alice) and Cathy as VP of Sales (also reporting to
|
|
# Alice), have labels contain "Alice", "Bob", "Cathy",
|
|
# parent_labels contain "", "Alice", "Alice" and tooltips contain
|
|
# "CEO", "President", "VP Sales".
|
|
"tooltips": { # The data included in a domain or series. # The data containing the tooltip for the corresponding node. A blank value
|
|
# results in no tooltip being displayed for the node.
|
|
# This field is optional.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"parentLabels": { # The data included in a domain or series. # The data containing the label of the parent for the corresponding node.
|
|
# A blank value indicates that the node has no parent and is a top-level
|
|
# node.
|
|
# This field is optional.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"nodeColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the org chart nodes.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"labels": { # The data included in a domain or series. # The data containing the labels for all the nodes in the chart. Labels
|
|
# must be unique.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"selectedNodeColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the selected org chart nodes.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"nodeSize": "A String", # The size of the org chart nodes.
|
|
},
|
|
},
|
|
},
|
|
],
|
|
"protectedRanges": [ # The protected ranges in this sheet.
|
|
{ # A protected range.
|
|
"unprotectedRanges": [ # The list of unprotected ranges within a protected sheet.
|
|
# Unprotected ranges are only supported on protected sheets.
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
"requestingUserCanEdit": True or False, # True if the user who requested this protected range can edit the
|
|
# protected area.
|
|
# This field is read-only.
|
|
"description": "A String", # The description of this protected range.
|
|
"namedRangeId": "A String", # The named range this protected range is backed by, if any.
|
|
#
|
|
# When writing, only one of range or named_range_id
|
|
# may be set.
|
|
"range": { # A range on a sheet. # The range that is being protected.
|
|
# The range may be fully unbounded, in which case this is considered
|
|
# a protected sheet.
|
|
#
|
|
# When writing, only one of range or named_range_id
|
|
# may be set.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
"editors": { # The editors of a protected range. # The users and groups with edit access to the protected range.
|
|
# This field is only visible to users with edit access to the protected
|
|
# range and the document.
|
|
# Editors are not supported with warning_only protection.
|
|
"domainUsersCanEdit": True or False, # True if anyone in the document's domain has edit access to the protected
|
|
# range. Domain protection is only supported on documents within a domain.
|
|
"users": [ # The email addresses of users with edit access to the protected range.
|
|
"A String",
|
|
],
|
|
"groups": [ # The email addresses of groups with edit access to the protected range.
|
|
"A String",
|
|
],
|
|
},
|
|
"protectedRangeId": 42, # The ID of the protected range.
|
|
# This field is read-only.
|
|
"warningOnly": True or False, # True if this protected range will show a warning when editing.
|
|
# Warning-based protection means that every user can edit data in the
|
|
# protected range, except editing will prompt a warning asking the user
|
|
# to confirm the edit.
|
|
#
|
|
# When writing: if this field is true, then editors is ignored.
|
|
# Additionally, if this field is changed from true to false and the
|
|
# `editors` field is not set (nor included in the field mask), then
|
|
# the editors will be set to all the editors in the document.
|
|
},
|
|
],
|
|
"data": [ # Data in the grid, if this is a grid sheet.
|
|
# The number of GridData objects returned is dependent on the number of
|
|
# ranges requested on this sheet. For example, if this is representing
|
|
# `Sheet1`, and the spreadsheet was requested with ranges
|
|
# `Sheet1!A1:C10` and `Sheet1!D15:E20`, then the first GridData will have a
|
|
# startRow/startColumn of `0`,
|
|
# while the second one will have `startRow 14` (zero-based row 15),
|
|
# and `startColumn 3` (zero-based column D).
|
|
{ # Data in the grid, as well as metadata about the dimensions.
|
|
"rowMetadata": [ # Metadata about the requested rows in the grid, starting with the row
|
|
# in start_row.
|
|
{ # Properties about a dimension.
|
|
"pixelSize": 42, # The height (if a row) or width (if a column) of the dimension in pixels.
|
|
"developerMetadata": [ # The developer metadata associated with a single row or column.
|
|
{ # Developer metadata associated with a location or object in a spreadsheet.
|
|
# Developer metadata may be used to associate arbitrary data with various
|
|
# parts of a spreadsheet and will remain associated at those locations as they
|
|
# move around and the spreadsheet is edited. For example, if developer
|
|
# metadata is associated with row 5 and another row is then subsequently
|
|
# inserted above row 5, that original metadata will still be associated with
|
|
# the row it was first associated with (what is now row 6). If the associated
|
|
# object is deleted its metadata is deleted too.
|
|
"metadataId": 42, # The spreadsheet-scoped unique ID that identifies the metadata. IDs may be
|
|
# specified when metadata is created, otherwise one will be randomly
|
|
# generated and assigned. Must be positive.
|
|
"metadataValue": "A String", # Data associated with the metadata's key.
|
|
"location": { # A location where metadata may be associated in a spreadsheet. # The location where the metadata is associated.
|
|
"locationType": "A String", # The type of location this object represents. This field is read-only.
|
|
"dimensionRange": { # A range along a single dimension on a sheet. # Represents the row or column when metadata is associated with
|
|
# a dimension. The specified DimensionRange must represent a single row
|
|
# or column; it cannot be unbounded or span multiple rows or columns.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open: the start index is inclusive
|
|
# and the end index is exclusive.
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
"endIndex": 42, # The end (exclusive) of the span, or not set if unbounded.
|
|
"startIndex": 42, # The start (inclusive) of the span, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this span is on.
|
|
"dimension": "A String", # The dimension of the span.
|
|
},
|
|
"spreadsheet": True or False, # True when metadata is associated with an entire spreadsheet.
|
|
"sheetId": 42, # The ID of the sheet when metadata is associated with an entire sheet.
|
|
},
|
|
"visibility": "A String", # The metadata visibility. Developer metadata must always have a visibility
|
|
# specified.
|
|
"metadataKey": "A String", # The metadata key. There may be multiple metadata in a spreadsheet with the
|
|
# same key. Developer metadata must always have a key specified.
|
|
},
|
|
],
|
|
"hiddenByUser": True or False, # True if this dimension is explicitly hidden.
|
|
"hiddenByFilter": True or False, # True if this dimension is being filtered.
|
|
# This field is read-only.
|
|
},
|
|
],
|
|
"startColumn": 42, # The first column this GridData refers to, zero-based.
|
|
"columnMetadata": [ # Metadata about the requested columns in the grid, starting with the column
|
|
# in start_column.
|
|
{ # Properties about a dimension.
|
|
"pixelSize": 42, # The height (if a row) or width (if a column) of the dimension in pixels.
|
|
"developerMetadata": [ # The developer metadata associated with a single row or column.
|
|
{ # Developer metadata associated with a location or object in a spreadsheet.
|
|
# Developer metadata may be used to associate arbitrary data with various
|
|
# parts of a spreadsheet and will remain associated at those locations as they
|
|
# move around and the spreadsheet is edited. For example, if developer
|
|
# metadata is associated with row 5 and another row is then subsequently
|
|
# inserted above row 5, that original metadata will still be associated with
|
|
# the row it was first associated with (what is now row 6). If the associated
|
|
# object is deleted its metadata is deleted too.
|
|
"metadataId": 42, # The spreadsheet-scoped unique ID that identifies the metadata. IDs may be
|
|
# specified when metadata is created, otherwise one will be randomly
|
|
# generated and assigned. Must be positive.
|
|
"metadataValue": "A String", # Data associated with the metadata's key.
|
|
"location": { # A location where metadata may be associated in a spreadsheet. # The location where the metadata is associated.
|
|
"locationType": "A String", # The type of location this object represents. This field is read-only.
|
|
"dimensionRange": { # A range along a single dimension on a sheet. # Represents the row or column when metadata is associated with
|
|
# a dimension. The specified DimensionRange must represent a single row
|
|
# or column; it cannot be unbounded or span multiple rows or columns.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open: the start index is inclusive
|
|
# and the end index is exclusive.
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
"endIndex": 42, # The end (exclusive) of the span, or not set if unbounded.
|
|
"startIndex": 42, # The start (inclusive) of the span, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this span is on.
|
|
"dimension": "A String", # The dimension of the span.
|
|
},
|
|
"spreadsheet": True or False, # True when metadata is associated with an entire spreadsheet.
|
|
"sheetId": 42, # The ID of the sheet when metadata is associated with an entire sheet.
|
|
},
|
|
"visibility": "A String", # The metadata visibility. Developer metadata must always have a visibility
|
|
# specified.
|
|
"metadataKey": "A String", # The metadata key. There may be multiple metadata in a spreadsheet with the
|
|
# same key. Developer metadata must always have a key specified.
|
|
},
|
|
],
|
|
"hiddenByUser": True or False, # True if this dimension is explicitly hidden.
|
|
"hiddenByFilter": True or False, # True if this dimension is being filtered.
|
|
# This field is read-only.
|
|
},
|
|
],
|
|
"startRow": 42, # The first row this GridData refers to, zero-based.
|
|
"rowData": [ # The data in the grid, one entry per row,
|
|
# starting with the row in startRow.
|
|
# The values in RowData will correspond to columns starting
|
|
# at start_column.
|
|
{ # Data about each cell in a row.
|
|
"values": [ # The values in the row, one per column.
|
|
{ # Data about a specific cell.
|
|
"pivotTable": { # A pivot table. # A pivot table anchored at this cell. The size of pivot table itself
|
|
# is computed dynamically based on its data, grouping, filters, values,
|
|
# etc. Only the top-left cell of the pivot table contains the pivot table
|
|
# definition. The other cells will contain the calculated values of the
|
|
# results of the pivot in their effective_value fields.
|
|
"valueLayout": "A String", # Whether values should be listed horizontally (as columns)
|
|
# or vertically (as rows).
|
|
"rows": [ # Each row grouping in the pivot table.
|
|
{ # A single grouping (either row or column) in a pivot table.
|
|
"showTotals": True or False, # True if the pivot table should include the totals for this grouping.
|
|
"repeatHeadings": True or False, # True if the headings in this pivot group should be repeated.
|
|
# This is only valid for row groupings and is ignored by columns.
|
|
#
|
|
# By default, we minimize repitition of headings by not showing higher
|
|
# level headings where they are the same. For example, even though the
|
|
# third row below corresponds to "Q1 Mar", "Q1" is not shown because
|
|
# it is redundant with previous rows. Setting repeat_headings to true
|
|
# would cause "Q1" to be repeated for "Feb" and "Mar".
|
|
#
|
|
# +--------------+
|
|
# | Q1 | Jan |
|
|
# | | Feb |
|
|
# | | Mar |
|
|
# +--------+-----+
|
|
# | Q1 Total |
|
|
# +--------------+
|
|
"label": "A String", # The labels to use for the row/column groups which can be customized. For
|
|
# example, in the following pivot table, the row label is `Region` (which
|
|
# could be renamed to `State`) and the column label is `Product` (which
|
|
# could be renamed `Item`). Pivot tables created before December 2017 do
|
|
# not have header labels. If you'd like to add header labels to an existing
|
|
# pivot table, please delete the existing pivot table and then create a new
|
|
# pivot table with same parameters.
|
|
#
|
|
# +--------------+---------+-------+
|
|
# | SUM of Units | Product | |
|
|
# | Region | Pen | Paper |
|
|
# +--------------+---------+-------+
|
|
# | New York | 345 | 98 |
|
|
# | Oregon | 234 | 123 |
|
|
# | Tennessee | 531 | 415 |
|
|
# +--------------+---------+-------+
|
|
# | Grand Total | 1110 | 636 |
|
|
# +--------------+---------+-------+
|
|
"valueMetadata": [ # Metadata about values in the grouping.
|
|
{ # Metadata about a value in a pivot grouping.
|
|
"collapsed": True or False, # True if the data corresponding to the value is collapsed.
|
|
"value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to.
|
|
# (Note that formulaValue is not valid,
|
|
# because the values will be calculated.)
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
},
|
|
],
|
|
"valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by.
|
|
# If not specified, sorting is alphabetical by this group's values.
|
|
"buckets": [ # Determines the bucket from which values are chosen to sort.
|
|
#
|
|
# For example, in a pivot table with one row group & two column groups,
|
|
# the row group can list up to two values. The first value corresponds
|
|
# to a value within the first column group, and the second value
|
|
# corresponds to a value in the second column group. If no values
|
|
# are listed, this would indicate that the row should be sorted according
|
|
# to the "Grand Total" over the column groups. If a single value is listed,
|
|
# this would correspond to using the "Total" of that bucket.
|
|
{ # The kinds of value that a cell in a spreadsheet can have.
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
],
|
|
"valuesIndex": 42, # The offset in the PivotTable.values list which the values in this
|
|
# grouping should be sorted by.
|
|
},
|
|
"sortOrder": "A String", # The order the values in this group should be sorted.
|
|
"groupRule": { # An optional setting on a PivotGroup that defines buckets for the values # The group rule to apply to this row/column group.
|
|
# in the source data column rather than breaking out each individual value.
|
|
# Only one PivotGroup with a group rule may be added for each column in
|
|
# the source data, though on any given column you may add both a
|
|
# PivotGroup that has a rule and a PivotGroup that does not.
|
|
"histogramRule": { # Allows you to organize the numeric values in a source data column into # A HistogramRule.
|
|
# buckets of a constant size. All values from HistogramRule.start to
|
|
# HistogramRule.end are placed into groups of size
|
|
# HistogramRule.interval. In addition, all values below
|
|
# HistogramRule.start are placed in one group, and all values above
|
|
# HistogramRule.end are placed in another. Only
|
|
# HistogramRule.interval is required, though if HistogramRule.start
|
|
# and HistogramRule.end are both provided, HistogramRule.start must
|
|
# be less than HistogramRule.end. For example, a pivot table showing
|
|
# average purchase amount by age that has 50+ rows:
|
|
#
|
|
# +-----+-------------------+
|
|
# | Age | AVERAGE of Amount |
|
|
# +-----+-------------------+
|
|
# | 16 | $27.13 |
|
|
# | 17 | $5.24 |
|
|
# | 18 | $20.15 |
|
|
# ...
|
|
# +-----+-------------------+
|
|
# could be turned into a pivot table that looks like the one below by
|
|
# applying a histogram group rule with a HistogramRule.start of 25,
|
|
# an HistogramRule.interval of 20, and an HistogramRule.end
|
|
# of 65.
|
|
#
|
|
# +-------------+-------------------+
|
|
# | Grouped Age | AVERAGE of Amount |
|
|
# +-------------+-------------------+
|
|
# | < 25 | $19.34 |
|
|
# | 25-45 | $31.43 |
|
|
# | 45-65 | $35.87 |
|
|
# | > 65 | $27.55 |
|
|
# +-------------+-------------------+
|
|
# | Grand Total | $29.12 |
|
|
# +-------------+-------------------+
|
|
"start": 3.14, # The minimum value at which items are placed into buckets
|
|
# of constant size. Values below start are lumped into a single bucket.
|
|
# This field is optional.
|
|
"interval": 3.14, # The size of the buckets that are created. Must be positive.
|
|
"end": 3.14, # The maximum value at which items are placed into buckets
|
|
# of constant size. Values above end are lumped into a single bucket.
|
|
# This field is optional.
|
|
},
|
|
"manualRule": { # Allows you to manually organize the values in a source data column into # A ManualRule.
|
|
# buckets with names of your choosing. For example, a pivot table that
|
|
# aggregates population by state:
|
|
#
|
|
# +-------+-------------------+
|
|
# | State | SUM of Population |
|
|
# +-------+-------------------+
|
|
# | AK | 0.7 |
|
|
# | AL | 4.8 |
|
|
# | AR | 2.9 |
|
|
# ...
|
|
# +-------+-------------------+
|
|
# could be turned into a pivot table that aggregates population by time zone
|
|
# by providing a list of groups (for example, groupName = 'Central',
|
|
# items = ['AL', 'AR', 'IA', ...]) to a manual group rule.
|
|
# Note that a similar effect could be achieved by adding a time zone column
|
|
# to the source data and adjusting the pivot table.
|
|
#
|
|
# +-----------+-------------------+
|
|
# | Time Zone | SUM of Population |
|
|
# +-----------+-------------------+
|
|
# | Central | 106.3 |
|
|
# | Eastern | 151.9 |
|
|
# | Mountain | 17.4 |
|
|
# ...
|
|
# +-----------+-------------------+
|
|
"groups": [ # The list of group names and the corresponding items from the source data
|
|
# that map to each group name.
|
|
{ # A group name and a list of items from the source data that should be placed
|
|
# in the group with this name.
|
|
"items": [ # The items in the source data that should be placed into this group. Each
|
|
# item may be a string, number, or boolean. Items may appear in at most one
|
|
# group within a given ManualRule. Items that do not appear in any
|
|
# group will appear on their own.
|
|
{ # The kinds of value that a cell in a spreadsheet can have.
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
],
|
|
"groupName": { # The kinds of value that a cell in a spreadsheet can have. # The group name, which must be a string. Each group in a given
|
|
# ManualRule must have a unique group name.
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
},
|
|
],
|
|
},
|
|
"dateTimeRule": { # Allows you to organize the date-time values in a source data column into # A DateTimeRule.
|
|
# buckets based on selected parts of their date or time values. For example,
|
|
# consider a pivot table showing sales transactions by date:
|
|
#
|
|
# +----------+--------------+
|
|
# | Date | SUM of Sales |
|
|
# +----------+--------------+
|
|
# | 1/1/2017 | $621.14 |
|
|
# | 2/3/2017 | $708.84 |
|
|
# | 5/8/2017 | $326.84 |
|
|
# ...
|
|
# +----------+--------------+
|
|
# Applying a date-time group rule with a DateTimeRuleType of YEAR_MONTH
|
|
# results in the following pivot table.
|
|
#
|
|
# +--------------+--------------+
|
|
# | Grouped Date | SUM of Sales |
|
|
# +--------------+--------------+
|
|
# | 2017-Jan | $53,731.78 |
|
|
# | 2017-Feb | $83,475.32 |
|
|
# | 2017-Mar | $94,385.05 |
|
|
# ...
|
|
# +--------------+--------------+
|
|
"type": "A String", # The type of date-time grouping to apply.
|
|
},
|
|
},
|
|
"sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on.
|
|
#
|
|
# For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0`
|
|
# means this group refers to column `C`, whereas the offset `1` would refer
|
|
# to column `D`.
|
|
},
|
|
],
|
|
"source": { # A range on a sheet. # The range the pivot table is reading data from.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
"values": [ # A list of values to include in the pivot table.
|
|
{ # The definition of how a value in a pivot table should be calculated.
|
|
"formula": "A String", # A custom formula to calculate the value. The formula must start
|
|
# with an `=` character.
|
|
"name": "A String", # A name to use for the value.
|
|
"sourceColumnOffset": 42, # The column offset of the source range that this value reads from.
|
|
#
|
|
# For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0`
|
|
# means this value refers to column `C`, whereas the offset `1` would
|
|
# refer to column `D`.
|
|
"summarizeFunction": "A String", # A function to summarize the value.
|
|
# If formula is set, the only supported values are
|
|
# SUM and
|
|
# CUSTOM.
|
|
# If sourceColumnOffset is set, then `CUSTOM`
|
|
# is not supported.
|
|
"calculatedDisplayType": "A String", # If specified, indicates that pivot values should be displayed as
|
|
# the result of a calculation with another pivot value. For example, if
|
|
# calculated_display_type is specified as PERCENT_OF_GRAND_TOTAL, all the
|
|
# pivot values are displayed as the percentage of the grand total. In
|
|
# the Sheets UI, this is referred to as "Show As" in the value section of a
|
|
# pivot table.
|
|
},
|
|
],
|
|
"criteria": { # An optional mapping of filters per source column offset.
|
|
#
|
|
# The filters are applied before aggregating data into the pivot table.
|
|
# The map's key is the column offset of the source range that you want to
|
|
# filter, and the value is the criteria for that column.
|
|
#
|
|
# For example, if the source was `C10:E15`, a key of `0` will have the filter
|
|
# for column `C`, whereas the key `1` is for column `D`.
|
|
"a_key": { # Criteria for showing/hiding rows in a pivot table.
|
|
"visibleValues": [ # Values that should be included. Values not listed here are excluded.
|
|
"A String",
|
|
],
|
|
},
|
|
},
|
|
"columns": [ # Each column grouping in the pivot table.
|
|
{ # A single grouping (either row or column) in a pivot table.
|
|
"showTotals": True or False, # True if the pivot table should include the totals for this grouping.
|
|
"repeatHeadings": True or False, # True if the headings in this pivot group should be repeated.
|
|
# This is only valid for row groupings and is ignored by columns.
|
|
#
|
|
# By default, we minimize repitition of headings by not showing higher
|
|
# level headings where they are the same. For example, even though the
|
|
# third row below corresponds to "Q1 Mar", "Q1" is not shown because
|
|
# it is redundant with previous rows. Setting repeat_headings to true
|
|
# would cause "Q1" to be repeated for "Feb" and "Mar".
|
|
#
|
|
# +--------------+
|
|
# | Q1 | Jan |
|
|
# | | Feb |
|
|
# | | Mar |
|
|
# +--------+-----+
|
|
# | Q1 Total |
|
|
# +--------------+
|
|
"label": "A String", # The labels to use for the row/column groups which can be customized. For
|
|
# example, in the following pivot table, the row label is `Region` (which
|
|
# could be renamed to `State`) and the column label is `Product` (which
|
|
# could be renamed `Item`). Pivot tables created before December 2017 do
|
|
# not have header labels. If you'd like to add header labels to an existing
|
|
# pivot table, please delete the existing pivot table and then create a new
|
|
# pivot table with same parameters.
|
|
#
|
|
# +--------------+---------+-------+
|
|
# | SUM of Units | Product | |
|
|
# | Region | Pen | Paper |
|
|
# +--------------+---------+-------+
|
|
# | New York | 345 | 98 |
|
|
# | Oregon | 234 | 123 |
|
|
# | Tennessee | 531 | 415 |
|
|
# +--------------+---------+-------+
|
|
# | Grand Total | 1110 | 636 |
|
|
# +--------------+---------+-------+
|
|
"valueMetadata": [ # Metadata about values in the grouping.
|
|
{ # Metadata about a value in a pivot grouping.
|
|
"collapsed": True or False, # True if the data corresponding to the value is collapsed.
|
|
"value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to.
|
|
# (Note that formulaValue is not valid,
|
|
# because the values will be calculated.)
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
},
|
|
],
|
|
"valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by.
|
|
# If not specified, sorting is alphabetical by this group's values.
|
|
"buckets": [ # Determines the bucket from which values are chosen to sort.
|
|
#
|
|
# For example, in a pivot table with one row group & two column groups,
|
|
# the row group can list up to two values. The first value corresponds
|
|
# to a value within the first column group, and the second value
|
|
# corresponds to a value in the second column group. If no values
|
|
# are listed, this would indicate that the row should be sorted according
|
|
# to the "Grand Total" over the column groups. If a single value is listed,
|
|
# this would correspond to using the "Total" of that bucket.
|
|
{ # The kinds of value that a cell in a spreadsheet can have.
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
],
|
|
"valuesIndex": 42, # The offset in the PivotTable.values list which the values in this
|
|
# grouping should be sorted by.
|
|
},
|
|
"sortOrder": "A String", # The order the values in this group should be sorted.
|
|
"groupRule": { # An optional setting on a PivotGroup that defines buckets for the values # The group rule to apply to this row/column group.
|
|
# in the source data column rather than breaking out each individual value.
|
|
# Only one PivotGroup with a group rule may be added for each column in
|
|
# the source data, though on any given column you may add both a
|
|
# PivotGroup that has a rule and a PivotGroup that does not.
|
|
"histogramRule": { # Allows you to organize the numeric values in a source data column into # A HistogramRule.
|
|
# buckets of a constant size. All values from HistogramRule.start to
|
|
# HistogramRule.end are placed into groups of size
|
|
# HistogramRule.interval. In addition, all values below
|
|
# HistogramRule.start are placed in one group, and all values above
|
|
# HistogramRule.end are placed in another. Only
|
|
# HistogramRule.interval is required, though if HistogramRule.start
|
|
# and HistogramRule.end are both provided, HistogramRule.start must
|
|
# be less than HistogramRule.end. For example, a pivot table showing
|
|
# average purchase amount by age that has 50+ rows:
|
|
#
|
|
# +-----+-------------------+
|
|
# | Age | AVERAGE of Amount |
|
|
# +-----+-------------------+
|
|
# | 16 | $27.13 |
|
|
# | 17 | $5.24 |
|
|
# | 18 | $20.15 |
|
|
# ...
|
|
# +-----+-------------------+
|
|
# could be turned into a pivot table that looks like the one below by
|
|
# applying a histogram group rule with a HistogramRule.start of 25,
|
|
# an HistogramRule.interval of 20, and an HistogramRule.end
|
|
# of 65.
|
|
#
|
|
# +-------------+-------------------+
|
|
# | Grouped Age | AVERAGE of Amount |
|
|
# +-------------+-------------------+
|
|
# | < 25 | $19.34 |
|
|
# | 25-45 | $31.43 |
|
|
# | 45-65 | $35.87 |
|
|
# | > 65 | $27.55 |
|
|
# +-------------+-------------------+
|
|
# | Grand Total | $29.12 |
|
|
# +-------------+-------------------+
|
|
"start": 3.14, # The minimum value at which items are placed into buckets
|
|
# of constant size. Values below start are lumped into a single bucket.
|
|
# This field is optional.
|
|
"interval": 3.14, # The size of the buckets that are created. Must be positive.
|
|
"end": 3.14, # The maximum value at which items are placed into buckets
|
|
# of constant size. Values above end are lumped into a single bucket.
|
|
# This field is optional.
|
|
},
|
|
"manualRule": { # Allows you to manually organize the values in a source data column into # A ManualRule.
|
|
# buckets with names of your choosing. For example, a pivot table that
|
|
# aggregates population by state:
|
|
#
|
|
# +-------+-------------------+
|
|
# | State | SUM of Population |
|
|
# +-------+-------------------+
|
|
# | AK | 0.7 |
|
|
# | AL | 4.8 |
|
|
# | AR | 2.9 |
|
|
# ...
|
|
# +-------+-------------------+
|
|
# could be turned into a pivot table that aggregates population by time zone
|
|
# by providing a list of groups (for example, groupName = 'Central',
|
|
# items = ['AL', 'AR', 'IA', ...]) to a manual group rule.
|
|
# Note that a similar effect could be achieved by adding a time zone column
|
|
# to the source data and adjusting the pivot table.
|
|
#
|
|
# +-----------+-------------------+
|
|
# | Time Zone | SUM of Population |
|
|
# +-----------+-------------------+
|
|
# | Central | 106.3 |
|
|
# | Eastern | 151.9 |
|
|
# | Mountain | 17.4 |
|
|
# ...
|
|
# +-----------+-------------------+
|
|
"groups": [ # The list of group names and the corresponding items from the source data
|
|
# that map to each group name.
|
|
{ # A group name and a list of items from the source data that should be placed
|
|
# in the group with this name.
|
|
"items": [ # The items in the source data that should be placed into this group. Each
|
|
# item may be a string, number, or boolean. Items may appear in at most one
|
|
# group within a given ManualRule. Items that do not appear in any
|
|
# group will appear on their own.
|
|
{ # The kinds of value that a cell in a spreadsheet can have.
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
],
|
|
"groupName": { # The kinds of value that a cell in a spreadsheet can have. # The group name, which must be a string. Each group in a given
|
|
# ManualRule must have a unique group name.
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
},
|
|
],
|
|
},
|
|
"dateTimeRule": { # Allows you to organize the date-time values in a source data column into # A DateTimeRule.
|
|
# buckets based on selected parts of their date or time values. For example,
|
|
# consider a pivot table showing sales transactions by date:
|
|
#
|
|
# +----------+--------------+
|
|
# | Date | SUM of Sales |
|
|
# +----------+--------------+
|
|
# | 1/1/2017 | $621.14 |
|
|
# | 2/3/2017 | $708.84 |
|
|
# | 5/8/2017 | $326.84 |
|
|
# ...
|
|
# +----------+--------------+
|
|
# Applying a date-time group rule with a DateTimeRuleType of YEAR_MONTH
|
|
# results in the following pivot table.
|
|
#
|
|
# +--------------+--------------+
|
|
# | Grouped Date | SUM of Sales |
|
|
# +--------------+--------------+
|
|
# | 2017-Jan | $53,731.78 |
|
|
# | 2017-Feb | $83,475.32 |
|
|
# | 2017-Mar | $94,385.05 |
|
|
# ...
|
|
# +--------------+--------------+
|
|
"type": "A String", # The type of date-time grouping to apply.
|
|
},
|
|
},
|
|
"sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on.
|
|
#
|
|
# For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0`
|
|
# means this group refers to column `C`, whereas the offset `1` would refer
|
|
# to column `D`.
|
|
},
|
|
],
|
|
},
|
|
"hyperlink": "A String", # A hyperlink this cell points to, if any.
|
|
# This field is read-only. (To set it, use a `=HYPERLINK` formula
|
|
# in the userEnteredValue.formulaValue
|
|
# field.)
|
|
"effectiveValue": { # The kinds of value that a cell in a spreadsheet can have. # The effective value of the cell. For cells with formulas, this is
|
|
# the calculated value. For cells with literals, this is
|
|
# the same as the user_entered_value.
|
|
# This field is read-only.
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
"formattedValue": "A String", # The formatted value of the cell.
|
|
# This is the value as it's shown to the user.
|
|
# This field is read-only.
|
|
"userEnteredValue": { # The kinds of value that a cell in a spreadsheet can have. # The value the user entered in the cell. e.g, `1234`, `'Hello'`, or `=NOW()`
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# serial number format.
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
"note": "A String", # Any note on the cell.
|
|
"effectiveFormat": { # The format of a cell. # The effective format being used by the cell.
|
|
# This includes the results of applying any conditional formatting and,
|
|
# if the cell contains a formula, the computed number format.
|
|
# If the effective format is the default format, effective format will
|
|
# not be written.
|
|
# This field is read-only.
|
|
"numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
|
|
"pattern": "A String", # Pattern string used for formatting. If not set, a default pattern based on
|
|
# the user's locale will be used if necessary for the given type.
|
|
# See the [Date and Number Formats guide](/sheets/api/guides/formats) for
|
|
# more information about the supported patterns.
|
|
"type": "A String", # The type of the number format.
|
|
# When writing, this field must be set.
|
|
},
|
|
"textDirection": "A String", # The direction of the text in the cell.
|
|
"padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
|
|
# When updating padding, every field must be specified.
|
|
"top": 42, # The top padding of the cell.
|
|
"left": 42, # The left padding of the cell.
|
|
"right": 42, # The right padding of the cell.
|
|
"bottom": 42, # The bottom padding of the cell.
|
|
},
|
|
"horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
|
|
"backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"verticalAlignment": "A String", # The vertical alignment of the value in the cell.
|
|
"borders": { # The borders of the cell. # The borders of the cell.
|
|
"top": { # A border along a cell. # The top border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"right": { # A border along a cell. # The right border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"bottom": { # A border along a cell. # The bottom border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"left": { # A border along a cell. # The left border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
},
|
|
"textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell
|
|
"angle": 42, # The angle between the standard orientation and the desired orientation.
|
|
# Measured in degrees. Valid values are between -90 and 90. Positive
|
|
# angles are angled upwards, negative are angled downwards.
|
|
#
|
|
# Note: For LTR text direction positive angles are in the
|
|
# counterclockwise direction, whereas for RTL they are in the clockwise
|
|
# direction
|
|
"vertical": True or False, # If true, text reads top to bottom, but the orientation of individual
|
|
# characters is unchanged.
|
|
# For example:
|
|
#
|
|
# | V |
|
|
# | e |
|
|
# | r |
|
|
# | t |
|
|
# | i |
|
|
# | c |
|
|
# | a |
|
|
# | l |
|
|
},
|
|
"hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
|
|
"textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
"wrapStrategy": "A String", # The wrap strategy for the value in the cell.
|
|
},
|
|
"userEnteredFormat": { # The format of a cell. # The format the user entered for the cell.
|
|
#
|
|
# When writing, the new format will be merged with the existing format.
|
|
"numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
|
|
"pattern": "A String", # Pattern string used for formatting. If not set, a default pattern based on
|
|
# the user's locale will be used if necessary for the given type.
|
|
# See the [Date and Number Formats guide](/sheets/api/guides/formats) for
|
|
# more information about the supported patterns.
|
|
"type": "A String", # The type of the number format.
|
|
# When writing, this field must be set.
|
|
},
|
|
"textDirection": "A String", # The direction of the text in the cell.
|
|
"padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
|
|
# When updating padding, every field must be specified.
|
|
"top": 42, # The top padding of the cell.
|
|
"left": 42, # The left padding of the cell.
|
|
"right": 42, # The right padding of the cell.
|
|
"bottom": 42, # The bottom padding of the cell.
|
|
},
|
|
"horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
|
|
"backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"verticalAlignment": "A String", # The vertical alignment of the value in the cell.
|
|
"borders": { # The borders of the cell. # The borders of the cell.
|
|
"top": { # A border along a cell. # The top border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"right": { # A border along a cell. # The right border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"bottom": { # A border along a cell. # The bottom border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"left": { # A border along a cell. # The left border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
},
|
|
"textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell
|
|
"angle": 42, # The angle between the standard orientation and the desired orientation.
|
|
# Measured in degrees. Valid values are between -90 and 90. Positive
|
|
# angles are angled upwards, negative are angled downwards.
|
|
#
|
|
# Note: For LTR text direction positive angles are in the
|
|
# counterclockwise direction, whereas for RTL they are in the clockwise
|
|
# direction
|
|
"vertical": True or False, # If true, text reads top to bottom, but the orientation of individual
|
|
# characters is unchanged.
|
|
# For example:
|
|
#
|
|
# | V |
|
|
# | e |
|
|
# | r |
|
|
# | t |
|
|
# | i |
|
|
# | c |
|
|
# | a |
|
|
# | l |
|
|
},
|
|
"hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
|
|
"textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
"wrapStrategy": "A String", # The wrap strategy for the value in the cell.
|
|
},
|
|
"dataValidation": { # A data validation rule. # A data validation rule on the cell, if any.
|
|
#
|
|
# When writing, the new data validation rule will overwrite any prior rule.
|
|
"showCustomUi": True or False, # True if the UI should be customized based on the kind of condition.
|
|
# If true, "List" conditions will show a dropdown.
|
|
"strict": True or False, # True if invalid data should be rejected.
|
|
"inputMessage": "A String", # A message to show the user when adding data to the cell.
|
|
"condition": { # A condition that can evaluate to true or false. # The condition that data in the cell must match.
|
|
# BooleanConditions are used by conditional formatting,
|
|
# data validation, and the criteria in filters.
|
|
"values": [ # The values of the condition. The number of supported values depends
|
|
# on the condition type. Some support zero values,
|
|
# others one or two values,
|
|
# and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
|
|
{ # The value of the condition.
|
|
"relativeDate": "A String", # A relative date (based on the current date).
|
|
# Valid only if the type is
|
|
# DATE_BEFORE,
|
|
# DATE_AFTER,
|
|
# DATE_ON_OR_BEFORE or
|
|
# DATE_ON_OR_AFTER.
|
|
#
|
|
# Relative dates are not supported in data validation.
|
|
# They are supported only in conditional formatting and
|
|
# conditional filters.
|
|
"userEnteredValue": "A String", # A value the condition is based on.
|
|
# The value is parsed as if the user typed into a cell.
|
|
# Formulas are supported (and must begin with an `=` or a '+').
|
|
},
|
|
],
|
|
"type": "A String", # The type of condition.
|
|
},
|
|
},
|
|
"textFormatRuns": [ # Runs of rich text applied to subsections of the cell. Runs are only valid
|
|
# on user entered strings, not formulas, bools, or numbers.
|
|
# Runs start at specific indexes in the text and continue until the next
|
|
# run. Properties of a run will continue unless explicitly changed
|
|
# in a subsequent run (and properties of the first run will continue
|
|
# the properties of the cell unless explicitly changed).
|
|
#
|
|
# When writing, the new runs will overwrite any prior runs. When writing a
|
|
# new user_entered_value, previous runs are erased.
|
|
{ # A run of a text format. The format of this run continues until the start
|
|
# index of the next run.
|
|
# When updating, all fields must be set.
|
|
"startIndex": 42, # The character index where this run starts.
|
|
"format": { # The format of a run of text in a cell. # The format of this run. Absent values inherit the cell's format.
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
},
|
|
],
|
|
},
|
|
],
|
|
},
|
|
],
|
|
},
|
|
],
|
|
"rowGroups": [ # All row groups on this sheet, ordered by increasing range start index, then
|
|
# by group depth.
|
|
{ # A group over an interval of rows or columns on a sheet, which can contain or
|
|
# be contained within other groups. A group can be collapsed or expanded as a
|
|
# unit on the sheet.
|
|
"range": { # A range along a single dimension on a sheet. # The range over which this group exists.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open: the start index is inclusive
|
|
# and the end index is exclusive.
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
"endIndex": 42, # The end (exclusive) of the span, or not set if unbounded.
|
|
"startIndex": 42, # The start (inclusive) of the span, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this span is on.
|
|
"dimension": "A String", # The dimension of the span.
|
|
},
|
|
"collapsed": True or False, # This field is true if this group is collapsed. A collapsed group remains
|
|
# collapsed if an overlapping group at a shallower depth is expanded.
|
|
#
|
|
# A true value does not imply that all dimensions within the group are
|
|
# hidden, since a dimension's visibility can change independently from this
|
|
# group property. However, when this property is updated, all dimensions
|
|
# within it are set to hidden if this field is true, or set to visible if
|
|
# this field is false.
|
|
"depth": 42, # The depth of the group, representing how many groups have a range that
|
|
# wholly contains the range of this group.
|
|
},
|
|
],
|
|
},
|
|
],
|
|
"spreadsheetUrl": "A String", # The url of the spreadsheet.
|
|
# This field is read-only.
|
|
"spreadsheetId": "A String", # The ID of the spreadsheet.
|
|
# This field is read-only.
|
|
"namedRanges": [ # The named ranges defined in a spreadsheet.
|
|
{ # A named range.
|
|
"namedRangeId": "A String", # The ID of the named range.
|
|
"range": { # A range on a sheet. # The range this represents.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
"name": "A String", # The name of the named range.
|
|
},
|
|
],
|
|
"properties": { # Properties of a spreadsheet. # Overall properties of a spreadsheet.
|
|
"title": "A String", # The title of the spreadsheet.
|
|
"locale": "A String", # The locale of the spreadsheet in one of the following formats:
|
|
#
|
|
# * an ISO 639-1 language code such as `en`
|
|
#
|
|
# * an ISO 639-2 language code such as `fil`, if no 639-1 code exists
|
|
#
|
|
# * a combination of the ISO language code and country code, such as `en_US`
|
|
#
|
|
# Note: when updating this field, not all locales/languages are supported.
|
|
"defaultFormat": { # The format of a cell. # The default format of all cells in the spreadsheet.
|
|
# CellData.effectiveFormat will not be set if
|
|
# the cell's format is equal to this default format. This field is read-only.
|
|
"numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
|
|
"pattern": "A String", # Pattern string used for formatting. If not set, a default pattern based on
|
|
# the user's locale will be used if necessary for the given type.
|
|
# See the [Date and Number Formats guide](/sheets/api/guides/formats) for
|
|
# more information about the supported patterns.
|
|
"type": "A String", # The type of the number format.
|
|
# When writing, this field must be set.
|
|
},
|
|
"textDirection": "A String", # The direction of the text in the cell.
|
|
"padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
|
|
# When updating padding, every field must be specified.
|
|
"top": 42, # The top padding of the cell.
|
|
"left": 42, # The left padding of the cell.
|
|
"right": 42, # The right padding of the cell.
|
|
"bottom": 42, # The bottom padding of the cell.
|
|
},
|
|
"horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
|
|
"backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"verticalAlignment": "A String", # The vertical alignment of the value in the cell.
|
|
"borders": { # The borders of the cell. # The borders of the cell.
|
|
"top": { # A border along a cell. # The top border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"right": { # A border along a cell. # The right border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"bottom": { # A border along a cell. # The bottom border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"left": { # A border along a cell. # The left border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
},
|
|
"textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell
|
|
"angle": 42, # The angle between the standard orientation and the desired orientation.
|
|
# Measured in degrees. Valid values are between -90 and 90. Positive
|
|
# angles are angled upwards, negative are angled downwards.
|
|
#
|
|
# Note: For LTR text direction positive angles are in the
|
|
# counterclockwise direction, whereas for RTL they are in the clockwise
|
|
# direction
|
|
"vertical": True or False, # If true, text reads top to bottom, but the orientation of individual
|
|
# characters is unchanged.
|
|
# For example:
|
|
#
|
|
# | V |
|
|
# | e |
|
|
# | r |
|
|
# | t |
|
|
# | i |
|
|
# | c |
|
|
# | a |
|
|
# | l |
|
|
},
|
|
"hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
|
|
"textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
"wrapStrategy": "A String", # The wrap strategy for the value in the cell.
|
|
},
|
|
"autoRecalc": "A String", # The amount of time to wait before volatile functions are recalculated.
|
|
"iterativeCalculationSettings": { # Settings to control how circular dependencies are resolved with iterative # Determines whether and how circular references are resolved with iterative
|
|
# calculation. Absence of this field means that circular references will
|
|
# result in calculation errors.
|
|
# calculation.
|
|
"convergenceThreshold": 3.14, # When iterative calculation is enabled and successive results differ by
|
|
# less than this threshold value, the calculation rounds stop.
|
|
"maxIterations": 42, # When iterative calculation is enabled, the maximum number of calculation
|
|
# rounds to perform.
|
|
},
|
|
"timeZone": "A String", # The time zone of the spreadsheet, in CLDR format such as
|
|
# `America/New_York`. If the time zone isn't recognized, this may
|
|
# be a custom time zone such as `GMT-07:00`.
|
|
},
|
|
}</pre>
|
|
</div>
|
|
|
|
<div class="method">
|
|
<code class="details" id="get">get(spreadsheetId, ranges=None, includeGridData=None, x__xgafv=None)</code>
|
|
<pre>Returns the spreadsheet at the given ID.
|
|
The caller must specify the spreadsheet ID.
|
|
|
|
By default, data within grids will not be returned.
|
|
You can include grid data one of two ways:
|
|
|
|
* Specify a field mask listing your desired fields using the `fields` URL
|
|
parameter in HTTP
|
|
|
|
* Set the includeGridData
|
|
URL parameter to true. If a field mask is set, the `includeGridData`
|
|
parameter is ignored
|
|
|
|
For large spreadsheets, it is recommended to retrieve only the specific
|
|
fields of the spreadsheet that you want.
|
|
|
|
To retrieve only subsets of the spreadsheet, use the
|
|
ranges URL parameter.
|
|
Multiple ranges can be specified. Limiting the range will
|
|
return only the portions of the spreadsheet that intersect the requested
|
|
ranges. Ranges are specified using A1 notation.
|
|
|
|
Args:
|
|
spreadsheetId: string, The spreadsheet to request. (required)
|
|
ranges: string, The ranges to retrieve from the spreadsheet. (repeated)
|
|
includeGridData: boolean, True if grid data should be returned.
|
|
This parameter is ignored if a field mask was set in the request.
|
|
x__xgafv: string, V1 error format.
|
|
Allowed values
|
|
1 - v1 error format
|
|
2 - v2 error format
|
|
|
|
Returns:
|
|
An object of the form:
|
|
|
|
{ # Resource that represents a spreadsheet.
|
|
"developerMetadata": [ # The developer metadata associated with a spreadsheet.
|
|
{ # Developer metadata associated with a location or object in a spreadsheet.
|
|
# Developer metadata may be used to associate arbitrary data with various
|
|
# parts of a spreadsheet and will remain associated at those locations as they
|
|
# move around and the spreadsheet is edited. For example, if developer
|
|
# metadata is associated with row 5 and another row is then subsequently
|
|
# inserted above row 5, that original metadata will still be associated with
|
|
# the row it was first associated with (what is now row 6). If the associated
|
|
# object is deleted its metadata is deleted too.
|
|
"metadataId": 42, # The spreadsheet-scoped unique ID that identifies the metadata. IDs may be
|
|
# specified when metadata is created, otherwise one will be randomly
|
|
# generated and assigned. Must be positive.
|
|
"metadataValue": "A String", # Data associated with the metadata's key.
|
|
"location": { # A location where metadata may be associated in a spreadsheet. # The location where the metadata is associated.
|
|
"locationType": "A String", # The type of location this object represents. This field is read-only.
|
|
"dimensionRange": { # A range along a single dimension on a sheet. # Represents the row or column when metadata is associated with
|
|
# a dimension. The specified DimensionRange must represent a single row
|
|
# or column; it cannot be unbounded or span multiple rows or columns.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open: the start index is inclusive
|
|
# and the end index is exclusive.
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
"endIndex": 42, # The end (exclusive) of the span, or not set if unbounded.
|
|
"startIndex": 42, # The start (inclusive) of the span, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this span is on.
|
|
"dimension": "A String", # The dimension of the span.
|
|
},
|
|
"spreadsheet": True or False, # True when metadata is associated with an entire spreadsheet.
|
|
"sheetId": 42, # The ID of the sheet when metadata is associated with an entire sheet.
|
|
},
|
|
"visibility": "A String", # The metadata visibility. Developer metadata must always have a visibility
|
|
# specified.
|
|
"metadataKey": "A String", # The metadata key. There may be multiple metadata in a spreadsheet with the
|
|
# same key. Developer metadata must always have a key specified.
|
|
},
|
|
],
|
|
"sheets": [ # The sheets that are part of a spreadsheet.
|
|
{ # A sheet in a spreadsheet.
|
|
"conditionalFormats": [ # The conditional format rules in this sheet.
|
|
{ # A rule describing a conditional format.
|
|
"ranges": [ # The ranges that are formatted if the condition is true.
|
|
# All the ranges must be on the same grid.
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
"booleanRule": { # A rule that may or may not match, depending on the condition. # The formatting is either "on" or "off" according to the rule.
|
|
"condition": { # A condition that can evaluate to true or false. # The condition of the rule. If the condition evaluates to true,
|
|
# the format is applied.
|
|
# BooleanConditions are used by conditional formatting,
|
|
# data validation, and the criteria in filters.
|
|
"values": [ # The values of the condition. The number of supported values depends
|
|
# on the condition type. Some support zero values,
|
|
# others one or two values,
|
|
# and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
|
|
{ # The value of the condition.
|
|
"relativeDate": "A String", # A relative date (based on the current date).
|
|
# Valid only if the type is
|
|
# DATE_BEFORE,
|
|
# DATE_AFTER,
|
|
# DATE_ON_OR_BEFORE or
|
|
# DATE_ON_OR_AFTER.
|
|
#
|
|
# Relative dates are not supported in data validation.
|
|
# They are supported only in conditional formatting and
|
|
# conditional filters.
|
|
"userEnteredValue": "A String", # A value the condition is based on.
|
|
# The value is parsed as if the user typed into a cell.
|
|
# Formulas are supported (and must begin with an `=` or a '+').
|
|
},
|
|
],
|
|
"type": "A String", # The type of condition.
|
|
},
|
|
"format": { # The format of a cell. # The format to apply.
|
|
# Conditional formatting can only apply a subset of formatting:
|
|
# bold, italic,
|
|
# strikethrough,
|
|
# foreground color &
|
|
# background color.
|
|
"numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
|
|
"pattern": "A String", # Pattern string used for formatting. If not set, a default pattern based on
|
|
# the user's locale will be used if necessary for the given type.
|
|
# See the [Date and Number Formats guide](/sheets/api/guides/formats) for
|
|
# more information about the supported patterns.
|
|
"type": "A String", # The type of the number format.
|
|
# When writing, this field must be set.
|
|
},
|
|
"textDirection": "A String", # The direction of the text in the cell.
|
|
"padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
|
|
# When updating padding, every field must be specified.
|
|
"top": 42, # The top padding of the cell.
|
|
"left": 42, # The left padding of the cell.
|
|
"right": 42, # The right padding of the cell.
|
|
"bottom": 42, # The bottom padding of the cell.
|
|
},
|
|
"horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
|
|
"backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"verticalAlignment": "A String", # The vertical alignment of the value in the cell.
|
|
"borders": { # The borders of the cell. # The borders of the cell.
|
|
"top": { # A border along a cell. # The top border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"right": { # A border along a cell. # The right border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"bottom": { # A border along a cell. # The bottom border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"left": { # A border along a cell. # The left border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
},
|
|
"textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell
|
|
"angle": 42, # The angle between the standard orientation and the desired orientation.
|
|
# Measured in degrees. Valid values are between -90 and 90. Positive
|
|
# angles are angled upwards, negative are angled downwards.
|
|
#
|
|
# Note: For LTR text direction positive angles are in the
|
|
# counterclockwise direction, whereas for RTL they are in the clockwise
|
|
# direction
|
|
"vertical": True or False, # If true, text reads top to bottom, but the orientation of individual
|
|
# characters is unchanged.
|
|
# For example:
|
|
#
|
|
# | V |
|
|
# | e |
|
|
# | r |
|
|
# | t |
|
|
# | i |
|
|
# | c |
|
|
# | a |
|
|
# | l |
|
|
},
|
|
"hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
|
|
"textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
"wrapStrategy": "A String", # The wrap strategy for the value in the cell.
|
|
},
|
|
},
|
|
"gradientRule": { # A rule that applies a gradient color scale format, based on # The formatting will vary based on the gradients in the rule.
|
|
# the interpolation points listed. The format of a cell will vary
|
|
# based on its contents as compared to the values of the interpolation
|
|
# points.
|
|
"maxpoint": { # A single interpolation point on a gradient conditional format. # The final interpolation point.
|
|
# These pin the gradient color scale according to the color,
|
|
# type and value chosen.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"type": "A String", # How the value should be interpreted.
|
|
"value": "A String", # The value this interpolation point uses. May be a formula.
|
|
# Unused if type is MIN or
|
|
# MAX.
|
|
},
|
|
"midpoint": { # A single interpolation point on a gradient conditional format. # An optional midway interpolation point.
|
|
# These pin the gradient color scale according to the color,
|
|
# type and value chosen.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"type": "A String", # How the value should be interpreted.
|
|
"value": "A String", # The value this interpolation point uses. May be a formula.
|
|
# Unused if type is MIN or
|
|
# MAX.
|
|
},
|
|
"minpoint": { # A single interpolation point on a gradient conditional format. # The starting interpolation point.
|
|
# These pin the gradient color scale according to the color,
|
|
# type and value chosen.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"type": "A String", # How the value should be interpreted.
|
|
"value": "A String", # The value this interpolation point uses. May be a formula.
|
|
# Unused if type is MIN or
|
|
# MAX.
|
|
},
|
|
},
|
|
},
|
|
],
|
|
"bandedRanges": [ # The banded (alternating colors) ranges on this sheet.
|
|
{ # A banded (alternating colors) range in a sheet.
|
|
"range": { # A range on a sheet. # The range over which these properties are applied.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
"columnProperties": { # Properties referring a single dimension (either row or column). If both # Properties for column bands. These properties are applied on a column-
|
|
# by-column basis throughout all the columns in the range. At least one of
|
|
# row_properties or column_properties must be specified.
|
|
# BandedRange.row_properties and BandedRange.column_properties are
|
|
# set, the fill colors are applied to cells according to the following rules:
|
|
#
|
|
# * header_color and footer_color take priority over band colors.
|
|
# * first_band_color takes priority over second_band_color.
|
|
# * row_properties takes priority over column_properties.
|
|
#
|
|
# For example, the first row color takes priority over the first column
|
|
# color, but the first column color takes priority over the second row color.
|
|
# Similarly, the row header takes priority over the column header in the
|
|
# top left cell, but the column header takes priority over the first row
|
|
# color if the row header is not set.
|
|
"secondBandColor": { # Represents a color in the RGBA color space. This representation is designed # The second color that is alternating. (Required)
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"headerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the first row or column. If this field is set, the first
|
|
# row or column will be filled with this color and the colors will
|
|
# alternate between first_band_color and second_band_color starting
|
|
# from the second row or column. Otherwise, the first row or column will be
|
|
# filled with first_band_color and the colors will proceed to alternate
|
|
# as they normally would.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"footerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the last row or column. If this field is not set, the last
|
|
# row or column will be filled with either first_band_color or
|
|
# second_band_color, depending on the color of the previous row or
|
|
# column.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"firstBandColor": { # Represents a color in the RGBA color space. This representation is designed # The first color that is alternating. (Required)
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
},
|
|
"rowProperties": { # Properties referring a single dimension (either row or column). If both # Properties for row bands. These properties are applied on a row-by-row
|
|
# basis throughout all the rows in the range. At least one of
|
|
# row_properties or column_properties must be specified.
|
|
# BandedRange.row_properties and BandedRange.column_properties are
|
|
# set, the fill colors are applied to cells according to the following rules:
|
|
#
|
|
# * header_color and footer_color take priority over band colors.
|
|
# * first_band_color takes priority over second_band_color.
|
|
# * row_properties takes priority over column_properties.
|
|
#
|
|
# For example, the first row color takes priority over the first column
|
|
# color, but the first column color takes priority over the second row color.
|
|
# Similarly, the row header takes priority over the column header in the
|
|
# top left cell, but the column header takes priority over the first row
|
|
# color if the row header is not set.
|
|
"secondBandColor": { # Represents a color in the RGBA color space. This representation is designed # The second color that is alternating. (Required)
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"headerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the first row or column. If this field is set, the first
|
|
# row or column will be filled with this color and the colors will
|
|
# alternate between first_band_color and second_band_color starting
|
|
# from the second row or column. Otherwise, the first row or column will be
|
|
# filled with first_band_color and the colors will proceed to alternate
|
|
# as they normally would.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"footerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the last row or column. If this field is not set, the last
|
|
# row or column will be filled with either first_band_color or
|
|
# second_band_color, depending on the color of the previous row or
|
|
# column.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"firstBandColor": { # Represents a color in the RGBA color space. This representation is designed # The first color that is alternating. (Required)
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
},
|
|
"bandedRangeId": 42, # The id of the banded range.
|
|
},
|
|
],
|
|
"merges": [ # The ranges that are merged together.
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
"basicFilter": { # The default filter associated with a sheet. # The filter on this sheet, if any.
|
|
"range": { # A range on a sheet. # The range the filter covers.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
"sortSpecs": [ # The sort order per column. Later specifications are used when values
|
|
# are equal in the earlier specifications.
|
|
{ # A sort order associated with a specific column or row.
|
|
"sortOrder": "A String", # The order data should be sorted.
|
|
"dimensionIndex": 42, # The dimension the sort should be applied to.
|
|
},
|
|
],
|
|
"criteria": { # The criteria for showing/hiding values per column.
|
|
# The map's key is the column index, and the value is the criteria for
|
|
# that column.
|
|
"a_key": { # Criteria for showing/hiding rows in a filter or filter view.
|
|
"hiddenValues": [ # Values that should be hidden.
|
|
"A String",
|
|
],
|
|
"condition": { # A condition that can evaluate to true or false. # A condition that must be true for values to be shown.
|
|
# (This does not override hiddenValues -- if a value is listed there,
|
|
# it will still be hidden.)
|
|
# BooleanConditions are used by conditional formatting,
|
|
# data validation, and the criteria in filters.
|
|
"values": [ # The values of the condition. The number of supported values depends
|
|
# on the condition type. Some support zero values,
|
|
# others one or two values,
|
|
# and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
|
|
{ # The value of the condition.
|
|
"relativeDate": "A String", # A relative date (based on the current date).
|
|
# Valid only if the type is
|
|
# DATE_BEFORE,
|
|
# DATE_AFTER,
|
|
# DATE_ON_OR_BEFORE or
|
|
# DATE_ON_OR_AFTER.
|
|
#
|
|
# Relative dates are not supported in data validation.
|
|
# They are supported only in conditional formatting and
|
|
# conditional filters.
|
|
"userEnteredValue": "A String", # A value the condition is based on.
|
|
# The value is parsed as if the user typed into a cell.
|
|
# Formulas are supported (and must begin with an `=` or a '+').
|
|
},
|
|
],
|
|
"type": "A String", # The type of condition.
|
|
},
|
|
},
|
|
},
|
|
},
|
|
"developerMetadata": [ # The developer metadata associated with a sheet.
|
|
{ # Developer metadata associated with a location or object in a spreadsheet.
|
|
# Developer metadata may be used to associate arbitrary data with various
|
|
# parts of a spreadsheet and will remain associated at those locations as they
|
|
# move around and the spreadsheet is edited. For example, if developer
|
|
# metadata is associated with row 5 and another row is then subsequently
|
|
# inserted above row 5, that original metadata will still be associated with
|
|
# the row it was first associated with (what is now row 6). If the associated
|
|
# object is deleted its metadata is deleted too.
|
|
"metadataId": 42, # The spreadsheet-scoped unique ID that identifies the metadata. IDs may be
|
|
# specified when metadata is created, otherwise one will be randomly
|
|
# generated and assigned. Must be positive.
|
|
"metadataValue": "A String", # Data associated with the metadata's key.
|
|
"location": { # A location where metadata may be associated in a spreadsheet. # The location where the metadata is associated.
|
|
"locationType": "A String", # The type of location this object represents. This field is read-only.
|
|
"dimensionRange": { # A range along a single dimension on a sheet. # Represents the row or column when metadata is associated with
|
|
# a dimension. The specified DimensionRange must represent a single row
|
|
# or column; it cannot be unbounded or span multiple rows or columns.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open: the start index is inclusive
|
|
# and the end index is exclusive.
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
"endIndex": 42, # The end (exclusive) of the span, or not set if unbounded.
|
|
"startIndex": 42, # The start (inclusive) of the span, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this span is on.
|
|
"dimension": "A String", # The dimension of the span.
|
|
},
|
|
"spreadsheet": True or False, # True when metadata is associated with an entire spreadsheet.
|
|
"sheetId": 42, # The ID of the sheet when metadata is associated with an entire sheet.
|
|
},
|
|
"visibility": "A String", # The metadata visibility. Developer metadata must always have a visibility
|
|
# specified.
|
|
"metadataKey": "A String", # The metadata key. There may be multiple metadata in a spreadsheet with the
|
|
# same key. Developer metadata must always have a key specified.
|
|
},
|
|
],
|
|
"columnGroups": [ # All column groups on this sheet, ordered by increasing range start index,
|
|
# then by group depth.
|
|
{ # A group over an interval of rows or columns on a sheet, which can contain or
|
|
# be contained within other groups. A group can be collapsed or expanded as a
|
|
# unit on the sheet.
|
|
"range": { # A range along a single dimension on a sheet. # The range over which this group exists.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open: the start index is inclusive
|
|
# and the end index is exclusive.
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
"endIndex": 42, # The end (exclusive) of the span, or not set if unbounded.
|
|
"startIndex": 42, # The start (inclusive) of the span, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this span is on.
|
|
"dimension": "A String", # The dimension of the span.
|
|
},
|
|
"collapsed": True or False, # This field is true if this group is collapsed. A collapsed group remains
|
|
# collapsed if an overlapping group at a shallower depth is expanded.
|
|
#
|
|
# A true value does not imply that all dimensions within the group are
|
|
# hidden, since a dimension's visibility can change independently from this
|
|
# group property. However, when this property is updated, all dimensions
|
|
# within it are set to hidden if this field is true, or set to visible if
|
|
# this field is false.
|
|
"depth": 42, # The depth of the group, representing how many groups have a range that
|
|
# wholly contains the range of this group.
|
|
},
|
|
],
|
|
"properties": { # Properties of a sheet. # The properties of the sheet.
|
|
"sheetType": "A String", # The type of sheet. Defaults to GRID.
|
|
# This field cannot be changed once set.
|
|
"index": 42, # The index of the sheet within the spreadsheet.
|
|
# When adding or updating sheet properties, if this field
|
|
# is excluded then the sheet is added or moved to the end
|
|
# of the sheet list. When updating sheet indices or inserting
|
|
# sheets, movement is considered in "before the move" indexes.
|
|
# For example, if there were 3 sheets (S1, S2, S3) in order to
|
|
# move S1 ahead of S2 the index would have to be set to 2. A sheet
|
|
# index update request is ignored if the requested index is
|
|
# identical to the sheets current index or if the requested new
|
|
# index is equal to the current sheet index + 1.
|
|
"title": "A String", # The name of the sheet.
|
|
"gridProperties": { # Properties of a grid. # Additional properties of the sheet if this sheet is a grid.
|
|
# (If the sheet is an object sheet, containing a chart or image, then
|
|
# this field will be absent.)
|
|
# When writing it is an error to set any grid properties on non-grid sheets.
|
|
"columnCount": 42, # The number of columns in the grid.
|
|
"rowGroupControlAfter": True or False, # True if the row grouping control toggle is shown after the group.
|
|
"columnGroupControlAfter": True or False, # True if the column grouping control toggle is shown after the group.
|
|
"frozenRowCount": 42, # The number of rows that are frozen in the grid.
|
|
"frozenColumnCount": 42, # The number of columns that are frozen in the grid.
|
|
"rowCount": 42, # The number of rows in the grid.
|
|
"hideGridlines": True or False, # True if the grid isn't showing gridlines in the UI.
|
|
},
|
|
"rightToLeft": True or False, # True if the sheet is an RTL sheet instead of an LTR sheet.
|
|
"tabColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the tab in the UI.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"hidden": True or False, # True if the sheet is hidden in the UI, false if it's visible.
|
|
"sheetId": 42, # The ID of the sheet. Must be non-negative.
|
|
# This field cannot be changed once set.
|
|
},
|
|
"filterViews": [ # The filter views in this sheet.
|
|
{ # A filter view.
|
|
"title": "A String", # The name of the filter view.
|
|
"namedRangeId": "A String", # The named range this filter view is backed by, if any.
|
|
#
|
|
# When writing, only one of range or named_range_id
|
|
# may be set.
|
|
"filterViewId": 42, # The ID of the filter view.
|
|
"range": { # A range on a sheet. # The range this filter view covers.
|
|
#
|
|
# When writing, only one of range or named_range_id
|
|
# may be set.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
"sortSpecs": [ # The sort order per column. Later specifications are used when values
|
|
# are equal in the earlier specifications.
|
|
{ # A sort order associated with a specific column or row.
|
|
"sortOrder": "A String", # The order data should be sorted.
|
|
"dimensionIndex": 42, # The dimension the sort should be applied to.
|
|
},
|
|
],
|
|
"criteria": { # The criteria for showing/hiding values per column.
|
|
# The map's key is the column index, and the value is the criteria for
|
|
# that column.
|
|
"a_key": { # Criteria for showing/hiding rows in a filter or filter view.
|
|
"hiddenValues": [ # Values that should be hidden.
|
|
"A String",
|
|
],
|
|
"condition": { # A condition that can evaluate to true or false. # A condition that must be true for values to be shown.
|
|
# (This does not override hiddenValues -- if a value is listed there,
|
|
# it will still be hidden.)
|
|
# BooleanConditions are used by conditional formatting,
|
|
# data validation, and the criteria in filters.
|
|
"values": [ # The values of the condition. The number of supported values depends
|
|
# on the condition type. Some support zero values,
|
|
# others one or two values,
|
|
# and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
|
|
{ # The value of the condition.
|
|
"relativeDate": "A String", # A relative date (based on the current date).
|
|
# Valid only if the type is
|
|
# DATE_BEFORE,
|
|
# DATE_AFTER,
|
|
# DATE_ON_OR_BEFORE or
|
|
# DATE_ON_OR_AFTER.
|
|
#
|
|
# Relative dates are not supported in data validation.
|
|
# They are supported only in conditional formatting and
|
|
# conditional filters.
|
|
"userEnteredValue": "A String", # A value the condition is based on.
|
|
# The value is parsed as if the user typed into a cell.
|
|
# Formulas are supported (and must begin with an `=` or a '+').
|
|
},
|
|
],
|
|
"type": "A String", # The type of condition.
|
|
},
|
|
},
|
|
},
|
|
},
|
|
],
|
|
"charts": [ # The specifications of every chart on this sheet.
|
|
{ # A chart embedded in a sheet.
|
|
"chartId": 42, # The ID of the chart.
|
|
"position": { # The position of an embedded object such as a chart. # The position of the chart.
|
|
"newSheet": True or False, # If true, the embedded object is put on a new sheet whose ID
|
|
# is chosen for you. Used only when writing.
|
|
"sheetId": 42, # The sheet this is on. Set only if the embedded object
|
|
# is on its own sheet. Must be non-negative.
|
|
"overlayPosition": { # The location an object is overlaid on top of a grid. # The position at which the object is overlaid on top of a grid.
|
|
"anchorCell": { # A coordinate in a sheet. # The cell the object is anchored to.
|
|
# All indexes are zero-based.
|
|
"rowIndex": 42, # The row index of the coordinate.
|
|
"columnIndex": 42, # The column index of the coordinate.
|
|
"sheetId": 42, # The sheet this coordinate is on.
|
|
},
|
|
"widthPixels": 42, # The width of the object, in pixels. Defaults to 600.
|
|
"offsetYPixels": 42, # The vertical offset, in pixels, that the object is offset
|
|
# from the anchor cell.
|
|
"offsetXPixels": 42, # The horizontal offset, in pixels, that the object is offset
|
|
# from the anchor cell.
|
|
"heightPixels": 42, # The height of the object, in pixels. Defaults to 371.
|
|
},
|
|
},
|
|
"spec": { # The specifications of a chart. # The specification of the chart.
|
|
"fontName": "A String", # The name of the font to use by default for all chart text (e.g. title,
|
|
# axis labels, legend). If a font is specified for a specific part of the
|
|
# chart it will override this font name.
|
|
"altText": "A String", # The alternative text that describes the chart. This is often used
|
|
# for accessibility.
|
|
"subtitle": "A String", # The subtitle of the chart.
|
|
"subtitleTextFormat": { # The format of a run of text in a cell. # The subtitle text format.
|
|
# Strikethrough and underline are not supported.
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
"title": "A String", # The title of the chart.
|
|
"titleTextFormat": { # The format of a run of text in a cell. # The title text format.
|
|
# Strikethrough and underline are not supported.
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
"treemapChart": { # A <a href="/chart/interactive/docs/gallery/treemap">Treemap chart</a>. # A treemap chart specification.
|
|
"parentLabels": { # The data included in a domain or series. # The data the contains the treemap cells' parent labels.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"sizeData": { # The data included in a domain or series. # The data that determines the size of each treemap data cell. This data is
|
|
# expected to be numeric. The cells corresponding to non-numeric or missing
|
|
# data will not be rendered. If color_data is not specified, this data
|
|
# is used to determine data cell background colors as well.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"hideTooltips": True or False, # True to hide tooltips.
|
|
"colorScale": { # A color scale for a treemap chart. # The color scale for data cells in the treemap chart. Data cells are
|
|
# assigned colors based on their color values. These color values come from
|
|
# color_data, or from size_data if color_data is not specified.
|
|
# Cells with color values less than or equal to min_value will
|
|
# have minValueColor as their
|
|
# background color. Cells with color values greater than or equal to
|
|
# max_value will have
|
|
# maxValueColor as their background
|
|
# color. Cells with color values between min_value and max_value will
|
|
# have background colors on a gradient between
|
|
# minValueColor and
|
|
# maxValueColor, the midpoint of
|
|
# the gradient being midValueColor.
|
|
# Cells with missing or non-numeric color values will have
|
|
# noDataColor as their background
|
|
# color.
|
|
"noDataColor": { # Represents a color in the RGBA color space. This representation is designed # The background color for cells that have no color data associated with
|
|
# them. Defaults to #000000 if not specified.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"midValueColor": { # Represents a color in the RGBA color space. This representation is designed # The background color for cells with a color value at the midpoint between
|
|
# minValue and
|
|
# maxValue. Defaults to #efe6dc if not
|
|
# specified.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"minValueColor": { # Represents a color in the RGBA color space. This representation is designed # The background color for cells with a color value less than or equal to
|
|
# minValue. Defaults to #dc3912 if not
|
|
# specified.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"maxValueColor": { # Represents a color in the RGBA color space. This representation is designed # The background color for cells with a color value greater than or equal
|
|
# to maxValue. Defaults to #109618 if not
|
|
# specified.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
},
|
|
"labels": { # The data included in a domain or series. # The data that contains the treemap cell labels.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"colorData": { # The data included in a domain or series. # The data that determines the background color of each treemap data cell.
|
|
# This field is optional. If not specified, size_data is used to
|
|
# determine background colors. If specified, the data is expected to be
|
|
# numeric. color_scale will determine how the values in this data map to
|
|
# data cell background colors.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"maxValue": 3.14, # The maximum possible data value. Cells with values greater than this will
|
|
# have the same color as cells with this value. If not specified, defaults
|
|
# to the actual maximum value from color_data, or the maximum value from
|
|
# size_data if color_data is not specified.
|
|
"minValue": 3.14, # The minimum possible data value. Cells with values less than this will
|
|
# have the same color as cells with this value. If not specified, defaults
|
|
# to the actual minimum value from color_data, or the minimum value from
|
|
# size_data if color_data is not specified.
|
|
"headerColor": { # Represents a color in the RGBA color space. This representation is designed # The background color for header cells.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"levels": 42, # The number of data levels to show on the treemap chart. These levels are
|
|
# interactive and are shown with their labels. Defaults to 2 if not
|
|
# specified.
|
|
"hintedLevels": 42, # The number of additional data levels beyond the labeled levels to be shown
|
|
# on the treemap chart. These levels are not interactive and are shown
|
|
# without their labels. Defaults to 0 if not specified.
|
|
"textFormat": { # The format of a run of text in a cell. # The text format for all labels on the chart.
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
},
|
|
"titleTextPosition": { # Position settings for text. # The title text position.
|
|
# This field is optional.
|
|
"horizontalAlignment": "A String", # Horizontal alignment setting for the piece of text.
|
|
},
|
|
"hiddenDimensionStrategy": "A String", # Determines how the charts will use hidden rows or columns.
|
|
"pieChart": { # A <a href="/chart/interactive/docs/gallery/piechart">pie chart</a>. # A pie chart specification.
|
|
"series": { # The data included in a domain or series. # The data that covers the one and only series of the pie chart.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"domain": { # The data included in a domain or series. # The data that covers the domain of the pie chart.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"threeDimensional": True or False, # True if the pie is three dimensional.
|
|
"legendPosition": "A String", # Where the legend of the pie chart should be drawn.
|
|
"pieHole": 3.14, # The size of the hole in the pie chart.
|
|
},
|
|
"candlestickChart": { # A <a href="/chart/interactive/docs/gallery/candlestickchart">candlestick # A candlestick chart specification.
|
|
# chart</a>.
|
|
"domain": { # The domain of a CandlestickChart. # The domain data (horizontal axis) for the candlestick chart. String data
|
|
# will be treated as discrete labels, other data will be treated as
|
|
# continuous values.
|
|
"reversed": True or False, # True to reverse the order of the domain values (horizontal axis).
|
|
"data": { # The data included in a domain or series. # The data of the CandlestickDomain.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
"data": [ # The Candlestick chart data.
|
|
# Only one CandlestickData is supported.
|
|
{ # The Candlestick chart data, each containing the low, open, close, and high
|
|
# values for a series.
|
|
"lowSeries": { # The series of a CandlestickData. # The range data (vertical axis) for the low/minimum value for each candle.
|
|
# This is the bottom of the candle's center line.
|
|
"data": { # The data included in a domain or series. # The data of the CandlestickSeries.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
"highSeries": { # The series of a CandlestickData. # The range data (vertical axis) for the high/maximum value for each
|
|
# candle. This is the top of the candle's center line.
|
|
"data": { # The data included in a domain or series. # The data of the CandlestickSeries.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
"openSeries": { # The series of a CandlestickData. # The range data (vertical axis) for the open/initial value for each
|
|
# candle. This is the bottom of the candle body. If less than the close
|
|
# value the candle will be filled. Otherwise the candle will be hollow.
|
|
"data": { # The data included in a domain or series. # The data of the CandlestickSeries.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
"closeSeries": { # The series of a CandlestickData. # The range data (vertical axis) for the close/final value for each candle.
|
|
# This is the top of the candle body. If greater than the open value the
|
|
# candle will be filled. Otherwise the candle will be hollow.
|
|
"data": { # The data included in a domain or series. # The data of the CandlestickSeries.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
},
|
|
],
|
|
},
|
|
"subtitleTextPosition": { # Position settings for text. # The subtitle text position.
|
|
# This field is optional.
|
|
"horizontalAlignment": "A String", # Horizontal alignment setting for the piece of text.
|
|
},
|
|
"backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the entire chart.
|
|
# Not applicable to Org charts.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"maximized": True or False, # True to make a chart fill the entire space in which it's rendered with
|
|
# minimum padding. False to use the default padding.
|
|
# (Not applicable to Geo and Org charts.)
|
|
"waterfallChart": { # A waterfall chart. # A waterfall chart specification.
|
|
"stackedType": "A String", # The stacked type.
|
|
"hideConnectorLines": True or False, # True to hide connector lines between columns.
|
|
"domain": { # The domain of a waterfall chart. # The domain data (horizontal axis) for the waterfall chart.
|
|
"reversed": True or False, # True to reverse the order of the domain values (horizontal axis).
|
|
"data": { # The data included in a domain or series. # The data of the WaterfallChartDomain.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
"connectorLineStyle": { # Properties that describe the style of a line. # The line style for the connector lines.
|
|
"width": 42, # The thickness of the line, in px.
|
|
"type": "A String", # The dash type of the line.
|
|
},
|
|
"series": [ # The data this waterfall chart is visualizing.
|
|
{ # A single series of data for a waterfall chart.
|
|
"hideTrailingSubtotal": True or False, # True to hide the subtotal column from the end of the series. By default,
|
|
# a subtotal column will appear at the end of each series. Setting this
|
|
# field to true will hide that subtotal column for this series.
|
|
"positiveColumnsStyle": { # Styles for a waterfall chart column. # Styles for all columns in this series with positive values.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the column.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"label": "A String", # The label of the column's legend.
|
|
},
|
|
"subtotalColumnsStyle": { # Styles for a waterfall chart column. # Styles for all subtotal columns in this series.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the column.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"label": "A String", # The label of the column's legend.
|
|
},
|
|
"negativeColumnsStyle": { # Styles for a waterfall chart column. # Styles for all columns in this series with negative values.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the column.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"label": "A String", # The label of the column's legend.
|
|
},
|
|
"customSubtotals": [ # Custom subtotal columns appearing in this series. The order in which
|
|
# subtotals are defined is not significant. Only one subtotal may be
|
|
# defined for each data point.
|
|
{ # A custom subtotal column for a waterfall chart series.
|
|
"dataIsSubtotal": True or False, # True if the data point at subtotal_index is the subtotal. If false,
|
|
# the subtotal will be computed and appear after the data point.
|
|
"subtotalIndex": 42, # The 0-based index of a data point within the series. If
|
|
# data_is_subtotal is true, the data point at this index is the
|
|
# subtotal. Otherwise, the subtotal appears after the data point with
|
|
# this index. A series can have multiple subtotals at arbitrary indices,
|
|
# but subtotals do not affect the indices of the data points. For
|
|
# example, if a series has three data points, their indices will always
|
|
# be 0, 1, and 2, regardless of how many subtotals exist on the series or
|
|
# what data points they are associated with.
|
|
"label": "A String", # A label for the subtotal column.
|
|
},
|
|
],
|
|
"data": { # The data included in a domain or series. # The data being visualized in this series.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
],
|
|
"firstValueIsTotal": True or False, # True to interpret the first value as a total.
|
|
},
|
|
"basicChart": { # The specification for a basic chart. See BasicChartType for the list # A basic chart specification, can be one of many kinds of charts.
|
|
# See BasicChartType for the list of all
|
|
# charts this supports.
|
|
# of charts this supports.
|
|
"stackedType": "A String", # The stacked type for charts that support vertical stacking.
|
|
# Applies to Area, Bar, Column, Combo, and Stepped Area charts.
|
|
"headerCount": 42, # The number of rows or columns in the data that are "headers".
|
|
# If not set, Google Sheets will guess how many rows are headers based
|
|
# on the data.
|
|
#
|
|
# (Note that BasicChartAxis.title may override the axis title
|
|
# inferred from the header values.)
|
|
"series": [ # The data this chart is visualizing.
|
|
{ # A single series of data in a chart.
|
|
# For example, if charting stock prices over time, multiple series may exist,
|
|
# one for the "Open Price", "High Price", "Low Price" and "Close Price".
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color for elements (i.e. bars, lines, points) associated with this
|
|
# series. If empty, a default color is used.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"series": { # The data included in a domain or series. # The data being visualized in this chart series.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"targetAxis": "A String", # The minor axis that will specify the range of values for this series.
|
|
# For example, if charting stocks over time, the "Volume" series
|
|
# may want to be pinned to the right with the prices pinned to the left,
|
|
# because the scale of trading volume is different than the scale of
|
|
# prices.
|
|
# It is an error to specify an axis that isn't a valid minor axis
|
|
# for the chart's type.
|
|
"lineStyle": { # Properties that describe the style of a line. # The line style of this series. Valid only if the
|
|
# chartType is AREA,
|
|
# LINE, or SCATTER.
|
|
# COMBO charts are also supported if the
|
|
# series chart type is
|
|
# AREA or LINE.
|
|
"width": 42, # The thickness of the line, in px.
|
|
"type": "A String", # The dash type of the line.
|
|
},
|
|
"type": "A String", # The type of this series. Valid only if the
|
|
# chartType is
|
|
# COMBO.
|
|
# Different types will change the way the series is visualized.
|
|
# Only LINE, AREA,
|
|
# and COLUMN are supported.
|
|
},
|
|
],
|
|
"interpolateNulls": True or False, # If some values in a series are missing, gaps may appear in the chart (e.g,
|
|
# segments of lines in a line chart will be missing). To eliminate these
|
|
# gaps set this to true.
|
|
# Applies to Line, Area, and Combo charts.
|
|
"legendPosition": "A String", # The position of the chart legend.
|
|
"lineSmoothing": True or False, # Gets whether all lines should be rendered smooth or straight by default.
|
|
# Applies to Line charts.
|
|
"compareMode": "A String", # The behavior of tooltips and data highlighting when hovering on data and
|
|
# chart area.
|
|
"domains": [ # The domain of data this is charting.
|
|
# Only a single domain is supported.
|
|
{ # The domain of a chart.
|
|
# For example, if charting stock prices over time, this would be the date.
|
|
"reversed": True or False, # True to reverse the order of the domain values (horizontal axis).
|
|
"domain": { # The data included in a domain or series. # The data of the domain. For example, if charting stock prices over time,
|
|
# this is the data representing the dates.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
],
|
|
"chartType": "A String", # The type of the chart.
|
|
"threeDimensional": True or False, # True to make the chart 3D.
|
|
# Applies to Bar and Column charts.
|
|
"axis": [ # The axis on the chart.
|
|
{ # An axis of the chart.
|
|
# A chart may not have more than one axis per
|
|
# axis position.
|
|
"position": "A String", # The position of this axis.
|
|
"format": { # The format of a run of text in a cell. # The format of the title.
|
|
# Only valid if the axis is not associated with the domain.
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
"title": "A String", # The title of this axis. If set, this overrides any title inferred
|
|
# from headers of the data.
|
|
"titleTextPosition": { # Position settings for text. # The axis title text position.
|
|
"horizontalAlignment": "A String", # Horizontal alignment setting for the piece of text.
|
|
},
|
|
},
|
|
],
|
|
},
|
|
"histogramChart": { # A <a href="/chart/interactive/docs/gallery/histogram">histogram chart</a>. # A histogram chart specification.
|
|
# A histogram chart groups data items into bins, displaying each bin as a
|
|
# column of stacked items. Histograms are used to display the distribution
|
|
# of a dataset. Each column of items represents a range into which those
|
|
# items fall. The number of bins can be chosen automatically or specified
|
|
# explicitly.
|
|
"outlierPercentile": 3.14, # The outlier percentile is used to ensure that outliers do not adversely
|
|
# affect the calculation of bucket sizes. For example, setting an outlier
|
|
# percentile of 0.05 indicates that the top and bottom 5% of values when
|
|
# calculating buckets. The values are still included in the chart, they will
|
|
# be added to the first or last buckets instead of their own buckets.
|
|
# Must be between 0.0 and 0.5.
|
|
"series": [ # The series for a histogram may be either a single series of values to be
|
|
# bucketed or multiple series, each of the same length, containing the name
|
|
# of the series followed by the values to be bucketed for that series.
|
|
{ # A histogram series containing the series color and data.
|
|
"barColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the column representing this series in each bucket.
|
|
# This field is optional.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"data": { # The data included in a domain or series. # The data for this histogram series.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
],
|
|
"showItemDividers": True or False, # Whether horizontal divider lines should be displayed between items in each
|
|
# column.
|
|
"legendPosition": "A String", # The position of the chart legend.
|
|
"bucketSize": 3.14, # By default the bucket size (the range of values stacked in a single
|
|
# column) is chosen automatically, but it may be overridden here.
|
|
# E.g., A bucket size of 1.5 results in buckets from 0 - 1.5, 1.5 - 3.0, etc.
|
|
# Cannot be negative.
|
|
# This field is optional.
|
|
},
|
|
"bubbleChart": { # A <a href="/chart/interactive/docs/gallery/bubblechart">bubble chart</a>. # A bubble chart specification.
|
|
"bubbleBorderColor": { # Represents a color in the RGBA color space. This representation is designed # The bubble border color.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"domain": { # The data included in a domain or series. # The data containing the bubble x-values. These values locate the bubbles
|
|
# in the chart horizontally.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"bubbleTextStyle": { # The format of a run of text in a cell. # The format of the text inside the bubbles.
|
|
# Underline and Strikethrough are not supported.
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
"series": { # The data included in a domain or series. # The data contianing the bubble y-values. These values locate the bubbles
|
|
# in the chart vertically.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"legendPosition": "A String", # Where the legend of the chart should be drawn.
|
|
"bubbleMaxRadiusSize": 42, # The max radius size of the bubbles, in pixels.
|
|
# If specified, the field must be a positive value.
|
|
"bubbleOpacity": 3.14, # The opacity of the bubbles between 0 and 1.0.
|
|
# 0 is fully transparent and 1 is fully opaque.
|
|
"groupIds": { # The data included in a domain or series. # The data containing the bubble group IDs. All bubbles with the same group
|
|
# ID are drawn in the same color. If bubble_sizes is specified then
|
|
# this field must also be specified but may contain blank values.
|
|
# This field is optional.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"bubbleSizes": { # The data included in a domain or series. # The data contianing the bubble sizes. Bubble sizes are used to draw
|
|
# the bubbles at different sizes relative to each other.
|
|
# If specified, group_ids must also be specified. This field is
|
|
# optional.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"bubbleLabels": { # The data included in a domain or series. # The data containing the bubble labels. These do not need to be unique.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"bubbleMinRadiusSize": 42, # The minimum radius size of the bubbles, in pixels.
|
|
# If specific, the field must be a positive value.
|
|
},
|
|
"orgChart": { # An <a href="/chart/interactive/docs/gallery/orgchart">org chart</a>. # An org chart specification.
|
|
# Org charts require a unique set of labels in labels and may
|
|
# optionally include parent_labels and tooltips.
|
|
# parent_labels contain, for each node, the label identifying the parent
|
|
# node. tooltips contain, for each node, an optional tooltip.
|
|
#
|
|
# For example, to describe an OrgChart with Alice as the CEO, Bob as the
|
|
# President (reporting to Alice) and Cathy as VP of Sales (also reporting to
|
|
# Alice), have labels contain "Alice", "Bob", "Cathy",
|
|
# parent_labels contain "", "Alice", "Alice" and tooltips contain
|
|
# "CEO", "President", "VP Sales".
|
|
"tooltips": { # The data included in a domain or series. # The data containing the tooltip for the corresponding node. A blank value
|
|
# results in no tooltip being displayed for the node.
|
|
# This field is optional.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"parentLabels": { # The data included in a domain or series. # The data containing the label of the parent for the corresponding node.
|
|
# A blank value indicates that the node has no parent and is a top-level
|
|
# node.
|
|
# This field is optional.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"nodeColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the org chart nodes.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"labels": { # The data included in a domain or series. # The data containing the labels for all the nodes in the chart. Labels
|
|
# must be unique.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"selectedNodeColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the selected org chart nodes.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"nodeSize": "A String", # The size of the org chart nodes.
|
|
},
|
|
},
|
|
},
|
|
],
|
|
"protectedRanges": [ # The protected ranges in this sheet.
|
|
{ # A protected range.
|
|
"unprotectedRanges": [ # The list of unprotected ranges within a protected sheet.
|
|
# Unprotected ranges are only supported on protected sheets.
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
"requestingUserCanEdit": True or False, # True if the user who requested this protected range can edit the
|
|
# protected area.
|
|
# This field is read-only.
|
|
"description": "A String", # The description of this protected range.
|
|
"namedRangeId": "A String", # The named range this protected range is backed by, if any.
|
|
#
|
|
# When writing, only one of range or named_range_id
|
|
# may be set.
|
|
"range": { # A range on a sheet. # The range that is being protected.
|
|
# The range may be fully unbounded, in which case this is considered
|
|
# a protected sheet.
|
|
#
|
|
# When writing, only one of range or named_range_id
|
|
# may be set.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
"editors": { # The editors of a protected range. # The users and groups with edit access to the protected range.
|
|
# This field is only visible to users with edit access to the protected
|
|
# range and the document.
|
|
# Editors are not supported with warning_only protection.
|
|
"domainUsersCanEdit": True or False, # True if anyone in the document's domain has edit access to the protected
|
|
# range. Domain protection is only supported on documents within a domain.
|
|
"users": [ # The email addresses of users with edit access to the protected range.
|
|
"A String",
|
|
],
|
|
"groups": [ # The email addresses of groups with edit access to the protected range.
|
|
"A String",
|
|
],
|
|
},
|
|
"protectedRangeId": 42, # The ID of the protected range.
|
|
# This field is read-only.
|
|
"warningOnly": True or False, # True if this protected range will show a warning when editing.
|
|
# Warning-based protection means that every user can edit data in the
|
|
# protected range, except editing will prompt a warning asking the user
|
|
# to confirm the edit.
|
|
#
|
|
# When writing: if this field is true, then editors is ignored.
|
|
# Additionally, if this field is changed from true to false and the
|
|
# `editors` field is not set (nor included in the field mask), then
|
|
# the editors will be set to all the editors in the document.
|
|
},
|
|
],
|
|
"data": [ # Data in the grid, if this is a grid sheet.
|
|
# The number of GridData objects returned is dependent on the number of
|
|
# ranges requested on this sheet. For example, if this is representing
|
|
# `Sheet1`, and the spreadsheet was requested with ranges
|
|
# `Sheet1!A1:C10` and `Sheet1!D15:E20`, then the first GridData will have a
|
|
# startRow/startColumn of `0`,
|
|
# while the second one will have `startRow 14` (zero-based row 15),
|
|
# and `startColumn 3` (zero-based column D).
|
|
{ # Data in the grid, as well as metadata about the dimensions.
|
|
"rowMetadata": [ # Metadata about the requested rows in the grid, starting with the row
|
|
# in start_row.
|
|
{ # Properties about a dimension.
|
|
"pixelSize": 42, # The height (if a row) or width (if a column) of the dimension in pixels.
|
|
"developerMetadata": [ # The developer metadata associated with a single row or column.
|
|
{ # Developer metadata associated with a location or object in a spreadsheet.
|
|
# Developer metadata may be used to associate arbitrary data with various
|
|
# parts of a spreadsheet and will remain associated at those locations as they
|
|
# move around and the spreadsheet is edited. For example, if developer
|
|
# metadata is associated with row 5 and another row is then subsequently
|
|
# inserted above row 5, that original metadata will still be associated with
|
|
# the row it was first associated with (what is now row 6). If the associated
|
|
# object is deleted its metadata is deleted too.
|
|
"metadataId": 42, # The spreadsheet-scoped unique ID that identifies the metadata. IDs may be
|
|
# specified when metadata is created, otherwise one will be randomly
|
|
# generated and assigned. Must be positive.
|
|
"metadataValue": "A String", # Data associated with the metadata's key.
|
|
"location": { # A location where metadata may be associated in a spreadsheet. # The location where the metadata is associated.
|
|
"locationType": "A String", # The type of location this object represents. This field is read-only.
|
|
"dimensionRange": { # A range along a single dimension on a sheet. # Represents the row or column when metadata is associated with
|
|
# a dimension. The specified DimensionRange must represent a single row
|
|
# or column; it cannot be unbounded or span multiple rows or columns.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open: the start index is inclusive
|
|
# and the end index is exclusive.
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
"endIndex": 42, # The end (exclusive) of the span, or not set if unbounded.
|
|
"startIndex": 42, # The start (inclusive) of the span, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this span is on.
|
|
"dimension": "A String", # The dimension of the span.
|
|
},
|
|
"spreadsheet": True or False, # True when metadata is associated with an entire spreadsheet.
|
|
"sheetId": 42, # The ID of the sheet when metadata is associated with an entire sheet.
|
|
},
|
|
"visibility": "A String", # The metadata visibility. Developer metadata must always have a visibility
|
|
# specified.
|
|
"metadataKey": "A String", # The metadata key. There may be multiple metadata in a spreadsheet with the
|
|
# same key. Developer metadata must always have a key specified.
|
|
},
|
|
],
|
|
"hiddenByUser": True or False, # True if this dimension is explicitly hidden.
|
|
"hiddenByFilter": True or False, # True if this dimension is being filtered.
|
|
# This field is read-only.
|
|
},
|
|
],
|
|
"startColumn": 42, # The first column this GridData refers to, zero-based.
|
|
"columnMetadata": [ # Metadata about the requested columns in the grid, starting with the column
|
|
# in start_column.
|
|
{ # Properties about a dimension.
|
|
"pixelSize": 42, # The height (if a row) or width (if a column) of the dimension in pixels.
|
|
"developerMetadata": [ # The developer metadata associated with a single row or column.
|
|
{ # Developer metadata associated with a location or object in a spreadsheet.
|
|
# Developer metadata may be used to associate arbitrary data with various
|
|
# parts of a spreadsheet and will remain associated at those locations as they
|
|
# move around and the spreadsheet is edited. For example, if developer
|
|
# metadata is associated with row 5 and another row is then subsequently
|
|
# inserted above row 5, that original metadata will still be associated with
|
|
# the row it was first associated with (what is now row 6). If the associated
|
|
# object is deleted its metadata is deleted too.
|
|
"metadataId": 42, # The spreadsheet-scoped unique ID that identifies the metadata. IDs may be
|
|
# specified when metadata is created, otherwise one will be randomly
|
|
# generated and assigned. Must be positive.
|
|
"metadataValue": "A String", # Data associated with the metadata's key.
|
|
"location": { # A location where metadata may be associated in a spreadsheet. # The location where the metadata is associated.
|
|
"locationType": "A String", # The type of location this object represents. This field is read-only.
|
|
"dimensionRange": { # A range along a single dimension on a sheet. # Represents the row or column when metadata is associated with
|
|
# a dimension. The specified DimensionRange must represent a single row
|
|
# or column; it cannot be unbounded or span multiple rows or columns.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open: the start index is inclusive
|
|
# and the end index is exclusive.
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
"endIndex": 42, # The end (exclusive) of the span, or not set if unbounded.
|
|
"startIndex": 42, # The start (inclusive) of the span, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this span is on.
|
|
"dimension": "A String", # The dimension of the span.
|
|
},
|
|
"spreadsheet": True or False, # True when metadata is associated with an entire spreadsheet.
|
|
"sheetId": 42, # The ID of the sheet when metadata is associated with an entire sheet.
|
|
},
|
|
"visibility": "A String", # The metadata visibility. Developer metadata must always have a visibility
|
|
# specified.
|
|
"metadataKey": "A String", # The metadata key. There may be multiple metadata in a spreadsheet with the
|
|
# same key. Developer metadata must always have a key specified.
|
|
},
|
|
],
|
|
"hiddenByUser": True or False, # True if this dimension is explicitly hidden.
|
|
"hiddenByFilter": True or False, # True if this dimension is being filtered.
|
|
# This field is read-only.
|
|
},
|
|
],
|
|
"startRow": 42, # The first row this GridData refers to, zero-based.
|
|
"rowData": [ # The data in the grid, one entry per row,
|
|
# starting with the row in startRow.
|
|
# The values in RowData will correspond to columns starting
|
|
# at start_column.
|
|
{ # Data about each cell in a row.
|
|
"values": [ # The values in the row, one per column.
|
|
{ # Data about a specific cell.
|
|
"pivotTable": { # A pivot table. # A pivot table anchored at this cell. The size of pivot table itself
|
|
# is computed dynamically based on its data, grouping, filters, values,
|
|
# etc. Only the top-left cell of the pivot table contains the pivot table
|
|
# definition. The other cells will contain the calculated values of the
|
|
# results of the pivot in their effective_value fields.
|
|
"valueLayout": "A String", # Whether values should be listed horizontally (as columns)
|
|
# or vertically (as rows).
|
|
"rows": [ # Each row grouping in the pivot table.
|
|
{ # A single grouping (either row or column) in a pivot table.
|
|
"showTotals": True or False, # True if the pivot table should include the totals for this grouping.
|
|
"repeatHeadings": True or False, # True if the headings in this pivot group should be repeated.
|
|
# This is only valid for row groupings and is ignored by columns.
|
|
#
|
|
# By default, we minimize repitition of headings by not showing higher
|
|
# level headings where they are the same. For example, even though the
|
|
# third row below corresponds to "Q1 Mar", "Q1" is not shown because
|
|
# it is redundant with previous rows. Setting repeat_headings to true
|
|
# would cause "Q1" to be repeated for "Feb" and "Mar".
|
|
#
|
|
# +--------------+
|
|
# | Q1 | Jan |
|
|
# | | Feb |
|
|
# | | Mar |
|
|
# +--------+-----+
|
|
# | Q1 Total |
|
|
# +--------------+
|
|
"label": "A String", # The labels to use for the row/column groups which can be customized. For
|
|
# example, in the following pivot table, the row label is `Region` (which
|
|
# could be renamed to `State`) and the column label is `Product` (which
|
|
# could be renamed `Item`). Pivot tables created before December 2017 do
|
|
# not have header labels. If you'd like to add header labels to an existing
|
|
# pivot table, please delete the existing pivot table and then create a new
|
|
# pivot table with same parameters.
|
|
#
|
|
# +--------------+---------+-------+
|
|
# | SUM of Units | Product | |
|
|
# | Region | Pen | Paper |
|
|
# +--------------+---------+-------+
|
|
# | New York | 345 | 98 |
|
|
# | Oregon | 234 | 123 |
|
|
# | Tennessee | 531 | 415 |
|
|
# +--------------+---------+-------+
|
|
# | Grand Total | 1110 | 636 |
|
|
# +--------------+---------+-------+
|
|
"valueMetadata": [ # Metadata about values in the grouping.
|
|
{ # Metadata about a value in a pivot grouping.
|
|
"collapsed": True or False, # True if the data corresponding to the value is collapsed.
|
|
"value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to.
|
|
# (Note that formulaValue is not valid,
|
|
# because the values will be calculated.)
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
},
|
|
],
|
|
"valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by.
|
|
# If not specified, sorting is alphabetical by this group's values.
|
|
"buckets": [ # Determines the bucket from which values are chosen to sort.
|
|
#
|
|
# For example, in a pivot table with one row group & two column groups,
|
|
# the row group can list up to two values. The first value corresponds
|
|
# to a value within the first column group, and the second value
|
|
# corresponds to a value in the second column group. If no values
|
|
# are listed, this would indicate that the row should be sorted according
|
|
# to the "Grand Total" over the column groups. If a single value is listed,
|
|
# this would correspond to using the "Total" of that bucket.
|
|
{ # The kinds of value that a cell in a spreadsheet can have.
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
],
|
|
"valuesIndex": 42, # The offset in the PivotTable.values list which the values in this
|
|
# grouping should be sorted by.
|
|
},
|
|
"sortOrder": "A String", # The order the values in this group should be sorted.
|
|
"groupRule": { # An optional setting on a PivotGroup that defines buckets for the values # The group rule to apply to this row/column group.
|
|
# in the source data column rather than breaking out each individual value.
|
|
# Only one PivotGroup with a group rule may be added for each column in
|
|
# the source data, though on any given column you may add both a
|
|
# PivotGroup that has a rule and a PivotGroup that does not.
|
|
"histogramRule": { # Allows you to organize the numeric values in a source data column into # A HistogramRule.
|
|
# buckets of a constant size. All values from HistogramRule.start to
|
|
# HistogramRule.end are placed into groups of size
|
|
# HistogramRule.interval. In addition, all values below
|
|
# HistogramRule.start are placed in one group, and all values above
|
|
# HistogramRule.end are placed in another. Only
|
|
# HistogramRule.interval is required, though if HistogramRule.start
|
|
# and HistogramRule.end are both provided, HistogramRule.start must
|
|
# be less than HistogramRule.end. For example, a pivot table showing
|
|
# average purchase amount by age that has 50+ rows:
|
|
#
|
|
# +-----+-------------------+
|
|
# | Age | AVERAGE of Amount |
|
|
# +-----+-------------------+
|
|
# | 16 | $27.13 |
|
|
# | 17 | $5.24 |
|
|
# | 18 | $20.15 |
|
|
# ...
|
|
# +-----+-------------------+
|
|
# could be turned into a pivot table that looks like the one below by
|
|
# applying a histogram group rule with a HistogramRule.start of 25,
|
|
# an HistogramRule.interval of 20, and an HistogramRule.end
|
|
# of 65.
|
|
#
|
|
# +-------------+-------------------+
|
|
# | Grouped Age | AVERAGE of Amount |
|
|
# +-------------+-------------------+
|
|
# | < 25 | $19.34 |
|
|
# | 25-45 | $31.43 |
|
|
# | 45-65 | $35.87 |
|
|
# | > 65 | $27.55 |
|
|
# +-------------+-------------------+
|
|
# | Grand Total | $29.12 |
|
|
# +-------------+-------------------+
|
|
"start": 3.14, # The minimum value at which items are placed into buckets
|
|
# of constant size. Values below start are lumped into a single bucket.
|
|
# This field is optional.
|
|
"interval": 3.14, # The size of the buckets that are created. Must be positive.
|
|
"end": 3.14, # The maximum value at which items are placed into buckets
|
|
# of constant size. Values above end are lumped into a single bucket.
|
|
# This field is optional.
|
|
},
|
|
"manualRule": { # Allows you to manually organize the values in a source data column into # A ManualRule.
|
|
# buckets with names of your choosing. For example, a pivot table that
|
|
# aggregates population by state:
|
|
#
|
|
# +-------+-------------------+
|
|
# | State | SUM of Population |
|
|
# +-------+-------------------+
|
|
# | AK | 0.7 |
|
|
# | AL | 4.8 |
|
|
# | AR | 2.9 |
|
|
# ...
|
|
# +-------+-------------------+
|
|
# could be turned into a pivot table that aggregates population by time zone
|
|
# by providing a list of groups (for example, groupName = 'Central',
|
|
# items = ['AL', 'AR', 'IA', ...]) to a manual group rule.
|
|
# Note that a similar effect could be achieved by adding a time zone column
|
|
# to the source data and adjusting the pivot table.
|
|
#
|
|
# +-----------+-------------------+
|
|
# | Time Zone | SUM of Population |
|
|
# +-----------+-------------------+
|
|
# | Central | 106.3 |
|
|
# | Eastern | 151.9 |
|
|
# | Mountain | 17.4 |
|
|
# ...
|
|
# +-----------+-------------------+
|
|
"groups": [ # The list of group names and the corresponding items from the source data
|
|
# that map to each group name.
|
|
{ # A group name and a list of items from the source data that should be placed
|
|
# in the group with this name.
|
|
"items": [ # The items in the source data that should be placed into this group. Each
|
|
# item may be a string, number, or boolean. Items may appear in at most one
|
|
# group within a given ManualRule. Items that do not appear in any
|
|
# group will appear on their own.
|
|
{ # The kinds of value that a cell in a spreadsheet can have.
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
],
|
|
"groupName": { # The kinds of value that a cell in a spreadsheet can have. # The group name, which must be a string. Each group in a given
|
|
# ManualRule must have a unique group name.
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
},
|
|
],
|
|
},
|
|
"dateTimeRule": { # Allows you to organize the date-time values in a source data column into # A DateTimeRule.
|
|
# buckets based on selected parts of their date or time values. For example,
|
|
# consider a pivot table showing sales transactions by date:
|
|
#
|
|
# +----------+--------------+
|
|
# | Date | SUM of Sales |
|
|
# +----------+--------------+
|
|
# | 1/1/2017 | $621.14 |
|
|
# | 2/3/2017 | $708.84 |
|
|
# | 5/8/2017 | $326.84 |
|
|
# ...
|
|
# +----------+--------------+
|
|
# Applying a date-time group rule with a DateTimeRuleType of YEAR_MONTH
|
|
# results in the following pivot table.
|
|
#
|
|
# +--------------+--------------+
|
|
# | Grouped Date | SUM of Sales |
|
|
# +--------------+--------------+
|
|
# | 2017-Jan | $53,731.78 |
|
|
# | 2017-Feb | $83,475.32 |
|
|
# | 2017-Mar | $94,385.05 |
|
|
# ...
|
|
# +--------------+--------------+
|
|
"type": "A String", # The type of date-time grouping to apply.
|
|
},
|
|
},
|
|
"sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on.
|
|
#
|
|
# For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0`
|
|
# means this group refers to column `C`, whereas the offset `1` would refer
|
|
# to column `D`.
|
|
},
|
|
],
|
|
"source": { # A range on a sheet. # The range the pivot table is reading data from.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
"values": [ # A list of values to include in the pivot table.
|
|
{ # The definition of how a value in a pivot table should be calculated.
|
|
"formula": "A String", # A custom formula to calculate the value. The formula must start
|
|
# with an `=` character.
|
|
"name": "A String", # A name to use for the value.
|
|
"sourceColumnOffset": 42, # The column offset of the source range that this value reads from.
|
|
#
|
|
# For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0`
|
|
# means this value refers to column `C`, whereas the offset `1` would
|
|
# refer to column `D`.
|
|
"summarizeFunction": "A String", # A function to summarize the value.
|
|
# If formula is set, the only supported values are
|
|
# SUM and
|
|
# CUSTOM.
|
|
# If sourceColumnOffset is set, then `CUSTOM`
|
|
# is not supported.
|
|
"calculatedDisplayType": "A String", # If specified, indicates that pivot values should be displayed as
|
|
# the result of a calculation with another pivot value. For example, if
|
|
# calculated_display_type is specified as PERCENT_OF_GRAND_TOTAL, all the
|
|
# pivot values are displayed as the percentage of the grand total. In
|
|
# the Sheets UI, this is referred to as "Show As" in the value section of a
|
|
# pivot table.
|
|
},
|
|
],
|
|
"criteria": { # An optional mapping of filters per source column offset.
|
|
#
|
|
# The filters are applied before aggregating data into the pivot table.
|
|
# The map's key is the column offset of the source range that you want to
|
|
# filter, and the value is the criteria for that column.
|
|
#
|
|
# For example, if the source was `C10:E15`, a key of `0` will have the filter
|
|
# for column `C`, whereas the key `1` is for column `D`.
|
|
"a_key": { # Criteria for showing/hiding rows in a pivot table.
|
|
"visibleValues": [ # Values that should be included. Values not listed here are excluded.
|
|
"A String",
|
|
],
|
|
},
|
|
},
|
|
"columns": [ # Each column grouping in the pivot table.
|
|
{ # A single grouping (either row or column) in a pivot table.
|
|
"showTotals": True or False, # True if the pivot table should include the totals for this grouping.
|
|
"repeatHeadings": True or False, # True if the headings in this pivot group should be repeated.
|
|
# This is only valid for row groupings and is ignored by columns.
|
|
#
|
|
# By default, we minimize repitition of headings by not showing higher
|
|
# level headings where they are the same. For example, even though the
|
|
# third row below corresponds to "Q1 Mar", "Q1" is not shown because
|
|
# it is redundant with previous rows. Setting repeat_headings to true
|
|
# would cause "Q1" to be repeated for "Feb" and "Mar".
|
|
#
|
|
# +--------------+
|
|
# | Q1 | Jan |
|
|
# | | Feb |
|
|
# | | Mar |
|
|
# +--------+-----+
|
|
# | Q1 Total |
|
|
# +--------------+
|
|
"label": "A String", # The labels to use for the row/column groups which can be customized. For
|
|
# example, in the following pivot table, the row label is `Region` (which
|
|
# could be renamed to `State`) and the column label is `Product` (which
|
|
# could be renamed `Item`). Pivot tables created before December 2017 do
|
|
# not have header labels. If you'd like to add header labels to an existing
|
|
# pivot table, please delete the existing pivot table and then create a new
|
|
# pivot table with same parameters.
|
|
#
|
|
# +--------------+---------+-------+
|
|
# | SUM of Units | Product | |
|
|
# | Region | Pen | Paper |
|
|
# +--------------+---------+-------+
|
|
# | New York | 345 | 98 |
|
|
# | Oregon | 234 | 123 |
|
|
# | Tennessee | 531 | 415 |
|
|
# +--------------+---------+-------+
|
|
# | Grand Total | 1110 | 636 |
|
|
# +--------------+---------+-------+
|
|
"valueMetadata": [ # Metadata about values in the grouping.
|
|
{ # Metadata about a value in a pivot grouping.
|
|
"collapsed": True or False, # True if the data corresponding to the value is collapsed.
|
|
"value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to.
|
|
# (Note that formulaValue is not valid,
|
|
# because the values will be calculated.)
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
},
|
|
],
|
|
"valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by.
|
|
# If not specified, sorting is alphabetical by this group's values.
|
|
"buckets": [ # Determines the bucket from which values are chosen to sort.
|
|
#
|
|
# For example, in a pivot table with one row group & two column groups,
|
|
# the row group can list up to two values. The first value corresponds
|
|
# to a value within the first column group, and the second value
|
|
# corresponds to a value in the second column group. If no values
|
|
# are listed, this would indicate that the row should be sorted according
|
|
# to the "Grand Total" over the column groups. If a single value is listed,
|
|
# this would correspond to using the "Total" of that bucket.
|
|
{ # The kinds of value that a cell in a spreadsheet can have.
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
],
|
|
"valuesIndex": 42, # The offset in the PivotTable.values list which the values in this
|
|
# grouping should be sorted by.
|
|
},
|
|
"sortOrder": "A String", # The order the values in this group should be sorted.
|
|
"groupRule": { # An optional setting on a PivotGroup that defines buckets for the values # The group rule to apply to this row/column group.
|
|
# in the source data column rather than breaking out each individual value.
|
|
# Only one PivotGroup with a group rule may be added for each column in
|
|
# the source data, though on any given column you may add both a
|
|
# PivotGroup that has a rule and a PivotGroup that does not.
|
|
"histogramRule": { # Allows you to organize the numeric values in a source data column into # A HistogramRule.
|
|
# buckets of a constant size. All values from HistogramRule.start to
|
|
# HistogramRule.end are placed into groups of size
|
|
# HistogramRule.interval. In addition, all values below
|
|
# HistogramRule.start are placed in one group, and all values above
|
|
# HistogramRule.end are placed in another. Only
|
|
# HistogramRule.interval is required, though if HistogramRule.start
|
|
# and HistogramRule.end are both provided, HistogramRule.start must
|
|
# be less than HistogramRule.end. For example, a pivot table showing
|
|
# average purchase amount by age that has 50+ rows:
|
|
#
|
|
# +-----+-------------------+
|
|
# | Age | AVERAGE of Amount |
|
|
# +-----+-------------------+
|
|
# | 16 | $27.13 |
|
|
# | 17 | $5.24 |
|
|
# | 18 | $20.15 |
|
|
# ...
|
|
# +-----+-------------------+
|
|
# could be turned into a pivot table that looks like the one below by
|
|
# applying a histogram group rule with a HistogramRule.start of 25,
|
|
# an HistogramRule.interval of 20, and an HistogramRule.end
|
|
# of 65.
|
|
#
|
|
# +-------------+-------------------+
|
|
# | Grouped Age | AVERAGE of Amount |
|
|
# +-------------+-------------------+
|
|
# | < 25 | $19.34 |
|
|
# | 25-45 | $31.43 |
|
|
# | 45-65 | $35.87 |
|
|
# | > 65 | $27.55 |
|
|
# +-------------+-------------------+
|
|
# | Grand Total | $29.12 |
|
|
# +-------------+-------------------+
|
|
"start": 3.14, # The minimum value at which items are placed into buckets
|
|
# of constant size. Values below start are lumped into a single bucket.
|
|
# This field is optional.
|
|
"interval": 3.14, # The size of the buckets that are created. Must be positive.
|
|
"end": 3.14, # The maximum value at which items are placed into buckets
|
|
# of constant size. Values above end are lumped into a single bucket.
|
|
# This field is optional.
|
|
},
|
|
"manualRule": { # Allows you to manually organize the values in a source data column into # A ManualRule.
|
|
# buckets with names of your choosing. For example, a pivot table that
|
|
# aggregates population by state:
|
|
#
|
|
# +-------+-------------------+
|
|
# | State | SUM of Population |
|
|
# +-------+-------------------+
|
|
# | AK | 0.7 |
|
|
# | AL | 4.8 |
|
|
# | AR | 2.9 |
|
|
# ...
|
|
# +-------+-------------------+
|
|
# could be turned into a pivot table that aggregates population by time zone
|
|
# by providing a list of groups (for example, groupName = 'Central',
|
|
# items = ['AL', 'AR', 'IA', ...]) to a manual group rule.
|
|
# Note that a similar effect could be achieved by adding a time zone column
|
|
# to the source data and adjusting the pivot table.
|
|
#
|
|
# +-----------+-------------------+
|
|
# | Time Zone | SUM of Population |
|
|
# +-----------+-------------------+
|
|
# | Central | 106.3 |
|
|
# | Eastern | 151.9 |
|
|
# | Mountain | 17.4 |
|
|
# ...
|
|
# +-----------+-------------------+
|
|
"groups": [ # The list of group names and the corresponding items from the source data
|
|
# that map to each group name.
|
|
{ # A group name and a list of items from the source data that should be placed
|
|
# in the group with this name.
|
|
"items": [ # The items in the source data that should be placed into this group. Each
|
|
# item may be a string, number, or boolean. Items may appear in at most one
|
|
# group within a given ManualRule. Items that do not appear in any
|
|
# group will appear on their own.
|
|
{ # The kinds of value that a cell in a spreadsheet can have.
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
],
|
|
"groupName": { # The kinds of value that a cell in a spreadsheet can have. # The group name, which must be a string. Each group in a given
|
|
# ManualRule must have a unique group name.
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
},
|
|
],
|
|
},
|
|
"dateTimeRule": { # Allows you to organize the date-time values in a source data column into # A DateTimeRule.
|
|
# buckets based on selected parts of their date or time values. For example,
|
|
# consider a pivot table showing sales transactions by date:
|
|
#
|
|
# +----------+--------------+
|
|
# | Date | SUM of Sales |
|
|
# +----------+--------------+
|
|
# | 1/1/2017 | $621.14 |
|
|
# | 2/3/2017 | $708.84 |
|
|
# | 5/8/2017 | $326.84 |
|
|
# ...
|
|
# +----------+--------------+
|
|
# Applying a date-time group rule with a DateTimeRuleType of YEAR_MONTH
|
|
# results in the following pivot table.
|
|
#
|
|
# +--------------+--------------+
|
|
# | Grouped Date | SUM of Sales |
|
|
# +--------------+--------------+
|
|
# | 2017-Jan | $53,731.78 |
|
|
# | 2017-Feb | $83,475.32 |
|
|
# | 2017-Mar | $94,385.05 |
|
|
# ...
|
|
# +--------------+--------------+
|
|
"type": "A String", # The type of date-time grouping to apply.
|
|
},
|
|
},
|
|
"sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on.
|
|
#
|
|
# For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0`
|
|
# means this group refers to column `C`, whereas the offset `1` would refer
|
|
# to column `D`.
|
|
},
|
|
],
|
|
},
|
|
"hyperlink": "A String", # A hyperlink this cell points to, if any.
|
|
# This field is read-only. (To set it, use a `=HYPERLINK` formula
|
|
# in the userEnteredValue.formulaValue
|
|
# field.)
|
|
"effectiveValue": { # The kinds of value that a cell in a spreadsheet can have. # The effective value of the cell. For cells with formulas, this is
|
|
# the calculated value. For cells with literals, this is
|
|
# the same as the user_entered_value.
|
|
# This field is read-only.
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
"formattedValue": "A String", # The formatted value of the cell.
|
|
# This is the value as it's shown to the user.
|
|
# This field is read-only.
|
|
"userEnteredValue": { # The kinds of value that a cell in a spreadsheet can have. # The value the user entered in the cell. e.g, `1234`, `'Hello'`, or `=NOW()`
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# serial number format.
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
"note": "A String", # Any note on the cell.
|
|
"effectiveFormat": { # The format of a cell. # The effective format being used by the cell.
|
|
# This includes the results of applying any conditional formatting and,
|
|
# if the cell contains a formula, the computed number format.
|
|
# If the effective format is the default format, effective format will
|
|
# not be written.
|
|
# This field is read-only.
|
|
"numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
|
|
"pattern": "A String", # Pattern string used for formatting. If not set, a default pattern based on
|
|
# the user's locale will be used if necessary for the given type.
|
|
# See the [Date and Number Formats guide](/sheets/api/guides/formats) for
|
|
# more information about the supported patterns.
|
|
"type": "A String", # The type of the number format.
|
|
# When writing, this field must be set.
|
|
},
|
|
"textDirection": "A String", # The direction of the text in the cell.
|
|
"padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
|
|
# When updating padding, every field must be specified.
|
|
"top": 42, # The top padding of the cell.
|
|
"left": 42, # The left padding of the cell.
|
|
"right": 42, # The right padding of the cell.
|
|
"bottom": 42, # The bottom padding of the cell.
|
|
},
|
|
"horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
|
|
"backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"verticalAlignment": "A String", # The vertical alignment of the value in the cell.
|
|
"borders": { # The borders of the cell. # The borders of the cell.
|
|
"top": { # A border along a cell. # The top border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"right": { # A border along a cell. # The right border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"bottom": { # A border along a cell. # The bottom border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"left": { # A border along a cell. # The left border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
},
|
|
"textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell
|
|
"angle": 42, # The angle between the standard orientation and the desired orientation.
|
|
# Measured in degrees. Valid values are between -90 and 90. Positive
|
|
# angles are angled upwards, negative are angled downwards.
|
|
#
|
|
# Note: For LTR text direction positive angles are in the
|
|
# counterclockwise direction, whereas for RTL they are in the clockwise
|
|
# direction
|
|
"vertical": True or False, # If true, text reads top to bottom, but the orientation of individual
|
|
# characters is unchanged.
|
|
# For example:
|
|
#
|
|
# | V |
|
|
# | e |
|
|
# | r |
|
|
# | t |
|
|
# | i |
|
|
# | c |
|
|
# | a |
|
|
# | l |
|
|
},
|
|
"hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
|
|
"textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
"wrapStrategy": "A String", # The wrap strategy for the value in the cell.
|
|
},
|
|
"userEnteredFormat": { # The format of a cell. # The format the user entered for the cell.
|
|
#
|
|
# When writing, the new format will be merged with the existing format.
|
|
"numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
|
|
"pattern": "A String", # Pattern string used for formatting. If not set, a default pattern based on
|
|
# the user's locale will be used if necessary for the given type.
|
|
# See the [Date and Number Formats guide](/sheets/api/guides/formats) for
|
|
# more information about the supported patterns.
|
|
"type": "A String", # The type of the number format.
|
|
# When writing, this field must be set.
|
|
},
|
|
"textDirection": "A String", # The direction of the text in the cell.
|
|
"padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
|
|
# When updating padding, every field must be specified.
|
|
"top": 42, # The top padding of the cell.
|
|
"left": 42, # The left padding of the cell.
|
|
"right": 42, # The right padding of the cell.
|
|
"bottom": 42, # The bottom padding of the cell.
|
|
},
|
|
"horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
|
|
"backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"verticalAlignment": "A String", # The vertical alignment of the value in the cell.
|
|
"borders": { # The borders of the cell. # The borders of the cell.
|
|
"top": { # A border along a cell. # The top border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"right": { # A border along a cell. # The right border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"bottom": { # A border along a cell. # The bottom border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"left": { # A border along a cell. # The left border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
},
|
|
"textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell
|
|
"angle": 42, # The angle between the standard orientation and the desired orientation.
|
|
# Measured in degrees. Valid values are between -90 and 90. Positive
|
|
# angles are angled upwards, negative are angled downwards.
|
|
#
|
|
# Note: For LTR text direction positive angles are in the
|
|
# counterclockwise direction, whereas for RTL they are in the clockwise
|
|
# direction
|
|
"vertical": True or False, # If true, text reads top to bottom, but the orientation of individual
|
|
# characters is unchanged.
|
|
# For example:
|
|
#
|
|
# | V |
|
|
# | e |
|
|
# | r |
|
|
# | t |
|
|
# | i |
|
|
# | c |
|
|
# | a |
|
|
# | l |
|
|
},
|
|
"hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
|
|
"textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
"wrapStrategy": "A String", # The wrap strategy for the value in the cell.
|
|
},
|
|
"dataValidation": { # A data validation rule. # A data validation rule on the cell, if any.
|
|
#
|
|
# When writing, the new data validation rule will overwrite any prior rule.
|
|
"showCustomUi": True or False, # True if the UI should be customized based on the kind of condition.
|
|
# If true, "List" conditions will show a dropdown.
|
|
"strict": True or False, # True if invalid data should be rejected.
|
|
"inputMessage": "A String", # A message to show the user when adding data to the cell.
|
|
"condition": { # A condition that can evaluate to true or false. # The condition that data in the cell must match.
|
|
# BooleanConditions are used by conditional formatting,
|
|
# data validation, and the criteria in filters.
|
|
"values": [ # The values of the condition. The number of supported values depends
|
|
# on the condition type. Some support zero values,
|
|
# others one or two values,
|
|
# and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
|
|
{ # The value of the condition.
|
|
"relativeDate": "A String", # A relative date (based on the current date).
|
|
# Valid only if the type is
|
|
# DATE_BEFORE,
|
|
# DATE_AFTER,
|
|
# DATE_ON_OR_BEFORE or
|
|
# DATE_ON_OR_AFTER.
|
|
#
|
|
# Relative dates are not supported in data validation.
|
|
# They are supported only in conditional formatting and
|
|
# conditional filters.
|
|
"userEnteredValue": "A String", # A value the condition is based on.
|
|
# The value is parsed as if the user typed into a cell.
|
|
# Formulas are supported (and must begin with an `=` or a '+').
|
|
},
|
|
],
|
|
"type": "A String", # The type of condition.
|
|
},
|
|
},
|
|
"textFormatRuns": [ # Runs of rich text applied to subsections of the cell. Runs are only valid
|
|
# on user entered strings, not formulas, bools, or numbers.
|
|
# Runs start at specific indexes in the text and continue until the next
|
|
# run. Properties of a run will continue unless explicitly changed
|
|
# in a subsequent run (and properties of the first run will continue
|
|
# the properties of the cell unless explicitly changed).
|
|
#
|
|
# When writing, the new runs will overwrite any prior runs. When writing a
|
|
# new user_entered_value, previous runs are erased.
|
|
{ # A run of a text format. The format of this run continues until the start
|
|
# index of the next run.
|
|
# When updating, all fields must be set.
|
|
"startIndex": 42, # The character index where this run starts.
|
|
"format": { # The format of a run of text in a cell. # The format of this run. Absent values inherit the cell's format.
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
},
|
|
],
|
|
},
|
|
],
|
|
},
|
|
],
|
|
},
|
|
],
|
|
"rowGroups": [ # All row groups on this sheet, ordered by increasing range start index, then
|
|
# by group depth.
|
|
{ # A group over an interval of rows or columns on a sheet, which can contain or
|
|
# be contained within other groups. A group can be collapsed or expanded as a
|
|
# unit on the sheet.
|
|
"range": { # A range along a single dimension on a sheet. # The range over which this group exists.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open: the start index is inclusive
|
|
# and the end index is exclusive.
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
"endIndex": 42, # The end (exclusive) of the span, or not set if unbounded.
|
|
"startIndex": 42, # The start (inclusive) of the span, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this span is on.
|
|
"dimension": "A String", # The dimension of the span.
|
|
},
|
|
"collapsed": True or False, # This field is true if this group is collapsed. A collapsed group remains
|
|
# collapsed if an overlapping group at a shallower depth is expanded.
|
|
#
|
|
# A true value does not imply that all dimensions within the group are
|
|
# hidden, since a dimension's visibility can change independently from this
|
|
# group property. However, when this property is updated, all dimensions
|
|
# within it are set to hidden if this field is true, or set to visible if
|
|
# this field is false.
|
|
"depth": 42, # The depth of the group, representing how many groups have a range that
|
|
# wholly contains the range of this group.
|
|
},
|
|
],
|
|
},
|
|
],
|
|
"spreadsheetUrl": "A String", # The url of the spreadsheet.
|
|
# This field is read-only.
|
|
"spreadsheetId": "A String", # The ID of the spreadsheet.
|
|
# This field is read-only.
|
|
"namedRanges": [ # The named ranges defined in a spreadsheet.
|
|
{ # A named range.
|
|
"namedRangeId": "A String", # The ID of the named range.
|
|
"range": { # A range on a sheet. # The range this represents.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
"name": "A String", # The name of the named range.
|
|
},
|
|
],
|
|
"properties": { # Properties of a spreadsheet. # Overall properties of a spreadsheet.
|
|
"title": "A String", # The title of the spreadsheet.
|
|
"locale": "A String", # The locale of the spreadsheet in one of the following formats:
|
|
#
|
|
# * an ISO 639-1 language code such as `en`
|
|
#
|
|
# * an ISO 639-2 language code such as `fil`, if no 639-1 code exists
|
|
#
|
|
# * a combination of the ISO language code and country code, such as `en_US`
|
|
#
|
|
# Note: when updating this field, not all locales/languages are supported.
|
|
"defaultFormat": { # The format of a cell. # The default format of all cells in the spreadsheet.
|
|
# CellData.effectiveFormat will not be set if
|
|
# the cell's format is equal to this default format. This field is read-only.
|
|
"numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
|
|
"pattern": "A String", # Pattern string used for formatting. If not set, a default pattern based on
|
|
# the user's locale will be used if necessary for the given type.
|
|
# See the [Date and Number Formats guide](/sheets/api/guides/formats) for
|
|
# more information about the supported patterns.
|
|
"type": "A String", # The type of the number format.
|
|
# When writing, this field must be set.
|
|
},
|
|
"textDirection": "A String", # The direction of the text in the cell.
|
|
"padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
|
|
# When updating padding, every field must be specified.
|
|
"top": 42, # The top padding of the cell.
|
|
"left": 42, # The left padding of the cell.
|
|
"right": 42, # The right padding of the cell.
|
|
"bottom": 42, # The bottom padding of the cell.
|
|
},
|
|
"horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
|
|
"backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"verticalAlignment": "A String", # The vertical alignment of the value in the cell.
|
|
"borders": { # The borders of the cell. # The borders of the cell.
|
|
"top": { # A border along a cell. # The top border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"right": { # A border along a cell. # The right border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"bottom": { # A border along a cell. # The bottom border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"left": { # A border along a cell. # The left border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
},
|
|
"textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell
|
|
"angle": 42, # The angle between the standard orientation and the desired orientation.
|
|
# Measured in degrees. Valid values are between -90 and 90. Positive
|
|
# angles are angled upwards, negative are angled downwards.
|
|
#
|
|
# Note: For LTR text direction positive angles are in the
|
|
# counterclockwise direction, whereas for RTL they are in the clockwise
|
|
# direction
|
|
"vertical": True or False, # If true, text reads top to bottom, but the orientation of individual
|
|
# characters is unchanged.
|
|
# For example:
|
|
#
|
|
# | V |
|
|
# | e |
|
|
# | r |
|
|
# | t |
|
|
# | i |
|
|
# | c |
|
|
# | a |
|
|
# | l |
|
|
},
|
|
"hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
|
|
"textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
"wrapStrategy": "A String", # The wrap strategy for the value in the cell.
|
|
},
|
|
"autoRecalc": "A String", # The amount of time to wait before volatile functions are recalculated.
|
|
"iterativeCalculationSettings": { # Settings to control how circular dependencies are resolved with iterative # Determines whether and how circular references are resolved with iterative
|
|
# calculation. Absence of this field means that circular references will
|
|
# result in calculation errors.
|
|
# calculation.
|
|
"convergenceThreshold": 3.14, # When iterative calculation is enabled and successive results differ by
|
|
# less than this threshold value, the calculation rounds stop.
|
|
"maxIterations": 42, # When iterative calculation is enabled, the maximum number of calculation
|
|
# rounds to perform.
|
|
},
|
|
"timeZone": "A String", # The time zone of the spreadsheet, in CLDR format such as
|
|
# `America/New_York`. If the time zone isn't recognized, this may
|
|
# be a custom time zone such as `GMT-07:00`.
|
|
},
|
|
}</pre>
|
|
</div>
|
|
|
|
<div class="method">
|
|
<code class="details" id="getByDataFilter">getByDataFilter(spreadsheetId, body, x__xgafv=None)</code>
|
|
<pre>Returns the spreadsheet at the given ID.
|
|
The caller must specify the spreadsheet ID.
|
|
|
|
This method differs from GetSpreadsheet in that it allows selecting
|
|
which subsets of spreadsheet data to return by specifying a
|
|
dataFilters parameter.
|
|
Multiple DataFilters can be specified. Specifying one or
|
|
more data filters will return the portions of the spreadsheet that
|
|
intersect ranges matched by any of the filters.
|
|
|
|
By default, data within grids will not be returned.
|
|
You can include grid data one of two ways:
|
|
|
|
* Specify a field mask listing your desired fields using the `fields` URL
|
|
parameter in HTTP
|
|
|
|
* Set the includeGridData
|
|
parameter to true. If a field mask is set, the `includeGridData`
|
|
parameter is ignored
|
|
|
|
For large spreadsheets, it is recommended to retrieve only the specific
|
|
fields of the spreadsheet that you want.
|
|
|
|
Args:
|
|
spreadsheetId: string, The spreadsheet to request. (required)
|
|
body: object, The request body. (required)
|
|
The object takes the form of:
|
|
|
|
{ # The request for retrieving a Spreadsheet.
|
|
"dataFilters": [ # The DataFilters used to select which ranges to retrieve from
|
|
# the spreadsheet.
|
|
{ # Filter that describes what data should be selected or returned from a
|
|
# request.
|
|
"developerMetadataLookup": { # Selects DeveloperMetadata that matches all of the specified fields. For # Selects data associated with the developer metadata matching the criteria
|
|
# described by this DeveloperMetadataLookup.
|
|
# example, if only a metadata ID is specified this considers the
|
|
# DeveloperMetadata with that particular unique ID. If a metadata key is
|
|
# specified, this considers all developer metadata with that key. If a
|
|
# key, visibility, and location type are all specified, this considers all
|
|
# developer metadata with that key and visibility that are associated with a
|
|
# location of that type. In general, this
|
|
# selects all DeveloperMetadata that matches the intersection of all the
|
|
# specified fields; any field or combination of fields may be specified.
|
|
"metadataLocation": { # A location where metadata may be associated in a spreadsheet. # Limits the selected developer metadata to those entries associated with
|
|
# the specified location. This field either matches exact locations or all
|
|
# intersecting locations according the specified
|
|
# locationMatchingStrategy.
|
|
"locationType": "A String", # The type of location this object represents. This field is read-only.
|
|
"dimensionRange": { # A range along a single dimension on a sheet. # Represents the row or column when metadata is associated with
|
|
# a dimension. The specified DimensionRange must represent a single row
|
|
# or column; it cannot be unbounded or span multiple rows or columns.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open: the start index is inclusive
|
|
# and the end index is exclusive.
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
"endIndex": 42, # The end (exclusive) of the span, or not set if unbounded.
|
|
"startIndex": 42, # The start (inclusive) of the span, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this span is on.
|
|
"dimension": "A String", # The dimension of the span.
|
|
},
|
|
"spreadsheet": True or False, # True when metadata is associated with an entire spreadsheet.
|
|
"sheetId": 42, # The ID of the sheet when metadata is associated with an entire sheet.
|
|
},
|
|
"metadataValue": "A String", # Limits the selected developer metadata to that which has a matching
|
|
# DeveloperMetadata.metadata_value.
|
|
"locationMatchingStrategy": "A String", # Determines how this lookup matches the location. If this field is
|
|
# specified as EXACT, only developer metadata associated on the exact
|
|
# location specified is matched. If this field is specified to INTERSECTING,
|
|
# developer metadata associated on intersecting locations is also
|
|
# matched. If left unspecified, this field assumes a default value of
|
|
# INTERSECTING.
|
|
# If this field is specified, a metadataLocation
|
|
# must also be specified.
|
|
"locationType": "A String", # Limits the selected developer metadata to those entries which are
|
|
# associated with locations of the specified type. For example, when this
|
|
# field is specified as ROW this lookup
|
|
# only considers developer metadata associated on rows. If the field is left
|
|
# unspecified, all location types are considered. This field cannot be
|
|
# specified as SPREADSHEET when
|
|
# the locationMatchingStrategy
|
|
# is specified as INTERSECTING or when the
|
|
# metadataLocation is specified as a
|
|
# non-spreadsheet location: spreadsheet metadata cannot intersect any other
|
|
# developer metadata location. This field also must be left unspecified when
|
|
# the locationMatchingStrategy
|
|
# is specified as EXACT.
|
|
"metadataId": 42, # Limits the selected developer metadata to that which has a matching
|
|
# DeveloperMetadata.metadata_id.
|
|
"visibility": "A String", # Limits the selected developer metadata to that which has a matching
|
|
# DeveloperMetadata.visibility. If left unspecified, all developer
|
|
# metadata visibile to the requesting project is considered.
|
|
"metadataKey": "A String", # Limits the selected developer metadata to that which has a matching
|
|
# DeveloperMetadata.metadata_key.
|
|
},
|
|
"a1Range": "A String", # Selects data that matches the specified A1 range.
|
|
"gridRange": { # A range on a sheet. # Selects data that matches the range described by the GridRange.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
},
|
|
],
|
|
"includeGridData": True or False, # True if grid data should be returned.
|
|
# This parameter is ignored if a field mask was set in the request.
|
|
}
|
|
|
|
x__xgafv: string, V1 error format.
|
|
Allowed values
|
|
1 - v1 error format
|
|
2 - v2 error format
|
|
|
|
Returns:
|
|
An object of the form:
|
|
|
|
{ # Resource that represents a spreadsheet.
|
|
"developerMetadata": [ # The developer metadata associated with a spreadsheet.
|
|
{ # Developer metadata associated with a location or object in a spreadsheet.
|
|
# Developer metadata may be used to associate arbitrary data with various
|
|
# parts of a spreadsheet and will remain associated at those locations as they
|
|
# move around and the spreadsheet is edited. For example, if developer
|
|
# metadata is associated with row 5 and another row is then subsequently
|
|
# inserted above row 5, that original metadata will still be associated with
|
|
# the row it was first associated with (what is now row 6). If the associated
|
|
# object is deleted its metadata is deleted too.
|
|
"metadataId": 42, # The spreadsheet-scoped unique ID that identifies the metadata. IDs may be
|
|
# specified when metadata is created, otherwise one will be randomly
|
|
# generated and assigned. Must be positive.
|
|
"metadataValue": "A String", # Data associated with the metadata's key.
|
|
"location": { # A location where metadata may be associated in a spreadsheet. # The location where the metadata is associated.
|
|
"locationType": "A String", # The type of location this object represents. This field is read-only.
|
|
"dimensionRange": { # A range along a single dimension on a sheet. # Represents the row or column when metadata is associated with
|
|
# a dimension. The specified DimensionRange must represent a single row
|
|
# or column; it cannot be unbounded or span multiple rows or columns.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open: the start index is inclusive
|
|
# and the end index is exclusive.
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
"endIndex": 42, # The end (exclusive) of the span, or not set if unbounded.
|
|
"startIndex": 42, # The start (inclusive) of the span, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this span is on.
|
|
"dimension": "A String", # The dimension of the span.
|
|
},
|
|
"spreadsheet": True or False, # True when metadata is associated with an entire spreadsheet.
|
|
"sheetId": 42, # The ID of the sheet when metadata is associated with an entire sheet.
|
|
},
|
|
"visibility": "A String", # The metadata visibility. Developer metadata must always have a visibility
|
|
# specified.
|
|
"metadataKey": "A String", # The metadata key. There may be multiple metadata in a spreadsheet with the
|
|
# same key. Developer metadata must always have a key specified.
|
|
},
|
|
],
|
|
"sheets": [ # The sheets that are part of a spreadsheet.
|
|
{ # A sheet in a spreadsheet.
|
|
"conditionalFormats": [ # The conditional format rules in this sheet.
|
|
{ # A rule describing a conditional format.
|
|
"ranges": [ # The ranges that are formatted if the condition is true.
|
|
# All the ranges must be on the same grid.
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
"booleanRule": { # A rule that may or may not match, depending on the condition. # The formatting is either "on" or "off" according to the rule.
|
|
"condition": { # A condition that can evaluate to true or false. # The condition of the rule. If the condition evaluates to true,
|
|
# the format is applied.
|
|
# BooleanConditions are used by conditional formatting,
|
|
# data validation, and the criteria in filters.
|
|
"values": [ # The values of the condition. The number of supported values depends
|
|
# on the condition type. Some support zero values,
|
|
# others one or two values,
|
|
# and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
|
|
{ # The value of the condition.
|
|
"relativeDate": "A String", # A relative date (based on the current date).
|
|
# Valid only if the type is
|
|
# DATE_BEFORE,
|
|
# DATE_AFTER,
|
|
# DATE_ON_OR_BEFORE or
|
|
# DATE_ON_OR_AFTER.
|
|
#
|
|
# Relative dates are not supported in data validation.
|
|
# They are supported only in conditional formatting and
|
|
# conditional filters.
|
|
"userEnteredValue": "A String", # A value the condition is based on.
|
|
# The value is parsed as if the user typed into a cell.
|
|
# Formulas are supported (and must begin with an `=` or a '+').
|
|
},
|
|
],
|
|
"type": "A String", # The type of condition.
|
|
},
|
|
"format": { # The format of a cell. # The format to apply.
|
|
# Conditional formatting can only apply a subset of formatting:
|
|
# bold, italic,
|
|
# strikethrough,
|
|
# foreground color &
|
|
# background color.
|
|
"numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
|
|
"pattern": "A String", # Pattern string used for formatting. If not set, a default pattern based on
|
|
# the user's locale will be used if necessary for the given type.
|
|
# See the [Date and Number Formats guide](/sheets/api/guides/formats) for
|
|
# more information about the supported patterns.
|
|
"type": "A String", # The type of the number format.
|
|
# When writing, this field must be set.
|
|
},
|
|
"textDirection": "A String", # The direction of the text in the cell.
|
|
"padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
|
|
# When updating padding, every field must be specified.
|
|
"top": 42, # The top padding of the cell.
|
|
"left": 42, # The left padding of the cell.
|
|
"right": 42, # The right padding of the cell.
|
|
"bottom": 42, # The bottom padding of the cell.
|
|
},
|
|
"horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
|
|
"backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"verticalAlignment": "A String", # The vertical alignment of the value in the cell.
|
|
"borders": { # The borders of the cell. # The borders of the cell.
|
|
"top": { # A border along a cell. # The top border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"right": { # A border along a cell. # The right border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"bottom": { # A border along a cell. # The bottom border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"left": { # A border along a cell. # The left border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
},
|
|
"textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell
|
|
"angle": 42, # The angle between the standard orientation and the desired orientation.
|
|
# Measured in degrees. Valid values are between -90 and 90. Positive
|
|
# angles are angled upwards, negative are angled downwards.
|
|
#
|
|
# Note: For LTR text direction positive angles are in the
|
|
# counterclockwise direction, whereas for RTL they are in the clockwise
|
|
# direction
|
|
"vertical": True or False, # If true, text reads top to bottom, but the orientation of individual
|
|
# characters is unchanged.
|
|
# For example:
|
|
#
|
|
# | V |
|
|
# | e |
|
|
# | r |
|
|
# | t |
|
|
# | i |
|
|
# | c |
|
|
# | a |
|
|
# | l |
|
|
},
|
|
"hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
|
|
"textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
"wrapStrategy": "A String", # The wrap strategy for the value in the cell.
|
|
},
|
|
},
|
|
"gradientRule": { # A rule that applies a gradient color scale format, based on # The formatting will vary based on the gradients in the rule.
|
|
# the interpolation points listed. The format of a cell will vary
|
|
# based on its contents as compared to the values of the interpolation
|
|
# points.
|
|
"maxpoint": { # A single interpolation point on a gradient conditional format. # The final interpolation point.
|
|
# These pin the gradient color scale according to the color,
|
|
# type and value chosen.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"type": "A String", # How the value should be interpreted.
|
|
"value": "A String", # The value this interpolation point uses. May be a formula.
|
|
# Unused if type is MIN or
|
|
# MAX.
|
|
},
|
|
"midpoint": { # A single interpolation point on a gradient conditional format. # An optional midway interpolation point.
|
|
# These pin the gradient color scale according to the color,
|
|
# type and value chosen.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"type": "A String", # How the value should be interpreted.
|
|
"value": "A String", # The value this interpolation point uses. May be a formula.
|
|
# Unused if type is MIN or
|
|
# MAX.
|
|
},
|
|
"minpoint": { # A single interpolation point on a gradient conditional format. # The starting interpolation point.
|
|
# These pin the gradient color scale according to the color,
|
|
# type and value chosen.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"type": "A String", # How the value should be interpreted.
|
|
"value": "A String", # The value this interpolation point uses. May be a formula.
|
|
# Unused if type is MIN or
|
|
# MAX.
|
|
},
|
|
},
|
|
},
|
|
],
|
|
"bandedRanges": [ # The banded (alternating colors) ranges on this sheet.
|
|
{ # A banded (alternating colors) range in a sheet.
|
|
"range": { # A range on a sheet. # The range over which these properties are applied.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
"columnProperties": { # Properties referring a single dimension (either row or column). If both # Properties for column bands. These properties are applied on a column-
|
|
# by-column basis throughout all the columns in the range. At least one of
|
|
# row_properties or column_properties must be specified.
|
|
# BandedRange.row_properties and BandedRange.column_properties are
|
|
# set, the fill colors are applied to cells according to the following rules:
|
|
#
|
|
# * header_color and footer_color take priority over band colors.
|
|
# * first_band_color takes priority over second_band_color.
|
|
# * row_properties takes priority over column_properties.
|
|
#
|
|
# For example, the first row color takes priority over the first column
|
|
# color, but the first column color takes priority over the second row color.
|
|
# Similarly, the row header takes priority over the column header in the
|
|
# top left cell, but the column header takes priority over the first row
|
|
# color if the row header is not set.
|
|
"secondBandColor": { # Represents a color in the RGBA color space. This representation is designed # The second color that is alternating. (Required)
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"headerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the first row or column. If this field is set, the first
|
|
# row or column will be filled with this color and the colors will
|
|
# alternate between first_band_color and second_band_color starting
|
|
# from the second row or column. Otherwise, the first row or column will be
|
|
# filled with first_band_color and the colors will proceed to alternate
|
|
# as they normally would.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"footerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the last row or column. If this field is not set, the last
|
|
# row or column will be filled with either first_band_color or
|
|
# second_band_color, depending on the color of the previous row or
|
|
# column.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"firstBandColor": { # Represents a color in the RGBA color space. This representation is designed # The first color that is alternating. (Required)
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
},
|
|
"rowProperties": { # Properties referring a single dimension (either row or column). If both # Properties for row bands. These properties are applied on a row-by-row
|
|
# basis throughout all the rows in the range. At least one of
|
|
# row_properties or column_properties must be specified.
|
|
# BandedRange.row_properties and BandedRange.column_properties are
|
|
# set, the fill colors are applied to cells according to the following rules:
|
|
#
|
|
# * header_color and footer_color take priority over band colors.
|
|
# * first_band_color takes priority over second_band_color.
|
|
# * row_properties takes priority over column_properties.
|
|
#
|
|
# For example, the first row color takes priority over the first column
|
|
# color, but the first column color takes priority over the second row color.
|
|
# Similarly, the row header takes priority over the column header in the
|
|
# top left cell, but the column header takes priority over the first row
|
|
# color if the row header is not set.
|
|
"secondBandColor": { # Represents a color in the RGBA color space. This representation is designed # The second color that is alternating. (Required)
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"headerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the first row or column. If this field is set, the first
|
|
# row or column will be filled with this color and the colors will
|
|
# alternate between first_band_color and second_band_color starting
|
|
# from the second row or column. Otherwise, the first row or column will be
|
|
# filled with first_band_color and the colors will proceed to alternate
|
|
# as they normally would.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"footerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the last row or column. If this field is not set, the last
|
|
# row or column will be filled with either first_band_color or
|
|
# second_band_color, depending on the color of the previous row or
|
|
# column.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"firstBandColor": { # Represents a color in the RGBA color space. This representation is designed # The first color that is alternating. (Required)
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
},
|
|
"bandedRangeId": 42, # The id of the banded range.
|
|
},
|
|
],
|
|
"merges": [ # The ranges that are merged together.
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
"basicFilter": { # The default filter associated with a sheet. # The filter on this sheet, if any.
|
|
"range": { # A range on a sheet. # The range the filter covers.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
"sortSpecs": [ # The sort order per column. Later specifications are used when values
|
|
# are equal in the earlier specifications.
|
|
{ # A sort order associated with a specific column or row.
|
|
"sortOrder": "A String", # The order data should be sorted.
|
|
"dimensionIndex": 42, # The dimension the sort should be applied to.
|
|
},
|
|
],
|
|
"criteria": { # The criteria for showing/hiding values per column.
|
|
# The map's key is the column index, and the value is the criteria for
|
|
# that column.
|
|
"a_key": { # Criteria for showing/hiding rows in a filter or filter view.
|
|
"hiddenValues": [ # Values that should be hidden.
|
|
"A String",
|
|
],
|
|
"condition": { # A condition that can evaluate to true or false. # A condition that must be true for values to be shown.
|
|
# (This does not override hiddenValues -- if a value is listed there,
|
|
# it will still be hidden.)
|
|
# BooleanConditions are used by conditional formatting,
|
|
# data validation, and the criteria in filters.
|
|
"values": [ # The values of the condition. The number of supported values depends
|
|
# on the condition type. Some support zero values,
|
|
# others one or two values,
|
|
# and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
|
|
{ # The value of the condition.
|
|
"relativeDate": "A String", # A relative date (based on the current date).
|
|
# Valid only if the type is
|
|
# DATE_BEFORE,
|
|
# DATE_AFTER,
|
|
# DATE_ON_OR_BEFORE or
|
|
# DATE_ON_OR_AFTER.
|
|
#
|
|
# Relative dates are not supported in data validation.
|
|
# They are supported only in conditional formatting and
|
|
# conditional filters.
|
|
"userEnteredValue": "A String", # A value the condition is based on.
|
|
# The value is parsed as if the user typed into a cell.
|
|
# Formulas are supported (and must begin with an `=` or a '+').
|
|
},
|
|
],
|
|
"type": "A String", # The type of condition.
|
|
},
|
|
},
|
|
},
|
|
},
|
|
"developerMetadata": [ # The developer metadata associated with a sheet.
|
|
{ # Developer metadata associated with a location or object in a spreadsheet.
|
|
# Developer metadata may be used to associate arbitrary data with various
|
|
# parts of a spreadsheet and will remain associated at those locations as they
|
|
# move around and the spreadsheet is edited. For example, if developer
|
|
# metadata is associated with row 5 and another row is then subsequently
|
|
# inserted above row 5, that original metadata will still be associated with
|
|
# the row it was first associated with (what is now row 6). If the associated
|
|
# object is deleted its metadata is deleted too.
|
|
"metadataId": 42, # The spreadsheet-scoped unique ID that identifies the metadata. IDs may be
|
|
# specified when metadata is created, otherwise one will be randomly
|
|
# generated and assigned. Must be positive.
|
|
"metadataValue": "A String", # Data associated with the metadata's key.
|
|
"location": { # A location where metadata may be associated in a spreadsheet. # The location where the metadata is associated.
|
|
"locationType": "A String", # The type of location this object represents. This field is read-only.
|
|
"dimensionRange": { # A range along a single dimension on a sheet. # Represents the row or column when metadata is associated with
|
|
# a dimension. The specified DimensionRange must represent a single row
|
|
# or column; it cannot be unbounded or span multiple rows or columns.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open: the start index is inclusive
|
|
# and the end index is exclusive.
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
"endIndex": 42, # The end (exclusive) of the span, or not set if unbounded.
|
|
"startIndex": 42, # The start (inclusive) of the span, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this span is on.
|
|
"dimension": "A String", # The dimension of the span.
|
|
},
|
|
"spreadsheet": True or False, # True when metadata is associated with an entire spreadsheet.
|
|
"sheetId": 42, # The ID of the sheet when metadata is associated with an entire sheet.
|
|
},
|
|
"visibility": "A String", # The metadata visibility. Developer metadata must always have a visibility
|
|
# specified.
|
|
"metadataKey": "A String", # The metadata key. There may be multiple metadata in a spreadsheet with the
|
|
# same key. Developer metadata must always have a key specified.
|
|
},
|
|
],
|
|
"columnGroups": [ # All column groups on this sheet, ordered by increasing range start index,
|
|
# then by group depth.
|
|
{ # A group over an interval of rows or columns on a sheet, which can contain or
|
|
# be contained within other groups. A group can be collapsed or expanded as a
|
|
# unit on the sheet.
|
|
"range": { # A range along a single dimension on a sheet. # The range over which this group exists.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open: the start index is inclusive
|
|
# and the end index is exclusive.
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
"endIndex": 42, # The end (exclusive) of the span, or not set if unbounded.
|
|
"startIndex": 42, # The start (inclusive) of the span, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this span is on.
|
|
"dimension": "A String", # The dimension of the span.
|
|
},
|
|
"collapsed": True or False, # This field is true if this group is collapsed. A collapsed group remains
|
|
# collapsed if an overlapping group at a shallower depth is expanded.
|
|
#
|
|
# A true value does not imply that all dimensions within the group are
|
|
# hidden, since a dimension's visibility can change independently from this
|
|
# group property. However, when this property is updated, all dimensions
|
|
# within it are set to hidden if this field is true, or set to visible if
|
|
# this field is false.
|
|
"depth": 42, # The depth of the group, representing how many groups have a range that
|
|
# wholly contains the range of this group.
|
|
},
|
|
],
|
|
"properties": { # Properties of a sheet. # The properties of the sheet.
|
|
"sheetType": "A String", # The type of sheet. Defaults to GRID.
|
|
# This field cannot be changed once set.
|
|
"index": 42, # The index of the sheet within the spreadsheet.
|
|
# When adding or updating sheet properties, if this field
|
|
# is excluded then the sheet is added or moved to the end
|
|
# of the sheet list. When updating sheet indices or inserting
|
|
# sheets, movement is considered in "before the move" indexes.
|
|
# For example, if there were 3 sheets (S1, S2, S3) in order to
|
|
# move S1 ahead of S2 the index would have to be set to 2. A sheet
|
|
# index update request is ignored if the requested index is
|
|
# identical to the sheets current index or if the requested new
|
|
# index is equal to the current sheet index + 1.
|
|
"title": "A String", # The name of the sheet.
|
|
"gridProperties": { # Properties of a grid. # Additional properties of the sheet if this sheet is a grid.
|
|
# (If the sheet is an object sheet, containing a chart or image, then
|
|
# this field will be absent.)
|
|
# When writing it is an error to set any grid properties on non-grid sheets.
|
|
"columnCount": 42, # The number of columns in the grid.
|
|
"rowGroupControlAfter": True or False, # True if the row grouping control toggle is shown after the group.
|
|
"columnGroupControlAfter": True or False, # True if the column grouping control toggle is shown after the group.
|
|
"frozenRowCount": 42, # The number of rows that are frozen in the grid.
|
|
"frozenColumnCount": 42, # The number of columns that are frozen in the grid.
|
|
"rowCount": 42, # The number of rows in the grid.
|
|
"hideGridlines": True or False, # True if the grid isn't showing gridlines in the UI.
|
|
},
|
|
"rightToLeft": True or False, # True if the sheet is an RTL sheet instead of an LTR sheet.
|
|
"tabColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the tab in the UI.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"hidden": True or False, # True if the sheet is hidden in the UI, false if it's visible.
|
|
"sheetId": 42, # The ID of the sheet. Must be non-negative.
|
|
# This field cannot be changed once set.
|
|
},
|
|
"filterViews": [ # The filter views in this sheet.
|
|
{ # A filter view.
|
|
"title": "A String", # The name of the filter view.
|
|
"namedRangeId": "A String", # The named range this filter view is backed by, if any.
|
|
#
|
|
# When writing, only one of range or named_range_id
|
|
# may be set.
|
|
"filterViewId": 42, # The ID of the filter view.
|
|
"range": { # A range on a sheet. # The range this filter view covers.
|
|
#
|
|
# When writing, only one of range or named_range_id
|
|
# may be set.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
"sortSpecs": [ # The sort order per column. Later specifications are used when values
|
|
# are equal in the earlier specifications.
|
|
{ # A sort order associated with a specific column or row.
|
|
"sortOrder": "A String", # The order data should be sorted.
|
|
"dimensionIndex": 42, # The dimension the sort should be applied to.
|
|
},
|
|
],
|
|
"criteria": { # The criteria for showing/hiding values per column.
|
|
# The map's key is the column index, and the value is the criteria for
|
|
# that column.
|
|
"a_key": { # Criteria for showing/hiding rows in a filter or filter view.
|
|
"hiddenValues": [ # Values that should be hidden.
|
|
"A String",
|
|
],
|
|
"condition": { # A condition that can evaluate to true or false. # A condition that must be true for values to be shown.
|
|
# (This does not override hiddenValues -- if a value is listed there,
|
|
# it will still be hidden.)
|
|
# BooleanConditions are used by conditional formatting,
|
|
# data validation, and the criteria in filters.
|
|
"values": [ # The values of the condition. The number of supported values depends
|
|
# on the condition type. Some support zero values,
|
|
# others one or two values,
|
|
# and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
|
|
{ # The value of the condition.
|
|
"relativeDate": "A String", # A relative date (based on the current date).
|
|
# Valid only if the type is
|
|
# DATE_BEFORE,
|
|
# DATE_AFTER,
|
|
# DATE_ON_OR_BEFORE or
|
|
# DATE_ON_OR_AFTER.
|
|
#
|
|
# Relative dates are not supported in data validation.
|
|
# They are supported only in conditional formatting and
|
|
# conditional filters.
|
|
"userEnteredValue": "A String", # A value the condition is based on.
|
|
# The value is parsed as if the user typed into a cell.
|
|
# Formulas are supported (and must begin with an `=` or a '+').
|
|
},
|
|
],
|
|
"type": "A String", # The type of condition.
|
|
},
|
|
},
|
|
},
|
|
},
|
|
],
|
|
"charts": [ # The specifications of every chart on this sheet.
|
|
{ # A chart embedded in a sheet.
|
|
"chartId": 42, # The ID of the chart.
|
|
"position": { # The position of an embedded object such as a chart. # The position of the chart.
|
|
"newSheet": True or False, # If true, the embedded object is put on a new sheet whose ID
|
|
# is chosen for you. Used only when writing.
|
|
"sheetId": 42, # The sheet this is on. Set only if the embedded object
|
|
# is on its own sheet. Must be non-negative.
|
|
"overlayPosition": { # The location an object is overlaid on top of a grid. # The position at which the object is overlaid on top of a grid.
|
|
"anchorCell": { # A coordinate in a sheet. # The cell the object is anchored to.
|
|
# All indexes are zero-based.
|
|
"rowIndex": 42, # The row index of the coordinate.
|
|
"columnIndex": 42, # The column index of the coordinate.
|
|
"sheetId": 42, # The sheet this coordinate is on.
|
|
},
|
|
"widthPixels": 42, # The width of the object, in pixels. Defaults to 600.
|
|
"offsetYPixels": 42, # The vertical offset, in pixels, that the object is offset
|
|
# from the anchor cell.
|
|
"offsetXPixels": 42, # The horizontal offset, in pixels, that the object is offset
|
|
# from the anchor cell.
|
|
"heightPixels": 42, # The height of the object, in pixels. Defaults to 371.
|
|
},
|
|
},
|
|
"spec": { # The specifications of a chart. # The specification of the chart.
|
|
"fontName": "A String", # The name of the font to use by default for all chart text (e.g. title,
|
|
# axis labels, legend). If a font is specified for a specific part of the
|
|
# chart it will override this font name.
|
|
"altText": "A String", # The alternative text that describes the chart. This is often used
|
|
# for accessibility.
|
|
"subtitle": "A String", # The subtitle of the chart.
|
|
"subtitleTextFormat": { # The format of a run of text in a cell. # The subtitle text format.
|
|
# Strikethrough and underline are not supported.
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
"title": "A String", # The title of the chart.
|
|
"titleTextFormat": { # The format of a run of text in a cell. # The title text format.
|
|
# Strikethrough and underline are not supported.
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
"treemapChart": { # A <a href="/chart/interactive/docs/gallery/treemap">Treemap chart</a>. # A treemap chart specification.
|
|
"parentLabels": { # The data included in a domain or series. # The data the contains the treemap cells' parent labels.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"sizeData": { # The data included in a domain or series. # The data that determines the size of each treemap data cell. This data is
|
|
# expected to be numeric. The cells corresponding to non-numeric or missing
|
|
# data will not be rendered. If color_data is not specified, this data
|
|
# is used to determine data cell background colors as well.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"hideTooltips": True or False, # True to hide tooltips.
|
|
"colorScale": { # A color scale for a treemap chart. # The color scale for data cells in the treemap chart. Data cells are
|
|
# assigned colors based on their color values. These color values come from
|
|
# color_data, or from size_data if color_data is not specified.
|
|
# Cells with color values less than or equal to min_value will
|
|
# have minValueColor as their
|
|
# background color. Cells with color values greater than or equal to
|
|
# max_value will have
|
|
# maxValueColor as their background
|
|
# color. Cells with color values between min_value and max_value will
|
|
# have background colors on a gradient between
|
|
# minValueColor and
|
|
# maxValueColor, the midpoint of
|
|
# the gradient being midValueColor.
|
|
# Cells with missing or non-numeric color values will have
|
|
# noDataColor as their background
|
|
# color.
|
|
"noDataColor": { # Represents a color in the RGBA color space. This representation is designed # The background color for cells that have no color data associated with
|
|
# them. Defaults to #000000 if not specified.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"midValueColor": { # Represents a color in the RGBA color space. This representation is designed # The background color for cells with a color value at the midpoint between
|
|
# minValue and
|
|
# maxValue. Defaults to #efe6dc if not
|
|
# specified.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"minValueColor": { # Represents a color in the RGBA color space. This representation is designed # The background color for cells with a color value less than or equal to
|
|
# minValue. Defaults to #dc3912 if not
|
|
# specified.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"maxValueColor": { # Represents a color in the RGBA color space. This representation is designed # The background color for cells with a color value greater than or equal
|
|
# to maxValue. Defaults to #109618 if not
|
|
# specified.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
},
|
|
"labels": { # The data included in a domain or series. # The data that contains the treemap cell labels.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"colorData": { # The data included in a domain or series. # The data that determines the background color of each treemap data cell.
|
|
# This field is optional. If not specified, size_data is used to
|
|
# determine background colors. If specified, the data is expected to be
|
|
# numeric. color_scale will determine how the values in this data map to
|
|
# data cell background colors.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"maxValue": 3.14, # The maximum possible data value. Cells with values greater than this will
|
|
# have the same color as cells with this value. If not specified, defaults
|
|
# to the actual maximum value from color_data, or the maximum value from
|
|
# size_data if color_data is not specified.
|
|
"minValue": 3.14, # The minimum possible data value. Cells with values less than this will
|
|
# have the same color as cells with this value. If not specified, defaults
|
|
# to the actual minimum value from color_data, or the minimum value from
|
|
# size_data if color_data is not specified.
|
|
"headerColor": { # Represents a color in the RGBA color space. This representation is designed # The background color for header cells.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"levels": 42, # The number of data levels to show on the treemap chart. These levels are
|
|
# interactive and are shown with their labels. Defaults to 2 if not
|
|
# specified.
|
|
"hintedLevels": 42, # The number of additional data levels beyond the labeled levels to be shown
|
|
# on the treemap chart. These levels are not interactive and are shown
|
|
# without their labels. Defaults to 0 if not specified.
|
|
"textFormat": { # The format of a run of text in a cell. # The text format for all labels on the chart.
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
},
|
|
"titleTextPosition": { # Position settings for text. # The title text position.
|
|
# This field is optional.
|
|
"horizontalAlignment": "A String", # Horizontal alignment setting for the piece of text.
|
|
},
|
|
"hiddenDimensionStrategy": "A String", # Determines how the charts will use hidden rows or columns.
|
|
"pieChart": { # A <a href="/chart/interactive/docs/gallery/piechart">pie chart</a>. # A pie chart specification.
|
|
"series": { # The data included in a domain or series. # The data that covers the one and only series of the pie chart.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"domain": { # The data included in a domain or series. # The data that covers the domain of the pie chart.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"threeDimensional": True or False, # True if the pie is three dimensional.
|
|
"legendPosition": "A String", # Where the legend of the pie chart should be drawn.
|
|
"pieHole": 3.14, # The size of the hole in the pie chart.
|
|
},
|
|
"candlestickChart": { # A <a href="/chart/interactive/docs/gallery/candlestickchart">candlestick # A candlestick chart specification.
|
|
# chart</a>.
|
|
"domain": { # The domain of a CandlestickChart. # The domain data (horizontal axis) for the candlestick chart. String data
|
|
# will be treated as discrete labels, other data will be treated as
|
|
# continuous values.
|
|
"reversed": True or False, # True to reverse the order of the domain values (horizontal axis).
|
|
"data": { # The data included in a domain or series. # The data of the CandlestickDomain.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
"data": [ # The Candlestick chart data.
|
|
# Only one CandlestickData is supported.
|
|
{ # The Candlestick chart data, each containing the low, open, close, and high
|
|
# values for a series.
|
|
"lowSeries": { # The series of a CandlestickData. # The range data (vertical axis) for the low/minimum value for each candle.
|
|
# This is the bottom of the candle's center line.
|
|
"data": { # The data included in a domain or series. # The data of the CandlestickSeries.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
"highSeries": { # The series of a CandlestickData. # The range data (vertical axis) for the high/maximum value for each
|
|
# candle. This is the top of the candle's center line.
|
|
"data": { # The data included in a domain or series. # The data of the CandlestickSeries.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
"openSeries": { # The series of a CandlestickData. # The range data (vertical axis) for the open/initial value for each
|
|
# candle. This is the bottom of the candle body. If less than the close
|
|
# value the candle will be filled. Otherwise the candle will be hollow.
|
|
"data": { # The data included in a domain or series. # The data of the CandlestickSeries.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
"closeSeries": { # The series of a CandlestickData. # The range data (vertical axis) for the close/final value for each candle.
|
|
# This is the top of the candle body. If greater than the open value the
|
|
# candle will be filled. Otherwise the candle will be hollow.
|
|
"data": { # The data included in a domain or series. # The data of the CandlestickSeries.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
},
|
|
],
|
|
},
|
|
"subtitleTextPosition": { # Position settings for text. # The subtitle text position.
|
|
# This field is optional.
|
|
"horizontalAlignment": "A String", # Horizontal alignment setting for the piece of text.
|
|
},
|
|
"backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the entire chart.
|
|
# Not applicable to Org charts.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"maximized": True or False, # True to make a chart fill the entire space in which it's rendered with
|
|
# minimum padding. False to use the default padding.
|
|
# (Not applicable to Geo and Org charts.)
|
|
"waterfallChart": { # A waterfall chart. # A waterfall chart specification.
|
|
"stackedType": "A String", # The stacked type.
|
|
"hideConnectorLines": True or False, # True to hide connector lines between columns.
|
|
"domain": { # The domain of a waterfall chart. # The domain data (horizontal axis) for the waterfall chart.
|
|
"reversed": True or False, # True to reverse the order of the domain values (horizontal axis).
|
|
"data": { # The data included in a domain or series. # The data of the WaterfallChartDomain.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
"connectorLineStyle": { # Properties that describe the style of a line. # The line style for the connector lines.
|
|
"width": 42, # The thickness of the line, in px.
|
|
"type": "A String", # The dash type of the line.
|
|
},
|
|
"series": [ # The data this waterfall chart is visualizing.
|
|
{ # A single series of data for a waterfall chart.
|
|
"hideTrailingSubtotal": True or False, # True to hide the subtotal column from the end of the series. By default,
|
|
# a subtotal column will appear at the end of each series. Setting this
|
|
# field to true will hide that subtotal column for this series.
|
|
"positiveColumnsStyle": { # Styles for a waterfall chart column. # Styles for all columns in this series with positive values.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the column.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"label": "A String", # The label of the column's legend.
|
|
},
|
|
"subtotalColumnsStyle": { # Styles for a waterfall chart column. # Styles for all subtotal columns in this series.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the column.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"label": "A String", # The label of the column's legend.
|
|
},
|
|
"negativeColumnsStyle": { # Styles for a waterfall chart column. # Styles for all columns in this series with negative values.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the column.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"label": "A String", # The label of the column's legend.
|
|
},
|
|
"customSubtotals": [ # Custom subtotal columns appearing in this series. The order in which
|
|
# subtotals are defined is not significant. Only one subtotal may be
|
|
# defined for each data point.
|
|
{ # A custom subtotal column for a waterfall chart series.
|
|
"dataIsSubtotal": True or False, # True if the data point at subtotal_index is the subtotal. If false,
|
|
# the subtotal will be computed and appear after the data point.
|
|
"subtotalIndex": 42, # The 0-based index of a data point within the series. If
|
|
# data_is_subtotal is true, the data point at this index is the
|
|
# subtotal. Otherwise, the subtotal appears after the data point with
|
|
# this index. A series can have multiple subtotals at arbitrary indices,
|
|
# but subtotals do not affect the indices of the data points. For
|
|
# example, if a series has three data points, their indices will always
|
|
# be 0, 1, and 2, regardless of how many subtotals exist on the series or
|
|
# what data points they are associated with.
|
|
"label": "A String", # A label for the subtotal column.
|
|
},
|
|
],
|
|
"data": { # The data included in a domain or series. # The data being visualized in this series.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
],
|
|
"firstValueIsTotal": True or False, # True to interpret the first value as a total.
|
|
},
|
|
"basicChart": { # The specification for a basic chart. See BasicChartType for the list # A basic chart specification, can be one of many kinds of charts.
|
|
# See BasicChartType for the list of all
|
|
# charts this supports.
|
|
# of charts this supports.
|
|
"stackedType": "A String", # The stacked type for charts that support vertical stacking.
|
|
# Applies to Area, Bar, Column, Combo, and Stepped Area charts.
|
|
"headerCount": 42, # The number of rows or columns in the data that are "headers".
|
|
# If not set, Google Sheets will guess how many rows are headers based
|
|
# on the data.
|
|
#
|
|
# (Note that BasicChartAxis.title may override the axis title
|
|
# inferred from the header values.)
|
|
"series": [ # The data this chart is visualizing.
|
|
{ # A single series of data in a chart.
|
|
# For example, if charting stock prices over time, multiple series may exist,
|
|
# one for the "Open Price", "High Price", "Low Price" and "Close Price".
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color for elements (i.e. bars, lines, points) associated with this
|
|
# series. If empty, a default color is used.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"series": { # The data included in a domain or series. # The data being visualized in this chart series.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"targetAxis": "A String", # The minor axis that will specify the range of values for this series.
|
|
# For example, if charting stocks over time, the "Volume" series
|
|
# may want to be pinned to the right with the prices pinned to the left,
|
|
# because the scale of trading volume is different than the scale of
|
|
# prices.
|
|
# It is an error to specify an axis that isn't a valid minor axis
|
|
# for the chart's type.
|
|
"lineStyle": { # Properties that describe the style of a line. # The line style of this series. Valid only if the
|
|
# chartType is AREA,
|
|
# LINE, or SCATTER.
|
|
# COMBO charts are also supported if the
|
|
# series chart type is
|
|
# AREA or LINE.
|
|
"width": 42, # The thickness of the line, in px.
|
|
"type": "A String", # The dash type of the line.
|
|
},
|
|
"type": "A String", # The type of this series. Valid only if the
|
|
# chartType is
|
|
# COMBO.
|
|
# Different types will change the way the series is visualized.
|
|
# Only LINE, AREA,
|
|
# and COLUMN are supported.
|
|
},
|
|
],
|
|
"interpolateNulls": True or False, # If some values in a series are missing, gaps may appear in the chart (e.g,
|
|
# segments of lines in a line chart will be missing). To eliminate these
|
|
# gaps set this to true.
|
|
# Applies to Line, Area, and Combo charts.
|
|
"legendPosition": "A String", # The position of the chart legend.
|
|
"lineSmoothing": True or False, # Gets whether all lines should be rendered smooth or straight by default.
|
|
# Applies to Line charts.
|
|
"compareMode": "A String", # The behavior of tooltips and data highlighting when hovering on data and
|
|
# chart area.
|
|
"domains": [ # The domain of data this is charting.
|
|
# Only a single domain is supported.
|
|
{ # The domain of a chart.
|
|
# For example, if charting stock prices over time, this would be the date.
|
|
"reversed": True or False, # True to reverse the order of the domain values (horizontal axis).
|
|
"domain": { # The data included in a domain or series. # The data of the domain. For example, if charting stock prices over time,
|
|
# this is the data representing the dates.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
],
|
|
"chartType": "A String", # The type of the chart.
|
|
"threeDimensional": True or False, # True to make the chart 3D.
|
|
# Applies to Bar and Column charts.
|
|
"axis": [ # The axis on the chart.
|
|
{ # An axis of the chart.
|
|
# A chart may not have more than one axis per
|
|
# axis position.
|
|
"position": "A String", # The position of this axis.
|
|
"format": { # The format of a run of text in a cell. # The format of the title.
|
|
# Only valid if the axis is not associated with the domain.
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
"title": "A String", # The title of this axis. If set, this overrides any title inferred
|
|
# from headers of the data.
|
|
"titleTextPosition": { # Position settings for text. # The axis title text position.
|
|
"horizontalAlignment": "A String", # Horizontal alignment setting for the piece of text.
|
|
},
|
|
},
|
|
],
|
|
},
|
|
"histogramChart": { # A <a href="/chart/interactive/docs/gallery/histogram">histogram chart</a>. # A histogram chart specification.
|
|
# A histogram chart groups data items into bins, displaying each bin as a
|
|
# column of stacked items. Histograms are used to display the distribution
|
|
# of a dataset. Each column of items represents a range into which those
|
|
# items fall. The number of bins can be chosen automatically or specified
|
|
# explicitly.
|
|
"outlierPercentile": 3.14, # The outlier percentile is used to ensure that outliers do not adversely
|
|
# affect the calculation of bucket sizes. For example, setting an outlier
|
|
# percentile of 0.05 indicates that the top and bottom 5% of values when
|
|
# calculating buckets. The values are still included in the chart, they will
|
|
# be added to the first or last buckets instead of their own buckets.
|
|
# Must be between 0.0 and 0.5.
|
|
"series": [ # The series for a histogram may be either a single series of values to be
|
|
# bucketed or multiple series, each of the same length, containing the name
|
|
# of the series followed by the values to be bucketed for that series.
|
|
{ # A histogram series containing the series color and data.
|
|
"barColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the column representing this series in each bucket.
|
|
# This field is optional.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"data": { # The data included in a domain or series. # The data for this histogram series.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
},
|
|
],
|
|
"showItemDividers": True or False, # Whether horizontal divider lines should be displayed between items in each
|
|
# column.
|
|
"legendPosition": "A String", # The position of the chart legend.
|
|
"bucketSize": 3.14, # By default the bucket size (the range of values stacked in a single
|
|
# column) is chosen automatically, but it may be overridden here.
|
|
# E.g., A bucket size of 1.5 results in buckets from 0 - 1.5, 1.5 - 3.0, etc.
|
|
# Cannot be negative.
|
|
# This field is optional.
|
|
},
|
|
"bubbleChart": { # A <a href="/chart/interactive/docs/gallery/bubblechart">bubble chart</a>. # A bubble chart specification.
|
|
"bubbleBorderColor": { # Represents a color in the RGBA color space. This representation is designed # The bubble border color.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"domain": { # The data included in a domain or series. # The data containing the bubble x-values. These values locate the bubbles
|
|
# in the chart horizontally.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"bubbleTextStyle": { # The format of a run of text in a cell. # The format of the text inside the bubbles.
|
|
# Underline and Strikethrough are not supported.
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
"series": { # The data included in a domain or series. # The data contianing the bubble y-values. These values locate the bubbles
|
|
# in the chart vertically.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"legendPosition": "A String", # Where the legend of the chart should be drawn.
|
|
"bubbleMaxRadiusSize": 42, # The max radius size of the bubbles, in pixels.
|
|
# If specified, the field must be a positive value.
|
|
"bubbleOpacity": 3.14, # The opacity of the bubbles between 0 and 1.0.
|
|
# 0 is fully transparent and 1 is fully opaque.
|
|
"groupIds": { # The data included in a domain or series. # The data containing the bubble group IDs. All bubbles with the same group
|
|
# ID are drawn in the same color. If bubble_sizes is specified then
|
|
# this field must also be specified but may contain blank values.
|
|
# This field is optional.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"bubbleSizes": { # The data included in a domain or series. # The data contianing the bubble sizes. Bubble sizes are used to draw
|
|
# the bubbles at different sizes relative to each other.
|
|
# If specified, group_ids must also be specified. This field is
|
|
# optional.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"bubbleLabels": { # The data included in a domain or series. # The data containing the bubble labels. These do not need to be unique.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"bubbleMinRadiusSize": 42, # The minimum radius size of the bubbles, in pixels.
|
|
# If specific, the field must be a positive value.
|
|
},
|
|
"orgChart": { # An <a href="/chart/interactive/docs/gallery/orgchart">org chart</a>. # An org chart specification.
|
|
# Org charts require a unique set of labels in labels and may
|
|
# optionally include parent_labels and tooltips.
|
|
# parent_labels contain, for each node, the label identifying the parent
|
|
# node. tooltips contain, for each node, an optional tooltip.
|
|
#
|
|
# For example, to describe an OrgChart with Alice as the CEO, Bob as the
|
|
# President (reporting to Alice) and Cathy as VP of Sales (also reporting to
|
|
# Alice), have labels contain "Alice", "Bob", "Cathy",
|
|
# parent_labels contain "", "Alice", "Alice" and tooltips contain
|
|
# "CEO", "President", "VP Sales".
|
|
"tooltips": { # The data included in a domain or series. # The data containing the tooltip for the corresponding node. A blank value
|
|
# results in no tooltip being displayed for the node.
|
|
# This field is optional.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"parentLabels": { # The data included in a domain or series. # The data containing the label of the parent for the corresponding node.
|
|
# A blank value indicates that the node has no parent and is a top-level
|
|
# node.
|
|
# This field is optional.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"nodeColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the org chart nodes.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"labels": { # The data included in a domain or series. # The data containing the labels for all the nodes in the chart. Labels
|
|
# must be unique.
|
|
"sourceRange": { # Source ranges for a chart. # The source ranges of the data.
|
|
"sources": [ # The ranges of data for a series or domain.
|
|
# Exactly one dimension must have a length of 1,
|
|
# and all sources in the list must have the same dimension
|
|
# with length 1.
|
|
# The domain (if it exists) & all series must have the same number
|
|
# of source ranges. If using more than one source range, then the source
|
|
# range at a given offset must be in order and contiguous across the domain
|
|
# and series.
|
|
#
|
|
# For example, these are valid configurations:
|
|
#
|
|
# domain sources: A1:A5
|
|
# series1 sources: B1:B5
|
|
# series2 sources: D6:D10
|
|
#
|
|
# domain sources: A1:A5, C10:C12
|
|
# series1 sources: B1:B5, D10:D12
|
|
# series2 sources: C1:C5, E10:E12
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
},
|
|
},
|
|
"selectedNodeColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the selected org chart nodes.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"nodeSize": "A String", # The size of the org chart nodes.
|
|
},
|
|
},
|
|
},
|
|
],
|
|
"protectedRanges": [ # The protected ranges in this sheet.
|
|
{ # A protected range.
|
|
"unprotectedRanges": [ # The list of unprotected ranges within a protected sheet.
|
|
# Unprotected ranges are only supported on protected sheets.
|
|
{ # A range on a sheet.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
],
|
|
"requestingUserCanEdit": True or False, # True if the user who requested this protected range can edit the
|
|
# protected area.
|
|
# This field is read-only.
|
|
"description": "A String", # The description of this protected range.
|
|
"namedRangeId": "A String", # The named range this protected range is backed by, if any.
|
|
#
|
|
# When writing, only one of range or named_range_id
|
|
# may be set.
|
|
"range": { # A range on a sheet. # The range that is being protected.
|
|
# The range may be fully unbounded, in which case this is considered
|
|
# a protected sheet.
|
|
#
|
|
# When writing, only one of range or named_range_id
|
|
# may be set.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
"editors": { # The editors of a protected range. # The users and groups with edit access to the protected range.
|
|
# This field is only visible to users with edit access to the protected
|
|
# range and the document.
|
|
# Editors are not supported with warning_only protection.
|
|
"domainUsersCanEdit": True or False, # True if anyone in the document's domain has edit access to the protected
|
|
# range. Domain protection is only supported on documents within a domain.
|
|
"users": [ # The email addresses of users with edit access to the protected range.
|
|
"A String",
|
|
],
|
|
"groups": [ # The email addresses of groups with edit access to the protected range.
|
|
"A String",
|
|
],
|
|
},
|
|
"protectedRangeId": 42, # The ID of the protected range.
|
|
# This field is read-only.
|
|
"warningOnly": True or False, # True if this protected range will show a warning when editing.
|
|
# Warning-based protection means that every user can edit data in the
|
|
# protected range, except editing will prompt a warning asking the user
|
|
# to confirm the edit.
|
|
#
|
|
# When writing: if this field is true, then editors is ignored.
|
|
# Additionally, if this field is changed from true to false and the
|
|
# `editors` field is not set (nor included in the field mask), then
|
|
# the editors will be set to all the editors in the document.
|
|
},
|
|
],
|
|
"data": [ # Data in the grid, if this is a grid sheet.
|
|
# The number of GridData objects returned is dependent on the number of
|
|
# ranges requested on this sheet. For example, if this is representing
|
|
# `Sheet1`, and the spreadsheet was requested with ranges
|
|
# `Sheet1!A1:C10` and `Sheet1!D15:E20`, then the first GridData will have a
|
|
# startRow/startColumn of `0`,
|
|
# while the second one will have `startRow 14` (zero-based row 15),
|
|
# and `startColumn 3` (zero-based column D).
|
|
{ # Data in the grid, as well as metadata about the dimensions.
|
|
"rowMetadata": [ # Metadata about the requested rows in the grid, starting with the row
|
|
# in start_row.
|
|
{ # Properties about a dimension.
|
|
"pixelSize": 42, # The height (if a row) or width (if a column) of the dimension in pixels.
|
|
"developerMetadata": [ # The developer metadata associated with a single row or column.
|
|
{ # Developer metadata associated with a location or object in a spreadsheet.
|
|
# Developer metadata may be used to associate arbitrary data with various
|
|
# parts of a spreadsheet and will remain associated at those locations as they
|
|
# move around and the spreadsheet is edited. For example, if developer
|
|
# metadata is associated with row 5 and another row is then subsequently
|
|
# inserted above row 5, that original metadata will still be associated with
|
|
# the row it was first associated with (what is now row 6). If the associated
|
|
# object is deleted its metadata is deleted too.
|
|
"metadataId": 42, # The spreadsheet-scoped unique ID that identifies the metadata. IDs may be
|
|
# specified when metadata is created, otherwise one will be randomly
|
|
# generated and assigned. Must be positive.
|
|
"metadataValue": "A String", # Data associated with the metadata's key.
|
|
"location": { # A location where metadata may be associated in a spreadsheet. # The location where the metadata is associated.
|
|
"locationType": "A String", # The type of location this object represents. This field is read-only.
|
|
"dimensionRange": { # A range along a single dimension on a sheet. # Represents the row or column when metadata is associated with
|
|
# a dimension. The specified DimensionRange must represent a single row
|
|
# or column; it cannot be unbounded or span multiple rows or columns.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open: the start index is inclusive
|
|
# and the end index is exclusive.
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
"endIndex": 42, # The end (exclusive) of the span, or not set if unbounded.
|
|
"startIndex": 42, # The start (inclusive) of the span, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this span is on.
|
|
"dimension": "A String", # The dimension of the span.
|
|
},
|
|
"spreadsheet": True or False, # True when metadata is associated with an entire spreadsheet.
|
|
"sheetId": 42, # The ID of the sheet when metadata is associated with an entire sheet.
|
|
},
|
|
"visibility": "A String", # The metadata visibility. Developer metadata must always have a visibility
|
|
# specified.
|
|
"metadataKey": "A String", # The metadata key. There may be multiple metadata in a spreadsheet with the
|
|
# same key. Developer metadata must always have a key specified.
|
|
},
|
|
],
|
|
"hiddenByUser": True or False, # True if this dimension is explicitly hidden.
|
|
"hiddenByFilter": True or False, # True if this dimension is being filtered.
|
|
# This field is read-only.
|
|
},
|
|
],
|
|
"startColumn": 42, # The first column this GridData refers to, zero-based.
|
|
"columnMetadata": [ # Metadata about the requested columns in the grid, starting with the column
|
|
# in start_column.
|
|
{ # Properties about a dimension.
|
|
"pixelSize": 42, # The height (if a row) or width (if a column) of the dimension in pixels.
|
|
"developerMetadata": [ # The developer metadata associated with a single row or column.
|
|
{ # Developer metadata associated with a location or object in a spreadsheet.
|
|
# Developer metadata may be used to associate arbitrary data with various
|
|
# parts of a spreadsheet and will remain associated at those locations as they
|
|
# move around and the spreadsheet is edited. For example, if developer
|
|
# metadata is associated with row 5 and another row is then subsequently
|
|
# inserted above row 5, that original metadata will still be associated with
|
|
# the row it was first associated with (what is now row 6). If the associated
|
|
# object is deleted its metadata is deleted too.
|
|
"metadataId": 42, # The spreadsheet-scoped unique ID that identifies the metadata. IDs may be
|
|
# specified when metadata is created, otherwise one will be randomly
|
|
# generated and assigned. Must be positive.
|
|
"metadataValue": "A String", # Data associated with the metadata's key.
|
|
"location": { # A location where metadata may be associated in a spreadsheet. # The location where the metadata is associated.
|
|
"locationType": "A String", # The type of location this object represents. This field is read-only.
|
|
"dimensionRange": { # A range along a single dimension on a sheet. # Represents the row or column when metadata is associated with
|
|
# a dimension. The specified DimensionRange must represent a single row
|
|
# or column; it cannot be unbounded or span multiple rows or columns.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open: the start index is inclusive
|
|
# and the end index is exclusive.
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
"endIndex": 42, # The end (exclusive) of the span, or not set if unbounded.
|
|
"startIndex": 42, # The start (inclusive) of the span, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this span is on.
|
|
"dimension": "A String", # The dimension of the span.
|
|
},
|
|
"spreadsheet": True or False, # True when metadata is associated with an entire spreadsheet.
|
|
"sheetId": 42, # The ID of the sheet when metadata is associated with an entire sheet.
|
|
},
|
|
"visibility": "A String", # The metadata visibility. Developer metadata must always have a visibility
|
|
# specified.
|
|
"metadataKey": "A String", # The metadata key. There may be multiple metadata in a spreadsheet with the
|
|
# same key. Developer metadata must always have a key specified.
|
|
},
|
|
],
|
|
"hiddenByUser": True or False, # True if this dimension is explicitly hidden.
|
|
"hiddenByFilter": True or False, # True if this dimension is being filtered.
|
|
# This field is read-only.
|
|
},
|
|
],
|
|
"startRow": 42, # The first row this GridData refers to, zero-based.
|
|
"rowData": [ # The data in the grid, one entry per row,
|
|
# starting with the row in startRow.
|
|
# The values in RowData will correspond to columns starting
|
|
# at start_column.
|
|
{ # Data about each cell in a row.
|
|
"values": [ # The values in the row, one per column.
|
|
{ # Data about a specific cell.
|
|
"pivotTable": { # A pivot table. # A pivot table anchored at this cell. The size of pivot table itself
|
|
# is computed dynamically based on its data, grouping, filters, values,
|
|
# etc. Only the top-left cell of the pivot table contains the pivot table
|
|
# definition. The other cells will contain the calculated values of the
|
|
# results of the pivot in their effective_value fields.
|
|
"valueLayout": "A String", # Whether values should be listed horizontally (as columns)
|
|
# or vertically (as rows).
|
|
"rows": [ # Each row grouping in the pivot table.
|
|
{ # A single grouping (either row or column) in a pivot table.
|
|
"showTotals": True or False, # True if the pivot table should include the totals for this grouping.
|
|
"repeatHeadings": True or False, # True if the headings in this pivot group should be repeated.
|
|
# This is only valid for row groupings and is ignored by columns.
|
|
#
|
|
# By default, we minimize repitition of headings by not showing higher
|
|
# level headings where they are the same. For example, even though the
|
|
# third row below corresponds to "Q1 Mar", "Q1" is not shown because
|
|
# it is redundant with previous rows. Setting repeat_headings to true
|
|
# would cause "Q1" to be repeated for "Feb" and "Mar".
|
|
#
|
|
# +--------------+
|
|
# | Q1 | Jan |
|
|
# | | Feb |
|
|
# | | Mar |
|
|
# +--------+-----+
|
|
# | Q1 Total |
|
|
# +--------------+
|
|
"label": "A String", # The labels to use for the row/column groups which can be customized. For
|
|
# example, in the following pivot table, the row label is `Region` (which
|
|
# could be renamed to `State`) and the column label is `Product` (which
|
|
# could be renamed `Item`). Pivot tables created before December 2017 do
|
|
# not have header labels. If you'd like to add header labels to an existing
|
|
# pivot table, please delete the existing pivot table and then create a new
|
|
# pivot table with same parameters.
|
|
#
|
|
# +--------------+---------+-------+
|
|
# | SUM of Units | Product | |
|
|
# | Region | Pen | Paper |
|
|
# +--------------+---------+-------+
|
|
# | New York | 345 | 98 |
|
|
# | Oregon | 234 | 123 |
|
|
# | Tennessee | 531 | 415 |
|
|
# +--------------+---------+-------+
|
|
# | Grand Total | 1110 | 636 |
|
|
# +--------------+---------+-------+
|
|
"valueMetadata": [ # Metadata about values in the grouping.
|
|
{ # Metadata about a value in a pivot grouping.
|
|
"collapsed": True or False, # True if the data corresponding to the value is collapsed.
|
|
"value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to.
|
|
# (Note that formulaValue is not valid,
|
|
# because the values will be calculated.)
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
},
|
|
],
|
|
"valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by.
|
|
# If not specified, sorting is alphabetical by this group's values.
|
|
"buckets": [ # Determines the bucket from which values are chosen to sort.
|
|
#
|
|
# For example, in a pivot table with one row group & two column groups,
|
|
# the row group can list up to two values. The first value corresponds
|
|
# to a value within the first column group, and the second value
|
|
# corresponds to a value in the second column group. If no values
|
|
# are listed, this would indicate that the row should be sorted according
|
|
# to the "Grand Total" over the column groups. If a single value is listed,
|
|
# this would correspond to using the "Total" of that bucket.
|
|
{ # The kinds of value that a cell in a spreadsheet can have.
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
],
|
|
"valuesIndex": 42, # The offset in the PivotTable.values list which the values in this
|
|
# grouping should be sorted by.
|
|
},
|
|
"sortOrder": "A String", # The order the values in this group should be sorted.
|
|
"groupRule": { # An optional setting on a PivotGroup that defines buckets for the values # The group rule to apply to this row/column group.
|
|
# in the source data column rather than breaking out each individual value.
|
|
# Only one PivotGroup with a group rule may be added for each column in
|
|
# the source data, though on any given column you may add both a
|
|
# PivotGroup that has a rule and a PivotGroup that does not.
|
|
"histogramRule": { # Allows you to organize the numeric values in a source data column into # A HistogramRule.
|
|
# buckets of a constant size. All values from HistogramRule.start to
|
|
# HistogramRule.end are placed into groups of size
|
|
# HistogramRule.interval. In addition, all values below
|
|
# HistogramRule.start are placed in one group, and all values above
|
|
# HistogramRule.end are placed in another. Only
|
|
# HistogramRule.interval is required, though if HistogramRule.start
|
|
# and HistogramRule.end are both provided, HistogramRule.start must
|
|
# be less than HistogramRule.end. For example, a pivot table showing
|
|
# average purchase amount by age that has 50+ rows:
|
|
#
|
|
# +-----+-------------------+
|
|
# | Age | AVERAGE of Amount |
|
|
# +-----+-------------------+
|
|
# | 16 | $27.13 |
|
|
# | 17 | $5.24 |
|
|
# | 18 | $20.15 |
|
|
# ...
|
|
# +-----+-------------------+
|
|
# could be turned into a pivot table that looks like the one below by
|
|
# applying a histogram group rule with a HistogramRule.start of 25,
|
|
# an HistogramRule.interval of 20, and an HistogramRule.end
|
|
# of 65.
|
|
#
|
|
# +-------------+-------------------+
|
|
# | Grouped Age | AVERAGE of Amount |
|
|
# +-------------+-------------------+
|
|
# | < 25 | $19.34 |
|
|
# | 25-45 | $31.43 |
|
|
# | 45-65 | $35.87 |
|
|
# | > 65 | $27.55 |
|
|
# +-------------+-------------------+
|
|
# | Grand Total | $29.12 |
|
|
# +-------------+-------------------+
|
|
"start": 3.14, # The minimum value at which items are placed into buckets
|
|
# of constant size. Values below start are lumped into a single bucket.
|
|
# This field is optional.
|
|
"interval": 3.14, # The size of the buckets that are created. Must be positive.
|
|
"end": 3.14, # The maximum value at which items are placed into buckets
|
|
# of constant size. Values above end are lumped into a single bucket.
|
|
# This field is optional.
|
|
},
|
|
"manualRule": { # Allows you to manually organize the values in a source data column into # A ManualRule.
|
|
# buckets with names of your choosing. For example, a pivot table that
|
|
# aggregates population by state:
|
|
#
|
|
# +-------+-------------------+
|
|
# | State | SUM of Population |
|
|
# +-------+-------------------+
|
|
# | AK | 0.7 |
|
|
# | AL | 4.8 |
|
|
# | AR | 2.9 |
|
|
# ...
|
|
# +-------+-------------------+
|
|
# could be turned into a pivot table that aggregates population by time zone
|
|
# by providing a list of groups (for example, groupName = 'Central',
|
|
# items = ['AL', 'AR', 'IA', ...]) to a manual group rule.
|
|
# Note that a similar effect could be achieved by adding a time zone column
|
|
# to the source data and adjusting the pivot table.
|
|
#
|
|
# +-----------+-------------------+
|
|
# | Time Zone | SUM of Population |
|
|
# +-----------+-------------------+
|
|
# | Central | 106.3 |
|
|
# | Eastern | 151.9 |
|
|
# | Mountain | 17.4 |
|
|
# ...
|
|
# +-----------+-------------------+
|
|
"groups": [ # The list of group names and the corresponding items from the source data
|
|
# that map to each group name.
|
|
{ # A group name and a list of items from the source data that should be placed
|
|
# in the group with this name.
|
|
"items": [ # The items in the source data that should be placed into this group. Each
|
|
# item may be a string, number, or boolean. Items may appear in at most one
|
|
# group within a given ManualRule. Items that do not appear in any
|
|
# group will appear on their own.
|
|
{ # The kinds of value that a cell in a spreadsheet can have.
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
],
|
|
"groupName": { # The kinds of value that a cell in a spreadsheet can have. # The group name, which must be a string. Each group in a given
|
|
# ManualRule must have a unique group name.
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
},
|
|
],
|
|
},
|
|
"dateTimeRule": { # Allows you to organize the date-time values in a source data column into # A DateTimeRule.
|
|
# buckets based on selected parts of their date or time values. For example,
|
|
# consider a pivot table showing sales transactions by date:
|
|
#
|
|
# +----------+--------------+
|
|
# | Date | SUM of Sales |
|
|
# +----------+--------------+
|
|
# | 1/1/2017 | $621.14 |
|
|
# | 2/3/2017 | $708.84 |
|
|
# | 5/8/2017 | $326.84 |
|
|
# ...
|
|
# +----------+--------------+
|
|
# Applying a date-time group rule with a DateTimeRuleType of YEAR_MONTH
|
|
# results in the following pivot table.
|
|
#
|
|
# +--------------+--------------+
|
|
# | Grouped Date | SUM of Sales |
|
|
# +--------------+--------------+
|
|
# | 2017-Jan | $53,731.78 |
|
|
# | 2017-Feb | $83,475.32 |
|
|
# | 2017-Mar | $94,385.05 |
|
|
# ...
|
|
# +--------------+--------------+
|
|
"type": "A String", # The type of date-time grouping to apply.
|
|
},
|
|
},
|
|
"sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on.
|
|
#
|
|
# For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0`
|
|
# means this group refers to column `C`, whereas the offset `1` would refer
|
|
# to column `D`.
|
|
},
|
|
],
|
|
"source": { # A range on a sheet. # The range the pivot table is reading data from.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
"values": [ # A list of values to include in the pivot table.
|
|
{ # The definition of how a value in a pivot table should be calculated.
|
|
"formula": "A String", # A custom formula to calculate the value. The formula must start
|
|
# with an `=` character.
|
|
"name": "A String", # A name to use for the value.
|
|
"sourceColumnOffset": 42, # The column offset of the source range that this value reads from.
|
|
#
|
|
# For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0`
|
|
# means this value refers to column `C`, whereas the offset `1` would
|
|
# refer to column `D`.
|
|
"summarizeFunction": "A String", # A function to summarize the value.
|
|
# If formula is set, the only supported values are
|
|
# SUM and
|
|
# CUSTOM.
|
|
# If sourceColumnOffset is set, then `CUSTOM`
|
|
# is not supported.
|
|
"calculatedDisplayType": "A String", # If specified, indicates that pivot values should be displayed as
|
|
# the result of a calculation with another pivot value. For example, if
|
|
# calculated_display_type is specified as PERCENT_OF_GRAND_TOTAL, all the
|
|
# pivot values are displayed as the percentage of the grand total. In
|
|
# the Sheets UI, this is referred to as "Show As" in the value section of a
|
|
# pivot table.
|
|
},
|
|
],
|
|
"criteria": { # An optional mapping of filters per source column offset.
|
|
#
|
|
# The filters are applied before aggregating data into the pivot table.
|
|
# The map's key is the column offset of the source range that you want to
|
|
# filter, and the value is the criteria for that column.
|
|
#
|
|
# For example, if the source was `C10:E15`, a key of `0` will have the filter
|
|
# for column `C`, whereas the key `1` is for column `D`.
|
|
"a_key": { # Criteria for showing/hiding rows in a pivot table.
|
|
"visibleValues": [ # Values that should be included. Values not listed here are excluded.
|
|
"A String",
|
|
],
|
|
},
|
|
},
|
|
"columns": [ # Each column grouping in the pivot table.
|
|
{ # A single grouping (either row or column) in a pivot table.
|
|
"showTotals": True or False, # True if the pivot table should include the totals for this grouping.
|
|
"repeatHeadings": True or False, # True if the headings in this pivot group should be repeated.
|
|
# This is only valid for row groupings and is ignored by columns.
|
|
#
|
|
# By default, we minimize repitition of headings by not showing higher
|
|
# level headings where they are the same. For example, even though the
|
|
# third row below corresponds to "Q1 Mar", "Q1" is not shown because
|
|
# it is redundant with previous rows. Setting repeat_headings to true
|
|
# would cause "Q1" to be repeated for "Feb" and "Mar".
|
|
#
|
|
# +--------------+
|
|
# | Q1 | Jan |
|
|
# | | Feb |
|
|
# | | Mar |
|
|
# +--------+-----+
|
|
# | Q1 Total |
|
|
# +--------------+
|
|
"label": "A String", # The labels to use for the row/column groups which can be customized. For
|
|
# example, in the following pivot table, the row label is `Region` (which
|
|
# could be renamed to `State`) and the column label is `Product` (which
|
|
# could be renamed `Item`). Pivot tables created before December 2017 do
|
|
# not have header labels. If you'd like to add header labels to an existing
|
|
# pivot table, please delete the existing pivot table and then create a new
|
|
# pivot table with same parameters.
|
|
#
|
|
# +--------------+---------+-------+
|
|
# | SUM of Units | Product | |
|
|
# | Region | Pen | Paper |
|
|
# +--------------+---------+-------+
|
|
# | New York | 345 | 98 |
|
|
# | Oregon | 234 | 123 |
|
|
# | Tennessee | 531 | 415 |
|
|
# +--------------+---------+-------+
|
|
# | Grand Total | 1110 | 636 |
|
|
# +--------------+---------+-------+
|
|
"valueMetadata": [ # Metadata about values in the grouping.
|
|
{ # Metadata about a value in a pivot grouping.
|
|
"collapsed": True or False, # True if the data corresponding to the value is collapsed.
|
|
"value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to.
|
|
# (Note that formulaValue is not valid,
|
|
# because the values will be calculated.)
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
},
|
|
],
|
|
"valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by.
|
|
# If not specified, sorting is alphabetical by this group's values.
|
|
"buckets": [ # Determines the bucket from which values are chosen to sort.
|
|
#
|
|
# For example, in a pivot table with one row group & two column groups,
|
|
# the row group can list up to two values. The first value corresponds
|
|
# to a value within the first column group, and the second value
|
|
# corresponds to a value in the second column group. If no values
|
|
# are listed, this would indicate that the row should be sorted according
|
|
# to the "Grand Total" over the column groups. If a single value is listed,
|
|
# this would correspond to using the "Total" of that bucket.
|
|
{ # The kinds of value that a cell in a spreadsheet can have.
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
],
|
|
"valuesIndex": 42, # The offset in the PivotTable.values list which the values in this
|
|
# grouping should be sorted by.
|
|
},
|
|
"sortOrder": "A String", # The order the values in this group should be sorted.
|
|
"groupRule": { # An optional setting on a PivotGroup that defines buckets for the values # The group rule to apply to this row/column group.
|
|
# in the source data column rather than breaking out each individual value.
|
|
# Only one PivotGroup with a group rule may be added for each column in
|
|
# the source data, though on any given column you may add both a
|
|
# PivotGroup that has a rule and a PivotGroup that does not.
|
|
"histogramRule": { # Allows you to organize the numeric values in a source data column into # A HistogramRule.
|
|
# buckets of a constant size. All values from HistogramRule.start to
|
|
# HistogramRule.end are placed into groups of size
|
|
# HistogramRule.interval. In addition, all values below
|
|
# HistogramRule.start are placed in one group, and all values above
|
|
# HistogramRule.end are placed in another. Only
|
|
# HistogramRule.interval is required, though if HistogramRule.start
|
|
# and HistogramRule.end are both provided, HistogramRule.start must
|
|
# be less than HistogramRule.end. For example, a pivot table showing
|
|
# average purchase amount by age that has 50+ rows:
|
|
#
|
|
# +-----+-------------------+
|
|
# | Age | AVERAGE of Amount |
|
|
# +-----+-------------------+
|
|
# | 16 | $27.13 |
|
|
# | 17 | $5.24 |
|
|
# | 18 | $20.15 |
|
|
# ...
|
|
# +-----+-------------------+
|
|
# could be turned into a pivot table that looks like the one below by
|
|
# applying a histogram group rule with a HistogramRule.start of 25,
|
|
# an HistogramRule.interval of 20, and an HistogramRule.end
|
|
# of 65.
|
|
#
|
|
# +-------------+-------------------+
|
|
# | Grouped Age | AVERAGE of Amount |
|
|
# +-------------+-------------------+
|
|
# | < 25 | $19.34 |
|
|
# | 25-45 | $31.43 |
|
|
# | 45-65 | $35.87 |
|
|
# | > 65 | $27.55 |
|
|
# +-------------+-------------------+
|
|
# | Grand Total | $29.12 |
|
|
# +-------------+-------------------+
|
|
"start": 3.14, # The minimum value at which items are placed into buckets
|
|
# of constant size. Values below start are lumped into a single bucket.
|
|
# This field is optional.
|
|
"interval": 3.14, # The size of the buckets that are created. Must be positive.
|
|
"end": 3.14, # The maximum value at which items are placed into buckets
|
|
# of constant size. Values above end are lumped into a single bucket.
|
|
# This field is optional.
|
|
},
|
|
"manualRule": { # Allows you to manually organize the values in a source data column into # A ManualRule.
|
|
# buckets with names of your choosing. For example, a pivot table that
|
|
# aggregates population by state:
|
|
#
|
|
# +-------+-------------------+
|
|
# | State | SUM of Population |
|
|
# +-------+-------------------+
|
|
# | AK | 0.7 |
|
|
# | AL | 4.8 |
|
|
# | AR | 2.9 |
|
|
# ...
|
|
# +-------+-------------------+
|
|
# could be turned into a pivot table that aggregates population by time zone
|
|
# by providing a list of groups (for example, groupName = 'Central',
|
|
# items = ['AL', 'AR', 'IA', ...]) to a manual group rule.
|
|
# Note that a similar effect could be achieved by adding a time zone column
|
|
# to the source data and adjusting the pivot table.
|
|
#
|
|
# +-----------+-------------------+
|
|
# | Time Zone | SUM of Population |
|
|
# +-----------+-------------------+
|
|
# | Central | 106.3 |
|
|
# | Eastern | 151.9 |
|
|
# | Mountain | 17.4 |
|
|
# ...
|
|
# +-----------+-------------------+
|
|
"groups": [ # The list of group names and the corresponding items from the source data
|
|
# that map to each group name.
|
|
{ # A group name and a list of items from the source data that should be placed
|
|
# in the group with this name.
|
|
"items": [ # The items in the source data that should be placed into this group. Each
|
|
# item may be a string, number, or boolean. Items may appear in at most one
|
|
# group within a given ManualRule. Items that do not appear in any
|
|
# group will appear on their own.
|
|
{ # The kinds of value that a cell in a spreadsheet can have.
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
],
|
|
"groupName": { # The kinds of value that a cell in a spreadsheet can have. # The group name, which must be a string. Each group in a given
|
|
# ManualRule must have a unique group name.
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
},
|
|
],
|
|
},
|
|
"dateTimeRule": { # Allows you to organize the date-time values in a source data column into # A DateTimeRule.
|
|
# buckets based on selected parts of their date or time values. For example,
|
|
# consider a pivot table showing sales transactions by date:
|
|
#
|
|
# +----------+--------------+
|
|
# | Date | SUM of Sales |
|
|
# +----------+--------------+
|
|
# | 1/1/2017 | $621.14 |
|
|
# | 2/3/2017 | $708.84 |
|
|
# | 5/8/2017 | $326.84 |
|
|
# ...
|
|
# +----------+--------------+
|
|
# Applying a date-time group rule with a DateTimeRuleType of YEAR_MONTH
|
|
# results in the following pivot table.
|
|
#
|
|
# +--------------+--------------+
|
|
# | Grouped Date | SUM of Sales |
|
|
# +--------------+--------------+
|
|
# | 2017-Jan | $53,731.78 |
|
|
# | 2017-Feb | $83,475.32 |
|
|
# | 2017-Mar | $94,385.05 |
|
|
# ...
|
|
# +--------------+--------------+
|
|
"type": "A String", # The type of date-time grouping to apply.
|
|
},
|
|
},
|
|
"sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on.
|
|
#
|
|
# For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0`
|
|
# means this group refers to column `C`, whereas the offset `1` would refer
|
|
# to column `D`.
|
|
},
|
|
],
|
|
},
|
|
"hyperlink": "A String", # A hyperlink this cell points to, if any.
|
|
# This field is read-only. (To set it, use a `=HYPERLINK` formula
|
|
# in the userEnteredValue.formulaValue
|
|
# field.)
|
|
"effectiveValue": { # The kinds of value that a cell in a spreadsheet can have. # The effective value of the cell. For cells with formulas, this is
|
|
# the calculated value. For cells with literals, this is
|
|
# the same as the user_entered_value.
|
|
# This field is read-only.
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
"formattedValue": "A String", # The formatted value of the cell.
|
|
# This is the value as it's shown to the user.
|
|
# This field is read-only.
|
|
"userEnteredValue": { # The kinds of value that a cell in a spreadsheet can have. # The value the user entered in the cell. e.g, `1234`, `'Hello'`, or `=NOW()`
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# serial number format.
|
|
"numberValue": 3.14, # Represents a double value.
|
|
# Note: Dates, Times and DateTimes are represented as doubles in
|
|
# "serial number" format.
|
|
"boolValue": True or False, # Represents a boolean value.
|
|
"formulaValue": "A String", # Represents a formula.
|
|
"stringValue": "A String", # Represents a string value.
|
|
# Leading single quotes are not included. For example, if the user typed
|
|
# `'123` into the UI, this would be represented as a `stringValue` of
|
|
# `"123"`.
|
|
"errorValue": { # An error in a cell. # Represents an error.
|
|
# This field is read-only.
|
|
"message": "A String", # A message with more information about the error
|
|
# (in the spreadsheet's locale).
|
|
"type": "A String", # The type of error.
|
|
},
|
|
},
|
|
"note": "A String", # Any note on the cell.
|
|
"effectiveFormat": { # The format of a cell. # The effective format being used by the cell.
|
|
# This includes the results of applying any conditional formatting and,
|
|
# if the cell contains a formula, the computed number format.
|
|
# If the effective format is the default format, effective format will
|
|
# not be written.
|
|
# This field is read-only.
|
|
"numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
|
|
"pattern": "A String", # Pattern string used for formatting. If not set, a default pattern based on
|
|
# the user's locale will be used if necessary for the given type.
|
|
# See the [Date and Number Formats guide](/sheets/api/guides/formats) for
|
|
# more information about the supported patterns.
|
|
"type": "A String", # The type of the number format.
|
|
# When writing, this field must be set.
|
|
},
|
|
"textDirection": "A String", # The direction of the text in the cell.
|
|
"padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
|
|
# When updating padding, every field must be specified.
|
|
"top": 42, # The top padding of the cell.
|
|
"left": 42, # The left padding of the cell.
|
|
"right": 42, # The right padding of the cell.
|
|
"bottom": 42, # The bottom padding of the cell.
|
|
},
|
|
"horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
|
|
"backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"verticalAlignment": "A String", # The vertical alignment of the value in the cell.
|
|
"borders": { # The borders of the cell. # The borders of the cell.
|
|
"top": { # A border along a cell. # The top border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"right": { # A border along a cell. # The right border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"bottom": { # A border along a cell. # The bottom border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"left": { # A border along a cell. # The left border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
},
|
|
"textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell
|
|
"angle": 42, # The angle between the standard orientation and the desired orientation.
|
|
# Measured in degrees. Valid values are between -90 and 90. Positive
|
|
# angles are angled upwards, negative are angled downwards.
|
|
#
|
|
# Note: For LTR text direction positive angles are in the
|
|
# counterclockwise direction, whereas for RTL they are in the clockwise
|
|
# direction
|
|
"vertical": True or False, # If true, text reads top to bottom, but the orientation of individual
|
|
# characters is unchanged.
|
|
# For example:
|
|
#
|
|
# | V |
|
|
# | e |
|
|
# | r |
|
|
# | t |
|
|
# | i |
|
|
# | c |
|
|
# | a |
|
|
# | l |
|
|
},
|
|
"hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
|
|
"textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
"wrapStrategy": "A String", # The wrap strategy for the value in the cell.
|
|
},
|
|
"userEnteredFormat": { # The format of a cell. # The format the user entered for the cell.
|
|
#
|
|
# When writing, the new format will be merged with the existing format.
|
|
"numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
|
|
"pattern": "A String", # Pattern string used for formatting. If not set, a default pattern based on
|
|
# the user's locale will be used if necessary for the given type.
|
|
# See the [Date and Number Formats guide](/sheets/api/guides/formats) for
|
|
# more information about the supported patterns.
|
|
"type": "A String", # The type of the number format.
|
|
# When writing, this field must be set.
|
|
},
|
|
"textDirection": "A String", # The direction of the text in the cell.
|
|
"padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
|
|
# When updating padding, every field must be specified.
|
|
"top": 42, # The top padding of the cell.
|
|
"left": 42, # The left padding of the cell.
|
|
"right": 42, # The right padding of the cell.
|
|
"bottom": 42, # The bottom padding of the cell.
|
|
},
|
|
"horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
|
|
"backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"verticalAlignment": "A String", # The vertical alignment of the value in the cell.
|
|
"borders": { # The borders of the cell. # The borders of the cell.
|
|
"top": { # A border along a cell. # The top border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"right": { # A border along a cell. # The right border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"bottom": { # A border along a cell. # The bottom border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"left": { # A border along a cell. # The left border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
},
|
|
"textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell
|
|
"angle": 42, # The angle between the standard orientation and the desired orientation.
|
|
# Measured in degrees. Valid values are between -90 and 90. Positive
|
|
# angles are angled upwards, negative are angled downwards.
|
|
#
|
|
# Note: For LTR text direction positive angles are in the
|
|
# counterclockwise direction, whereas for RTL they are in the clockwise
|
|
# direction
|
|
"vertical": True or False, # If true, text reads top to bottom, but the orientation of individual
|
|
# characters is unchanged.
|
|
# For example:
|
|
#
|
|
# | V |
|
|
# | e |
|
|
# | r |
|
|
# | t |
|
|
# | i |
|
|
# | c |
|
|
# | a |
|
|
# | l |
|
|
},
|
|
"hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
|
|
"textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
"wrapStrategy": "A String", # The wrap strategy for the value in the cell.
|
|
},
|
|
"dataValidation": { # A data validation rule. # A data validation rule on the cell, if any.
|
|
#
|
|
# When writing, the new data validation rule will overwrite any prior rule.
|
|
"showCustomUi": True or False, # True if the UI should be customized based on the kind of condition.
|
|
# If true, "List" conditions will show a dropdown.
|
|
"strict": True or False, # True if invalid data should be rejected.
|
|
"inputMessage": "A String", # A message to show the user when adding data to the cell.
|
|
"condition": { # A condition that can evaluate to true or false. # The condition that data in the cell must match.
|
|
# BooleanConditions are used by conditional formatting,
|
|
# data validation, and the criteria in filters.
|
|
"values": [ # The values of the condition. The number of supported values depends
|
|
# on the condition type. Some support zero values,
|
|
# others one or two values,
|
|
# and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
|
|
{ # The value of the condition.
|
|
"relativeDate": "A String", # A relative date (based on the current date).
|
|
# Valid only if the type is
|
|
# DATE_BEFORE,
|
|
# DATE_AFTER,
|
|
# DATE_ON_OR_BEFORE or
|
|
# DATE_ON_OR_AFTER.
|
|
#
|
|
# Relative dates are not supported in data validation.
|
|
# They are supported only in conditional formatting and
|
|
# conditional filters.
|
|
"userEnteredValue": "A String", # A value the condition is based on.
|
|
# The value is parsed as if the user typed into a cell.
|
|
# Formulas are supported (and must begin with an `=` or a '+').
|
|
},
|
|
],
|
|
"type": "A String", # The type of condition.
|
|
},
|
|
},
|
|
"textFormatRuns": [ # Runs of rich text applied to subsections of the cell. Runs are only valid
|
|
# on user entered strings, not formulas, bools, or numbers.
|
|
# Runs start at specific indexes in the text and continue until the next
|
|
# run. Properties of a run will continue unless explicitly changed
|
|
# in a subsequent run (and properties of the first run will continue
|
|
# the properties of the cell unless explicitly changed).
|
|
#
|
|
# When writing, the new runs will overwrite any prior runs. When writing a
|
|
# new user_entered_value, previous runs are erased.
|
|
{ # A run of a text format. The format of this run continues until the start
|
|
# index of the next run.
|
|
# When updating, all fields must be set.
|
|
"startIndex": 42, # The character index where this run starts.
|
|
"format": { # The format of a run of text in a cell. # The format of this run. Absent values inherit the cell's format.
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
},
|
|
],
|
|
},
|
|
],
|
|
},
|
|
],
|
|
},
|
|
],
|
|
"rowGroups": [ # All row groups on this sheet, ordered by increasing range start index, then
|
|
# by group depth.
|
|
{ # A group over an interval of rows or columns on a sheet, which can contain or
|
|
# be contained within other groups. A group can be collapsed or expanded as a
|
|
# unit on the sheet.
|
|
"range": { # A range along a single dimension on a sheet. # The range over which this group exists.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open: the start index is inclusive
|
|
# and the end index is exclusive.
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
"endIndex": 42, # The end (exclusive) of the span, or not set if unbounded.
|
|
"startIndex": 42, # The start (inclusive) of the span, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this span is on.
|
|
"dimension": "A String", # The dimension of the span.
|
|
},
|
|
"collapsed": True or False, # This field is true if this group is collapsed. A collapsed group remains
|
|
# collapsed if an overlapping group at a shallower depth is expanded.
|
|
#
|
|
# A true value does not imply that all dimensions within the group are
|
|
# hidden, since a dimension's visibility can change independently from this
|
|
# group property. However, when this property is updated, all dimensions
|
|
# within it are set to hidden if this field is true, or set to visible if
|
|
# this field is false.
|
|
"depth": 42, # The depth of the group, representing how many groups have a range that
|
|
# wholly contains the range of this group.
|
|
},
|
|
],
|
|
},
|
|
],
|
|
"spreadsheetUrl": "A String", # The url of the spreadsheet.
|
|
# This field is read-only.
|
|
"spreadsheetId": "A String", # The ID of the spreadsheet.
|
|
# This field is read-only.
|
|
"namedRanges": [ # The named ranges defined in a spreadsheet.
|
|
{ # A named range.
|
|
"namedRangeId": "A String", # The ID of the named range.
|
|
"range": { # A range on a sheet. # The range this represents.
|
|
# All indexes are zero-based.
|
|
# Indexes are half open, e.g the start index is inclusive
|
|
# and the end index is exclusive -- [start_index, end_index).
|
|
# Missing indexes indicate the range is unbounded on that side.
|
|
#
|
|
# For example, if `"Sheet1"` is sheet ID 0, then:
|
|
#
|
|
# `Sheet1!A1:A1 == sheet_id: 0,
|
|
# start_row_index: 0, end_row_index: 1,
|
|
# start_column_index: 0, end_column_index: 1`
|
|
#
|
|
# `Sheet1!A3:B4 == sheet_id: 0,
|
|
# start_row_index: 2, end_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A:B == sheet_id: 0,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1!A5:B == sheet_id: 0,
|
|
# start_row_index: 4,
|
|
# start_column_index: 0, end_column_index: 2`
|
|
#
|
|
# `Sheet1 == sheet_id:0`
|
|
#
|
|
# The start index must always be less than or equal to the end index.
|
|
# If the start index equals the end index, then the range is empty.
|
|
# Empty ranges are typically not meaningful and are usually rendered in the
|
|
# UI as `#REF!`.
|
|
"endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
|
|
"endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
|
|
"sheetId": 42, # The sheet this range is on.
|
|
"startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
|
|
"startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
|
|
},
|
|
"name": "A String", # The name of the named range.
|
|
},
|
|
],
|
|
"properties": { # Properties of a spreadsheet. # Overall properties of a spreadsheet.
|
|
"title": "A String", # The title of the spreadsheet.
|
|
"locale": "A String", # The locale of the spreadsheet in one of the following formats:
|
|
#
|
|
# * an ISO 639-1 language code such as `en`
|
|
#
|
|
# * an ISO 639-2 language code such as `fil`, if no 639-1 code exists
|
|
#
|
|
# * a combination of the ISO language code and country code, such as `en_US`
|
|
#
|
|
# Note: when updating this field, not all locales/languages are supported.
|
|
"defaultFormat": { # The format of a cell. # The default format of all cells in the spreadsheet.
|
|
# CellData.effectiveFormat will not be set if
|
|
# the cell's format is equal to this default format. This field is read-only.
|
|
"numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
|
|
"pattern": "A String", # Pattern string used for formatting. If not set, a default pattern based on
|
|
# the user's locale will be used if necessary for the given type.
|
|
# See the [Date and Number Formats guide](/sheets/api/guides/formats) for
|
|
# more information about the supported patterns.
|
|
"type": "A String", # The type of the number format.
|
|
# When writing, this field must be set.
|
|
},
|
|
"textDirection": "A String", # The direction of the text in the cell.
|
|
"padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
|
|
# When updating padding, every field must be specified.
|
|
"top": 42, # The top padding of the cell.
|
|
"left": 42, # The left padding of the cell.
|
|
"right": 42, # The right padding of the cell.
|
|
"bottom": 42, # The bottom padding of the cell.
|
|
},
|
|
"horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
|
|
"backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"verticalAlignment": "A String", # The vertical alignment of the value in the cell.
|
|
"borders": { # The borders of the cell. # The borders of the cell.
|
|
"top": { # A border along a cell. # The top border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"right": { # A border along a cell. # The right border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"bottom": { # A border along a cell. # The bottom border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
"left": { # A border along a cell. # The left border of the cell.
|
|
"color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"width": 42, # The width of the border, in pixels.
|
|
# Deprecated; the width is determined by the "style" field.
|
|
"style": "A String", # The style of the border.
|
|
},
|
|
},
|
|
"textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell
|
|
"angle": 42, # The angle between the standard orientation and the desired orientation.
|
|
# Measured in degrees. Valid values are between -90 and 90. Positive
|
|
# angles are angled upwards, negative are angled downwards.
|
|
#
|
|
# Note: For LTR text direction positive angles are in the
|
|
# counterclockwise direction, whereas for RTL they are in the clockwise
|
|
# direction
|
|
"vertical": True or False, # If true, text reads top to bottom, but the orientation of individual
|
|
# characters is unchanged.
|
|
# For example:
|
|
#
|
|
# | V |
|
|
# | e |
|
|
# | r |
|
|
# | t |
|
|
# | i |
|
|
# | c |
|
|
# | a |
|
|
# | l |
|
|
},
|
|
"hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
|
|
"textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
|
|
# Absent values indicate that the field isn't specified.
|
|
"foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
|
|
# for simplicity of conversion to/from color representations in various
|
|
# languages over compactness; for example, the fields of this representation
|
|
# can be trivially provided to the constructor of "java.awt.Color" in Java; it
|
|
# can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
|
|
# method in iOS; and, with just a little work, it can be easily formatted into
|
|
# a CSS "rgba()" string in JavaScript, as well.
|
|
#
|
|
# Note: this proto does not carry information about the absolute color space
|
|
# that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
|
|
# DCI-P3, BT.2020, etc.). By default, applications SHOULD assume the sRGB color
|
|
# space.
|
|
#
|
|
# Example (Java):
|
|
#
|
|
# import com.google.type.Color;
|
|
#
|
|
# // ...
|
|
# public static java.awt.Color fromProto(Color protocolor) {
|
|
# float alpha = protocolor.hasAlpha()
|
|
# ? protocolor.getAlpha().getValue()
|
|
# : 1.0;
|
|
#
|
|
# return new java.awt.Color(
|
|
# protocolor.getRed(),
|
|
# protocolor.getGreen(),
|
|
# protocolor.getBlue(),
|
|
# alpha);
|
|
# }
|
|
#
|
|
# public static Color toProto(java.awt.Color color) {
|
|
# float red = (float) color.getRed();
|
|
# float green = (float) color.getGreen();
|
|
# float blue = (float) color.getBlue();
|
|
# float denominator = 255.0;
|
|
# Color.Builder resultBuilder =
|
|
# Color
|
|
# .newBuilder()
|
|
# .setRed(red / denominator)
|
|
# .setGreen(green / denominator)
|
|
# .setBlue(blue / denominator);
|
|
# int alpha = color.getAlpha();
|
|
# if (alpha != 255) {
|
|
# result.setAlpha(
|
|
# FloatValue
|
|
# .newBuilder()
|
|
# .setValue(((float) alpha) / denominator)
|
|
# .build());
|
|
# }
|
|
# return resultBuilder.build();
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (iOS / Obj-C):
|
|
#
|
|
# // ...
|
|
# static UIColor* fromProto(Color* protocolor) {
|
|
# float red = [protocolor red];
|
|
# float green = [protocolor green];
|
|
# float blue = [protocolor blue];
|
|
# FloatValue* alpha_wrapper = [protocolor alpha];
|
|
# float alpha = 1.0;
|
|
# if (alpha_wrapper != nil) {
|
|
# alpha = [alpha_wrapper value];
|
|
# }
|
|
# return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
|
|
# }
|
|
#
|
|
# static Color* toProto(UIColor* color) {
|
|
# CGFloat red, green, blue, alpha;
|
|
# if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
|
|
# return nil;
|
|
# }
|
|
# Color* result = [[Color alloc] init];
|
|
# [result setRed:red];
|
|
# [result setGreen:green];
|
|
# [result setBlue:blue];
|
|
# if (alpha <= 0.9999) {
|
|
# [result setAlpha:floatWrapperWithValue(alpha)];
|
|
# }
|
|
# [result autorelease];
|
|
# return result;
|
|
# }
|
|
# // ...
|
|
#
|
|
# Example (JavaScript):
|
|
#
|
|
# // ...
|
|
#
|
|
# var protoToCssColor = function(rgb_color) {
|
|
# var redFrac = rgb_color.red || 0.0;
|
|
# var greenFrac = rgb_color.green || 0.0;
|
|
# var blueFrac = rgb_color.blue || 0.0;
|
|
# var red = Math.floor(redFrac * 255);
|
|
# var green = Math.floor(greenFrac * 255);
|
|
# var blue = Math.floor(blueFrac * 255);
|
|
#
|
|
# if (!('alpha' in rgb_color)) {
|
|
# return rgbToCssColor_(red, green, blue);
|
|
# }
|
|
#
|
|
# var alphaFrac = rgb_color.alpha.value || 0.0;
|
|
# var rgbParams = [red, green, blue].join(',');
|
|
# return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
|
|
# };
|
|
#
|
|
# var rgbToCssColor_ = function(red, green, blue) {
|
|
# var rgbNumber = new Number((red << 16) | (green << 8) | blue);
|
|
# var hexString = rgbNumber.toString(16);
|
|
# var missingZeros = 6 - hexString.length;
|
|
# var resultBuilder = ['#'];
|
|
# for (var i = 0; i < missingZeros; i++) {
|
|
# resultBuilder.push('0');
|
|
# }
|
|
# resultBuilder.push(hexString);
|
|
# return resultBuilder.join('');
|
|
# };
|
|
#
|
|
# // ...
|
|
"blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
|
|
"alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
|
|
# the final pixel color is defined by the equation:
|
|
#
|
|
# pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
|
|
#
|
|
# This means that a value of 1.0 corresponds to a solid color, whereas
|
|
# a value of 0.0 corresponds to a completely transparent color. This
|
|
# uses a wrapper message rather than a simple float scalar so that it is
|
|
# possible to distinguish between a default value and the value being unset.
|
|
# If omitted, this color object is to be rendered as a solid color
|
|
# (as if the alpha value had been explicitly given with a value of 1.0).
|
|
"green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
|
|
"red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
|
|
},
|
|
"bold": True or False, # True if the text is bold.
|
|
"strikethrough": True or False, # True if the text has a strikethrough.
|
|
"fontFamily": "A String", # The font family.
|
|
"fontSize": 42, # The size of the font.
|
|
"italic": True or False, # True if the text is italicized.
|
|
"underline": True or False, # True if the text is underlined.
|
|
},
|
|
"wrapStrategy": "A String", # The wrap strategy for the value in the cell.
|
|
},
|
|
"autoRecalc": "A String", # The amount of time to wait before volatile functions are recalculated.
|
|
"iterativeCalculationSettings": { # Settings to control how circular dependencies are resolved with iterative # Determines whether and how circular references are resolved with iterative
|
|
# calculation. Absence of this field means that circular references will
|
|
# result in calculation errors.
|
|
# calculation.
|
|
"convergenceThreshold": 3.14, # When iterative calculation is enabled and successive results differ by
|
|
# less than this threshold value, the calculation rounds stop.
|
|
"maxIterations": 42, # When iterative calculation is enabled, the maximum number of calculation
|
|
# rounds to perform.
|
|
},
|
|
"timeZone": "A String", # The time zone of the spreadsheet, in CLDR format such as
|
|
# `America/New_York`. If the time zone isn't recognized, this may
|
|
# be a custom time zone such as `GMT-07:00`.
|
|
},
|
|
}</pre>
|
|
</div>
|
|
|
|
</body></html> |