blob: bea7db95342f3fe7b44841bc8c6605a8ac424c16 [file] [log] [blame]
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef LineLayoutRubyRun_h
#define LineLayoutRubyRun_h
#include "core/layout/LayoutRubyRun.h"
#include "core/layout/api/LineLayoutBlockFlow.h"
namespace blink {
class LineLayoutRubyRun : public LineLayoutBlockFlow {
public:
explicit LineLayoutRubyRun(LayoutRubyRun* layoutRubyRun)
: LineLayoutBlockFlow(layoutRubyRun)
{
}
explicit LineLayoutRubyRun(const LineLayoutItem& item)
: LineLayoutBlockFlow(item)
{
ASSERT(!item || item.isRubyRun());
}
explicit LineLayoutRubyRun(std::nullptr_t) : LineLayoutBlockFlow(nullptr) { }
LineLayoutRubyRun() { }
void getOverhang(bool firstLine, LineLayoutItem startLayoutItem, LineLayoutItem endLayoutItem, int& startOverhang, int& endOverhang) const
{
toRubyRun()->getOverhang(firstLine, startLayoutItem.layoutObject(), endLayoutItem.layoutObject(), startOverhang, endOverhang);
}
LayoutRubyText* rubyText() const
{
return toRubyRun()->rubyText();
}
LayoutRubyBase* rubyBase() const
{
return toRubyRun()->rubyBase();
}
bool canBreakBefore(const LazyLineBreakIterator& iterator) const
{
return toRubyRun()->canBreakBefore(iterator);
}
private:
LayoutRubyRun* toRubyRun()
{
return toLayoutRubyRun(layoutObject());
}
const LayoutRubyRun* toRubyRun() const
{
return toLayoutRubyRun(layoutObject());
}
};
} // namespace blink
#endif // LineLayoutRubyRun_h