text: /*
   *******************************************************************************
   *
   *   © 2016 and later: Unicode, Inc. and others.
   *   License & terms of use: http://www.unicode.org/copyright.html#License
   *
   *******************************************************************************
   *******************************************************************************
   *
   *   Copyright (C) 1999-2007, International Business Machines
   *   Corporation and others.  All Rights Reserved.
   *
   *******************************************************************************
   *   file name:  Paragraph.h
   *
   *   created on: 09/06/2000
   *   created by: Eric R. Mader
   */
  #ifndef __PARAGRAPH_H
  #define __PARAGRAPH_H
  
  #include "unicode/utypes.h"
  #include "unicode/ubidi.h"
  
  #include "layout/LEFontInstance.h"
  #include "layout/ParagraphLayout.h"
  
  #include "GUISupport.h"
  #include "RenderingSurface.h"
  
  U_NAMESPACE_USE
  
  #define MARGIN 10
  
  #if 0
  class LineInfo;
  #endif
  
  class Paragraph
  {
  public:
      Paragraph(const LEUnicode chars[], le_int32 charCount, const FontRuns *fontRuns, LEErrorCode &status);
  
      ~Paragraph();
  
      le_int32 getAscent();
      le_int32 getLineHeight();
      le_int32 getLineCount();
      void breakLines(le_int32 width, le_int32 height);
      void draw(RenderingSurface *surface, le_int32 firstLine, le_int32 lastLine);
  
      static Paragraph *paragraphFactory(const char *fileName, const LEFontInstance *font, GUISupport *guiSupport);
  
  private:
      void addLine(const ParagraphLayout::Line *line);
  
      ParagraphLayout **fParagraphLayout;
  
      le_int32          fParagraphCount;
      le_int32          fParagraphMax;
      le_int32          fParagraphGrow;
      
      le_int32          fLineCount;
      le_int32          fLinesMax;
      le_int32          fLinesGrow;
  
      const ParagraphLayout::Line **fLines;
            LEUnicode *fChars;
  
      le_int32         fLineHeight;
      le_int32         fAscent;
      le_int32         fWidth;
      le_int32         fHeight;
      UBiDiLevel       fParagraphLevel;
  };
  
  inline le_int32 Paragraph::getLineHeight()
  {
      return fLineHeight;
  }
  
  inline le_int32 Paragraph::getLineCount()
  {
      return fLineCount;
  }
  
  inline le_int32 Paragraph::getAscent()
  {
      return fAscent;
  }
  
  #endif
  
  
  