1/*
2 *******************************************************************************
3 *
4 *   Copyright (C) 1999-2007, International Business Machines
5 *   Corporation and others.  All Rights Reserved.
6 *
7 *******************************************************************************
8 *   file name:  Paragraph.h
9 *
10 *   created on: 09/06/2000
11 *   created by: Eric R. Mader
12 */
13#ifndef __PARAGRAPH_H
14#define __PARAGRAPH_H
15
16#include "unicode/utypes.h"
17#include "unicode/ubidi.h"
18
19#include "layout/LEFontInstance.h"
20#include "layout/ParagraphLayout.h"
21
22#include "GUISupport.h"
23#include "RenderingSurface.h"
24
25U_NAMESPACE_USE
26
27#define MARGIN 10
28
29#if 0
30class LineInfo;
31#endif
32
33class Paragraph
34{
35public:
36    Paragraph(const LEUnicode chars[], le_int32 charCount, const FontRuns *fontRuns, LEErrorCode &status);
37
38    ~Paragraph();
39
40    le_int32 getAscent();
41    le_int32 getLineHeight();
42    le_int32 getLineCount();
43    void breakLines(le_int32 width, le_int32 height);
44    void draw(RenderingSurface *surface, le_int32 firstLine, le_int32 lastLine);
45
46    static Paragraph *paragraphFactory(const char *fileName, const LEFontInstance *font, GUISupport *guiSupport);
47
48private:
49    void addLine(const ParagraphLayout::Line *line);
50
51    ParagraphLayout **fParagraphLayout;
52
53    le_int32          fParagraphCount;
54    le_int32          fParagraphMax;
55    le_int32          fParagraphGrow;
56
57    le_int32          fLineCount;
58    le_int32          fLinesMax;
59    le_int32          fLinesGrow;
60
61    const ParagraphLayout::Line **fLines;
62          LEUnicode *fChars;
63
64    le_int32         fLineHeight;
65    le_int32         fAscent;
66    le_int32         fWidth;
67    le_int32         fHeight;
68    UBiDiLevel       fParagraphLevel;
69};
70
71inline le_int32 Paragraph::getLineHeight()
72{
73    return fLineHeight;
74}
75
76inline le_int32 Paragraph::getLineCount()
77{
78    return fLineCount;
79}
80
81inline le_int32 Paragraph::getAscent()
82{
83    return fAscent;
84}
85
86#endif
87
88
89