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 "config.h" | 5 #include "config.h" |
6 #include "core/paint/TableCellPainter.h" | 6 #include "core/paint/TableCellPainter.h" |
7 | 7 |
8 #include "core/layout/LayoutTableCell.h" | 8 #include "core/layout/LayoutTableCell.h" |
9 #include "core/paint/BlockPainter.h" | 9 #include "core/paint/BlockPainter.h" |
10 #include "core/paint/BoxPainter.h" | 10 #include "core/paint/BoxPainter.h" |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
46 if (styleForCellFlow.isHorizontalWritingMode()) { | 46 if (styleForCellFlow.isHorizontalWritingMode()) { |
47 return styleForCellFlow.isFlippedBlocksWritingMode() ? m_layoutTableCel
l.section()->cachedCollapsedBorder(&m_layoutTableCell, CBSBefore) | 47 return styleForCellFlow.isFlippedBlocksWritingMode() ? m_layoutTableCel
l.section()->cachedCollapsedBorder(&m_layoutTableCell, CBSBefore) |
48 : m_layoutTableCell.section()->cachedCollapsedBorder(&m_layoutTableC
ell, CBSAfter); | 48 : m_layoutTableCell.section()->cachedCollapsedBorder(&m_layoutTableC
ell, CBSAfter); |
49 } | 49 } |
50 return styleForCellFlow.isLeftToRightDirection() ? m_layoutTableCell.sectio
n()->cachedCollapsedBorder(&m_layoutTableCell, CBSEnd) | 50 return styleForCellFlow.isLeftToRightDirection() ? m_layoutTableCell.sectio
n()->cachedCollapsedBorder(&m_layoutTableCell, CBSEnd) |
51 : m_layoutTableCell.section()->cachedCollapsedBorder(&m_layoutTableCell,
CBSStart); | 51 : m_layoutTableCell.section()->cachedCollapsedBorder(&m_layoutTableCell,
CBSStart); |
52 } | 52 } |
53 | 53 |
54 void TableCellPainter::paint(const PaintInfo& paintInfo, const LayoutPoint& pain
tOffset) | 54 void TableCellPainter::paint(const PaintInfo& paintInfo, const LayoutPoint& pain
tOffset) |
55 { | 55 { |
56 ASSERT(paintInfo.phase != PaintPhaseCollapsedTableBorders); | |
57 BlockPainter(m_layoutTableCell).paint(paintInfo, paintOffset); | 56 BlockPainter(m_layoutTableCell).paint(paintInfo, paintOffset); |
58 } | 57 } |
59 | 58 |
60 static EBorderStyle collapsedBorderStyle(EBorderStyle style) | 59 static EBorderStyle collapsedBorderStyle(EBorderStyle style) |
61 { | 60 { |
62 if (style == OUTSET) | 61 if (style == OUTSET) |
63 return GROOVE; | 62 return GROOVE; |
64 if (style == INSET) | 63 if (style == INSET) |
65 return RIDGE; | 64 return RIDGE; |
66 return style; | 65 return style; |
67 } | 66 } |
68 | 67 |
69 void TableCellPainter::paintCollapsedBorders(const PaintInfo& paintInfo, const L
ayoutPoint& paintOffset) | 68 void TableCellPainter::paintCollapsedBorders(const PaintInfo& paintInfo, const L
ayoutPoint& paintOffset, const CollapsedBorderValue& currentBorderValue) |
70 { | 69 { |
71 ASSERT(paintInfo.phase == PaintPhaseCollapsedTableBorders); | |
72 | |
73 if (!paintInfo.shouldPaintWithinRoot(&m_layoutTableCell) || m_layoutTableCel
l.style()->visibility() != VISIBLE) | 70 if (!paintInfo.shouldPaintWithinRoot(&m_layoutTableCell) || m_layoutTableCel
l.style()->visibility() != VISIBLE) |
74 return; | 71 return; |
75 | 72 |
76 const CollapsedBorderValue* tableCurrentBorderValue = m_layoutTableCell.tabl
e()->currentBorderValue(); | |
77 if (!tableCurrentBorderValue) | |
78 return; | |
79 | |
80 const ComputedStyle& styleForCellFlow = m_layoutTableCell.styleForCellFlow()
; | 73 const ComputedStyle& styleForCellFlow = m_layoutTableCell.styleForCellFlow()
; |
81 const CollapsedBorderValue& leftBorderValue = cachedCollapsedLeftBorder(styl
eForCellFlow); | 74 const CollapsedBorderValue& leftBorderValue = cachedCollapsedLeftBorder(styl
eForCellFlow); |
82 const CollapsedBorderValue& rightBorderValue = cachedCollapsedRightBorder(st
yleForCellFlow); | 75 const CollapsedBorderValue& rightBorderValue = cachedCollapsedRightBorder(st
yleForCellFlow); |
83 const CollapsedBorderValue& topBorderValue = cachedCollapsedTopBorder(styleF
orCellFlow); | 76 const CollapsedBorderValue& topBorderValue = cachedCollapsedTopBorder(styleF
orCellFlow); |
84 const CollapsedBorderValue& bottomBorderValue = cachedCollapsedBottomBorder(
styleForCellFlow); | 77 const CollapsedBorderValue& bottomBorderValue = cachedCollapsedBottomBorder(
styleForCellFlow); |
85 | 78 |
86 int displayItemType = DisplayItem::TableCollapsedBorderBase; | 79 int displayItemType = DisplayItem::TableCollapsedBorderBase; |
87 if (topBorderValue.shouldPaint(*tableCurrentBorderValue)) | 80 if (topBorderValue.shouldPaint(currentBorderValue)) |
88 displayItemType |= DisplayItem::TableCollapsedBorderTop; | 81 displayItemType |= DisplayItem::TableCollapsedBorderTop; |
89 if (bottomBorderValue.shouldPaint(*tableCurrentBorderValue)) | 82 if (bottomBorderValue.shouldPaint(currentBorderValue)) |
90 displayItemType |= DisplayItem::TableCollapsedBorderBottom; | 83 displayItemType |= DisplayItem::TableCollapsedBorderBottom; |
91 if (leftBorderValue.shouldPaint(*tableCurrentBorderValue)) | 84 if (leftBorderValue.shouldPaint(currentBorderValue)) |
92 displayItemType |= DisplayItem::TableCollapsedBorderLeft; | 85 displayItemType |= DisplayItem::TableCollapsedBorderLeft; |
93 if (rightBorderValue.shouldPaint(*tableCurrentBorderValue)) | 86 if (rightBorderValue.shouldPaint(currentBorderValue)) |
94 displayItemType |= DisplayItem::TableCollapsedBorderRight; | 87 displayItemType |= DisplayItem::TableCollapsedBorderRight; |
95 | 88 |
96 if (displayItemType == DisplayItem::TableCollapsedBorderBase) | 89 if (displayItemType == DisplayItem::TableCollapsedBorderBase) |
97 return; | 90 return; |
98 | 91 |
99 // Adjust our x/y/width/height so that we paint the collapsed borders at the
correct location. | 92 // Adjust our x/y/width/height so that we paint the collapsed borders at the
correct location. |
100 int topWidth = topBorderValue.width(); | 93 int topWidth = topBorderValue.width(); |
101 int bottomWidth = bottomBorderValue.width(); | 94 int bottomWidth = bottomBorderValue.width(); |
102 int leftWidth = leftBorderValue.width(); | 95 int leftWidth = leftBorderValue.width(); |
103 int rightWidth = rightBorderValue.width(); | 96 int rightWidth = rightBorderValue.width(); |
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
228 LayoutRect TableCellPainter::paintBounds(const LayoutPoint& paintOffset, PaintBo
undOffsetBehavior paintBoundOffsetBehavior) | 221 LayoutRect TableCellPainter::paintBounds(const LayoutPoint& paintOffset, PaintBo
undOffsetBehavior paintBoundOffsetBehavior) |
229 { | 222 { |
230 LayoutPoint adjustedPaintOffset = paintOffset; | 223 LayoutPoint adjustedPaintOffset = paintOffset; |
231 if (paintBoundOffsetBehavior == AddOffsetFromParent) | 224 if (paintBoundOffsetBehavior == AddOffsetFromParent) |
232 adjustedPaintOffset.moveBy(m_layoutTableCell.location()); | 225 adjustedPaintOffset.moveBy(m_layoutTableCell.location()); |
233 return LayoutRect(adjustedPaintOffset, LayoutSize(m_layoutTableCell.pixelSna
ppedSize())); | 226 return LayoutRect(adjustedPaintOffset, LayoutSize(m_layoutTableCell.pixelSna
ppedSize())); |
234 } | 227 } |
235 | 228 |
236 } // namespace blink | 229 } // namespace blink |
237 | 230 |
OLD | NEW |