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