зеркало из https://github.com/mozilla/gecko-dev.git
Bug 918519 part 1: Add macros GET_MAIN_COMPONENT and GET_FLEX_COMPONENT to nsFlexContainerFrame.cpp, and use them to implement existing utility methods. r=mats
This commit is contained in:
Родитель
fd2b1a5feb
Коммит
5cab3033a5
|
@ -163,6 +163,20 @@ MarginComponentForSide(nsMargin& aMargin, Side aSide)
|
||||||
// (but something's busted if we got here)
|
// (but something's busted if we got here)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Helper-macro to let us pick one of two expressions to evaluate
|
||||||
|
// (a width expression vs. a height expression), to get a main-axis or
|
||||||
|
// cross-axis component.
|
||||||
|
// For code that has e.g. a nsSize object, FlexboxAxisTracker::GetMainComponent
|
||||||
|
// and GetCrossComponent are cleaner; but in cases where we simply have
|
||||||
|
// two separate expressions for width and height (which may be expensive to
|
||||||
|
// evaluate), these macros will ensure that only the expression for the correct
|
||||||
|
// axis gets evaluated.
|
||||||
|
#define GET_MAIN_COMPONENT(axisTracker_, width_, height_) \
|
||||||
|
IsAxisHorizontal((axisTracker_).GetMainAxis()) ? (width_) : (height_)
|
||||||
|
|
||||||
|
#define GET_CROSS_COMPONENT(axisTracker_, width_, height_) \
|
||||||
|
IsAxisHorizontal((axisTracker_).GetCrossAxis()) ? (width_) : (height_)
|
||||||
|
|
||||||
// Encapsulates our flex container's main & cross axes.
|
// Encapsulates our flex container's main & cross axes.
|
||||||
class MOZ_STACK_CLASS FlexboxAxisTracker {
|
class MOZ_STACK_CLASS FlexboxAxisTracker {
|
||||||
public:
|
public:
|
||||||
|
@ -173,29 +187,17 @@ public:
|
||||||
AxisOrientationType GetCrossAxis() const { return mCrossAxis; }
|
AxisOrientationType GetCrossAxis() const { return mCrossAxis; }
|
||||||
|
|
||||||
nscoord GetMainComponent(const nsSize& aSize) const {
|
nscoord GetMainComponent(const nsSize& aSize) const {
|
||||||
return IsAxisHorizontal(mMainAxis) ?
|
return GET_MAIN_COMPONENT(*this, aSize.width, aSize.height);
|
||||||
aSize.width : aSize.height;
|
|
||||||
}
|
}
|
||||||
int32_t GetMainComponent(const nsIntSize& aIntSize) const {
|
int32_t GetMainComponent(const nsIntSize& aIntSize) const {
|
||||||
return IsAxisHorizontal(mMainAxis) ?
|
return GET_MAIN_COMPONENT(*this, aIntSize.width, aIntSize.height);
|
||||||
aIntSize.width : aIntSize.height;
|
|
||||||
}
|
|
||||||
nscoord GetMainComponent(const nsHTMLReflowMetrics& aMetrics) const {
|
|
||||||
return IsAxisHorizontal(mMainAxis) ?
|
|
||||||
aMetrics.width : aMetrics.height;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
nscoord GetCrossComponent(const nsSize& aSize) const {
|
nscoord GetCrossComponent(const nsSize& aSize) const {
|
||||||
return IsAxisHorizontal(mCrossAxis) ?
|
return GET_CROSS_COMPONENT(*this, aSize.width, aSize.height);
|
||||||
aSize.width : aSize.height;
|
|
||||||
}
|
}
|
||||||
int32_t GetCrossComponent(const nsIntSize& aIntSize) const {
|
int32_t GetCrossComponent(const nsIntSize& aIntSize) const {
|
||||||
return IsAxisHorizontal(mCrossAxis) ?
|
return GET_CROSS_COMPONENT(*this, aIntSize.width, aIntSize.height);
|
||||||
aIntSize.width : aIntSize.height;
|
|
||||||
}
|
|
||||||
nscoord GetCrossComponent(const nsHTMLReflowMetrics& aMetrics) const {
|
|
||||||
return IsAxisHorizontal(mCrossAxis) ?
|
|
||||||
aMetrics.width : aMetrics.height;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
nscoord GetMarginSizeInMainAxis(const nsMargin& aMargin) const {
|
nscoord GetMarginSizeInMainAxis(const nsMargin& aMargin) const {
|
||||||
|
|
Загрузка…
Ссылка в новой задаче