本文整理汇总了C++中LayoutTableCell::style方法的典型用法代码示例。如果您正苦于以下问题:C++ LayoutTableCell::style方法的具体用法?C++ LayoutTableCell::style怎么用?C++ LayoutTableCell::style使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类LayoutTableCell
的用法示例。
在下文中一共展示了LayoutTableCell::style方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: isDataTable
bool AXTable::isDataTable() const
{
if (!m_layoutObject || !node())
return false;
// Do not consider it a data table if it has an ARIA role.
if (hasARIARole())
return false;
// When a section of the document is contentEditable, all tables should be
// treated as data tables, otherwise users may not be able to work with rich
// text editors that allow creating and editing tables.
if (node() && node()->hasEditableStyle())
return true;
// This employs a heuristic to determine if this table should appear.
// Only "data" tables should be exposed as tables.
// Unfortunately, there is no good way to determine the difference
// between a "layout" table and a "data" table.
LayoutTable* table = toLayoutTable(m_layoutObject);
Node* tableNode = table->node();
if (!isHTMLTableElement(tableNode))
return false;
// Do not consider it a data table if any of its descendants have an ARIA role.
HTMLTableElement* tableElement = toHTMLTableElement(tableNode);
if (elementHasAriaRole(tableElement->tHead()))
return false;
if (elementHasAriaRole(tableElement->tFoot()))
return false;
RefPtrWillBeRawPtr<HTMLCollection> bodies = tableElement->tBodies();
for (unsigned bodyIndex = 0; bodyIndex < bodies->length(); ++bodyIndex) {
Element* bodyElement = bodies->item(bodyIndex);
if (elementHasAriaRole(bodyElement))
return false;
}
RefPtrWillBeRawPtr<HTMLTableRowsCollection> rows = tableElement->rows();
unsigned rowCount = rows->length();
for (unsigned rowIndex = 0; rowIndex < rowCount; ++rowIndex) {
HTMLTableRowElement* rowElement = rows->item(rowIndex);
if (elementHasAriaRole(rowElement))
return false;
RefPtrWillBeRawPtr<HTMLCollection> cells = rowElement->cells();
for (unsigned cellIndex = 0; cellIndex < cells->length(); ++cellIndex) {
if (elementHasAriaRole(cells->item(cellIndex)))
return false;
}
}
// If there is a caption element, summary, THEAD, or TFOOT section, it's most certainly a data table
if (!tableElement->summary().isEmpty() || tableElement->tHead() || tableElement->tFoot() || tableElement->caption())
return true;
// if someone used "rules" attribute than the table should appear
if (!tableElement->rules().isEmpty())
return true;
// if there's a colgroup or col element, it's probably a data table.
if (Traversal<HTMLTableColElement>::firstChild(*tableElement))
return true;
// go through the cell's and check for tell-tale signs of "data" table status
// cells have borders, or use attributes like headers, abbr, scope or axis
table->recalcSectionsIfNeeded();
LayoutTableSection* firstBody = table->firstBody();
if (!firstBody)
return false;
int numCols = firstBody->numEffectiveColumns();
int numRows = firstBody->numRows();
// If there's only one cell, it's not a good AXTable candidate.
if (numRows == 1 && numCols == 1)
return false;
// If there are at least 20 rows, we'll call it a data table.
if (numRows >= 20)
return true;
// Store the background color of the table to check against cell's background colors.
const ComputedStyle* tableStyle = table->style();
if (!tableStyle)
return false;
Color tableBGColor = tableStyle->visitedDependentColor(CSSPropertyBackgroundColor);
// check enough of the cells to find if the table matches our criteria
// Criteria:
// 1) must have at least one valid cell (and)
// 2) at least half of cells have borders (or)
// 3) at least half of cells have different bg colors than the table, and there is cell spacing
unsigned validCellCount = 0;
unsigned borderedCellCount = 0;
unsigned backgroundDifferenceCellCount = 0;
unsigned cellsWithTopBorder = 0;
unsigned cellsWithBottomBorder = 0;
unsigned cellsWithLeftBorder = 0;
unsigned cellsWithRightBorder = 0;
//.........这里部分代码省略.........