gecko-dev/layout/generic/nsBlockReflowContext.h
Ting-Yu Lin d77152fcd0 Bug 1277129 Part 7c - Rename various RS variables to RI. r=dbaron
This patch is generated by the following script:

function rename() {
find layout\
     -type f\
     ! -path "./obj*"\
     ! -path "./.git"\
     ! -path "./.hg"\
     \( -name "*.cpp" -or\
        -name "*.h" \)\
        -exec sed -i -r "s/$1/$2/g" "{}" \;
}

rename aChildRS aChildRI
rename aContainingBlockRS aContainingBlockRI
rename aFrameRS aFrameRI
rename aLastRS aLastRI
rename aOuterRS aOuterRI
rename aRS aRI
rename blockHtmlRS blockHtmlRI
rename captionRS captionRI
rename cellRS cellRI
rename childRS childRI
rename firstAncestorRS firstAncestorRI
rename flexContainerRS flexContainerRI
rename gridRS gridRI
rename innerRS innerRI
rename lastButOneRS lastButOneRI
rename LineContainerRS LineContainerRI
rename mBlockRS mBlockRI
rename parentRS parentRI
rename secondAncestorRS secondAncestorRI
rename lastRSSize lastRISize
rename lastRSPadding lastRIPadding

MozReview-Commit-ID: YEgZs3WMow

--HG--
extra : rebase_source : c26050c71a3a5b13ef46e6d3582e581702d49ee8
2016-07-21 18:36:39 +08:00

99 lines
3.7 KiB
C++

/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
// vim:cindent:ts=2:et:sw=2:
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
/* class that a parent frame uses to reflow a block frame */
#ifndef nsBlockReflowContext_h___
#define nsBlockReflowContext_h___
#include "nsIFrame.h"
#include "mozilla/ReflowOutput.h"
class nsLineBox;
class nsPresContext;
namespace mozilla {
class BlockReflowInput;
} // namespace mozilla
/**
* An encapsulation of the state and algorithm for reflowing block frames.
*/
class nsBlockReflowContext {
using BlockReflowInput = mozilla::BlockReflowInput;
using ReflowInput = mozilla::ReflowInput;
using ReflowOutput = mozilla::ReflowOutput;
public:
nsBlockReflowContext(nsPresContext* aPresContext,
const ReflowInput& aParentRS);
~nsBlockReflowContext() { }
void ReflowBlock(const mozilla::LogicalRect& aSpace,
bool aApplyBStartMargin,
nsCollapsingMargin& aPrevMargin,
nscoord aClearance,
bool aIsAdjacentWithBStart,
nsLineBox* aLine,
ReflowInput& aReflowInput,
nsReflowStatus& aReflowStatus,
BlockReflowInput& aState);
bool PlaceBlock(const ReflowInput& aReflowInput,
bool aForceFit,
nsLineBox* aLine,
nsCollapsingMargin& aBEndMarginResult /* out */,
nsOverflowAreas& aOverflowAreas,
nsReflowStatus aReflowStatus);
nsCollapsingMargin& GetCarriedOutBEndMargin() {
return mMetrics.mCarriedOutBEndMargin;
}
const ReflowOutput& GetMetrics() const {
return mMetrics;
}
/**
* Computes the collapsed block-start margin (in the context's parent's
* writing mode) for a block whose reflow state is in aRI.
* The computed margin is added into aMargin, whose writing mode is the
* parent's mode as found in mMetrics.GetWritingMode(); note this may not be
* the block's own writing mode as found in aRI.
* If aClearanceFrame is null then this is the first optimistic pass which
* shall assume that no frames have clearance, and we clear the HasClearance
* on all frames encountered.
* If non-null, this is the second pass and the caller has decided
* aClearanceFrame needs clearance (and we will therefore stop collapsing
* there); also, this function is responsible for marking it with
* SetHasClearance.
* If in the optimistic pass any frame is encountered that might possibly
* need clearance (i.e., if we really needed the optimism assumption) then
* we set aMayNeedRetry to true.
* We return true if we changed the clearance state of any line and marked it
* dirty.
*/
bool ComputeCollapsedBStartMargin(const ReflowInput& aRI,
nsCollapsingMargin* aMargin,
nsIFrame* aClearanceFrame,
bool* aMayNeedRetry,
bool* aIsEmpty = nullptr);
protected:
nsPresContext* mPresContext;
const ReflowInput& mOuterReflowInput;
nsIFrame* mFrame;
mozilla::LogicalRect mSpace;
nscoord mICoord, mBCoord;
nsSize mContainerSize;
mozilla::WritingMode mWritingMode;
ReflowOutput mMetrics;
nsCollapsingMargin mBStartMargin;
};
#endif /* nsBlockReflowContext_h___ */