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