From 5d781dc551e36fb3bbae8714b433eb8194b5ae29 Mon Sep 17 00:00:00 2001 From: "dbaron%dbaron.org" Date: Tue, 27 Jan 2004 06:46:33 +0000 Subject: [PATCH] Clean up ComputeShrinkwrapMargins. b=217369 r+sr=bzbarsky git-svn-id: svn://10.0.0.236/trunk@151897 18797224-902f-48f8-a5cc-f745e15eee43 --- .../layout/generic/nsBlockReflowContext.cpp | 46 +++++++++---------- .../html/base/src/nsBlockReflowContext.cpp | 46 +++++++++---------- 2 files changed, 44 insertions(+), 48 deletions(-) diff --git a/mozilla/layout/generic/nsBlockReflowContext.cpp b/mozilla/layout/generic/nsBlockReflowContext.cpp index 71c1c891b65..3b24c744248 100644 --- a/mozilla/layout/generic/nsBlockReflowContext.cpp +++ b/mozilla/layout/generic/nsBlockReflowContext.cpp @@ -236,41 +236,39 @@ nsBlockReflowContext::AlignBlockHorizontally(nscoord aWidth, } static void -ComputeShrinkwrapMargins(const nsStyleMargin* aStyleMargin, nscoord aWidth, nsMargin& aMargin, nscoord& aXToUpdate) { +ComputeShrinkwrapMargins(const nsStyleMargin* aStyleMargin, nscoord aWidth, + nsMargin& aMargin, nscoord& aXToUpdate) +{ nscoord boxWidth = aWidth; - float leftPct = 0.0; - float rightPct = 0.0; + float leftPct = 0.0, rightPct = 0.0; + const nsStyleSides& margin = aStyleMargin->mMargin; - if (eStyleUnit_Percent == aStyleMargin->mMargin.GetLeftUnit()) { - nsStyleCoord leftCoord; - - aStyleMargin->mMargin.GetLeft(leftCoord); - leftPct = leftCoord.GetPercentValue(); - + if (eStyleUnit_Percent == margin.GetLeftUnit()) { + nsStyleCoord coord; + leftPct = margin.GetLeft(coord).GetPercentValue(); } else { boxWidth += aMargin.left; } - if (eStyleUnit_Percent == aStyleMargin->mMargin.GetRightUnit()) { - nsStyleCoord rightCoord; - - aStyleMargin->mMargin.GetRight(rightCoord); - rightPct = rightCoord.GetPercentValue(); - + if (eStyleUnit_Percent == margin.GetRightUnit()) { + nsStyleCoord coord; + rightPct = margin.GetRight(coord).GetPercentValue(); } else { boxWidth += aMargin.right; } - // The total shrink wrap width "sww" is calculated by the expression: + // The total shrink wrap width "sww" (i.e., the width that the + // containing block needs to be to shrink-wrap this block) is + // calculated by the expression: // sww = bw + (mp * sww) - // where "bw" is the box width (frame width plus margins that aren't percentage - // based) and "mp" are the total margin percentages (i.e., the left percentage - // value plus the right percentage value) - // Solving for "sww" gives us: + // where "bw" is the box width (frame width plus margins that aren't + // percentage based) and "mp" are the total margin percentages (i.e., + // the left percentage value plus the right percentage value). + // Solving for "sww" gives: // sww = bw / (1 - mp) - // Note that this is only well defined for "mp" less than 100% + // Note that this is only well defined for "mp" less than 100% and + // greater than -100% (XXXldb but we only accept 0 to 100%). - // XXXldb Um... percentage margins are based on the containing block width. float marginPct = leftPct + rightPct; if (marginPct >= 1.0) { // Ignore the right percentage and just use the left percentage @@ -282,11 +280,11 @@ ComputeShrinkwrapMargins(const nsStyleMargin* aStyleMargin, nscoord aWidth, nsMa if ((marginPct > 0.0) && (marginPct < 1.0)) { double shrinkWrapWidth = float(boxWidth) / (1.0 - marginPct); - if (eStyleUnit_Percent == aStyleMargin->mMargin.GetLeftUnit()) { + if (eStyleUnit_Percent == margin.GetLeftUnit()) { aMargin.left = NSToCoordFloor((float)(shrinkWrapWidth * leftPct)); aXToUpdate += aMargin.left; } - if (eStyleUnit_Percent == aStyleMargin->mMargin.GetRightUnit()) { + if (eStyleUnit_Percent == margin.GetRightUnit()) { aMargin.right = NSToCoordFloor((float)(shrinkWrapWidth * rightPct)); } } diff --git a/mozilla/layout/html/base/src/nsBlockReflowContext.cpp b/mozilla/layout/html/base/src/nsBlockReflowContext.cpp index 71c1c891b65..3b24c744248 100644 --- a/mozilla/layout/html/base/src/nsBlockReflowContext.cpp +++ b/mozilla/layout/html/base/src/nsBlockReflowContext.cpp @@ -236,41 +236,39 @@ nsBlockReflowContext::AlignBlockHorizontally(nscoord aWidth, } static void -ComputeShrinkwrapMargins(const nsStyleMargin* aStyleMargin, nscoord aWidth, nsMargin& aMargin, nscoord& aXToUpdate) { +ComputeShrinkwrapMargins(const nsStyleMargin* aStyleMargin, nscoord aWidth, + nsMargin& aMargin, nscoord& aXToUpdate) +{ nscoord boxWidth = aWidth; - float leftPct = 0.0; - float rightPct = 0.0; + float leftPct = 0.0, rightPct = 0.0; + const nsStyleSides& margin = aStyleMargin->mMargin; - if (eStyleUnit_Percent == aStyleMargin->mMargin.GetLeftUnit()) { - nsStyleCoord leftCoord; - - aStyleMargin->mMargin.GetLeft(leftCoord); - leftPct = leftCoord.GetPercentValue(); - + if (eStyleUnit_Percent == margin.GetLeftUnit()) { + nsStyleCoord coord; + leftPct = margin.GetLeft(coord).GetPercentValue(); } else { boxWidth += aMargin.left; } - if (eStyleUnit_Percent == aStyleMargin->mMargin.GetRightUnit()) { - nsStyleCoord rightCoord; - - aStyleMargin->mMargin.GetRight(rightCoord); - rightPct = rightCoord.GetPercentValue(); - + if (eStyleUnit_Percent == margin.GetRightUnit()) { + nsStyleCoord coord; + rightPct = margin.GetRight(coord).GetPercentValue(); } else { boxWidth += aMargin.right; } - // The total shrink wrap width "sww" is calculated by the expression: + // The total shrink wrap width "sww" (i.e., the width that the + // containing block needs to be to shrink-wrap this block) is + // calculated by the expression: // sww = bw + (mp * sww) - // where "bw" is the box width (frame width plus margins that aren't percentage - // based) and "mp" are the total margin percentages (i.e., the left percentage - // value plus the right percentage value) - // Solving for "sww" gives us: + // where "bw" is the box width (frame width plus margins that aren't + // percentage based) and "mp" are the total margin percentages (i.e., + // the left percentage value plus the right percentage value). + // Solving for "sww" gives: // sww = bw / (1 - mp) - // Note that this is only well defined for "mp" less than 100% + // Note that this is only well defined for "mp" less than 100% and + // greater than -100% (XXXldb but we only accept 0 to 100%). - // XXXldb Um... percentage margins are based on the containing block width. float marginPct = leftPct + rightPct; if (marginPct >= 1.0) { // Ignore the right percentage and just use the left percentage @@ -282,11 +280,11 @@ ComputeShrinkwrapMargins(const nsStyleMargin* aStyleMargin, nscoord aWidth, nsMa if ((marginPct > 0.0) && (marginPct < 1.0)) { double shrinkWrapWidth = float(boxWidth) / (1.0 - marginPct); - if (eStyleUnit_Percent == aStyleMargin->mMargin.GetLeftUnit()) { + if (eStyleUnit_Percent == margin.GetLeftUnit()) { aMargin.left = NSToCoordFloor((float)(shrinkWrapWidth * leftPct)); aXToUpdate += aMargin.left; } - if (eStyleUnit_Percent == aStyleMargin->mMargin.GetRightUnit()) { + if (eStyleUnit_Percent == margin.GetRightUnit()) { aMargin.right = NSToCoordFloor((float)(shrinkWrapWidth * rightPct)); } }