| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "core/paint/TableCellPainter.h" | 5 #include "core/paint/TableCellPainter.h" |
| 6 | 6 |
| 7 #include "core/layout/LayoutTableCell.h" | 7 #include "core/layout/LayoutTableCell.h" |
| 8 #include "core/paint/BlockPainter.h" | 8 #include "core/paint/BlockPainter.h" |
| 9 #include "core/paint/BoxPainter.h" | 9 #include "core/paint/BoxPainter.h" |
| 10 #include "core/paint/LayoutObjectDrawingRecorder.h" | 10 #include "core/paint/LayoutObjectDrawingRecorder.h" |
| 11 #include "core/paint/PaintInfo.h" | 11 #include "core/paint/PaintInfo.h" |
| 12 #include "platform/graphics/GraphicsContextStateSaver.h" | 12 #include "platform/graphics/GraphicsContextStateSaver.h" |
| 13 | 13 |
| 14 namespace blink { | 14 namespace blink { |
| 15 | 15 |
| 16 inline const CollapsedBorderValue& TableCellPainter::cachedCollapsedLeftBorder(c
onst ComputedStyle& styleForCellFlow) const | 16 static const CollapsedBorderValue& collapsedLeftBorder(const ComputedStyle& styl
eForCellFlow, const LayoutTableCell::CollapsedBorderValues& values) |
| 17 { | 17 { |
| 18 if (styleForCellFlow.isHorizontalWritingMode()) { | 18 if (styleForCellFlow.isHorizontalWritingMode()) |
| 19 return styleForCellFlow.isLeftToRightDirection() ? m_layoutTableCell.se
ction()->cachedCollapsedBorder(&m_layoutTableCell, CBSStart) | 19 return styleForCellFlow.isLeftToRightDirection() ? values.startBorder :
values.endBorder; |
| 20 : m_layoutTableCell.section()->cachedCollapsedBorder(&m_layoutTableC
ell, CBSEnd); | 20 return styleForCellFlow.isFlippedBlocksWritingMode() ? values.afterBorder :
values.beforeBorder; |
| 21 } | |
| 22 return styleForCellFlow.isFlippedBlocksWritingMode() ? m_layoutTableCell.se
ction()->cachedCollapsedBorder(&m_layoutTableCell, CBSAfter) | |
| 23 : m_layoutTableCell.section()->cachedCollapsedBorder(&m_layoutTableCell,
CBSBefore); | |
| 24 } | 21 } |
| 25 | 22 |
| 26 inline const CollapsedBorderValue& TableCellPainter::cachedCollapsedRightBorder(
const ComputedStyle& styleForCellFlow) const | 23 static const CollapsedBorderValue& collapsedRightBorder(const ComputedStyle& sty
leForCellFlow, const LayoutTableCell::CollapsedBorderValues& values) |
| 27 { | 24 { |
| 28 if (styleForCellFlow.isHorizontalWritingMode()) { | 25 if (styleForCellFlow.isHorizontalWritingMode()) |
| 29 return styleForCellFlow.isLeftToRightDirection() ? m_layoutTableCell.se
ction()->cachedCollapsedBorder(&m_layoutTableCell, CBSEnd) | 26 return styleForCellFlow.isLeftToRightDirection() ? values.endBorder : va
lues.startBorder; |
| 30 : m_layoutTableCell.section()->cachedCollapsedBorder(&m_layoutTableC
ell, CBSStart); | 27 return styleForCellFlow.isFlippedBlocksWritingMode() ? values.beforeBorder :
values.afterBorder; |
| 31 } | |
| 32 return styleForCellFlow.isFlippedBlocksWritingMode() ? m_layoutTableCell.se
ction()->cachedCollapsedBorder(&m_layoutTableCell, CBSBefore) | |
| 33 : m_layoutTableCell.section()->cachedCollapsedBorder(&m_layoutTableCell,
CBSAfter); | |
| 34 } | 28 } |
| 35 | 29 |
| 36 inline const CollapsedBorderValue& TableCellPainter::cachedCollapsedTopBorder(co
nst ComputedStyle& styleForCellFlow) const | 30 static const CollapsedBorderValue& collapsedTopBorder(const ComputedStyle& style
ForCellFlow, const LayoutTableCell::CollapsedBorderValues& values) |
| 37 { | 31 { |
| 38 if (styleForCellFlow.isHorizontalWritingMode()) | 32 if (styleForCellFlow.isHorizontalWritingMode()) |
| 39 return styleForCellFlow.isFlippedBlocksWritingMode() ? m_layoutTableCel
l.section()->cachedCollapsedBorder(&m_layoutTableCell, CBSAfter) : m_layoutTable
Cell.section()->cachedCollapsedBorder(&m_layoutTableCell, CBSBefore); | 33 return styleForCellFlow.isFlippedBlocksWritingMode() ? values.afterBorde
r : values.beforeBorder; |
| 40 return styleForCellFlow.isLeftToRightDirection() ? m_layoutTableCell.sectio
n()->cachedCollapsedBorder(&m_layoutTableCell, CBSStart) : m_layoutTableCell.sec
tion()->cachedCollapsedBorder(&m_layoutTableCell, CBSEnd); | 34 return styleForCellFlow.isLeftToRightDirection() ? values.startBorder : valu
es.endBorder; |
| 41 } | 35 } |
| 42 | 36 |
| 43 inline const CollapsedBorderValue& TableCellPainter::cachedCollapsedBottomBorder
(const ComputedStyle& styleForCellFlow) const | 37 static const CollapsedBorderValue& collapsedBottomBorder(const ComputedStyle& st
yleForCellFlow, const LayoutTableCell::CollapsedBorderValues& values) |
| 44 { | 38 { |
| 45 if (styleForCellFlow.isHorizontalWritingMode()) { | 39 if (styleForCellFlow.isHorizontalWritingMode()) |
| 46 return styleForCellFlow.isFlippedBlocksWritingMode() ? m_layoutTableCel
l.section()->cachedCollapsedBorder(&m_layoutTableCell, CBSBefore) | 40 return styleForCellFlow.isFlippedBlocksWritingMode() ? values.beforeBord
er : values.afterBorder; |
| 47 : m_layoutTableCell.section()->cachedCollapsedBorder(&m_layoutTableC
ell, CBSAfter); | 41 return styleForCellFlow.isLeftToRightDirection() ? values.endBorder : values
.startBorder; |
| 48 } | |
| 49 return styleForCellFlow.isLeftToRightDirection() ? m_layoutTableCell.sectio
n()->cachedCollapsedBorder(&m_layoutTableCell, CBSEnd) | |
| 50 : m_layoutTableCell.section()->cachedCollapsedBorder(&m_layoutTableCell,
CBSStart); | |
| 51 } | 42 } |
| 52 | 43 |
| 53 void TableCellPainter::paint(const PaintInfo& paintInfo, const LayoutPoint& pain
tOffset) | 44 void TableCellPainter::paint(const PaintInfo& paintInfo, const LayoutPoint& pain
tOffset) |
| 54 { | 45 { |
| 55 BlockPainter(m_layoutTableCell).paint(paintInfo, paintOffset); | 46 BlockPainter(m_layoutTableCell).paint(paintInfo, paintOffset); |
| 56 } | 47 } |
| 57 | 48 |
| 58 static EBorderStyle collapsedBorderStyle(EBorderStyle style) | 49 static EBorderStyle collapsedBorderStyle(EBorderStyle style) |
| 59 { | 50 { |
| 60 if (style == OUTSET) | 51 if (style == OUTSET) |
| 61 return GROOVE; | 52 return GROOVE; |
| 62 if (style == INSET) | 53 if (style == INSET) |
| 63 return RIDGE; | 54 return RIDGE; |
| 64 return style; | 55 return style; |
| 65 } | 56 } |
| 66 | 57 |
| 67 void TableCellPainter::paintCollapsedBorders(const PaintInfo& paintInfo, const L
ayoutPoint& paintOffset, const CollapsedBorderValue& currentBorderValue) | 58 void TableCellPainter::paintCollapsedBorders(const PaintInfo& paintInfo, const L
ayoutPoint& paintOffset, const CollapsedBorderValue& currentBorderValue) |
| 68 { | 59 { |
| 69 if (!paintInfo.shouldPaintWithinRoot(&m_layoutTableCell) || m_layoutTableCel
l.style()->visibility() != VISIBLE) | 60 if (!paintInfo.shouldPaintWithinRoot(&m_layoutTableCell) || m_layoutTableCel
l.style()->visibility() != VISIBLE) |
| 70 return; | 61 return; |
| 71 | 62 |
| 63 const LayoutTableCell::CollapsedBorderValues* values = m_layoutTableCell.col
lapsedBorderValues(); |
| 64 if (!values) |
| 65 return; |
| 66 |
| 72 const ComputedStyle& styleForCellFlow = m_layoutTableCell.styleForCellFlow()
; | 67 const ComputedStyle& styleForCellFlow = m_layoutTableCell.styleForCellFlow()
; |
| 73 const CollapsedBorderValue& leftBorderValue = cachedCollapsedLeftBorder(styl
eForCellFlow); | 68 const CollapsedBorderValue& leftBorderValue = collapsedLeftBorder(styleForCe
llFlow, *values); |
| 74 const CollapsedBorderValue& rightBorderValue = cachedCollapsedRightBorder(st
yleForCellFlow); | 69 const CollapsedBorderValue& rightBorderValue = collapsedRightBorder(styleFor
CellFlow, *values); |
| 75 const CollapsedBorderValue& topBorderValue = cachedCollapsedTopBorder(styleF
orCellFlow); | 70 const CollapsedBorderValue& topBorderValue = collapsedTopBorder(styleForCell
Flow, *values); |
| 76 const CollapsedBorderValue& bottomBorderValue = cachedCollapsedBottomBorder(
styleForCellFlow); | 71 const CollapsedBorderValue& bottomBorderValue = collapsedBottomBorder(styleF
orCellFlow, *values); |
| 77 | 72 |
| 78 int displayItemType = DisplayItem::TableCollapsedBorderBase; | 73 int displayItemType = DisplayItem::TableCollapsedBorderBase; |
| 79 if (topBorderValue.shouldPaint(currentBorderValue)) | 74 if (topBorderValue.shouldPaint(currentBorderValue)) |
| 80 displayItemType |= DisplayItem::TableCollapsedBorderTop; | 75 displayItemType |= DisplayItem::TableCollapsedBorderTop; |
| 81 if (bottomBorderValue.shouldPaint(currentBorderValue)) | 76 if (bottomBorderValue.shouldPaint(currentBorderValue)) |
| 82 displayItemType |= DisplayItem::TableCollapsedBorderBottom; | 77 displayItemType |= DisplayItem::TableCollapsedBorderBottom; |
| 83 if (leftBorderValue.shouldPaint(currentBorderValue)) | 78 if (leftBorderValue.shouldPaint(currentBorderValue)) |
| 84 displayItemType |= DisplayItem::TableCollapsedBorderLeft; | 79 displayItemType |= DisplayItem::TableCollapsedBorderLeft; |
| 85 if (rightBorderValue.shouldPaint(currentBorderValue)) | 80 if (rightBorderValue.shouldPaint(currentBorderValue)) |
| 86 displayItemType |= DisplayItem::TableCollapsedBorderRight; | 81 displayItemType |= DisplayItem::TableCollapsedBorderRight; |
| (...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 231 LayoutRect TableCellPainter::paintBounds(const LayoutPoint& paintOffset, PaintBo
undOffsetBehavior paintBoundOffsetBehavior) | 226 LayoutRect TableCellPainter::paintBounds(const LayoutPoint& paintOffset, PaintBo
undOffsetBehavior paintBoundOffsetBehavior) |
| 232 { | 227 { |
| 233 LayoutPoint adjustedPaintOffset = paintOffset; | 228 LayoutPoint adjustedPaintOffset = paintOffset; |
| 234 if (paintBoundOffsetBehavior == AddOffsetFromParent) | 229 if (paintBoundOffsetBehavior == AddOffsetFromParent) |
| 235 adjustedPaintOffset.moveBy(m_layoutTableCell.location()); | 230 adjustedPaintOffset.moveBy(m_layoutTableCell.location()); |
| 236 return LayoutRect(adjustedPaintOffset, LayoutSize(m_layoutTableCell.pixelSna
ppedSize())); | 231 return LayoutRect(adjustedPaintOffset, LayoutSize(m_layoutTableCell.pixelSna
ppedSize())); |
| 237 } | 232 } |
| 238 | 233 |
| 239 } // namespace blink | 234 } // namespace blink |
| 240 | 235 |
| OLD | NEW |