#include "config.h"
#include "DisplayView.h"
#if ENABLE(LAYOUT_FORMATTING_CONTEXT)
#include "DisplayTree.h"
#include "DisplayTreeBuilder.h"
#include "Frame.h"
#include "FrameView.h"
#include "LayoutContainerBox.h"
#include "Page.h"
#include "RuntimeEnabledFeatures.h"
#include <wtf/IsoMallocInlines.h>
namespace WebCore {
namespace Display {
WTF_MAKE_ISO_ALLOCATED_IMPL(View);
View::View(FrameView& frameView)
: m_frameView(frameView)
, m_layerController(*this)
{
}
View::~View()
{
}
Frame& View::frame() const
{
return m_frameView.frame();
}
Page* View::page() const
{
return m_frameView.frame().page();
}
const Layout::LayoutState* View::layoutState() const
{
return m_frameView.layoutContext().layoutFormattingState();
}
void View::prepareForDisplay()
{
auto* layoutState = this->layoutState();
if (!layoutState)
return;
if (RuntimeEnabledFeatures::sharedFeatures().layoutFormattingContextIntegrationEnabled())
return;
auto treeBuilder = TreeBuilder { deviceScaleFactor() };
m_displayTree = treeBuilder.build(*layoutState);
m_displayTree->setView(this);
m_layerController.prepareForDisplay(*m_displayTree);
}
void View::flushLayers()
{
m_layerController.flushLayers();
}
void View::setNeedsDisplay()
{
m_layerController.setNeedsDisplay();
}
void View::setIsInWindow(bool isInWindow)
{
m_layerController.setIsInWindow(isInWindow);
}
float View::deviceScaleFactor() const
{
return page() ? page()->deviceScaleFactor() : 1.0f;
}
} }
#endif // ENABLE(LAYOUT_FORMATTING_CONTEXT)