| Index: third_party/WebKit/Source/core/paint/NGTextPainter.cpp
|
| diff --git a/third_party/WebKit/Source/core/paint/NGTextPainter.cpp b/third_party/WebKit/Source/core/paint/NGTextPainter.cpp
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..7031ffc740106666968df14dfb7cad9e3bd29936
|
| --- /dev/null
|
| +++ b/third_party/WebKit/Source/core/paint/NGTextPainter.cpp
|
| @@ -0,0 +1,101 @@
|
| +// Copyright 2017 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.
|
| +
|
| +#include "core/paint/NGTextPainter.h"
|
| +
|
| +#include "core/CSSPropertyNames.h"
|
| +#include "core/frame/Settings.h"
|
| +#include "core/layout/ng/inline/ng_physical_text_fragment.h"
|
| +#include "core/paint/BoxPainter.h"
|
| +#include "core/paint/PaintInfo.h"
|
| +#include "core/style/ComputedStyle.h"
|
| +#include "core/style/ShadowList.h"
|
| +#include "platform/fonts/Font.h"
|
| +#include "platform/graphics/GraphicsContext.h"
|
| +#include "platform/graphics/GraphicsContextStateSaver.h"
|
| +#include "platform/wtf/Assertions.h"
|
| +#include "platform/wtf/text/CharacterNames.h"
|
| +
|
| +namespace blink {
|
| +
|
| +void NGTextPainter::Paint(unsigned start_offset,
|
| + unsigned end_offset,
|
| + unsigned length,
|
| + const Style& text_style) {
|
| + GraphicsContextStateSaver state_saver(graphics_context_, false);
|
| + UpdateGraphicsContext(text_style, state_saver);
|
| + // if (combined_text_) {
|
| + // graphics_context_.Save();
|
| + // combined_text_->TransformToInlineCoordinates(graphics_context_,
|
| + // text_bounds_);
|
| + // PaintInternal<kPaintText>(start_offset, end_offset, length);
|
| + // graphics_context_.Restore();
|
| + //} else {
|
| + PaintInternal<kPaintText>(start_offset, end_offset, length);
|
| + //}
|
| +
|
| + // if (!emphasis_mark_.IsEmpty()) {
|
| + // if (text_style.emphasis_mark_color != text_style.fill_color)
|
| + // graphics_context_.SetFillColor(text_style.emphasis_mark_color);
|
| + //
|
| + // if (combined_text_)
|
| + // PaintEmphasisMarkForCombinedText();
|
| + // else
|
| + // PaintInternal<kPaintEmphasisMark>(start_offset, end_offset, length);
|
| + //}
|
| +}
|
| +
|
| +template <NGTextPainter::PaintInternalStep step>
|
| +void NGTextPainter::PaintInternalFragment(
|
| + TextFragmentPaintInfo& fragment_paint_info,
|
| + unsigned from,
|
| + unsigned to) {
|
| + DCHECK(from <= fragment_paint_info.text.length());
|
| + DCHECK(to <= fragment_paint_info.text.length());
|
| +
|
| + fragment_paint_info.from = from;
|
| + fragment_paint_info.to = to;
|
| +
|
| + if (step == kPaintEmphasisMark) {
|
| + graphics_context_.DrawEmphasisMarks(
|
| + font_, fragment_paint_info, emphasis_mark_,
|
| + FloatPoint(text_origin_) + IntSize(0, emphasis_mark_offset_));
|
| + } else {
|
| + DCHECK(step == kPaintText);
|
| + graphics_context_.DrawText(font_, fragment_paint_info,
|
| + FloatPoint(text_origin_));
|
| + }
|
| +}
|
| +
|
| +template <NGTextPainter::PaintInternalStep Step>
|
| +void NGTextPainter::PaintInternal(unsigned start_offset,
|
| + unsigned end_offset,
|
| + unsigned truncation_point) {
|
| + unsigned offset = 0;
|
| + TextFragmentPaintInfo fragment_paint_info = {
|
| + text_fragment_->Text(), TextDirection::kLtr, offset,
|
| + text_fragment_->Text().length(), text_fragment_->TextShapeResult()};
|
| +
|
| + // fragment_paint_info.bounds = FloatRect(text_bounds_);
|
| + if (start_offset <= end_offset) {
|
| + PaintInternalFragment<Step>(fragment_paint_info, start_offset, end_offset);
|
| + } else {
|
| + if (end_offset > 0) {
|
| + PaintInternalFragment<Step>(fragment_paint_info, ellipsis_offset_,
|
| + end_offset);
|
| + }
|
| + if (start_offset < truncation_point) {
|
| + PaintInternalFragment<Step>(fragment_paint_info, start_offset,
|
| + truncation_point);
|
| + }
|
| + }
|
| +}
|
| +
|
| +void NGTextPainter::ClipDecorationsStripe(float upper,
|
| + float stripe_width,
|
| + float dilation) {}
|
| +
|
| +void NGTextPainter::PaintEmphasisMarkForCombinedText() {}
|
| +
|
| +} // namespace blink
|
|
|