|  | // 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 FLUTTER_LIB_UI_TEXT_PARAGRAPH_IMPL_H_ | 
|  | #define FLUTTER_LIB_UI_TEXT_PARAGRAPH_IMPL_H_ | 
|  |  | 
|  | #include "flutter/lib/ui/painting/canvas.h" | 
|  | #include "flutter/lib/ui/text/text_box.h" | 
|  | #include "flutter/third_party/txt/src/txt/paragraph.h" | 
|  |  | 
|  | namespace blink { | 
|  |  | 
|  | class ParagraphImpl { | 
|  | public: | 
|  | virtual ~ParagraphImpl(){}; | 
|  |  | 
|  | virtual double width() = 0; | 
|  |  | 
|  | virtual double height() = 0; | 
|  |  | 
|  | virtual double minIntrinsicWidth() = 0; | 
|  |  | 
|  | virtual double maxIntrinsicWidth() = 0; | 
|  |  | 
|  | virtual double alphabeticBaseline() = 0; | 
|  |  | 
|  | virtual double ideographicBaseline() = 0; | 
|  |  | 
|  | virtual bool didExceedMaxLines() = 0; | 
|  |  | 
|  | virtual void layout(double width) = 0; | 
|  |  | 
|  | virtual void paint(Canvas* canvas, double x, double y) = 0; | 
|  |  | 
|  | virtual std::vector<TextBox> getRectsForRange( | 
|  | unsigned start, | 
|  | unsigned end, | 
|  | txt::Paragraph::RectHeightStyle rect_height_style, | 
|  | txt::Paragraph::RectWidthStyle rect_width_style) = 0; | 
|  |  | 
|  | virtual Dart_Handle getPositionForOffset(double dx, double dy) = 0; | 
|  |  | 
|  | virtual Dart_Handle getWordBoundary(unsigned offset) = 0; | 
|  | }; | 
|  |  | 
|  | }  // namespace blink | 
|  |  | 
|  | #endif  // FLUTTER_LIB_UI_TEXT_PARAGRAPH_IMPL_H_ |