mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-10-03 05:47:29 +09:00
Use device pixels instead of CSS pixels for table borders.
This resolves #821 (regression).
This commit is contained in:
parent
bbb1a766e2
commit
dac78e3f8c
1 changed files with 41 additions and 38 deletions
|
|
@ -2681,14 +2681,14 @@ nsTableFrame::GetOuterBCBorder(const WritingMode aWM) const
|
||||||
const_cast<nsTableFrame*>(this)->CalcBCBorders();
|
const_cast<nsTableFrame*>(this)->CalcBCBorders();
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t p2t = nsPresContext::AppUnitsPerCSSPixel();
|
int32_t d2a = PresContext()->AppUnitsPerDevPixel();
|
||||||
BCPropertyData* propData = GetBCProperty();
|
BCPropertyData* propData = GetBCProperty();
|
||||||
if (propData) {
|
if (propData) {
|
||||||
return LogicalMargin(aWM,
|
return LogicalMargin(aWM,
|
||||||
BC_BORDER_START_HALF_COORD(p2t, propData->mBStartBorderWidth),
|
BC_BORDER_START_HALF_COORD(d2a, propData->mBStartBorderWidth),
|
||||||
BC_BORDER_END_HALF_COORD(p2t, propData->mIEndBorderWidth),
|
BC_BORDER_END_HALF_COORD(d2a, propData->mIEndBorderWidth),
|
||||||
BC_BORDER_END_HALF_COORD(p2t, propData->mBEndBorderWidth),
|
BC_BORDER_END_HALF_COORD(d2a, propData->mBEndBorderWidth),
|
||||||
BC_BORDER_START_HALF_COORD(p2t, propData->mIStartBorderWidth));
|
BC_BORDER_START_HALF_COORD(d2a, propData->mIStartBorderWidth));
|
||||||
}
|
}
|
||||||
return LogicalMargin(aWM);
|
return LogicalMargin(aWM);
|
||||||
}
|
}
|
||||||
|
|
@ -2700,14 +2700,14 @@ nsTableFrame::GetIncludedOuterBCBorder(const WritingMode aWM) const
|
||||||
const_cast<nsTableFrame*>(this)->CalcBCBorders();
|
const_cast<nsTableFrame*>(this)->CalcBCBorders();
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t p2t = nsPresContext::AppUnitsPerCSSPixel();
|
int32_t d2a = PresContext()->AppUnitsPerDevPixel();
|
||||||
BCPropertyData* propData = GetBCProperty();
|
BCPropertyData* propData = GetBCProperty();
|
||||||
if (propData) {
|
if (propData) {
|
||||||
return LogicalMargin(aWM,
|
return LogicalMargin(aWM,
|
||||||
BC_BORDER_START_HALF_COORD(p2t, propData->mBStartBorderWidth),
|
BC_BORDER_START_HALF_COORD(d2a, propData->mBStartBorderWidth),
|
||||||
BC_BORDER_END_HALF_COORD(p2t, propData->mIEndCellBorderWidth),
|
BC_BORDER_END_HALF_COORD(d2a, propData->mIEndCellBorderWidth),
|
||||||
BC_BORDER_END_HALF_COORD(p2t, propData->mBEndBorderWidth),
|
BC_BORDER_END_HALF_COORD(d2a, propData->mBEndBorderWidth),
|
||||||
BC_BORDER_START_HALF_COORD(p2t, propData->mIStartCellBorderWidth));
|
BC_BORDER_START_HALF_COORD(d2a, propData->mIStartCellBorderWidth));
|
||||||
}
|
}
|
||||||
return LogicalMargin(aWM);
|
return LogicalMargin(aWM);
|
||||||
}
|
}
|
||||||
|
|
@ -4791,7 +4791,7 @@ GetColorAndStyle(const nsIFrame* aFrame,
|
||||||
|
|
||||||
if (aWidth) {
|
if (aWidth) {
|
||||||
nscoord width = styleData->GetComputedBorderWidth(physicalSide);
|
nscoord width = styleData->GetComputedBorderWidth(physicalSide);
|
||||||
*aWidth = nsPresContext::AppUnitsToIntCSSPixels(width);
|
*aWidth = aFrame->PresContext()->AppUnitsToDevPixels(width);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -6476,8 +6476,8 @@ BCPaintBorderIterator::SetDamageArea(const nsRect& aDirtyRect)
|
||||||
nscoord rowBSize = rowFrame->BSize(mTableWM);
|
nscoord rowBSize = rowFrame->BSize(mTableWM);
|
||||||
if (haveIntersect) {
|
if (haveIntersect) {
|
||||||
// conservatively estimate the half border widths outside the row
|
// conservatively estimate the half border widths outside the row
|
||||||
nscoord borderHalf = mTable->GetPrevInFlow() ? 0 : nsPresContext::
|
nscoord borderHalf = mTable->GetPrevInFlow() ? 0 :
|
||||||
CSSPixelsToAppUnits(rowFrame->GetBStartBCBorderWidth() + 1);
|
mTable->PresContext()->DevPixelsToAppUnits(rowFrame->GetBStartBCBorderWidth() + 1);
|
||||||
if (dirtyRect.BEnd(mTableWM) >= rowB - borderHalf) {
|
if (dirtyRect.BEnd(mTableWM) >= rowB - borderHalf) {
|
||||||
nsTableRowFrame* fifRow =
|
nsTableRowFrame* fifRow =
|
||||||
static_cast<nsTableRowFrame*>(rowFrame->FirstInFlow());
|
static_cast<nsTableRowFrame*>(rowFrame->FirstInFlow());
|
||||||
|
|
@ -6487,8 +6487,8 @@ BCPaintBorderIterator::SetDamageArea(const nsRect& aDirtyRect)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// conservatively estimate the half border widths outside the row
|
// conservatively estimate the half border widths outside the row
|
||||||
nscoord borderHalf = mTable->GetNextInFlow() ? 0 : nsPresContext::
|
nscoord borderHalf = mTable->GetNextInFlow() ? 0 :
|
||||||
CSSPixelsToAppUnits(rowFrame->GetBEndBCBorderWidth() + 1);
|
mTable->PresContext()->DevPixelsToAppUnits(rowFrame->GetBEndBCBorderWidth() + 1);
|
||||||
if (rowB + rowBSize + borderHalf >= dirtyRect.BStart(mTableWM)) {
|
if (rowB + rowBSize + borderHalf >= dirtyRect.BStart(mTableWM)) {
|
||||||
mStartRg = rgFrame;
|
mStartRg = rgFrame;
|
||||||
mStartRow = rowFrame;
|
mStartRow = rowFrame;
|
||||||
|
|
@ -6532,8 +6532,8 @@ BCPaintBorderIterator::SetDamageArea(const nsRect& aDirtyRect)
|
||||||
nscoord colISize = colFrame->ISize(mTableWM);
|
nscoord colISize = colFrame->ISize(mTableWM);
|
||||||
if (haveIntersect) {
|
if (haveIntersect) {
|
||||||
// conservatively estimate the iStart half border width outside the col
|
// conservatively estimate the iStart half border width outside the col
|
||||||
nscoord iStartBorderHalf = nsPresContext::
|
nscoord iStartBorderHalf =
|
||||||
CSSPixelsToAppUnits(colFrame->GetIStartBorderWidth() + 1);
|
mTable->PresContext()->DevPixelsToAppUnits(colFrame->GetIStartBorderWidth() + 1);
|
||||||
if (dirtyRect.IEnd(mTableWM) >= x - iStartBorderHalf) {
|
if (dirtyRect.IEnd(mTableWM) >= x - iStartBorderHalf) {
|
||||||
endColIndex = colIdx;
|
endColIndex = colIdx;
|
||||||
}
|
}
|
||||||
|
|
@ -6541,8 +6541,8 @@ BCPaintBorderIterator::SetDamageArea(const nsRect& aDirtyRect)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// conservatively estimate the iEnd half border width outside the col
|
// conservatively estimate the iEnd half border width outside the col
|
||||||
nscoord iEndBorderHalf = nsPresContext::
|
nscoord iEndBorderHalf =
|
||||||
CSSPixelsToAppUnits(colFrame->GetIEndBorderWidth() + 1);
|
mTable->PresContext()->DevPixelsToAppUnits(colFrame->GetIEndBorderWidth() + 1);
|
||||||
if (x + colISize + iEndBorderHalf >= dirtyRect.IStart(mTableWM)) {
|
if (x + colISize + iEndBorderHalf >= dirtyRect.IStart(mTableWM)) {
|
||||||
startColIndex = endColIndex = colIdx;
|
startColIndex = endColIndex = colIdx;
|
||||||
haveIntersect = true;
|
haveIntersect = true;
|
||||||
|
|
@ -6785,7 +6785,8 @@ CalcVerCornerOffset(LogicalSide aCornerOwnerSide,
|
||||||
BCPixelSize aCornerSubWidth,
|
BCPixelSize aCornerSubWidth,
|
||||||
BCPixelSize aHorWidth,
|
BCPixelSize aHorWidth,
|
||||||
bool aIsStartOfSeg,
|
bool aIsStartOfSeg,
|
||||||
bool aIsBevel)
|
bool aIsBevel,
|
||||||
|
nsPresContext* aPresContext)
|
||||||
{
|
{
|
||||||
nscoord offset = 0;
|
nscoord offset = 0;
|
||||||
// XXX These should be replaced with appropriate side-specific macros (which?)
|
// XXX These should be replaced with appropriate side-specific macros (which?)
|
||||||
|
|
@ -6808,7 +6809,7 @@ CalcVerCornerOffset(LogicalSide aCornerOwnerSide,
|
||||||
offset = (aIsStartOfSeg) ? smallHalf : -largeHalf;
|
offset = (aIsStartOfSeg) ? smallHalf : -largeHalf;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return nsPresContext::CSSPixelsToAppUnits(offset);
|
return aPresContext->DevPixelsToAppUnits(offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Compute the horizontal offset of a horizontal border segment
|
/** Compute the horizontal offset of a horizontal border segment
|
||||||
|
|
@ -6824,7 +6825,8 @@ CalcHorCornerOffset(LogicalSide aCornerOwnerSide,
|
||||||
BCPixelSize aCornerSubWidth,
|
BCPixelSize aCornerSubWidth,
|
||||||
BCPixelSize aVerWidth,
|
BCPixelSize aVerWidth,
|
||||||
bool aIsStartOfSeg,
|
bool aIsStartOfSeg,
|
||||||
bool aIsBevel)
|
bool aIsBevel,
|
||||||
|
nsPresContext* aPresContext)
|
||||||
{
|
{
|
||||||
nscoord offset = 0;
|
nscoord offset = 0;
|
||||||
// XXX These should be replaced with appropriate side-specific macros (which?)
|
// XXX These should be replaced with appropriate side-specific macros (which?)
|
||||||
|
|
@ -6847,7 +6849,7 @@ CalcHorCornerOffset(LogicalSide aCornerOwnerSide,
|
||||||
offset = (aIsStartOfSeg) ? smallHalf : -largeHalf;
|
offset = (aIsStartOfSeg) ? smallHalf : -largeHalf;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return nsPresContext::CSSPixelsToAppUnits(offset);
|
return aPresContext->DevPixelsToAppUnits(offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
BCBlockDirSeg::BCBlockDirSeg()
|
BCBlockDirSeg::BCBlockDirSeg()
|
||||||
|
|
@ -6883,10 +6885,10 @@ BCBlockDirSeg::Start(BCPaintBorderIterator& aIter,
|
||||||
BCPixelSize maxInlineSegBSize = std::max(aIter.mPrevInlineSegBSize, aInlineSegBSize);
|
BCPixelSize maxInlineSegBSize = std::max(aIter.mPrevInlineSegBSize, aInlineSegBSize);
|
||||||
nscoord offset = CalcVerCornerOffset(ownerSide, cornerSubWidth,
|
nscoord offset = CalcVerCornerOffset(ownerSide, cornerSubWidth,
|
||||||
maxInlineSegBSize, true,
|
maxInlineSegBSize, true,
|
||||||
bStartBevel);
|
bStartBevel, aIter.mTable->PresContext());
|
||||||
|
|
||||||
mBStartBevelOffset = bStartBevel ?
|
mBStartBevelOffset = bStartBevel ?
|
||||||
nsPresContext::CSSPixelsToAppUnits(maxInlineSegBSize): 0;
|
aIter.mTable->PresContext()->DevPixelsToAppUnits(maxInlineSegBSize): 0;
|
||||||
// XXX this assumes that only corners where 2 segments join can be beveled
|
// XXX this assumes that only corners where 2 segments join can be beveled
|
||||||
mBStartBevelSide = (aInlineSegBSize > 0) ? eLogicalSideIEnd : eLogicalSideIStart;
|
mBStartBevelSide = (aInlineSegBSize > 0) ? eLogicalSideIEnd : eLogicalSideIStart;
|
||||||
mOffsetB += offset;
|
mOffsetB += offset;
|
||||||
|
|
@ -6944,8 +6946,8 @@ BCBlockDirSeg::GetBEndCorner(BCPaintBorderIterator& aIter,
|
||||||
mIsBEndBevel = (mWidth > 0) ? bevel : false;
|
mIsBEndBevel = (mWidth > 0) ? bevel : false;
|
||||||
mBEndInlineSegBSize = std::max(aIter.mPrevInlineSegBSize, aInlineSegBSize);
|
mBEndInlineSegBSize = std::max(aIter.mPrevInlineSegBSize, aInlineSegBSize);
|
||||||
mBEndOffset = CalcVerCornerOffset(ownerSide, cornerSubWidth,
|
mBEndOffset = CalcVerCornerOffset(ownerSide, cornerSubWidth,
|
||||||
mBEndInlineSegBSize,
|
mBEndInlineSegBSize, false,
|
||||||
false, mIsBEndBevel);
|
mIsBEndBevel, aIter.mTable->PresContext());
|
||||||
mLength += mBEndOffset;
|
mLength += mBEndOffset;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -7029,11 +7031,11 @@ BCBlockDirSeg::Paint(BCPaintBorderIterator& aIter,
|
||||||
BCPixelSize smallHalf, largeHalf;
|
BCPixelSize smallHalf, largeHalf;
|
||||||
DivideBCBorderSize(mWidth, smallHalf, largeHalf);
|
DivideBCBorderSize(mWidth, smallHalf, largeHalf);
|
||||||
LogicalRect segRect(aIter.mTableWM,
|
LogicalRect segRect(aIter.mTableWM,
|
||||||
mOffsetI - nsPresContext::CSSPixelsToAppUnits(largeHalf),
|
mOffsetI - aIter.mTable->PresContext()->DevPixelsToAppUnits(largeHalf),
|
||||||
mOffsetB,
|
mOffsetB,
|
||||||
nsPresContext::CSSPixelsToAppUnits(mWidth), mLength);
|
aIter.mTable->PresContext()->DevPixelsToAppUnits(mWidth), mLength);
|
||||||
nscoord bEndBevelOffset = (mIsBEndBevel) ?
|
nscoord bEndBevelOffset = (mIsBEndBevel) ?
|
||||||
nsPresContext::CSSPixelsToAppUnits(mBEndInlineSegBSize) : 0;
|
aIter.mTable->PresContext()->DevPixelsToAppUnits(mBEndInlineSegBSize) : 0;
|
||||||
LogicalSide bEndBevelSide =
|
LogicalSide bEndBevelSide =
|
||||||
(aInlineSegBSize > 0) ? eLogicalSideIEnd : eLogicalSideIStart;
|
(aInlineSegBSize > 0) ? eLogicalSideIEnd : eLogicalSideIStart;
|
||||||
|
|
||||||
|
|
@ -7067,7 +7069,7 @@ BCBlockDirSeg::Paint(BCPaintBorderIterator& aIter,
|
||||||
nsCSSRendering::DrawTableBorderSegment(aDrawTarget, style, color,
|
nsCSSRendering::DrawTableBorderSegment(aDrawTarget, style, color,
|
||||||
aIter.mTableBgColor, physicalRect,
|
aIter.mTableBgColor, physicalRect,
|
||||||
appUnitsPerDevPixel,
|
appUnitsPerDevPixel,
|
||||||
nsPresContext::AppUnitsPerCSSPixel(),
|
aIter.mTable->PresContext()->AppUnitsPerDevPixel(),
|
||||||
startBevelSide, startBevelOffset,
|
startBevelSide, startBevelOffset,
|
||||||
endBevelSide, endBevelOffset);
|
endBevelSide, endBevelOffset);
|
||||||
}
|
}
|
||||||
|
|
@ -7123,7 +7125,8 @@ BCInlineDirSeg::Start(BCPaintBorderIterator& aIter,
|
||||||
nscoord maxBlockSegISize = std::max(aIter.mBlockDirInfo[relColIndex].mWidth,
|
nscoord maxBlockSegISize = std::max(aIter.mBlockDirInfo[relColIndex].mWidth,
|
||||||
aBEndBlockSegISize);
|
aBEndBlockSegISize);
|
||||||
nscoord offset = CalcHorCornerOffset(cornerOwnerSide, cornerSubWidth,
|
nscoord offset = CalcHorCornerOffset(cornerOwnerSide, cornerSubWidth,
|
||||||
maxBlockSegISize, true, iStartBevel);
|
maxBlockSegISize, true, iStartBevel,
|
||||||
|
aIter.mTable->PresContext());
|
||||||
mIStartBevelOffset = (iStartBevel && (aInlineSegBSize > 0)) ? maxBlockSegISize : 0;
|
mIStartBevelOffset = (iStartBevel && (aInlineSegBSize > 0)) ? maxBlockSegISize : 0;
|
||||||
// XXX this assumes that only corners where 2 segments join can be beveled
|
// XXX this assumes that only corners where 2 segments join can be beveled
|
||||||
mIStartBevelSide = (aBEndBlockSegISize > 0) ? eLogicalSideBEnd : eLogicalSideBStart;
|
mIStartBevelSide = (aBEndBlockSegISize > 0) ? eLogicalSideBEnd : eLogicalSideBStart;
|
||||||
|
|
@ -7157,10 +7160,10 @@ BCInlineDirSeg::GetIEndCorner(BCPaintBorderIterator& aIter,
|
||||||
nscoord verWidth = std::max(aIter.mBlockDirInfo[relColIndex].mWidth,
|
nscoord verWidth = std::max(aIter.mBlockDirInfo[relColIndex].mWidth,
|
||||||
aIStartSegISize);
|
aIStartSegISize);
|
||||||
mEndOffset = CalcHorCornerOffset(ownerSide, cornerSubWidth, verWidth,
|
mEndOffset = CalcHorCornerOffset(ownerSide, cornerSubWidth, verWidth,
|
||||||
false, mIsIEndBevel);
|
false, mIsIEndBevel, aIter.mTable->PresContext());
|
||||||
mLength += mEndOffset;
|
mLength += mEndOffset;
|
||||||
mIEndBevelOffset = (mIsIEndBevel) ?
|
mIEndBevelOffset = (mIsIEndBevel) ?
|
||||||
nsPresContext::CSSPixelsToAppUnits(verWidth) : 0;
|
aIter.mTable->PresContext()->DevPixelsToAppUnits(verWidth) : 0;
|
||||||
mIEndBevelSide = (aIStartSegISize > 0) ? eLogicalSideBEnd : eLogicalSideBStart;
|
mIEndBevelSide = (aIStartSegISize > 0) ? eLogicalSideBEnd : eLogicalSideBStart;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -7240,9 +7243,9 @@ BCInlineDirSeg::Paint(BCPaintBorderIterator& aIter, DrawTarget& aDrawTarget)
|
||||||
BCPixelSize smallHalf, largeHalf;
|
BCPixelSize smallHalf, largeHalf;
|
||||||
DivideBCBorderSize(mWidth, smallHalf, largeHalf);
|
DivideBCBorderSize(mWidth, smallHalf, largeHalf);
|
||||||
LogicalRect segRect(aIter.mTableWM, mOffsetI,
|
LogicalRect segRect(aIter.mTableWM, mOffsetI,
|
||||||
mOffsetB - nsPresContext::CSSPixelsToAppUnits(largeHalf),
|
mOffsetB - aIter.mTable->PresContext()->DevPixelsToAppUnits(largeHalf),
|
||||||
mLength,
|
mLength,
|
||||||
nsPresContext::CSSPixelsToAppUnits(mWidth));
|
aIter.mTable->PresContext()->DevPixelsToAppUnits(mWidth));
|
||||||
|
|
||||||
// Convert logical to physical sides/coordinates for DrawTableBorderSegment.
|
// Convert logical to physical sides/coordinates for DrawTableBorderSegment.
|
||||||
nsRect physicalRect = segRect.GetPhysicalRect(aIter.mTableWM,
|
nsRect physicalRect = segRect.GetPhysicalRect(aIter.mTableWM,
|
||||||
|
|
@ -7250,7 +7253,7 @@ BCInlineDirSeg::Paint(BCPaintBorderIterator& aIter, DrawTarget& aDrawTarget)
|
||||||
uint8_t startBevelSide = aIter.mTableWM.PhysicalSide(mIStartBevelSide);
|
uint8_t startBevelSide = aIter.mTableWM.PhysicalSide(mIStartBevelSide);
|
||||||
uint8_t endBevelSide = aIter.mTableWM.PhysicalSide(mIEndBevelSide);
|
uint8_t endBevelSide = aIter.mTableWM.PhysicalSide(mIEndBevelSide);
|
||||||
nscoord startBevelOffset =
|
nscoord startBevelOffset =
|
||||||
nsPresContext::CSSPixelsToAppUnits(mIStartBevelOffset);
|
aIter.mTable->PresContext()->DevPixelsToAppUnits(mIStartBevelOffset);
|
||||||
nscoord endBevelOffset = mIEndBevelOffset;
|
nscoord endBevelOffset = mIEndBevelOffset;
|
||||||
// With inline-RTL directionality, the 'start' and 'end' of the inline-dir
|
// With inline-RTL directionality, the 'start' and 'end' of the inline-dir
|
||||||
// border segment need to be swapped because DrawTableBorderSegment will
|
// border segment need to be swapped because DrawTableBorderSegment will
|
||||||
|
|
@ -7271,7 +7274,7 @@ BCInlineDirSeg::Paint(BCPaintBorderIterator& aIter, DrawTarget& aDrawTarget)
|
||||||
nsCSSRendering::DrawTableBorderSegment(aDrawTarget, style, color,
|
nsCSSRendering::DrawTableBorderSegment(aDrawTarget, style, color,
|
||||||
aIter.mTableBgColor, physicalRect,
|
aIter.mTableBgColor, physicalRect,
|
||||||
appUnitsPerDevPixel,
|
appUnitsPerDevPixel,
|
||||||
nsPresContext::AppUnitsPerCSSPixel(),
|
aIter.mTable->PresContext()->AppUnitsPerDevPixel(),
|
||||||
startBevelSide, startBevelOffset,
|
startBevelSide, startBevelOffset,
|
||||||
endBevelSide, endBevelOffset);
|
endBevelSide, endBevelOffset);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue