FlexFormattingContext.h [plain text]
#pragma once
#if ENABLE(LAYOUT_FORMATTING_CONTEXT)
#include "FlexFormattingState.h"
#include "FormattingContext.h"
#include <wtf/IsoMalloc.h>
namespace WebCore {
namespace Layout {
class InvalidationState;
class FlexFormattingContext final : public FormattingContext {
WTF_MAKE_ISO_ALLOCATED(FlexFormattingContext);
public:
FlexFormattingContext(const ContainerBox& formattingContextRoot, FlexFormattingState&);
void layoutInFlowContent(InvalidationState&, const ConstraintsForInFlowContent&) override;
LayoutUnit usedContentHeight() const override;
IntrinsicWidthConstraints computedIntrinsicWidthConstraints() override;
private:
class Geometry : public FormattingContext::Geometry {
public:
Geometry(const FlexFormattingContext&);
IntrinsicWidthConstraints intrinsicWidthConstraints(const ContainerBox&);
private:
const FlexFormattingContext& formattingContext() const { return downcast<FlexFormattingContext>(FormattingContext::Geometry::formattingContext()); }
};
FlexFormattingContext::Geometry geometry() const { return Geometry(*this); }
void sizeAndPlaceFlexItems(const ConstraintsForInFlowContent&);
void computeIntrinsicWidthConstraintsForFlexItems();
const FlexFormattingState& formattingState() const { return downcast<FlexFormattingState>(FormattingContext::formattingState()); }
FlexFormattingState& formattingState() { return downcast<FlexFormattingState>(FormattingContext::formattingState()); }
};
inline FlexFormattingContext::Geometry::Geometry(const FlexFormattingContext& flexFormattingContext)
: FormattingContext::Geometry(flexFormattingContext)
{
}
}
}
SPECIALIZE_TYPE_TRAITS_LAYOUT_FORMATTING_CONTEXT(FlexFormattingContext, isFlexFormattingContext())
#endif