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 25 U_NAMESPACE_USE 26 27 #define MARGIN 10 28 29 #if 0 30 class LineInfo; 31 #endif 32 33 class Paragraph 34 { 35 public: 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 48 private: 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 getLineHeight()71inline le_int32 Paragraph::getLineHeight() 72 { 73 return fLineHeight; 74 } 75 getLineCount()76inline le_int32 Paragraph::getLineCount() 77 { 78 return fLineCount; 79 } 80 getAscent()81inline le_int32 Paragraph::getAscent() 82 { 83 return fAscent; 84 } 85 86 #endif 87 88 89