本文整理汇总了C++中TableCell类的典型用法代码示例。如果您正苦于以下问题:C++ TableCell类的具体用法?C++ TableCell怎么用?C++ TableCell使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了TableCell类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: paintCellFill
void CollapsedTablePainter::paintCellFill(const TableCell& cell, ScPainter* p) const
{
QString colorName = cell.fillColor();
if (colorName == CommonStrings::None)
return;
p->save();
QColor color;
table()->SetQColor(&color, colorName, 100.0); // TODO: Support shade.
p->setBrush(color);
p->setFillMode(ScPainter::Solid);
p->setStrokeMode(ScPainter::None);
int row = cell.row();
int col = cell.column();
int lastRow = row + cell.rowSpan() - 1;
int lastCol = col + cell.columnSpan() - 1;
qreal x = table()->columnPosition(col);
qreal y = table()->rowPosition(row);
qreal width = table()->columnPosition(lastCol) + table()->columnWidth(lastCol) - x;
qreal height = table()->rowPosition(lastRow) + table()->rowHeight(lastRow) - y;
p->drawRect(x, y, width, height);
p->restore();
}
示例2: updateBorders
void PropertiesPalette_Table::updateBorders()
{
if (!m_doc || !m_item || !m_item->isTable())
return;
PageItem_Table* table = m_item->asTable();
TableSideSelector::Sides selectedSides = sideSelector->selection();
m_doc->dontResize = true;
if (m_doc->appMode != modeEditTable)
{
if (selectedSides & TableSideSelector::Left)
table->setLeftBorder(m_currentBorder);
if (selectedSides & TableSideSelector::Right)
table->setRightBorder(m_currentBorder);
if (selectedSides & TableSideSelector::Top)
table->setTopBorder(m_currentBorder);
if (selectedSides & TableSideSelector::Bottom)
table->setBottomBorder(m_currentBorder);
}
else
{
TableCell cell = table->activeCell();
if (selectedSides & TableSideSelector::Left)
cell.setLeftBorder(m_currentBorder);
if (selectedSides & TableSideSelector::Right)
cell.setRightBorder(m_currentBorder);
if (selectedSides & TableSideSelector::Top)
cell.setTopBorder(m_currentBorder);
if (selectedSides & TableSideSelector::Bottom)
cell.setBottomBorder(m_currentBorder);
}
table->adjustTable();
table->update();
}
示例3: maxBottomBorderWidth
double PageItem_Table::maxBottomBorderWidth() const
{
double maxWidth = 0.0;
TableCell cell;
for (int col = 0; col < columns(); col += cell.columnSpan())
{
cell = cellAt(rows() - 1, col);
maxWidth = qMax(maxWidth, TableUtils::collapseBorders(bottomBorder(), cell.bottomBorder()).width());
}
return maxWidth;
}
示例4: maxLeftBorderWidth
double PageItem_Table::maxLeftBorderWidth() const
{
double maxWidth = 0.0;
TableCell cell;
for (int row = 0; row < rows(); row += cell.rowSpan())
{
cell = cellAt(row, 0);
maxWidth = qMax(maxWidth, TableUtils::collapseBorders(cell.leftBorder(), leftBorder()).width());
}
return maxWidth;
}
示例5: addElement
void Hashtable::addElement(char *string){
TableCell<char*>* neededList = &Table[hash(string)];
if(neededList->listIsEmpty())
occupiedCells++;
else
if(neededList->sizeOfCell == 1)
numberOfConflicts++;
neededList->sizeOfCell++;
neededList->addList(string);
}
示例6: findElement
bool Hashtable::findElement(char *string){
TableCell<char*>* neededList = &Table[hash(string)];
if (!neededList->listIsEmpty()){
int i = 0;
ElementList<char*>* scanningElement = neededList->headList();
while(scanningElement != NULL){
i = 0;
while((scanningElement->data[i] == string[i])&&(string[i] != '\0')) //compare current string with pattern
i++;
if (string[i] == '\0')
return true;
scanningElement = scanningElement->next;
}
}
return false;
}
示例7: ASSERT_VALID
void PageItem_Table::activateCell(const TableCell& cell)
{
ASSERT_VALID();
TableCell newActiveCell = validCell(cell.row(), cell.column()) ? cell : cellAt(0, 0);
// Deselect previous active cell and its text.
m_activeCell.textFrame()->setSelected(false);
m_activeCell.textFrame()->itemText.deselectAll();
// Set the new active cell and select it.
m_activeCell = newActiveCell;
m_activeCell.textFrame()->setSelected(true);
m_Doc->currentStyle = m_activeCell.textFrame()->currentStyle();
m_activeRow = m_activeCell.row();
m_activeColumn = m_activeCell.column();
emit selectionChanged();
ASSERT_VALID();
}
示例8: removeElement
bool Hashtable::removeElement(char *string){
TableCell<char*>* neededList = &Table[hash(string)];
if (!neededList->listIsEmpty()){
neededList->sizeOfCell--;
if(neededList->sizeOfCell == 1)
numberOfConflicts--;
int i = 0;
ElementList<char*>* previousElement = NULL;
ElementList<char*>* scanningElement = neededList->headList();
while(scanningElement != NULL){
i = 0;
while((scanningElement->data[i] == string[i])&&(string[i] != '\0'))
i++;
if (string[i] == '\0'){ //delete scanningElement from neededList
if (previousElement == NULL){
neededList->removeFromList(1);
if(neededList->listIsEmpty())
occupiedCells--;
}
else{
ElementList<char*>* tmp = scanningElement;
previousElement->next = scanningElement->next;
delete tmp;
}
return false;
}
previousElement = scanningElement;
scanningElement = scanningElement->next;
}
}
return false;
}
示例9: paintCellFill
void CollapsedTablePainterEx::paintCellFill(const TableCell& cell, ScPainterExBase* p) const
{
QString colorName = cell.fillColor();
if (colorName == CommonStrings::None)
return;
p->save();
ScribusDoc* doc = m_table->doc();
ScColorShade colorShade(doc->PageColors[colorName], (int) cell.fillShade());
p->setBrush(colorShade);
p->setFillMode(ScPainterExBase::Solid);
p->setStrokeMode(ScPainterExBase::None);
int row = cell.row();
int col = cell.column();
int lastRow = row + cell.rowSpan() - 1;
int lastCol = col + cell.columnSpan() - 1;
double x = m_table->columnPosition(col);
double y = m_table->rowPosition(row);
double width = m_table->columnPosition(lastCol) + m_table->columnWidth(lastCol) - x;
double height = m_table->rowPosition(lastRow) + m_table->rowHeight(lastRow) - y;
p->drawRect(x, y, width, height);
p->restore();
}
示例10: on_fillColor_activated
void PropertiesPalette_Table::on_fillColor_activated(const QString& colorName)
{
if (!m_item || !m_item->isTable())
return;
QString color = colorName;
if (colorName == CommonStrings::tr_NoneColor)
color = CommonStrings::None;
PageItem_Table* table = m_item->asTable();
if (m_doc->appMode != modeEditTable)
{
table->setFillColor(color);
table->setFillShade(fillShade->value());
}
else
{
TableCell cell = table->activeCell();
cell.setFillColor(color);
cell.setFillShade(fillShade->value());
}
table->update();
}
示例11: on_fillShade_valueChanged
void PropertiesPalette_Table::on_fillShade_valueChanged(int shade)
{
if (!m_item || !m_item->isTable())
return;
QString color = fillColor->currentColor();
if (color == CommonStrings::tr_NoneColor)
color = CommonStrings::None;
PageItem_Table* table = m_item->asTable();
if (m_doc->appMode != modeEditTable)
{
table->setFillColor(color);
table->setFillShade(shade);
}
else
{
TableCell cell = table->activeCell();
cell.setFillColor(color);
cell.setFillShade(shade);
}
table->update();
}
示例12: areaIt
void PageItem_Table::updateSpans(int index, int number, ChangeType changeType)
{
// Loop through areas of merged cells.
QMutableListIterator<CellArea> areaIt(m_cellAreas);
while (areaIt.hasNext())
{
CellArea oldArea = areaIt.next();
// Get a copy of the area adjusted to the change.
CellArea newArea;
switch (changeType)
{
case RowsInserted:
newArea = oldArea.adjustedForRowInsertion(index, number);
break;
case RowsRemoved:
newArea = oldArea.adjustedForRowRemoval(index, number);
break;
case ColumnsInserted:
newArea = oldArea.adjustedForColumnInsertion(index, number);
break;
case ColumnsRemoved:
newArea = oldArea.adjustedForColumnRemoval(index, number);
break;
default:
break;
}
// Check if the area was affected by the change.
if (newArea != oldArea)
{
if (newArea.height() < 1 || newArea.width() < 1)
{
// Adjusted area was annihilated, so remove it.
areaIt.remove();
}
else if (newArea.height() == 1 && newArea.width() == 1)
{
// Adjusted area is 1x1, so remove it.
areaIt.remove();
// And reset row/column span of spanning cell to 1.
TableCell oldSpanningCell = cellAt(oldArea.row(), oldArea.column());
oldSpanningCell.setRowSpan(1);
oldSpanningCell.setColumnSpan(1);
}
else
{
// Replace the area with the adjusted copy.
areaIt.setValue(newArea);
// And set row/column spanning of spanning cell.
TableCell newSpanningCell = cellAt(newArea.row(), newArea.column());
newSpanningCell.setRowSpan(newArea.height());
newSpanningCell.setColumnSpan(newArea.width());
}
}
}
}
示例13: setCurrentComboItem
void PropertiesPalette_Table::updateFillControls()
{
if (m_item && m_item->isTable())
{
PageItem_Table* table = m_item->asTable();
// Enable fill editing controls.
fillColor->setEnabled(true);
fillColorLabel->setEnabled(true);
fillShade->setEnabled(true);
fillShadeLabel->setEnabled(true);
// Fill in values.
if (m_doc->appMode != modeEditTable)
{
QString color = table->fillColor();
if (color == CommonStrings::None)
color = CommonStrings::tr_NoneColor;
setCurrentComboItem(fillColor, color);
fillShade->setValue(table->fillShade());
}
else
{
TableCell cell = table->activeCell();
QString color = cell.fillColor();
if (color == CommonStrings::None)
color = CommonStrings::tr_NoneColor;
setCurrentComboItem(fillColor, color);
fillShade->setValue(cell.fillShade());
}
}
else
{
// Disable fill editing controls.
fillColor->setEnabled(false);
fillColorLabel->setEnabled(false);
fillShade->setEnabled(false);
fillShadeLabel->setEnabled(false);
}
}
示例14: paintTableFill
void CollapsedTablePainterEx::paintTable(ScPainterExBase* p)
{
p->save();
p->translate(m_table->gridOffset());
// Paint table fill.
paintTableFill(p);
/*
* We paint the table in five passes:
*
* 1) Cell fills.
* 2) Vertical borders.
* 3) Horizontal borders
* 4) Decorative grid lines.
* 5) Cell content.
*/
// Pass 1: Paint cell fills.
for (int row = 0; row < m_table->rows(); ++row)
{
int colSpan = 0;
for (int col = 0; col < m_table->columns(); col += colSpan)
{
TableCell cell = m_table->cellAt(row, col);
if (row == cell.row())
paintCellFill(cell, p);
colSpan = cell.columnSpan();
}
}
// Pass 2: Paint vertical borders.
for (int row = 0; row < m_table->rows(); ++row)
{
int colSpan = 0;
for (int col = 0; col < m_table->columns(); col += colSpan)
{
TableCell cell = m_table->cellAt(row, col);
if (row == cell.row())
{
paintCellRightBorders(cell, p);
if (col == 0)
paintCellLeftBorders(cell, p);
}
colSpan = cell.columnSpan();
}
}
// Pass 3: Paint horizontal borders.
for (int row = 0; row < m_table->rows(); ++row)
{
int colSpan = 0;
for (int col = 0; col < m_table->columns(); col += colSpan)
{
TableCell cell = m_table->cellAt(row, col);
if (row == cell.row())
{
paintCellBottomBorders(cell, p);
if (row == 0)
paintCellTopBorders(cell, p);
}
colSpan = cell.columnSpan();
}
}
// Pass 5: Paint cell content.
for (int row = 0; row < m_table->rows(); ++row)
{
for (int col = 0; col < m_table->columns(); col ++)
{
TableCell cell = m_table->cellAt(row, col);
if (cell.row() == row && cell.column() == col)
{
PageItem_TextFrame* textFrame = cell.textFrame();
m_pageOutput->drawItem(textFrame, p, QRect());
}
}
}
p->restore();
}
示例15: start
void CollapsedTablePainterEx::paintCellRightBorders(const TableCell& cell, ScPainterExBase* p) const
{
/*
* We are going to paint the border marked # in the following setup.
*
* +----------------------+----------------------+
* | | |
* | | |
* | topLeftCell top topRightCell |
* | | |
* | | |
* +--------topLeft-------+-------topRight-------+
* | # |
* | # |
* | cell border rightCell |
* | # |
* | # |
* +-------bottomLeft-----+------bottomRight-----+
* | | |
* | | |
* | bottomLeftCell bottom bottomRightCell |
* | | |
* | | |
* +----------------------+----------------------+
*/
// The cell ends in this row.
const int lastRow = cell.row() + cell.rowSpan() - 1;
// The cell ends in this column.
const int lastCol = cell.column() + cell.columnSpan() - 1;
// The X position of the border segments to paint.
const double borderX = m_table->columnPosition(lastCol) + m_table->columnWidth(lastCol);
// The start point of the border segment currently being painted.
QPointF start(borderX, 0.0);
// The end point of the border segment currently being painted.
QPointF end(borderX, 0.0);
// The start and end offset factors for the border segment currently being painted.
QPointF startOffsetFactors, endOffsetFactors;
// The start and end row of border segment currently being painted.
int startRow, endRow;
for (int row = cell.row(); row <= lastRow; row += endRow - startRow + 1)
{
// Get the neighboring cell to the right and determine border segment row interval.
TableCell rightCell = m_table->cellAt(row, lastCol + 1);
startRow = qMax(cell.row(), rightCell.row());
endRow = qMin(lastRow, rightCell.isValid() ? rightCell.row() + rightCell.rowSpan() - 1 : lastRow);
// Get the remaining neighboring cells surrounding the segment.
TableCell topLeftCell = m_table->cellAt(startRow - 1, lastCol);
TableCell topRightCell = m_table->cellAt(startRow - 1, lastCol + 1);
TableCell bottomRightCell = m_table->cellAt(endRow + 1, lastCol + 1);
TableCell bottomLeftCell = m_table->cellAt(endRow + 1, lastCol);
// Resolve borders between neighboring cells.
TableBorder topLeft, top, topRight, border, bottomLeft, bottom, bottomRight;
resolveBordersVertical(topLeftCell, topRightCell, cell, rightCell, bottomLeftCell, bottomRightCell, &topLeft, &top, &topRight, &border, &bottomLeft, &bottom, &bottomRight, m_table);
if (border.isNull())
continue; // Quit early if the border to paint is null.
// Set initial coordinates.
start.setY(m_table->rowPosition(startRow));
end.setY(m_table->rowPosition(endRow) + m_table->rowHeight(endRow));
// Adjust coordinates for joining.
joinVertical(border, topLeft, top, topRight, bottomLeft, bottom, bottomRight,
&start, &end, &startOffsetFactors, &endOffsetFactors);
// Paint the border.
paintBorder(border, start, end, startOffsetFactors, endOffsetFactors, p);
}
}